You are currently viewing 物聯網Wifi範例-智慧控制冷氣機

物聯網Wifi範例-智慧控制冷氣機

智慧家庭最直接的感受就是利用物聯網技術整合紅外線,直接控制家庭中的冷氣機、電視機等設備。然後可以導入聲控工具如Google Assistant、Siri或Alexa等智慧音箱控制,當然也可以自己寫APP開發遠端控制系統來控制家裏舊有設備

這篇文章就讓我們來做些改變,先使用Arduino開發板結合紅外線接收器,解析家裏冷氣機的紅外線頻道,接著可以再用紅外線發送器控制冷氣機。然後把Arduino開發板串連線上服務平台,這樣就可以串接智慧音箱用聲控來控制,當然也會開發一支簡易的APP來控制。最後若可以加入溫度感測器,當我按下開關後,冷氣機會依據溫度感測器偵測到的室溫,若室溫高於30度的話,就啟動冷氣機並將冷氣溫度設定為28度。

下面,就讓我一一帶各位如何執行開發這樣的範例。

Arduino+IR接收器收集冷氣機每個控制動作IR頻率程式開發

智慧家庭是很多年前就喊出來的口號,但感覺好像還未普及的被應用,在創辦Tutor IoT時,我腦中有想過之後若有時間,要來寫一篇如何使用Arduino控制冷氣機的文章,然後進階到可以用APP遠端控制冷氣機、以及用聲控控制冷氣機,甚至是加裝溫度感測器,只要用APP啟動開關後,智慧型冷氣機就可以自動判斷溫度開關冷氣等等的應用。所以首先要解決的問題是如何使用Arduino控制冷氣機呢?我再instructables的circuits找到這一篇介紹如何使用Arduino控制電視機的文章。這裏參考這篇文章程式碼,修改程式碼成可以控制冷氣機的版本。若你有這方面的需求,建議可以參考這篇文章創造開發自己的智慧產品。

軟硬體所需元件:

  • 1個Arduino(任何型號均可,只要具備PWM輸出腳位)
  • 1個IR LED(發射波長940nm)(如下圖)
  • 1個IR接收器(如下圖)
  • 1個USB A至B線,Arduino跟電腦連線
  • 1台電腦或筆電,寫程式碼用
  • Arduino IDE開發工具
  • 1個220Ω電阻及一些接線

電路圖:

IR接收器接收到訊號後編譯架構:

首先,你要先像電路圖Arduino+IR接收器一樣,將IR接收器Data腳位接到Arduino nano的pin 7腳位,然後再將IR接收器的電源及接地分別跟Arduino的電源及接地腳位相接。

接下來就是將Arduino nano的USB接到電腦端,進行接收信號作業。將程式碼(如下圖)上傳到Arduino,上傳完成後,打開序列埠監控視窗。

IR接收程式碼:


然後按下遙控器,這時序列埠監控視窗會收到如架構圖的結果那樣。你將得到一堆數字,後面跟著”usecs”或”usec”。
看起來是像這樣:
19672 usec, 6680 usec
7360 usec, 700 usec

會有一長串像這樣的數字,到此為止我們就完成IR接收器的作業。
註:我們要將每一個按鍵會傳送出的信號都收集起來,到時應用到IR發射器上就可以發射出同樣的信號來控制冷氣機。

Arduino+IR發射器控制程式開發

IR發射器發送訊號控制冷氣機架構:

我們把訊號解析後,收集訊號完成,接下來就是用IR發射器發送給冷氣機控制的動作。程式碼詳解釋可以看文章內容。

IR發射器程式碼:

Arduino+IR控制整合APP控制開發

可以使用IR控制冷氣機後,接下來我們進階的寫一支APP應用程式,然後也把Arduino nano版本的IR控制器升級成WeMos D1 mini的版本,讓它連上Wi-Fi網路,可以跟APP串聯在一起,這樣只要打開手機APP就可以直接控制冷氣機。

下面我們就直接來講解一下APP遙控冷氣機的開發過程。

