前言:本文主要介紹如何在機智云平臺創(chuàng)建一個智能產品、定義功能數(shù)據(jù)點、生成MCU代碼包并附上修改好的代碼、生成APP代碼編譯附上參考代碼。
需準備的硬件主要有Arduino uno R3、ESP8266

連線方式:A0讀取模擬電壓輸入;Key1接到D6;Key2接到D7;LED接到D4;

1.1 創(chuàng)建新產品
登陸機智云AIoT開發(fā)平臺 dev.gizwits.com 創(chuàng)建智能產品

1.2 進入項目可查看信息
什么是Product Key、Product Secret
Product Key又稱產品標識碼,開發(fā)者通過機智云后臺創(chuàng)建新產品后,自動生成的一個32位字符串。在機智云的數(shù)據(jù)庫中是一個唯一的號碼,開發(fā)者將ProductKey寫入設備主控MCU后,機智云通過此標識碼對設備進行識別并自動完成注冊。
設備接入機智云的前提是,需要機智云認同這個設備。Productkey是設備接入機智云的一個重要參數(shù),該參數(shù)的基本含義是:一款設備識別碼。例如某公司生產空調、熱水器,空調和熱水器是不同款設備,該公司設備接入機智云,至少需要兩個Productkey參數(shù)。在開發(fā)MCU過程中,需要使用到該參數(shù)。
http://docs.gizwits.com/zh-cn/quickstart/noun.html

根據(jù)系統(tǒng)的需求添加數(shù)據(jù)點,可參考本系統(tǒng)數(shù)據(jù)點
什么是數(shù)據(jù)點?
數(shù)據(jù)點即設備產品的功能的抽象,用于描述產品功能及其參數(shù)。創(chuàng)建數(shù)據(jù)點后,設備與云端通訊的數(shù)據(jù)格式即可確定,設備、機智云可以相互識別設備與機智云互聯(lián)互通的數(shù)據(jù)。
參考:http://docs.gizwits.com/zh-cn/quickstart/UseMCU.html

3.1 創(chuàng)建好數(shù)據(jù)點后,進行虛擬設備調試
什么是虛擬設備?類似一款仿真器,能夠模擬硬件設備。
虛擬設備是機智云云端可自動生成的一個仿真智能硬件,可模擬要開發(fā)或正在開發(fā)的智能硬件,來進行云端設備控制、手機APP控制、上報數(shù)據(jù)等需求。
開發(fā)者或企業(yè)研發(fā)人員在機智云平臺開發(fā)時,如果正式的智能硬件產品產品還未完全開發(fā)完成,就可以很方便地使用該“虛擬設備”與正式產品的控制APP進行調試和驗證,加快研發(fā)周期,降低研發(fā)成本。
https://baijiahao.baidu.com/s?id=1725343397578131479&wfr=spider&for=pc

3.2 在機智云APP能夠觀察機智云平臺模擬的數(shù)據(jù)

根據(jù)系統(tǒng)的需要添加或修改數(shù)據(jù)點信息
四、下載MCU代碼包4.1 在確定數(shù)據(jù)點無誤后,點擊MCU開發(fā)

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

把networkConfig.ino的配網代碼移植到simpleTry.ino,把串口打印的代碼注釋起來,可參考資料分享:史上最詳細的Arduino uno R3接入機智云教程
https://club.gizwits.com/thread-6728-1-1.html
然后根據(jù)要求修改代碼,以下僅供參考:
五、下載Android開發(fā)代碼包#include#include#include#includeint con_ledPin = 13; //成功連接網絡,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;#define KEY1 6#define KEY2 7#define KEY1_SHORT_PRESS 1#define KEY1_LONG_PRESS 2#define KEY2_SHORT_PRESS 4#define KEY2_LONG_PRESS 8#define NO_KEY 0#define KEY_LONG_TIMER 3#define ALARM_SHORT_PRESS 16#define ALARM_LONG_PRESS 32unsigned 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;}//室內報警監(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); //設置為高電平digitalWrite(relayPin1, HIGH); //設置為高電平digitalWrite(relayPin2, HIGH); //設置為高電平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ù)字輸入模式pinMode(movePin, INPUT);pinMode(alarmPin, INPUT_PULLUP);pinMode(firePin, INPUT);pinMode(lightPin, INPUT); //模擬量為輸入模式pinMode(beepPin, OUTPUT); //設置為數(shù)字輸出模式pinMode(ledPin, OUTPUT);pinMode(relayPin1, OUTPUT);pinMode(relayPin2, OUTPUT);pinMode(con_ledPin, OUTPUT);digitalWrite(beepPin, HIGH); //設置為高電平myGizwits.begin();}void wifiStatusHandle(){if (myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER)){digitalWrite(con_ledPin, HIGH); //設置為低電平digitalWrite(ledPin, HIGH); //設置為高電平digitalWrite(relayPin1, HIGH); //設置為高電平digitalWrite(relayPin2, HIGH); //設置為高電平}}/**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 在應用開發(fā)生成APP代碼包

通過Android Studio軟件導入項目進行編譯,因版本問題需要修改關鍵詞,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'}
同時可參考基于機智云AIoT平臺的Android開源app修改教程
使項目成功編譯
原文標題:基于Arduino與機智云的家居環(huán)境遠程系統(tǒng)設計(云平臺部署)
文章出處:【微信公眾號:機智云開發(fā)者】歡迎添加關注!文章轉載請注明出處。
-
mcu
+關注
關注
147文章
18881瀏覽量
396670 -
機智云
+關注
關注
3文章
647瀏覽量
27742 -
智能產品
+關注
關注
0文章
88瀏覽量
7345
原文標題:基于Arduino與機智云的家居環(huán)境遠程系統(tǒng)設計(云平臺部署)
文章出處:【微信號:IoTMaker,微信公眾號:機智云開發(fā)者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
機智云怎么使用?iot開發(fā)平臺快速開發(fā)硬件產品案例分享
【萬元大獎】機智云智能硬件創(chuàng)新大賽
【萬元大獎】機智云智能硬件創(chuàng)新大賽
如何使用機智云開發(fā)一款智能硬件產品
機智云智能家電運營管理服務平臺獲艾普蘭智能創(chuàng)新獎
機智云CEO黃灼:機智云5.0平臺助力企業(yè)大數(shù)據(jù)分析和AI決策
基于STM32和機智云IoT云服務平臺的智能花盆
基于機智云iot開發(fā)平臺快速創(chuàng)建具有商用租賃效果的硬件
基于機智云物聯(lián)網平臺的智能廚房監(jiān)測系統(tǒng)
圖文教程:GC211接入機智云,實現(xiàn)智能產品、APP、后臺搭建
基于arduino和機智云平臺的智能寵物屋設計
機智云DUT實現(xiàn)遠程智能魚池管理系統(tǒng)
如何在機智云開發(fā)平臺創(chuàng)建一個業(yè)務應用AEP
如何在機智云平臺創(chuàng)建一個智能加濕器
如何在機智云平臺創(chuàng)建智能產品
評論