7

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

Posted by will on 十月 28, 2014 in 嗜好

今年夏天的時候,感覺到回家特別熱
所以幻想能夠在下班時直接在公司先遠端遙控家裡的冷氣打開
回到家剛好達成冷房,所以才開始動手打造這個作品
首先,這個裝置透過Wifi連網 (俗稱的物聯網)
使用者能夠在外直接透過網路連到家裡控制冷氣機開關
控制的方式是預先把冷氣機遙控器的訊號拷貝起來
由Arduino控制發射
也能監控最近12小時溫度變化
不過功能應該還會陸續增加
外觀圖
s_20140915_020058
下圖左邊是紅外線發射,右邊是溫度感測器
s_20141027_232820
內部拍一張
s_20141027_232735
必要材料:
1.Arduino Micro or Leonardo (Arduino其他兄弟姊妹應該也行的)
2.Wifi 轉 TTL 模組
3.USB 轉 RS232 線材
4.紅外線發射元件
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 值不高又不靈活所以不採用
我是從淘寶上購買這個模組
s_RM042
當然也還有更便宜的選擇,但這個好處是已經提供adapter還有天線
按照商家提供的文件設定
s_RM041
先讓這個模組可以連上你家的無線網路
設定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
才總算正確的把冷氣遙控訊號錄製下來
擷取遙控器訊號
s_20140906_012153
s_la1
執行 Export Data
s_la2
開啟上一步匯出的 .csv
s_la3
C2 輸入 =INT((A3-A2)*1000000) 然後往下拉
s_la4
把得到的數據轉成陣列
第一個數字改成1000即可
陣列最後再加一個3000讓時間延長
再分別放進Arduino.ino內的rawCodes_ac_open,rawCodes_ac_close
s_la5
3.接線

Arduino Rx <-> Wifi Module Tx (圖中綠色那條線)
Arduino Tx <-> Wifi Module Rx (圖中藍色那條線)
Arduino Gnd <-> Wifi Module Gnd (圖中灰色那條線)
Arduino 5v <-> Wifi Module 5v (圖中橙色那條線)
整個作品只靠 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,就是這樣的方式
s_1
雲端架構:數據儲存在雲端,行動裝置是透過Server來控制Arduino
s_2
同樣 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元
s_20140825_005508
比較重要的是,你必須把這個作品放在冷氣可以接收到紅外線的範圍內
我自己測試5~6公尺內沒問題
7.自行打包成Android App
雖然我目前沒有把這個系統寫成App的計畫
如果你嫌每次從手機裡面開網頁麻煩
也可以自行把網頁包成一個 App,爽度又更高了
http://www.appsgeyser.com/ (for Android)
成果演示:
1.Dashboard 可以看到目前即時的溫度,以及開關冷氣

Dashboard 上面的功能都用 AJAX 來做
所以操作時你可以看到即時在loading的效果
2.Stat 可以看到最近12小時溫度變化
s_2014-10-16-18-09-56-1s
3.Setting 的部份目前保留之後可以設定溫度達到某個條件自動開關冷氣
結語:
1.事實上這個作品的 Arduino Code 目前有一個限制,一次只能一個連線
而且每個動作之間還必須間隔個2秒比較不會出問題
不過我相信這個問題有時間會改善的
2.另外一個隱憂就是安全性議題,我相信這個系統安全性是不足的
所以如果你要出遠門長期不在家的話,最好將他斷電避免被搗亂
3.你還可以從 database 內的 smarthome_operation_log table 看到所有開關冷氣的 log
不過這只有紀錄到透過 Dashboard 上面開關冷氣的行為
如果駭客知道你的 Arduino IP 跟 AccessKey 直接連到你的 Arduino ,就沒有紀錄到了

 

編譯所需Library

1. http://cc.beingo.net/file/IRremote.zip

2. http://cc.beingo.net/file/Regexp.zip

3. http://cc.beingo.net/file/OneWire.zip

4. http://cc.beingo.net/file/DallasTemperature_372Beta.zip

 
0

Raspberry Pi 應用–Python 翻頁氣象時鐘

Posted by will on 一月 5, 2014 in 嗜好

1008

有沒有想過手邊的 Pi 平常如果沒用,可以變成一個翻頁時鐘,還可以顯示氣象呢?

Flip Clock Pi 就是一個這樣的APP,而且還可以隨個人喜好設定背景圖片、座標等等

只要再搭配一個小型的液晶螢幕,完全變身成專業又帶有質感的時鐘了。

 

可以在 The Pi Store 下載這個APP

http://store.raspberrypi.com/projects/flip-clock-pi

 

設定方式:

cd /usr/local/bin/indiecity/InstalledApps/flip-clock-pi/Full/
sudo leafpad FlipClockPi.conf

 

[common]
screen_width:設定畫面寬度
screen_height:設定畫面高度
wallpaper:設定背景圖片路徑
escape_label_visible:設定是否顯示ESC標籤
[clock]
pos_x:時鐘座標X
pos_y:時鐘座標Y
[weather]
location_code:設定位置,參考 WeatherLocationDatabase.txt
metric:設定溫度華氏或攝氏

修改完後記得儲存,然後重新執行 Flip Clock Pi

 

example1

設定完是不是有另一種感覺了呢

 

結合小型液晶螢幕後

 

小型液晶螢幕

http://goods.ruten.com.tw/item/show?21307099793246

http://goods.ruten.com.tw/item/show?21306065042391

 
1

Like Kanban–Facebook粉絲專頁互動看板

Posted by will on 五月 6, 2013 in 嗜好

當系統偵測到有使用者在商家的facebook粉絲專頁按讚,首先LED跑馬燈會閃爍,接著推出一個讚的圖示,在LCD上也會顯示按讚者的Facebook大頭照。讓客人在按讚後,當場也可以感受到回饋,也會吸引其他旁觀者的目光。商家可放置於櫃台,更可搭配優惠活動,吸引更多客人加入粉絲專頁。

樣品:

P3290002

成品:

P5120015

Demo:

 
0

翻轉鬧鐘

Posted by will on 十月 10, 2012 in 科技享樂

第一面顯示目前時鐘

往上翻顯示鬧鐘倒數計時

 
3

PDF複製文字到Google翻譯時 刪除多餘的換行/斷行

Posted by will on 五月 24, 2012 in 分享

複製PDF一段文字到Google翻譯,通常每個行尾都會有一個換行,造成Google翻譯起來不”流利”。

02

 

可以使用這個線上工具刪除多餘的換行 [PDF to Google翻譯] 線上自動刪除換行

01

 

刪除多餘換行後,可以看到Google翻譯的結果流利多了。

03

連結:[PDF to Google翻譯] 線上自動刪除換行

標籤:, , , , ,

http://cc.beingo.net