基于Arduino與機(jī)智云的家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)具備協(xié)議簡單、成本低、功耗低、組網(wǎng)容易等優(yōu)勢。在智慧家居實(shí)現(xiàn)的同時(shí),可以根據(jù)其它控制領(lǐng)域的需要,進(jìn)行需求的移植,具有很強(qiáng)的延伸性和可移植性,提高開發(fā)效率。同時(shí)當(dāng)前環(huán)境也存在這樣的需求也有硬件基礎(chǔ)保障。通過該項(xiàng)目的制作,也讓我了解到遠(yuǎn)程家電控制并不是什么神奇的東西的,只要每一個(gè)人肯去嘗試,肯去面對不同的困難,并通過自己的思考和向他人請求幫助,每一個(gè)過程都是很奇妙的,往往在這個(gè)過程中,你會(huì)獲得許多意想不到的收獲。
本項(xiàng)目分成三部分——工程實(shí)施、云平臺(tái)部署、APP開發(fā),本次分享云平臺(tái)部署部分。
一、創(chuàng)建項(xiàng)目

1.2 進(jìn)入項(xiàng)目,查看產(chǎn)品的基本信息

2.1 根據(jù)產(chǎn)品功能定義數(shù)據(jù)點(diǎn)

三、進(jìn)行虛擬設(shè)備調(diào)試
3.1 創(chuàng)建好數(shù)據(jù)點(diǎn)后,進(jìn)行虛擬設(shè)備調(diào)試



4.2 添加庫文件,進(jìn)行代碼移植
生成代碼包后,把代碼包導(dǎo)入Arduino IDE開發(fā)環(huán)境的libraries文件中,libraries是Arduino的庫文件,包含自帶的庫文件和用戶添加的外部庫文件

