• 3

【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

前(廢)言:
今年夏天的時候,感覺到回家特別熱
所以幻想能夠在下班時直接在公司先遠端遙控家裡的冷氣打開
回到家剛好達成冷房,所以才開始動手打造這個作品

首先,這個裝置透過Wifi連網 (俗稱的物聯網)
使用者能夠在外直接透過網路連到家裡控制冷氣機開關
控制的方式是預先把冷氣機遙控器的訊號拷貝起來
由Arduino控制發射
也能監控最近12小時溫度變化
不過功能應該還會陸續增加

外觀圖
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
下圖左邊是紅外線發射,右邊是溫度感測器
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
內部拍一張
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

必要材料:
1.Arduino Micro or Leonardo (Arduino其他兄弟姊妹應該也行的)
2.Wifi 轉 TTL 模組
3.USB 轉 RS232 線材
4.紅外線發射元件與9013
5.溫度感測DS18B20
6.烙鐵
7.OK線若干
材料費應該千元有找!

非必要材料:
1.外盒 (剛好大小的盒子可遇不可求)
2.Web Server (自己架)
3.Logic Analyzer (有最好)
4.USB 轉 TTL 線材 (幫助Debug)
5.三用電錶 (能不用到當然最好)

本作品所有程式碼已經 Open source,請直接到 GitHub 下載
https://github.com/ccwillsu/SmartHomeAIR

Maker行前建議具備:
1.基本修改Code能力
2.基本Arduino開發經驗
3.基本網路知識
4.網站架設基礎
5.最基本的電路知識(照著說明不要短路或接錯線即可)
這樣我相信你就算遇到障礙,也能靠著google一下輕易排除了
6.許多的時間(前面5點都可以從0開始學,如果你沒有時間的話就很難完成了)

開始:
1.設定 Wifi 轉 TTL 模組
其實目前已經有結合 Wifi 的 Arduino 可以用
但因為價格太貴 CP 值不高又不靈活所以不採用
我是從淘寶上購買這個模組
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
當然也還有更便宜的選擇,但這個好處是已經提供adapter還有天線
按照商家提供的文件設定
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
先讓這個模組可以連上你家的無線網路
設定SSID,密碼這些是一定要的
建議將wifi模組開啟DHCP功能
另一方面再從Wifi AP設定DHCP固定IP,讓wifi模組固定用一個IP
如果Arduino在LAN,Web Server在WAN的話,需要再設定Wifi AP的虛擬伺服器
將一個對外的port mapping到你的Arduino的IP才能正常連線
最後,如果家裡沒有無線網路,我記得直接在這個模組連接網路線也可以work
但實際上我沒測試過

2.錄製冷氣遙控器發射訊號
老實說這個步驟花的時間比我預期多很多
網路上有教學直接用 Arduino 接 IR 接收器錄製訊號
可參考以下網址:
http://www.geek-workshop.com/thread-5146-1-1.html
http://www.geek-workshop.com/thread-3444-1-1.html
http://www.takobear.tw/201702608526356260322804024687/-arduino-irremote-homemade
但我試了許久都沒成功,最後索性買一台便宜的山寨LA
才總算正確的把冷氣遙控訊號錄製下來

擷取遙控器訊號
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

執行 Export Data
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

開啟上一步匯出的 .csv
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

C2 輸入 =INT((A3-A2)*1000000) 然後往下拉
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

把得到的數據轉成陣列
第一個數字改成1000即可
陣列最後再加一個3000讓時間延長
再分別放進Arduino.ino內的rawCodes_ac_open,rawCodes_ac_close
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

3.接線
按這裡檢視網頁
Arduino Rx <-> Wifi Module Tx (圖中綠色那條線)
Arduino Tx <-> Wifi Module Rx (圖中藍色那條線)
Arduino Gnd <-> Wifi Module Gnd (圖中灰色那條線)
Arduino 5v <-> Wifi Module 5v (圖中橙色那條線)
畫面左邊的電晶體是C9013,紅色燈是紅外線發射元件,右邊的電晶體是DS18B20
整個作品只靠 Wifi Module 接的 12v adapter 供電
Arduino 的電直接由 Wifi Module 上的 5v 來供應

4.燒錄Arduino程式
我相信你已經玩過Arduino所以燒錄方法就不贅述了
燒錄完程式如果順利的話,你已經可以直接用瀏覽器連到你的Arduino開關冷氣
http://你的ArduinoIP/abcd1234.htm?cmd=1 (開冷氣)
http://你的ArduinoIP/abcd1234.htm?cmd=0 (關冷氣)
及取得目前溫度
http://你的ArduinoIP/abcd1234.htm?cmd=2 (取得目前溫度)

但我相信你不會只想要這麼陽春的系統,所以繼續往下看吧

補充:abcd1234 這個字串你可以在 SmartHomeAIR.h 裡面修改成只有你知道的一組字串
這樣才不會讓阿貓阿狗都能連到你的arduino控制你家冷氣


