基於 ESP8266 的溫度感測器連接到家庭助理和 MQTT
這篇文章會告訴你如何使房間感測器監測溫度和濕度,並附加一個感測器來監測水族箱的水溫。
然後我們將通過 MQTT 設置與家庭助理工作
第一步:你需要什麼
- Wemos DI Mini
- DHT22 溫濕度感測器
- DS180B 防水溫度感測器
- 電線包線
- Perf 板
- 項目案例
- 3針直頭
- 2針頭短路塊
- 3K3電阻
- 焊鐵和焊錫
- Blutack
- 熱膠槍
- 外殼
- 鉛筆
- 工藝刀
- 小十字螺絲刀
安裝並準備好 Arduino IDE,使用 TrakerJ 針對 ESP8266 安裝 Arduino 的基礎環境。還需要在Arduino IDE 中安裝以下庫:
- tzapu 的 WifiManager
- Nick OLeary 的 PubSubClient
- AdaFruit 的 DHT 感測器庫
- Jim Studt 等人的 OneWire
- MertArduino 的 Arduino
步驟2:掛接 DHT22 感測器
切割約3英寸的紅色,黑色和橙色電線包線。
剝離每一端約1/2「
仔細地將外露的端部環繞引腳,紅色為 VCC,黑色為 GND,最後為橙色
加熱烙鐵,仔細地將導線固定在每個針腳上。
一旦焊料冷卻,請仔細扭轉三根電線的整個長度,以保持整潔。
步驟3:在 DHT22 上剪掉
使用你外殼和鉛筆,從頂部向下擊中心線。
現在將 DHT22 放置在外殼上的中心線上,並仔細標記感測器本身的輪廓
再次使用方塊,更準確地繪製感測器的輪廓
用工具刀切出你已經標記的矩形,試圖儘可能的準確,並將其中的材料保留在一塊中,因為我們稍後將使用它。
一旦你清理了這個孔,把蓋子翻轉並將 DHT22 裝在新鮮的切割孔中。
如果你對鑽孔感到滿意,請在感測器的針腳上塗一小塊熱熔膠,確保完全覆蓋它們,以便在焊接連接的地方提供一點絕緣材料。
現在拿出你從孔中取出的材料,將其放在感測器的背面,覆蓋著引腳穿過 pcb 背面。再用一些熱膠粘在一起。
步驟4:組裝 WeMos 界面
從包裝中取出 WeMos,並插入 WeMos。無線模塊位於電路板底部,長針腳向下突出。
將銷釘固定在麵包板上,並將其焊接起來。
將你的 perf 板切割成尺寸,使其寬14和15長,穿孔即可。
我使用一把剪刀剪下我的板子,慢慢地,會有一個相對乾淨的切口。
現在採取兩個母頭,其中較長的針。
將它們插入到 WeMos 上,然後將引腳滑入一塊 perf 板。
翻轉整個接頭並焊接頭部,首先焊接4個拐角針腳,因為在焊接剩餘的針腳時,應保持貼合。一旦焊料冷卻,就可以從母頭的長腿上切割大約1/8「或3MM。
現在我們需要添加四個螺絲端子和3針頭。
將螺絲端子插入板上,使其位於 WeMos 的中心下方,將其焊接起來,一旦焊接冷卻,將3路陽頭插入除了螺絲端子之外的剩餘空間中並焊接起來。如果它們在使用 Blutack 將其固定到位時有點鬆動和搖擺不定。
現在我們需要焊接板子。
對於上圖我很抱歉,這是我當時唯一可用的,以前曾用於另一個項目。還有我的橙色和黃色的位置混合在圖像中。
您需要在以下布局中連接電路板。
WeMos Pin 顏色位置。
D0 白色針腳1公頭(針頭最近的螺絲端子)
RST 白色針腳2公頭(標頭中間針頭)
5V 紅色引腳1個螺釘端子(最高從公頭)
GND 黑色針腳2螺絲端子
D1 黃色針腳3螺絲端子
D2 橙色針腳4螺絲端子
嘗試並切割你的電線到一個合適的長度,這將允許你整理它們,一旦你完成你可以用一點熱膠粘在一起。
步驟5:連接感測器。
從每個感測器扭轉 VCC,紅色,電線,並插入螺絲端子1,3k3電阻的1個支腳並擰緊螺絲。
將 GND,黑色,每個感測器的導線擰入螺絲端子2並擰緊螺絲
將電阻的另一條線與 DB180S 感測器的黃色線一起插入埠三,並擰緊螺絲。
從 DHT22 感測器插入橙色線並擰緊螺絲。
將 DHT22 上的電線穿過電路板背面和中央,以免將 WeMos 模塊的插腳放在外殼中時不會弄髒。
你應該會發現,這些針只適合於 DHT22,有助於將其保持在適當的位置。
以便阻止後退,再從頭上的針腳上剪掉一點
在將 WeMos 推入電路板之前,請仔細地將 DB180S 電纜穿在板子外部的 WeMo 包裝下面,如上圖所示。
現在將標題短路塊放在3路接頭的引腳1和2上。
將 USB 電纜連接到 WeMos 上,然後彈出背面。它應該非常貼切,你應該強制背部壓碎 WeMos 板內部。
步驟6:sketch
下載 envsens.ino sketch 並將其保存在名為 envsens 的文件夾中在 Arduino IDE 中打開它並編輯以下行。
第27行:
const PROGMEM char * MQTT_CLIENT_ID =「EnvRoom」;n
將 EnvRoom 更改為適合您的系統,例如 EnvLounge。
第28行:
const PROGMEM char * MQTT_USER =「MQTT_USER」;n
將M QTT_USER 更改為MQTT伺服器用戶名。
第29行:
const PROGMEM char * MQTT_PASSWORD =「MQTT_PASSWORD」n
將MQTT_PASSWORD更改為MQTT伺服器密碼。
30?32行
const char * MQTT_HUMIDITY_TOPIC =「感測器/房間/潮濕」;nconst char * MQTT_TEMPERATURE_TOPIC =「sensor / room / temp」;nnconst char * MQTT_AQUARIUM_TOPIC =「sensor / room / aqua」;n
設置每個主題,使其符合你的命名約定。
最後102行:
WiFi.hostByName(「your_mqtt.server.co.uk」,MQTT_SERVER_IP);n
將 http://your_mqtt.server.co.uk 更改為 MQTT 伺服器的完全限定域名。
保存 sketch 並給它一次,驗證 sketch 糾正任何問題。
一旦通過驗證,我們可以將 sketch 發送給 WeMos,我們必須記住將標題短路從 1-2 針移動到 2-3,否則上傳將失敗。
步驟7:連接到無線網路
在 Arduino IDE 中打開串列監視器,將波特率更改為115200
如果這個 Sonoff 從未使用 WiFiManager 庫上傳 sketch ,您應該看到類似的內容...
版本:1.3
- WM:
- WM:AutoConnect
- WM:連接為 wifi 客戶端...
- WM:使用最後保存的值應該更快
- WM:連接結果:
- WM:0
- WM:SET AP STA
- WM:
- WM:配置接入點...
- WM:ThingMaBob
- WM:AP IP 地址:
- WM:192.168.4.1
- WM:啟動HTTP伺服器
如果沒有,你要從頭開始,你將需要取消注釋第63行:
//wifiManager.resetSettings();n
將 sketch 重新發送到 WeMos,然後再次將該行重新發布,然後重新發送。
現在我們設置為連接到您的本地無線網路。
使用智能手機或帶有 WiFi 適配器的 PC 可打開可用網路列表。
點擊名為 ThingMaBob 的網路並連接到它。
然後,您將需要進行身份驗證,在 Android 上點擊屏幕頂部的 Authenticate 圖標將轉到 WiFiManager 內置的頁面,現在可以選擇您的本地網路,然後輸入您的WiFi鍵。
當您單擊保存時,設置將被寫回到 Sonoff,以便它在啟動時自動連接。現在,WeMos 將重新啟動並連接到本地 WLAN,並嘗試連接到 MQTT 伺服器。
一旦 WeMos 重新啟動,你應該看到與最終圖像相似的輸出。
步驟8:將您的感測器添加到 HomeAssistant。
我將我的所有設備分成單獨的文件,然後我將在主要的 configuration.yaml 中包含這些文件。
請將設備添加到你保存的位置。
- 平台:mqtt
state_topic:「sensor / lounge / temp」nn名稱:「溫度休息室」nnqos:0nnunit_of_measurement:「oC」n
- 平台:mqtt
名稱:「潮濕休息室」nnstate_topic:「感測器/休息室/潮濕」nnqos:0nn測量單位: 」%」n
- 平台:mqtt
名稱:「Aqurium休息室」nnstate_topic:「sensor / lounge / aqua」nnqos:0nnunit_of_measurement:「oC」n
你可以將名稱更改為任何您喜歡的名稱,但您必須確保 state_topic 和 command_topic 與您在第30至32行的 sonoff sketch 中輸入的內容相匹配。
最後運行測試,以確保一切都符合您的新條目
/usr/local/bin/hass -c./ --script check_confign
如果一切都顯示ok重新啟動hass
服務 hass-daemon 重啟
將您的感測器放置在陽光直射的位置,並使用防水感測器(如果使用)在您的水族館,您現在應該每15分鐘更新一次您的房間溫度和濕度以及您的水族箱溫度
步驟9:一些優化
有些人可能會想知道3針跳線是什麼,為什麼在上傳到 WeMos 時需要移動它。
我提供的 sketch 旨在消除電池電源,因此該設備進入深度睡眠15分鐘。這可以通過設置在本機處於深度睡眠狀態下繼續運行的計時器。
一旦定時器超時 D0,變為高電平,通過引腳1和引腳2上的短路塊連接到 RST。
然後,Wemos 將喚醒新的讀數並將其提交到你的 MQTT 伺服器。
如果在嘗試上傳新 sketch 時將 RST 連接到 D0,則它總是失敗,因此包含跳線和短路塊。
但是,由於感測器永久連接到 VCC,因此該 sketch 未完全優化,無法運行在電池上。為了優化電池壽命,請從 WeMos 上的 VCC 引腳上拔下 VCC 線並將其連接到 D3。
將以下行添加到腳本。
第20行:
#define POWERPIN D3n
第48和49行
pinMode(POWERPIN,OUTPUT);ndigitalWrite(POWERPIN,HIGH);n
在第131行之後插入一行:
digitalWrite(POWERPIN,HIGH);n
現在,在深度睡眠模式下,感測器的電源將被切斷,大大增加電池的運行時間。
我目前在我的後花園裡運行一個 DHT22 感測器,現在已經在一個單獨的3v7 1200MaH LiPo 環境中運行了一個多月(顯然在一個合適的盒子里,下雨時不要弄濕)
原文鏈接:http://www.instructables.com/id/ESP8266-Based-Temperature-Sensor-Connected-to-Home/
推薦閱讀:
※高通帝國是怎麼成就的?
※Syscan360會議胸牌破解揭秘
※按下開機鍵後,電腦都幹了些什麼?
※為什麼不能用分散式磁碟的方式來避免磁碟 IO 吃緊?
※在『固態硬碟』(SSD) 之後,下一個可以大幅提升PC性能的硬體技術是什麼呢?