把networkConfig.ino的配網(wǎng)代碼移植到simpleTry.ino,把串口打印的代碼注釋起來,可參考“史上最詳細(xì)的Arduino uno R3接入機(jī)智云教程”
https://club.gizwits.com/thread-6728-1-1.html
然后根據(jù)要求修改代碼,以下僅供參考:
五、下載Android開發(fā)代碼包int con_ledPin = 13; //成功連接網(wǎng)絡(luò),13引腳低電平int smokePin = 2;int movePin = 3;int alarmPin = 4;int ledPin = 5;int relayPin1 = 8;int relayPin2 = 9;int firePin = A0;int lightPin = A1;int beepPin = 10;int temhumPin = 11;bool alarmflag = 0;dht myDHT_11;SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TXGizwits myGizwits;unsigned long Last_KeyTime = 0;unsigned long gokit_time_s(void){return millis() / 1000;}char gokit_key1down(void){unsigned long keep_time = 0;if (digitalRead(KEY1) == LOW){delay(100);if (digitalRead(KEY1) == LOW){keep_time = gokit_time_s();while (digitalRead(KEY1) == LOW){if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER){Last_KeyTime = gokit_time_s();return KEY1_LONG_PRESS;}} //until open the keyif ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER){return KEY1_SHORT_PRESS;}return 0;}return 0;}return 0;}char gokit_key2down(void){unsigned long keep_time = 0;if (digitalRead(KEY2) == LOW){delay(100);if (digitalRead(KEY2) == LOW){delay(100);if (digitalRead(KEY2) == LOW){keep_time = gokit_time_s();while (digitalRead(KEY2) == LOW) //until open the key{if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER){Last_KeyTime = gokit_time_s();return KEY2_LONG_PRESS;}}if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER){return KEY2_SHORT_PRESS;}return 0;}return 0;}return 0;}//室內(nèi)報(bào)警監(jiān)測char gokit_alarmdown(void){unsigned long keep_time = 0;if (digitalRead(alarmPin) == LOW){delay(100);if (digitalRead(alarmPin) == LOW){keep_time = gokit_time_s();while (digitalRead(alarmPin) == LOW) //until open the key{if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER){Last_KeyTime = gokit_time_s();return ALARM_LONG_PRESS;}}if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER){return ALARM_SHORT_PRESS;}return 0;}return 0;}return 0;}char gokit_keydown(void){char ret = 0;ret |= gokit_alarmdown();ret |= gokit_key2down();ret |= gokit_key1down();return ret;}void KEY_Handle(void){/* Press for over than 3 second is Long Press */switch (gokit_keydown()){case KEY1_SHORT_PRESS:myGizwits.setBindMode(WIFI_PRODUCTION_TEST);break;case KEY1_LONG_PRESS:myGizwits.setBindMode(WIFI_RESET_MODE);break;case KEY2_SHORT_PRESS:myGizwits.setBindMode(WIFI_SOFTAP_MODE);//Soft AP modebreak;case KEY2_LONG_PRESS:myGizwits.setBindMode(WIFI_AIRLINK_MODE);//AirLink modebreak;case ALARM_SHORT_PRESS:alarmflag = ((alarmflag == 0) ? 1 : 0);if (alarmflag){digitalWrite(beepPin, LOW);}else{digitalWrite(beepPin, HIGH);}break;case ALARM_LONG_PRESS:digitalWrite(ledPin, HIGH); //設(shè)置為高電平digitalWrite(relayPin1, HIGH); //設(shè)置為高電平digitalWrite(relayPin2, HIGH); //設(shè)置為高電平break;default:break;}}//獲取溫度數(shù)據(jù)int dht_11_gettemperature() {int chk = myDHT_11.read11(temhumPin);int value = myDHT_11.temperature;return value;}//獲取濕度數(shù)據(jù)int dht_11_gethumidity() {int chk = myDHT_11.read11(temhumPin);int value = myDHT_11.humidity;return value;}/**Serial Init , Gizwits Init@param none@return none*/void setup() {// put your setup code here, to run once:mySerial.begin(115200);pinMode(KEY1, INPUT_PULLUP);pinMode(KEY2, INPUT_PULLUP);pinMode(smokePin, INPUT); //設(shè)置為數(shù)字輸入模式pinMode(movePin, INPUT);pinMode(alarmPin, INPUT_PULLUP);pinMode(firePin, INPUT);pinMode(lightPin, INPUT); //模擬量為輸入模式pinMode(beepPin, OUTPUT); //設(shè)置為數(shù)字輸出模式pinMode(ledPin, OUTPUT);pinMode(relayPin1, OUTPUT);pinMode(relayPin2, OUTPUT);pinMode(con_ledPin, OUTPUT);digitalWrite(beepPin, HIGH); //設(shè)置為高電平myGizwits.begin();}void wifiStatusHandle(){if (myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER)){digitalWrite(con_ledPin, HIGH); //設(shè)置為低電平digitalWrite(ledPin, HIGH); //設(shè)置為高電平digitalWrite(relayPin1, HIGH); //設(shè)置為高電平digitalWrite(relayPin2, HIGH); //設(shè)置為高電平}}/**Arduino loop@param none@return none*/void loop() {//Configure network//if(XXX) //Trigger Condition//myGizwits.setBindMode(0x02); //0x01:Enter AP Mode;0x02:Enter Airlink Modebool varW_Alarm = alarmflag;//Add Sensor Data CollectionmyGizwits.write(VALUE_Alarm, varW_Alarm);unsigned long varW_fire = analogRead(firePin);//Add Sensor Data CollectionmyGizwits.write(VALUE_fire, varW_fire);unsigned long varW_Move_Test = digitalRead(movePin);//Add Sensor Data CollectionmyGizwits.write(VALUE_Move_Test, varW_Move_Test);unsigned long varW_Tem = dht_11_gettemperature();//Add Sensor Data CollectionmyGizwits.write(VALUE_Tem, varW_Tem);unsigned long varW_Hum = dht_11_gethumidity();//Add Sensor Data CollectionmyGizwits.write(VALUE_Hum, varW_Hum);unsigned long varW_Light = analogRead(lightPin);//Add Sensor Data CollectionmyGizwits.write(VALUE_Light, varW_Light);bool varR_LED_OnOff = 0;if (myGizwits.hasBeenSet(EVENT_LED_OnOff)){myGizwits.read(EVENT_LED_OnOff, &varR_LED_OnOff); //Address for storing dataif (varR_LED_OnOff == 0){digitalWrite(ledPin, HIGH);}else{digitalWrite(ledPin, LOW);}}bool varR_Relay_1 = 0;if (myGizwits.hasBeenSet(EVENT_Relay_1)){myGizwits.read(EVENT_Relay_1, &varR_Relay_1); //Address for storing dataif (varR_Relay_1 == 0){digitalWrite(relayPin1, HIGH);}else{digitalWrite(relayPin1, LOW);}}bool varR_Relay_2 = 0;if (myGizwits.hasBeenSet(EVENT_Relay_2)){myGizwits.read(EVENT_Relay_2, &varR_Relay_2); //Address for storing dataif (varR_Relay_2 == 0){digitalWrite(relayPin2, HIGH);}else{digitalWrite(relayPin2, LOW);}}bool varR_beep = 0;if (myGizwits.hasBeenSet(EVENT_beep)){myGizwits.read(EVENT_beep, &varR_beep); //Address for storing dataif (varR_beep == 0 ){digitalWrite(beepPin, HIGH);}else{digitalWrite(beepPin, LOW);}}KEY_Handle();wifiStatusHandle();myGizwits.process();}
5.1 在應(yīng)用開發(fā)生成APP代碼包