5.架設Server (上雲端)
本來是想直接把所有Web功能都在 Arduino 上面實做出來
但 Arduino Ram 實在太小,做不來,只好切開來做
Arduino 就只做基本的控制跟取得溫度功能
其他應用的功能交給 Apache + Mysql + PHP 三兄弟上陣
所以如果你不想架設 Server,只要直接用手機連 Arduino,就是這樣的方式
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
雲端架構:數據儲存在雲端,行動裝置是透過Server來控制Arduino
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

同樣 PHP 的部份也都 Open source 了,只要再改一下 server.conf.php 就可以動
你只要設定好DB的參數,第一次開啟網頁就會自動建好所有Table
另外你也需要設定一下 cron,每半小時去執行一次 cron_get_temp.php
系統會將溫度紀錄在 smarthome_temp_log 這個 table 內

模板的部份是從這個網站上下載來修改的
http://www.motemplates.com/mobile-website-templates.php
如果你不喜歡這個風格,可以自行找別的模板來套

6.外盒
外盒算比較不重要的,看人隨意發揮
我是在大創買的收納盒,一個39元
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)
比較重要的是,你必須把這個作品放在冷氣可以接收到紅外線的範圍內
我自己測試5~6公尺內沒問題

7.自行打包成Android App
雖然我目前沒有把這個系統寫成App的計畫
如果你嫌每次從手機裡面開網頁麻煩
也可以自行把網頁包成一個 App,爽度又更高了
http://www.appsgeyser.com/ (for Android)

成果演示:
1.Dashboard 可以看到目前即時的溫度,以及開關冷氣

Dashboard 上面的功能都用 AJAX 來做
所以操作時你可以看到即時在loading的效果

2.Stat 可以看到最近12小時溫度變化
【教學】DIY Arduino 雲端空調控制 & 居家溫度監控 (智慧家電)

3.Setting 的部份目前保留之後可以設定溫度達到某個條件自動開關冷氣

結語:
1.事實上這個作品的 Arduino Code 目前有一個限制,一次只能一個連線
而且每個動作之間還必須間隔個2秒比較不會出問題
不過我相信這個問題有時間會改善的

2.另外一個隱憂就是安全性議題,我相信這個系統安全性是不足的
所以如果你要出遠門長期不在家的話,最好將他斷電避免被搗亂

3.你還可以從 database 內的 smarthome_operation_log table 看到所有開關冷氣的 log
不過這只有紀錄到透過 Dashboard 上面開關冷氣的行為
如果駭客知道你的 Arduino IP 跟 AccessKey 直接連到你的 Arduino ,就沒有紀錄到了
2014-10-28 0:01 發佈
文章關鍵字 教學 智慧家電

ccobj wrote:
前(廢)言:今年夏天...(恕刪)


這個真的很實用呢
樓主真厲害
我前幾天也剛好用spark core做了一個家電控制~(一個IR+繼電器)

下圖是之前做的版本...


這是現在的版本~

黑色盒子裡面藏著繼電器跟變壓器~
雖然spark core也可以藏裡面...
但是目前還處於持續開發中...
因此就把它移出來了~

成本比較高一點...
spark core就NT1100
5v變壓器,目前是隨便拆掉一個沒在用的5v 500ma的變壓器

安全性部分...
我是將spark core藏在區域網路..
然後另外用php透過tcp server來存取~(我平常就有架server)
因此比較不容易遭受到入侵的問題~
下圖是控制介面(網頁),溫度部分..因為沒有遠離spark core上面的wifi晶片..所以約高了5度C


未來打算用BLE來部屬所有家電控制(繼電器)...
也應該會有安全性問題...
因此打算用RSA(複雜,且比較耗電耗時)或是亂數表做時間驗證器來解決任何人都可以連線BLE的問題~


slanla2007 wrote:
我前幾天也剛好用sp...(恕刪)


請問你的變壓器是藏在那個黑盒子裡面嗎
那個黑盒子也包含IR發射開啟冷氣嗎
還是單純只是接收紅外線訊號而已?

我也有做一個是繼電器控制的,目前是想用Zigbee之類的連接我的白盒子
白盒子當master,繼電器當slave(支援多個slave)
黑色盒子裡面就只有變壓器跟繼電器~



外面弄個110v的插頭~


其他的都在外面~



而Zigbee未來也打算試試看~
另外..ir receiver我是事先錄好...目前沒有裝~

等有萬用冷氣IR的Library出來.我才會把它上去,變成萬用型家電控制器...(幻想)

slanla2007 wrote:
另外..ir rec...(恕刪)


謝謝分享
我也是有做一個控制插座的模組
只是還沒找到適合的外殼


Slanla 和CCobj 兩位高手對現在市面上的Wi-Fi智慧插座 Dlink, Edimax, AiPlug, 有沒有評比與推薦呢? 畢竟不是人人能夠像二位自己動手做
推薦你"小K 2代",或是找"wifi 智能遙控",手機就可以遙控紅外線電器或是開關電器,

我是用小K1代來控制抽風機與熱水器,500元左右就有了。
謝謝Fallsky! 智能遙控買過啦, 不好用, 距離太短又得學習超麻煩, 因為朋有警告過我還被朋友笑了!

用電的插座就不考慮大陸貨了, 沒有過安規的, 只有公牛比較道地
  • 3
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?