基於ArduinoUNOR3的智能調速風扇


一,項目介紹
  如今相當一部分的家庭依然使用着一些老式家電,扔掉浪費,繼續使用又有點土不拉嘰的。利用機智雲的雲計算IoT軟件平台,可以輕而易舉地實現一些智能功能,舊瓶裝新酒,讓老式電氣發出現代異彩,感覺有點像用古代的缶裝上現代的人頭馬XO,把風箏搞成隱形飛行器一樣,極具科技感酷勁。為了更利於老式電氣的改裝,通過手機-gokit-無線模塊-風扇等一系列硬件的中繼接力,完成對一台老式風扇的調速過程。
  請看一下項目視頻


二 硬件准備

序號
名稱
規格/型號
數量
1
老式風扇
三檔手動調速
一台
2
機智雲開發板
Gokit2
一套
3
無線發射模塊
L24YK-TXH
一個
4
4路功率驅動模塊
TB6612FNG
一個
5
無線接收模塊
L24YK-RX4
一個
6
電源模塊
AC220V/DC3.3V
一個
7
繼電器模塊
4路光耦
一個
8
電阻,電容,LED燈等
200Ω,1K,RGB共陰極LED
若干


項目完成后的圖片
1)Gokit+無線發射模塊
 
2)接收板
4路功率驅動模塊+無線接收模塊+電源模塊+繼電器模塊
 

3)接收板通過一個插座盒安裝到老式風扇
 

三 軟件開發環境

  • 機智雲賬號一個


        用於使用機智雲的物聯網雲服務和開發工具,如自動代碼生成等,這方面的教程機智雲社區的前輩們已經介紹的非常詳細,在此就不再啰嗦了。

四 代碼說明
        通過自動生成的代碼+機智雲寵物屋的雲端部分+添加部分邏輯和自定義函數,就可以完成項目,可靠地進行控制。下面介紹一下邏輯和自定義函數部分的代碼:
1)修改原來寵物屋的WiFi配置狀態顯示代碼

  1. void wifiStatusHandle()
  2. {
  3.   if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))
  4.   {
  5.     Serial.println(F("WIFI_SOFTAP!"));
  6.     ControlFan_1();        //Soft AP模式,向無線接收模塊發送紅燈點亮和啟動第一檔風量數據
  7.   }
  8.   
  9.   if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))
  10.   {
  11.     Serial.println(F("WIFI_AIRLINK!"));
  12.         ControlFan_2();        //AirLink模式,向無線接收模塊發送藍燈點亮和啟動第二檔風量數據
  13.   }
  14.   
  15.   if(myGizwits.wifiHasBeenSet(WIFI_STATION))
  16.   {
  17.     Serial.println(F("WIFI_STATION!"));
  18.   }
  19.   
  20.   if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))
  21.   {
  22.     Serial.println(F("WIFI_CON_ROUTER!"));
  23.         ControlRst();//配置成功后,關閉遠程設備。
  24.   }
  25.   }

void wifiStatusHandle(),是寵物屋代碼里的函數,用於監視Gokit開發板上的Key2狀態,也就是手機與硬件設備配置時,自動或手動配置WiFi連接的按鈕短按或長按的狀態,只不過經過修改以上代碼,該設備的Gokit開發板上不會有任何表示,取而代之的是,接收板收到數據后,RGBLDE燈點亮的同時,會以接收到的相應風量指令啟動風扇,也就是遠程配置。