通過Android Studio軟件導(dǎo)入項(xiàng)目進(jìn)行編譯,因版本問題需要修改關(guān)鍵詞,compile 均替換為implementation,testcompile均替換為testimplementation,可參考以下代碼:
apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVersion '28.0.2'useLibrary 'org.apache.http.legacy'defaultConfig {applicationId "com.gizwits.opensource.appkit"minSdkVersion 16targetSdkVersion 25versionCode 1versionName "2.5.1.072715"multiDexEnabled true}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support.constraint1.1.0'testImplementation 'junit4.12'implementation 'com.android.support24.2.1'implementation files('libs/BLEasyConfig.jar')implementation files('libs/easylink2.0.jar')implementation files('libs/GizWifiSDK.jar')implementation files('libs/jpush-android-2.1.5.jar')implementation files('libs/Lark7618SDK_noudp1606031910_0101.jar')implementation files('libs/libammsdk.jar')implementation files('libs/libForEElink.jar')implementation files('libs/LSFSK_1.0.jar')implementation files('libs/ltlink2.jar')implementation files('libs/mta-sdk-1.6.2.jar')implementation files('libs/OneShotConfig.jar')implementation files('libs/open_sdk_r5756.jar')implementation files('libs/pushservice-5.6.0.30.jar')implementation files('libs/simpleconfigwizardlib.jar')implementation files('libs/xUtils-2.6.14.jar')implementation files('libs/zxing.jar')implementation 'com.android.support25.3.0'implementation 'com.yanzhenjie1.0.5'}
同時(shí)可參考“基于機(jī)智云AIoT平臺(tái)的Android開源app修改教程”https://www.sohu.com/a/476083681_486728
使項(xiàng)目成功編譯
審核編輯 :李倩
-
監(jiān)控系統(tǒng)
+關(guān)注
關(guān)注
21文章
4147瀏覽量
184309 -
Arduino
+關(guān)注
關(guān)注
190文章
6514瀏覽量
195852
發(fā)布評(píng)論請先 登錄
基于機(jī)智云平臺(tái)的新疆農(nóng)田氣候檢測系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
漢威科技空氣質(zhì)量傳感器助力家居環(huán)境安全監(jiān)測
STM32項(xiàng)目分享:智能家居(機(jī)智云)升級(jí)版
物聯(lián)網(wǎng)智能家居方案-基于Nucleo-STM32L073&機(jī)智云實(shí)例項(xiàng)目打包下載
移動(dòng)基站遠(yuǎn)程集中監(jiān)控系統(tǒng)與基站電力遠(yuǎn)程監(jiān)控系統(tǒng)是什么監(jiān)控系統(tǒng)
物聯(lián)網(wǎng)智能家居方案-基于Nucleo-STM32L073&機(jī)智云 項(xiàng)目實(shí)例
STM32與機(jī)智云連接實(shí)現(xiàn)步驟與技巧(下篇):機(jī)智云代碼移植與優(yōu)化
STM32與機(jī)智云連接實(shí)現(xiàn)步驟與技巧(上篇)
明遠(yuǎn)智睿SSD2351開發(fā)板:智能家居的智能核心
無人機(jī)智能巡檢系統(tǒng)革新運(yùn)維與監(jiān)控的未來
STM32項(xiàng)目分享:智能臺(tái)燈(機(jī)智云)系統(tǒng)
畜牧養(yǎng)殖環(huán)境監(jiān)控系統(tǒng)
基于STM32與機(jī)智云的樓宇火災(zāi)監(jiān)測系統(tǒng)設(shè)計(jì)
STM32項(xiàng)目分享:機(jī)智云智慧農(nóng)業(yè)系統(tǒng)

基于Arduino與機(jī)智云的家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)
評(píng)論