基於 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

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 環境中運行了一個多月(顯然在一個合適的盒子里,下雨時不要弄濕)

原文鏈接:instructables.com/id/ES


推薦閱讀:

高通帝國是怎麼成就的?
Syscan360會議胸牌破解揭秘
按下開機鍵後,電腦都幹了些什麼?
為什麼不能用分散式磁碟的方式來避免磁碟 IO 吃緊?
在『固態硬碟』(SSD) 之後,下一個可以大幅提升PC性能的硬體技術是什麼呢?

TAG:智能家居 | 硬件 | 物联网 |