如今相當一部分的家庭依然使用著一些老式家電,扔掉浪費,繼續使用又有點土不拉嘰的。利用機智云物聯網平臺可以輕而易舉地實現一些智能功能,舊瓶裝新酒,讓老式電氣發出現代異彩,感覺有點像用古代的缶裝上現代的人頭馬XO,把風箏搞成隱形飛行器一樣,極具科技感酷勁。為了更利于老式電氣的改裝,通過手機-gokit-無線模塊-風扇等一系列硬件的中繼接力,完成對一臺老式風扇的調速過程。
一、硬件準備
電路圖
見原文地址:https://club.gizwits.com/thread-7992-1-1.html
二、項目完成后的圖片
1)Gokit+無線發射模塊
2)接收板
4路功率驅動模塊+無線接收模塊+電源模塊+繼電器模塊
3)接收板通過一個插座盒安裝到老式風扇
三 軟件開發環境
機智云開發者中心,使用其中的MCU自動代碼生成、APP代碼自動生成等服務,方便進行移植和功能開發。
四 代碼說明
通過自動生成的代碼+機智云寵物屋的云端部分+添加部分邏輯和自定義函數,就可以完成項目,可靠地進行控制。下面介紹一下邏輯和自定義函數部分的代碼:
1)修改原來寵物屋的WiFi配置狀態顯示代碼
void wifiStatusHandle(){ if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP)) { Serial.println(F("WIFI_SOFTAP!")); ControlFan_1(); //Soft AP模式,向無線接收模塊發送紅燈點亮和啟動第一檔風量數據 }
if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK)) { Serial.println(F("WIFI_AIRLINK!")); ControlFan_2(); //AirLink模式,向無線接收模塊發送藍燈點亮和啟動第二檔風量數據 }
if(myGizwits.wifiHasBeenSet(WIFI_STATION)) { Serial.println(F("WIFI_STATION!")); }
if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER)) { Serial.println(F("WIFI_CON_ROUTER!")); ControlRst();//配置成功后,關閉遠程設備。 } }
void wifiStatusHandle(),是寵物屋代碼里的函數,用于監視Gokit開發板上的Key2狀態,也就是手機與硬件設備配置時,自動或手動配置WiFi連接的按鈕短按或長按的狀態,只不過經過修改以上代碼,該設備的Gokit開發板上不會有任何表示,取而代之的是,接收板收到數據后,RGBLDE燈點亮的同時,會以接收到的相應風量指令啟動風扇,也就是遠程配置。
2)添加邏輯控制代碼
void loop() { bool varR_Switch = 0;//系統根據數據點自動生成的開關變量,以下相同。 bool varR_Fan_1 = 0;//風量一檔 bool varR_Fan_2 = 0;//風量二擋 bool varR_Fan_3 = 0;//風量三檔
KEY_Handle();//key handle , network configure wifiStatusHandle();//WIFI Status Handle //手機發過來的開關事件 if(myGizwits.hasBeenSet(EVENT_Switch)) { myGizwits.read(EVENT_Switch,&varR_Switch); if(varR_Switch == 1)//當開關為開狀態時 { ControlFan_1();//默認風量一檔開啟 } else{ ControlRst();//當開關為關閉時,風扇停止。 } } //手機發過來的第一檔風量事件 if(myGizwits.hasBeenSet(EVENT_Fan_1)) { myGizwits.read(EVENT_Fan_1,&varR_Fan_1);//Address for storing data if(varR_Fan_1 == 1)//接收到云端一檔時 { ControlFan_1();//風量一檔開啟 } else{ ControlRst();//當開關為關閉時,風扇停止。 } } //手機發過來的第二檔風量事件 if(myGizwits.hasBeenSet(EVENT_Fan_2)) { myGizwits.read(EVENT_Fan_2,&varR_Fan_2);//Address for storing data if(varR_Fan_2 == 1)//接收到云端二檔時 { ControlFan_2();//風量二檔開啟 } else{ ControlRst();//當開關為關閉時,風扇停止。 } } //手機發過來的第三檔風量事件 if(myGizwits.hasBeenSet(EVENT_Fan_3)) { myGizwits.read(EVENT_Fan_3,&varR_Fan_3);//Address for storing data if(varR_Fan_3 == 1)//接收到云端三檔時 { ControlFan_3();//風量三檔開啟 } else{ ControlRst();//當開關為關閉時,風扇停止。 } }
myGizwits.process();}//關閉設備函數void ControlRst(){ val = 0; for(int i = 9;i <= 11;i++){ pinMode(i,OUTPUT); digitalWrite(i,HIGH); }}//風量一檔控制函數void ControlFan_1(){ ControlRst();//啟動設備前,先關閉其他檔位的風量 digitalWrite(Pin9,LOW);//向接收端無線模塊發送開關啟動信號}//風量二檔控制函數void ControlFan_2(){ ControlRst();//啟動設備前,先關閉其他檔位的風量 digitalWrite(Pin10,LOW);//向接收端無線模塊發送開關啟動信號}//風量三檔控制函數void ControlFan_3(){ ControlRst();//啟動設備前,先關閉其他檔位的風量 digitalWrite(Pin11,LOW);//向接收端無線模塊發送開關啟動信號}
核心功能就是利用三個void ControlFan()風扇控制函數,依次啟動ardiuno的9,10,11三個引腳低電位,從而控制連接在三個腳上面的無線發射模塊三路開關信號發送出去。當風扇上的無線接收模塊收到信號后,會立刻觸發對應的繼電器閉合,從而啟動風扇運行和RGBLED燈點亮。
關閉設備函數void ControlRst(),其實質就是復位三個ardiuno引腳,從而觸發接收模塊動作,關閉風扇,不管風扇運行在任何風量檔位上,都可以立刻關閉。
五 關于模塊使用說明,完整代碼,測試用APK
1)本文提到的模塊,電路圖,完整代碼等請參照附件的資料
2)本文使用的手機APK是機智云提供的標準測試調試軟件,大家請上云端下載就可以了。
配置前后的圖標和界面如下圖所示:
原文名稱:基于Arduino UNO R3的智能調速風扇
https://club.gizwits.com/thread-7992-1-1.html
方案推薦
機智云電風扇智能化解決方案,免開發接入,賦能企業快速智能化轉型。該方案通過整合藍牙SoC免開發方案、PCBA公版方案、微信小程序/APP、設備管理后臺及第三方語音接入等軟硬件服務,低成本、高效率實現產品智能化。并且,方案適用于落地扇、塔扇、循環扇、吊扇等多種品類風扇設備。
-
物聯網
+關注
關注
2903文章
44284瀏覽量
371342
發布評論請先 登錄
相關推薦
評論