2)添加邏輯控制代碼

  1. void loop() {  
  2.   bool varR_Switch = 0;//系統根據數據點自動生成的開關變量,以下相同。
  3.   bool varR_Fan_1 = 0;//風量一檔
  4.   bool varR_Fan_2 = 0;//風量二擋
  5.   bool varR_Fan_3 = 0;//風量三檔
  6.   
  7.   KEY_Handle();//key handle , network configure
  8.   wifiStatusHandle();//WIFI Status Handle
  9.   //手機發過來的開關事件
  10.   if(myGizwits.hasBeenSet(EVENT_Switch))
  11.   {
  12.     myGizwits.read(EVENT_Switch,&varR_Switch);
  13.         if(varR_Switch == 1)//當開關為開狀態時
  14.         {
  15.         ControlFan_1();//默認風量一檔開啟
  16.         }
  17.         else{
  18.         ControlRst();//當開關為關閉時,風扇停止。
  19.         }
  20.   }
  21.   //手機發過來的第一檔風量事件  
  22.   if(myGizwits.hasBeenSet(EVENT_Fan_1))
  23.   {
  24.     myGizwits.read(EVENT_Fan_1,&varR_Fan_1);//Address for storing data
  25.     if(varR_Fan_1 == 1)//接收到雲端一檔時
  26.         {
  27.         ControlFan_1();//風量一檔開啟
  28.         }
  29.         else{
  30.         ControlRst();//當開關為關閉時,風扇停止。
  31.         }
  32.   }
  33.   //手機發過來的第二檔風量事件  
  34.   if(myGizwits.hasBeenSet(EVENT_Fan_2))
  35.   {
  36.     myGizwits.read(EVENT_Fan_2,&varR_Fan_2);//Address for storing data
  37.     if(varR_Fan_2 == 1)//接收到雲端二檔時
  38.         {
  39.         ControlFan_2();//風量二檔開啟
  40.         }
  41.         else{
  42.         ControlRst();//當開關為關閉時,風扇停止。
  43.         }
  44.   }
  45.   //手機發過來的第三檔風量事件  
  46.   if(myGizwits.hasBeenSet(EVENT_Fan_3))
  47.   {
  48.     myGizwits.read(EVENT_Fan_3,&varR_Fan_3);//Address for storing data
  49.     if(varR_Fan_3 == 1)//接收到雲端三檔時
  50.         {
  51.         ControlFan_3();//風量三檔開啟
  52.         }
  53.         else{
  54.         ControlRst();//當開關為關閉時,風扇停止。
  55.         }
  56.   }
  57.   myGizwits.process();
  58. }
  59. //關閉設備函數
  60. void ControlRst(){
  61.    val = 0;
  62.    for(int i = 9;i <= 11;i++){
  63.   pinMode(i,OUTPUT);
  64.   digitalWrite(i,HIGH);
  65.    }
  66. }
  67. //風量一檔控制函數
  68. void ControlFan_1(){
  69.     ControlRst();//啟動設備前,先關閉其他檔位的風量
  70.         digitalWrite(Pin9,LOW);//向接收端無線模塊發送開關啟動信號
  71. }
  72. //風量二檔控制函數
  73. void ControlFan_2(){
  74.         ControlRst();//啟動設備前,先關閉其他檔位的風量
  75.         digitalWrite(Pin10,LOW);//向接收端無線模塊發送開關啟動信號
  76. }
  77. //風量三檔控制函數
  78. void ControlFan_3(){
  79.         ControlRst();//啟動設備前,先關閉其他檔位的風量
  80.         digitalWrite(Pin11,LOW);//向接收端無線模塊發送開關啟動信號
  81. }

    核心功能就是利用三個void ControlFan()風扇控制函數,依次啟動ardiuno的9,10,11三個引腳低電位,從而控制連接在三個腳上面的無線發射模塊三路開關信號發送出去。當風扇上的無線接收模塊收到信號后,會立刻觸發對應的繼電器閉合,從而啟動風扇運行和RGBLED燈點亮。
    關閉設備函數void ControlRst(),其實質就是復位三個ardiuno引腳,從而觸發接收模塊動作,關閉風扇,不管風扇運行在任何風量檔位上,都可以立刻關閉。

五 關於模塊使用說明,完整代碼,測試用APK

  • 1)本文提到的模塊,電路圖,完整代碼等請參照附件的資料
  • 2)本文使用的手機APK是機智雲提供的標准測試調試軟件,大家請上雲端下載就可以了。



配置前后的圖標和界面如下圖所示:
  

 

源碼下載地址:http://club.gizwits.com/thread-7992-1-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM