數位天堂

Nokia:科技始終來自於人性; 拜耳:如果文明不能使我們更相愛,那科技便失去意義!
歡迎您的加入,讓我們一起討論科技與環保的整合應用...

您尚未登入。

#1 2016-07-03 16:33:06

Service
天使
註冊日期: 2007-07-15
文章數: 316
目前積分 :   

[DIY] 智慧家庭氣象觀測站

多數人都有這樣的困擾,家人白天上班的上班,上課的上課,NAS 24hr 運作,寵物在家獨守空房,沒人可以即時因應氣溫的變化,因此很久以前就有個念頭,希望可以記錄家裡的環境變化甚至可以遠端了解目前狀況。這幾年拜 IOT 科技所賜,這方面的工具也逐漸推出,只是市面產品功能及穩定性參差不齊,也怕買到地雷,還不如依自身的需求自己 DIY 實作看看,功能還可以逐步擴充,重點是價格低廉實惠,庶民百姓都玩得起。

https://digiland.tw/uploads/3_dht11_03.jpg

這樣的需求,首選的工具當然就是用 Arduino 來擔綱囉,以下是演員陣容: 
▼ 主要控制板 Arduino UNO。
https://digiland.tw/uploads/3_dht11_10.jpg

▼ 溫溼度偵測元件 DHT11。
https://digiland.tw/uploads/3_dht11_14.jpg

▼ 因為只要顯示溫溼度等資訊,所以 LCD 選擇便宜的 1602 就足夠使用。
https://digiland.tw/uploads/3_dht11_12.jpg

▼ 這是LCD背面接腳,會選擇 I2C 是因為只要 4 條杜邦線就可以完成連接。
https://digiland.tw/uploads/3_dht11_13.jpg

▼ 如果想要能透過網路連線查詢即時狀態,則需要再加一張 W5100 Ethernet 擴充板。
https://digiland.tw/uploads/3_dht11_11.jpg

▼ 所有演員大集合,準備開工拜拜。
https://digiland.tw/uploads/3_dht11_09.jpg

單機版家庭氣象觀測站
▼ 單機板家庭氣象站接線圖,第一次畫不太熟練,找不到 DHT11 元件 拿 RHT03 充當orz
https://digiland.tw/uploads/3_dht11_15.jpg

▼ 實際接線圖,接得有點混亂,請多包涵jolin
https://digiland.tw/uploads/3_dht11_02.jpg

▼ 單機版程式碼

#include <LiquidCrystal_I2C.h> #include <dht11.h> #include <Wire.h> LiquidCrystal_I2C lcd(0x27, 16, 2); dht11 DHT11; const byte dataPin = 2; void setup() { // put your setup code here, to run once: lcd.init(); lcd.backlight(); } void loop() { // put your main code here, to run repeatedly: int chk = DHT11.read(dataPin); if(chk == 0) { lcd.setCursor(4,0); lcd.print("Temp"); lcd.setCursor(0,1); lcd.print("Humidity"); lcd.setCursor(9,0); lcd.print((float)DHT11.temperature, 2); lcd.print((char) 0xDF); lcd.print("C"); lcd.setCursor(9,1); lcd.print((float)DHT11.humidity, 2); lcd.print("%"); } else { lcd.clear(); lcd.print("Error code:"); lcd.print(chk); } delay(5000); }


▼ 開機後,會將 DHT11 偵測出來的溫溼度數據顯示在 LCD 畫面
https://digiland.tw/uploads/3_dht11_03.jpg

網路版家庭氣象觀測站
單機板似乎只能單機作業眼見為憑,還不如加上網路功能,讓遠端也能透過網路監看家裡的溫溼度狀況,所以以前述的單機板為基礎,我們再加上一片 W5100 Ethernet 擴充板,即可升級為網路版家庭氣象站。

▼ 在 Arduino UNO 上再堆疊一片 W5100,即可擁有網路版的功能。
https://digiland.tw/uploads/3_dht11_05.jpg

▼ 網路版程式碼

#include <LiquidCrystal_I2C.h> #include <dht11.h> #include <Wire.h> #include <SPI.h> #include <Ethernet.h> LiquidCrystal_I2C lcd(0x27, 16, 2); byte mac[] = { 0xF0, 0x7B, 0xCB, 0x4B, 0x7C, 0x9F }; dht11 DHT11; const byte dataPin = 2; EthernetServer server(80); void setup() { // put your setup code here, to run once: lcd.init(); lcd.backlight(); Ethernet.begin(mac); } void loop() { // put your main code here, to run repeatedly: char buffer[5] = ""; int chk = DHT11.read(dataPin); IPAddress ip = Ethernet.localIP(); EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.println("<!doctype html>"); client.println("<html>"); client.println("<meta charset=\"utf-8\" />"); client.println("<meta http-equiv='Refresh' CONTENT='30'>"); client.println("<title>智慧家庭氣象觀測站"); client.println("</head>"); client.print("溫度:"); client.print(dtostrf(DHT11.temperature, 5, 2, buffer)); client.print("°C<br>"); client.print("溼度:"); client.print(dtostrf(DHT11.humidity, 5, 2, buffer)); client.print("%"); client.println("</body>"); break; } } delay(1); client.stop(); } lcd.setCursor(0,0); lcd.print(ip); if(chk == 0) { lcd.setCursor(0,1); lcd.print(dtostrf(DHT11.temperature, 5, 2, buffer)); lcd.print((char) 0xDF); lcd.print("C"); lcd.setCursor(8,1); lcd.print(dtostrf(DHT11.humidity, 5, 2, buffer)); lcd.print("%"); } else { lcd.clear(); lcd.print("Error code:"); lcd.print(chk); } delay(5000); }


▼ 開機後,W5100 會啟動 DHCP 功能取得一組可用的 IP,並顯示在 LCD 上,第二列才會顯示目前的溫度及溼度。
https://digiland.tw/uploads/3_dht11_06.jpg

▼ 有了 IP,可以方便透過瀏覽器讀取目前的溫溼度狀態。
https://digiland.tw/uploads/3_dht11_07.jpg

▼ 透過 VPN 連線,甚至可以在辦公室遠端連線回來查看家裡的溫溼度資訊。
https://digiland.tw/uploads/3_dht11_08.jpg

後記
這樣的實作花費大概台幣 500 元上下就能擁有,程式碼也很簡單易學,後續可延伸的方向:1.透過 MRTG 功能可以定時記錄家裡溫溼度的變化。2.改成無線網路,讓偵測點不受限於網路線。3.增加繼電器,可以設定條件自動開啟或關閉家電,例如設定溫度達 25 度自動開啟電風扇,溼度達 80% 開啟除溼機等等,當然也可透過網路遠端控制開關。4.增加其他監控功能,例如瓦斯偵測、PM2.5偵測等等,這樣的 DIY 只要有創意就會有樂趣。

備註:為讓顯示順利,程式碼中的"<"字元皆使用全形符號,使用時請自行替換。




離線

 

#2 2016-07-03 22:02:13

s923708s923708
新生
註冊日期: 2010-02-28
文章數: 10
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

最近也才把買了很久的raspberry2拿出來玩
看到這篇回味一下diy的成就感
謝謝分享~!



離線

 

#3 2016-07-05 09:09:20

weisiter
新生
註冊日期: 2016-01-18
文章數: 16
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

之前有弄過一直弄不起來orz
因為用的事另一家的網路模組wallbash
這次可以在好好的弄看看了~yes


離線

 

#4 2016-07-23 03:26:38

kain5566
新生
註冊日期: 2015-11-25
文章數: 7
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

看樣子我該學學寫Arduino的語言了

目前還在用PIC16F系列寫自動控制,雖然穩定,但是網路介面不好搞


離線

 

#5 2016-08-10 14:18:26

koi5yy
新生
註冊日期: 2016-01-26
文章數: 15
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

對不起....
請問一下

1.程式碼要如何寫入??  能說清楚一些嗎??

2.全部材料真的是只要500元台幣?? (有包含網路套件?? )

3.這些材料要去哪裡買??



離線

 

#6 2016-08-10 15:50:59

Service
天使
註冊日期: 2007-07-15
文章數: 316
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

koi5yy 提到:

對不起....
請問一下

1.程式碼要如何寫入??  能說清楚一些嗎??

2.全部材料真的是只要500元台幣?? (有包含網路套件?? )

3.這些材料要去哪裡買??

1.建議您先看 arduino 相關入門書籍,推薦 - 超圖解Arduino 互動設計入門(第二版)
2.全部材料價錢在網拍都有,金額差不多就如同上述價錢
3.網拍或電子材料行


離線

 

#7 2016-11-23 12:45:39

black-sky
新生
註冊日期: 2011-08-17
文章數: 10
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

樓主這個DIY真的厲害
要有相關的電子零件知識
不然買元件說不出名稱也挺尷尬的
給您讚一個 milk


離線

 

#8 2016-12-08 12:33:55

mu760905
新生
註冊日期: 2016-12-08
文章數: 5
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

感謝大大分享~~~力馬來測試看看~~~謝謝~~~~~grin


離線

 

#9 2016-12-24 22:49:24

eoi00001
新生
註冊日期: 2016-12-24
文章數: 2
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

最近也想開始看看Arduino...值得參考的範例…感謝clapping


離線

 

#10 2016-12-27 23:01:42

qinnnn
新生
註冊日期: 2016-07-29
文章數: 10
目前積分 :   

Re: [DIY] 智慧家庭氣象觀測站

最近有買一套Arduino,來試看看,會不會成功,感謝大大


離線

 

友情連結

論壇頁尾

Powered by PunBB
© Copyright 2018 Rickard Andersson
RSS Feed