0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

9GxC_IoTMaker ? 來(lái)源:CSDN ? 作者:CSDN ? 2022-07-26 11:25 ? 次閱讀

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

本項(xiàng)目分成三部分——工程實(shí)施、云平臺(tái)部署、APP開發(fā),本次分享云平臺(tái)部署部分。

一、創(chuàng)建項(xiàng)目

1.1 登陸機(jī)智云開發(fā)者中心dev.gizwits.com,創(chuàng)建新產(chǎn)品

c9c36a0e-0c90-11ed-ba43-dac502259ad0.png

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

ca134c0e-0c90-11ed-ba43-dac502259ad0.png

二、添加數(shù)據(jù)點(diǎn)

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

ca419b18-0c90-11ed-ba43-dac502259ad0.png

三、進(jìn)行虛擬設(shè)備調(diào)試

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

ca71fefc-0c90-11ed-ba43-dac502259ad0.png

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

根據(jù)系統(tǒng)的需要添加或修改數(shù)據(jù)點(diǎn)信息

ca970fc6-0c90-11ed-ba43-dac502259ad0.png

四、下載MCU代碼包

4.1 在確定數(shù)據(jù)點(diǎn)無(wú)誤后,點(diǎn)擊MCU開發(fā)

cabacd58-0c90-11ed-ba43-dac502259ad0.png

4.2 添加庫(kù)文件,進(jìn)行代碼移植

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

cadc65bc-0c90-11ed-ba43-dac502259ad0.png

把networkConfig.ino的配網(wǎng)代碼移植到simpleTry.ino,把串口打印的代碼注釋起來(lái),可參考“史上最詳細(xì)的Arduino uno R3接入機(jī)智云教程

https://club.gizwits.com/thread-6728-1-1.html

然后根據(jù)要求修改代碼,以下僅供參考:

#include #include #include #include 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;#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 key      if ((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)測(cè)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 mode      break;    case KEY2_LONG_PRESS:      myGizwits.setBindMode(WIFI_AIRLINK_MODE);      //AirLink mode      break;    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 Mode  bool varW_Alarm = alarmflag;//Add Sensor Data Collection  myGizwits.write(VALUE_Alarm, varW_Alarm);  unsigned long varW_fire = analogRead(firePin);//Add Sensor Data Collection  myGizwits.write(VALUE_fire, varW_fire);  unsigned long varW_Move_Test = digitalRead(movePin);//Add Sensor Data Collection  myGizwits.write(VALUE_Move_Test, varW_Move_Test);  unsigned long varW_Tem = dht_11_gettemperature();//Add Sensor Data Collection  myGizwits.write(VALUE_Tem, varW_Tem);  unsigned long varW_Hum = dht_11_gethumidity();//Add Sensor Data Collection  myGizwits.write(VALUE_Hum, varW_Hum);  unsigned long varW_Light = analogRead(lightPin);//Add Sensor Data Collection  myGizwits.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 data    if (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 data    if (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 data    if (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 data    if (varR_beep == 0 )    {      digitalWrite(beepPin, HIGH);    }    else    {      digitalWrite(beepPin, LOW);    }  }  KEY_Handle();  wifiStatusHandle();  myGizwits.process();}
 
五、下載Android開發(fā)代碼包

5.1 在應(yīng)用開發(fā)生成APP代碼包

caf35aa6-0c90-11ed-ba43-dac502259ad0.png

通過(guò)Android Studio軟件導(dǎo)入項(xiàng)目進(jìn)行編譯,因版本問(wèn)題需要修改關(guān)鍵詞,compile 均替換為implementation,testcompile均替換為testimplementation,可參考以下代碼:

apply plugin: 'com.android.application'
android {    compileSdkVersion 25    buildToolsVersion '28.0.2'    useLibrary 'org.apache.http.legacy'    defaultConfig {        applicationId "com.gizwits.opensource.appkit"        minSdkVersion 16        targetSdkVersion 25        versionCode 1        versionName "2.5.1.072715"        multiDexEnabled true    }    buildTypes {        release {            minifyEnabled false            proguardFiles 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'}
審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1557

    瀏覽量

    72155
  • 遠(yuǎn)程監(jiān)控系統(tǒng)

    關(guān)注

    0

    文章

    96

    瀏覽量

    17190
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185922
  • 機(jī)智云
    +關(guān)注

    關(guān)注

    2

    文章

    563

    瀏覽量

    26313

原文標(biāo)題:云平臺(tái)部署:基于Arduino與機(jī)智云的家居環(huán)境遠(yuǎn)程系統(tǒng)設(shè)計(jì)

文章出處:【微信號(hào):IoTMaker,微信公眾號(hào):機(jī)智云開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【Gokit 3申請(qǐng)】家居環(huán)境檢測(cè)

    申請(qǐng)理由:項(xiàng)目描述:之前用過(guò)機(jī)智的第一代板子,感覺挺好的,使用的是wifi連接,符合我所設(shè)想的物聯(lián)網(wǎng)連接標(biāo)準(zhǔn)(之前玩的arduino都是用藍(lán)牙或網(wǎng)線連接的),這次打算用他來(lái)做一個(gè)環(huán)境
    發(fā)表于 08-09 15:01

    基于機(jī)智的智能家居系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    通過(guò)平臺(tái)對(duì)家居環(huán)境實(shí)現(xiàn)智能化,提高人們?nèi)粘?b class='flag-5'>家居生活的生活質(zhì)量?!娟P(guān)鍵詞】機(jī)智;智能家居
    發(fā)表于 09-15 15:42

    基于arduino +機(jī)智物聯(lián)網(wǎng)平臺(tái)的陽(yáng)臺(tái)生態(tài)控制系統(tǒng)的設(shè)計(jì)

    (32位)。在Arduino IDE5.0配置開發(fā)環(huán)境,導(dǎo)入機(jī)智物聯(lián)網(wǎng)平臺(tái)的硬件開發(fā)庫(kù)文件,開發(fā)各模塊庫(kù)函數(shù),編譯好程序后下載到開發(fā)版進(jìn)行調(diào)試。該
    發(fā)表于 07-16 12:28

    基于機(jī)智IoT開發(fā)平臺(tái)的溫室番茄遠(yuǎn)程監(jiān)控系統(tǒng)

    摘要: 設(shè)計(jì)了基于機(jī)智IoT開發(fā)平臺(tái)的溫室番茄遠(yuǎn)程監(jiān)控系統(tǒng),上位機(jī)由手機(jī)APP終端和機(jī)智
    發(fā)表于 05-18 17:36

    STM32F103C8T6開發(fā)板+機(jī)智IoT+智能家居環(huán)境控制器

    摘要:本文介紹了一種智能家居環(huán)境控制器,開發(fā)者設(shè)計(jì)基于STM32F103C8T6開發(fā)板,通過(guò)WIFI模塊接入互聯(lián)網(wǎng),通過(guò)公有機(jī)智AIoT作為服務(wù)器,與手機(jī)連接。在手機(jī)APP的操控
    發(fā)表于 06-15 18:57

    基于arduino機(jī)智平臺(tái)的智能寵物屋設(shè)計(jì)

    、監(jiān)測(cè)寵物休憩、殺菌消毒、監(jiān)控系統(tǒng)、喂食喂水、排泄物清理和空氣凈化等功能,使用機(jī)智平臺(tái)開發(fā)App,為未來(lái)并入智能家居提供了可能。1研究目的
    發(fā)表于 01-17 16:24

    機(jī)智AIoT+arduino單片機(jī)+智能家居系統(tǒng)及安防控制

    基于機(jī)智網(wǎng)絡(luò)控制和Arduino單片機(jī)控制的智能家居安防系統(tǒng)設(shè)計(jì)模式。目前智能家居要考慮相應(yīng)的
    發(fā)表于 02-16 11:30

    【IoT畢設(shè)】機(jī)智AIoT+esp8266+物聯(lián)網(wǎng)智能家居控制系統(tǒng)

    的不斷成熟與發(fā)展,智能家居系統(tǒng)的發(fā)展前景將更加廣闊。移動(dòng)互聯(lián)技術(shù)在智能家居系統(tǒng)中扮演著重要角色,能夠有效地對(duì)家居環(huán)境進(jìn)行
    發(fā)表于 04-07 17:20

    基于GSM的家用電器及家居環(huán)境監(jiān)控系統(tǒng)的設(shè)計(jì)

    設(shè)計(jì)了一個(gè)基于GSM 的家用電器及家居環(huán)境監(jiān)控系統(tǒng)系統(tǒng)主要由GSM 模塊TC35i、紅外接收頭、51 單片機(jī)、DS1820 溫度傳感器等構(gòu)成。先通過(guò)紅外線接收頭解析家電遙控器紅外控制
    發(fā)表于 10-21 14:36 ?2337次閱讀
    基于GSM的家用電器及<b class='flag-5'>家居環(huán)境</b><b class='flag-5'>監(jiān)控</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計(jì)

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

    通過(guò)Android Studio軟件導(dǎo)入項(xiàng)目進(jìn)行編譯,因版本問(wèn)題需要修改關(guān)鍵詞,compile 均替換為implementation,testcompile均替換為testimplementation,可參考以下代碼
    的頭像 發(fā)表于 07-26 11:22 ?784次閱讀

    家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)方案

    基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)具備
    的頭像 發(fā)表于 07-26 11:33 ?1767次閱讀

    基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程系統(tǒng)設(shè)計(jì)(平臺(tái)部署)

    適合有前言:本文主要介紹如何在機(jī)智平臺(tái)創(chuàng)建一個(gè)智能產(chǎn)品、定義功能數(shù)據(jù)點(diǎn)、生成MCU代碼包并附上修改好的代碼、生成APP代碼編譯附上參考代碼。需準(zhǔn)備的硬件主要有ArduinounoR3
    的頭像 發(fā)表于 04-13 16:21 ?3827次閱讀
    基于<b class='flag-5'>Arduino</b>與<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>的<b class='flag-5'>家居環(huán)境</b><b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)(<b class='flag-5'>云</b>平臺(tái)部署)

    工程實(shí)施:基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程系統(tǒng)設(shè)計(jì)1

    基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)具備
    的頭像 發(fā)表于 07-26 09:45 ?1156次閱讀
    工程實(shí)施:基于<b class='flag-5'>Arduino</b>與<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>的<b class='flag-5'>家居環(huán)境</b><b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)1

    “鹿居”APP開發(fā):基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程系統(tǒng)設(shè)計(jì)

    平臺(tái)部署中,使用機(jī)智開發(fā)者中心的APP自動(dòng)生成服務(wù),并下載APP代碼包,該代碼包基于機(jī)智APP開源框生成的,在此基礎(chǔ)上,我將APP控
    的頭像 發(fā)表于 07-27 10:20 ?733次閱讀
    “鹿居”APP開發(fā):基于<b class='flag-5'>Arduino</b>與<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>的<b class='flag-5'>家居環(huán)境</b><b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)

    平臺(tái)部署:基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程系統(tǒng)設(shè)計(jì)

    基于Arduino機(jī)智家居環(huán)境遠(yuǎn)程監(jiān)控系統(tǒng)具備
    的頭像 發(fā)表于 07-27 10:19 ?780次閱讀
    <b class='flag-5'>云</b>平臺(tái)部署:基于<b class='flag-5'>Arduino</b>與<b class='flag-5'>機(jī)智</b><b class='flag-5'>云</b>的<b class='flag-5'>家居環(huán)境</b><b class='flag-5'>遠(yuǎn)程</b><b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)