對于任何物聯網(DIY)DIY項目來說,Wi-Fi都是必不可少的工具包,但是我們最喜歡的Arduino并未隨附Wi-Fi,并且添加Wi-Fi防護罩可以帶來總費用約為40美元。如果我告訴您有一個兼容Arduino的開發板,且內置Wi-Fi的價格不到10美元怎么辦?嗯,有。
遇到了Arduino殺手:: ESP8266。將皇冠從我們親愛的Arduino開發板的光亮的頭上偷走只是時間問題。
除了俗稱的ESP8266(也稱為NodeMCU),最初是作為Arduino板的低成本Wi-Fi附加件銷售的,直到黑客社區意識到您可以完全擺脫Arduino的困擾。
在不到一年的時間里,ESP8266迅速普及,并且得到了如此良好的支持和開發,如果您當前使用的是Arduino,您需要站起來記筆記。立即購買,然后按照本指南開始進行ESP8266編程-全部從熟悉的Arduino IDE中進行。
您當然不限于使用Arduino IDE,它們與兼容Lua也是如此(對我的新手來說,這看起來像是精簡的Python),但是由于我們是從那些已經在Arduino上學到的人的角度解決這個問題的,所以今天我們將專門介紹它。
現在有很多ESP8266型號,但我將繼續推薦該型號:ESP-12E(也稱為NodeMCU 1.0,或者它的最新同級NodeMCU 2.0)。
它是比其他芯片貴一些(6.50美元比4美元!),但包括對芯片進行編程所需的串行驅動器,并具有內置的電源調節器以及許多IO引腳。它得到了廣泛的支持,除了USB連接以外,實際上不需要任何其他程序來編程或供電,因此使用起來最簡單。如果您購買任何其他種類的ESP8266開發板,則可能需要單獨的3.3v電源調節器和合適的FTDI連接進行編程。
ESP8266-12E和Arduino入門
首先,為該開發板安裝串行驅動程序。如果由于新的安全系統而在運行El Capitan,則可能需要禁用KEXT簽名。
下一步,我們需要從Arduino IDE的開發板上啟用對ESP8266的支持經理。打開“偏好設置”,然后輸入以下URL,其中顯示 Additional Board Manager URL :
點擊確定,然后打開從工具-》主板菜單中的 Boards Manager ,搜索esp8266并安裝平臺。現在,您應該可以看到NodeMCU 1.0的選擇。
保留CPU和上載速度,然后選擇新安裝的串行端口。在Mac上,它顯示為 cu.SLAB_USBtoUART 。
作為第一個程序,我建議使用簡單的Wi-Fi掃描器-從文件-》示例中找到它-》 ESP8266WiFi-》 WifiScan 。請注意,上傳速度很慢,但最終會說“完成上傳”,此時(不是以前,否則您將中斷上傳過程),您可以打開串行監視器。您應該看到類似以下內容:
成功!現在,讓我們嘗試連接一個。
這是用于連接到Wi-Fi網絡的絕對簡單的準系統代碼。它不僅可以連接,還可以做其他任何事情,但是您可以稍后再添加。只需記住將YOUR_SSID和YOUR_PASSWORD更改為您的Wi-Fi詳細信息即可。上傳,打開串行控制臺,您應該會看到它已連接。
#include
const char* ssid = “YOUR_SSID”;
const char* password = “YOUR_PASSWORD”;
WiFiClient wifiClient;
void setup() {
Serial.begin(115200);
Serial.print(“Connecting to ”);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“。”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
Serial.println(“IP address: ”);
Serial.println(WiFi.localIP());
}
void loop() {
}
難道這是如此簡單嗎?
在我們攜帶之前上面是引腳圖-稍后可能會派上用場。請注意,代碼中提到的引腳號是GPIO號,而不是可能寫在板PCB上的D0-16。如果絕對不能肯定地確定傳感器不起作用的原因,那么您可能已經混淆了引腳號。
快速智能家居傳感器使用MQTT和DHT11
這是一個實際示例,您可以立即使用它來監視您的房屋。我們將添加DHT11溫度和濕度傳感器,然后使用MQTT協議通過Wi-Fi網絡報告這些值,在我的情況下,該報告將報告給OpenHAB DIY家庭自動化系統(如果沒有,您可能需要閱讀我們的初學者指南使OpenHAB在Raspberry Pi上啟動并運行,以及第2部分,專門討論安裝MQTT服務器。
在接線側,將DHT傳感器連接到 GND , 3.3v 和?D4 (或GPIO 2)。這就是我們現在所需要的。
下載這些MQTT和DHT庫。 即使您已經擁有了它們,也仍然可以下載這些文件,備份所擁有的文件并用它們覆蓋。Adafruit的最新DHT11庫使用自動算法來確定從數據庫中讀取數據的速度。傳感器,但是它在ESP8266上存在故障,并且90%的時間導致讀取失敗。
使用下載中包含的舊版庫1.0,您可以手動更改計時:11種方法最適合這些ESP2866開發板。我還遍歷了MQTT庫的許多副本,試圖找到一個好的 callback 函數,最后找到了其中的一個。替換掉它們后,您需要重新啟動Arduino IDE。
這是項目的完整代碼。頂部是您需要更改的所有變量,包括Wi-Fi詳細信息,MQTT服務器(雖然沒有身份驗證,但如果使用云服務器,則可以使用URL代替URL,)以及發布數據的渠道。
這是它的工作方式和一些注意事項:
首先我們連接到Wi-Fi,然后連接到MQTT服務器,然后開始主循環()。
在循環中,我們每60秒輪詢DHT傳感器并將讀數發布到相關的MQTT通道。同樣,如果您發現大多數讀數都導致失敗消息,則說明DHT庫的版本錯誤–降級至v1.0。
client.loop()將控制權傳遞給MQTT庫,使其能夠對傳入消息做出反應。
我們有一個 messageReceived()函數用于處理傳入消息–只需執行簡單的if語句來比較有效載荷以及您期望的消息。例如,您可以使用它來激活繼電器。
運行了幾天后,我發現它們會隨機停止工作–我認為這是某種內存泄漏,但是鑒于我沒有我沒有編碼技能來解決這個問題,而且可能與核心庫有關,所以我每天都選擇asimple軟復位。傳感器節點首次激活后的正好一天,它們將自行重啟。
從3.3v為這些廉價DHT11模塊供電時,濕度值遠遠低于其應有的水平。我已經通過簡單的乘法解決了這一問題,并針對商用傳感器進行了校準。我建議您在閱讀之前,也請先根據自己的已知來源進行確認。或者,用5V為它們供電–但是您必須在數據引腳和ESP8266之間放置一個5v-3.3v邏輯電平轉換器,否則會損壞它。。
如果一切順利,您現在應該在MQTT代理中接收傳感器讀數,并且可以按照我們的初學者指南第2部分中的詳細說明將它們連接到OpenHAB,在這里我還向您展示了如何繪制數據圖。
告別Arduino,我們如此愛你。只是開個玩笑:我家的每個地方甚至都沒有Wi-Fi,因此對于那些地點,我仍然需要帶有Arduino和RF接收器的網狀網絡。
要進行有趣的項目,請查看如何制作一個ESP8266的Wi-Fi按鈕。
責任編輯:wv
-
Arduino
+關注
關注
188文章
6471瀏覽量
187293 -
ESP8266
+關注
關注
50文章
962瀏覽量
45113
發布評論請先 登錄
相關推薦
評論