WeMos D1 mini取代Arduino,因為需要用到Wi-Fi的功能,所以也要加上Wi-Fi的程式碼,這邊若不熟悉ESP8266的架構及語法可以參考我寫的列關於ESP8266入門指南-建立Wi-Fi連線文章,而另一部分,我也加上冷氣機基本上控制訊息碼,共有開啟、關閉、調升溫度、調降溫度、風量切換、風向自動、運轉切換及睡眠等這八個功能測試,我這邊程式修改後的寫法如下:

如何讓手機APP可以控制WeMos D1 mini,因為這邊有多了一個void handlePin()函數,首先WeMos D1 mini要先宣告它的IP是192.168.1.13,這樣APP就知道它的IP位址,也就可以發送TCP的指令,像是”http://192.168.1.13/pin?a=0″(開機)、”http://192.168.1.13/pin?a=1″(關機)…..等等的指令來控制冷氣機執行各種動作。

這樣看來,APP的功能就是除了要有執行這些指令的按鍵外,還需要可以送出TCP命令的函數。所以我們在Layout介面上放上(下圖APP按鍵圖示)這些按鍵,然後再加上可送出TCP命令的函數(如下圖TCP指令)。這樣就可以再寫一個判斷函數,判斷按下哪一個按鍵就會發出哪一個指令。

圖 APP Layout按鍵畫面

圖 執行TCP指令Function

圖 判斷Layout按鈕按下後執行TCP指令

完成圖:

Arduino+IR控制整合聲控工具開發

除了可以用APP控制IR發射器外,當然也可以利用聲控工具來控制IR發射器,這裏我們以Google Assistant+IFTTT+RemoteMe+IR發射器範例來實現。

IFTTT介面:

新增八個指令由Google Assistant控制Webhooks。如下圖範例(這裏先以開啟冷氣機及關閉冷氣機測試):

RemoteMe介面:

新增一個變數及一個ESP設備,如下圖示。

WeMos D1 mini部分:

由RemoteMe產出程式碼,再結合上面APP範例的Arduino那邊修改一下。如下圖示:

將這三部分設定及修改完成,就可以使用Google Assistant來聲控IR發射器進階成語音控制冷氣機了。下面是影片範例。

智慧控制冷氣機

所謂的智慧控制,應該就是可以自動判斷環境溫度,當偵測到環溫高於假設是34度,則控制晶片就會自動啟動冷氣機開關,讓溫度保持在舒適的27~28度間。而要做到這樣的智慧控制就是在WeMos D1 mini晶片上加上一個溫度感測器,可以隨時偵測室內的環境溫度做判斷。以下就來介紹這個架構及邏輯程式。

邏輯判斷就如同上面說的:

  1. 當偵測溫度大於34度,就送出開啟冷氣機的IR訊號解碼
  2. 當偵測溫度小於27度,則送出關閉冷氣機的IR訊號解碼
  3. 其他條件則不動作

程式碼如下:

智慧控制冷氣機大數據應用

上一個範例若應用在企業上在推動的大數據應用上,則可以加上一段程式碼,就是固定時間自動將讀取到的數據(如下環境溫度、冷氣機狀態、冷氣機溫度等等)上傳到雲端資料庫,這些數據若地點越來越多、有越多的客戶的使用習慣數據等等,就可以將這類的智慧判斷寫成更人性化邏輯判斷,並結合APP、聲控工具的操作,進而推出大數據、AI智慧冷氣機產品。

這裏先介紹如何將蒐集到的數據上傳到雲端資料庫範例。

首先自行架一個MySql資料庫,並建立一個測試蒐集數據的資料表。這裏新增一個”ir_air_conditioner_data_collect”資料表,有”room_temp”及”status”欄位。

接著在WeMos D1 mini程式碼要加上一些程式碼,如下圖:

上傳程式碼後並執行,就可以在序列埠監控視窗看到程式執行結果及MySql資料庫定時接收到資料新增。

總結

希望各位看完本篇文章可以得到滿滿收獲,也能知道就算只是一個IR發射器、IR接收器、溫度感測器等感測元件,只要加上一些想法,就可以讓我們的生活得到大大改善。

所謂大數據,其實也就是日常中我們每個生活細節的記錄資料,而為了讓我們的生活更方便,所以我們可以整合物聯網的大大小小感測零件,做一些技術上應用,就可以使我們的生活過得更方便。

發佈留言