使用NodeMCU、Thingspeak和感測器遠端天氣跟蹤

2020-08-15 09:07:05

背景知識視訊教學

  • 通過構建實際應用程式來掌握Arduino
  • 物聯網#3:物聯網(物聯網)自動化與ESP8266
  • 使用Arduino掌握物聯網

溫度在任何方面都起着重要作用。 例如,在準備餐食或食物時,溫度很重要,因爲溫度會影響食物的品質,風味和新鮮度。 另一個例子是在葡萄酒和啤酒生產中,溫度在最終產品的品質中起着重要的作用。

氣壓對水化學和天氣狀況有重要影響。 較高的氣壓可支援晴天,晴朗和有利的天氣條件,但較低的氣壓水平會導致陰雨和多雲的天氣條件。 這個大氣參數已經用於預測天氣狀況已有數百年的歷史了。

在本教學中,我們進行了大氣壓和溫度的線上測量或監視。

硬體

軟體

ESP8266 NodeMCU

NodeMCU是一個開發板,可在具有Espressif Non-OS SDK的ESP8266和基於ESP-12模組的硬體上執行。 該裝置具有4MB的快閃記憶體,80MHz的系統時鐘,大約50k的可用RAM和片上Wifi收發器。

ESP8266可以用作外部Wifi模組,使用標準AT命令集韌體(通過序列UART將其連線至任何微控制器),也可以通過使用提供的SDK程式設計新韌體直接用作支援Wifi的微控制器。

數位溫度感測器

它廣泛用於在化學溶液,礦山或土壤等堅硬環境中測量溫度。感測器的管口很堅固,也可以購買防水選件,從而簡化了安裝過程。 它可以測量從-55°C到+ 125°C的寬範圍溫度,精度達±5°C。 每個感測器都有一個唯一的地址,只需要MCU的一個引腳即可傳輸數據,因此它是在多個點上測量溫度而又不影響微控制器上許多數位引腳的很好的選擇。

如何工作

該感測器採用1-Wire通訊方法。 它僅需要使用上拉電阻將數據引腳連線到微控制器,而其他兩個引腳用於供電。 上拉電阻器用於在不使用匯流排時將線路保持在高狀態。 感測器測得的溫度值將儲存在感測器內部的2位元組暫存器中。 可以通過1-wire方法按順序發送數據來讀取此數據。

氣壓高度感測器

該感測器非常適合各種天氣感測,甚至可以在I2C和SPI中使用。 該感測器具有高精度和低成本的特性,是高達±1 hPa的精確壓力測量和高達±1.0°C的溫度的理想解決方案。由於高度和壓力測量的壓力變化非常精確,因此可以使用該感測器和高度計的精度爲±1米。

Thingspeak

ThingSpeak是物聯網雲平臺,您可以在其中將感測器數據發送到雲。您還可以使用MATLAB或其他軟體分析和視覺化數據,包括製作自己的應用程式。

ThingSpeak包含一個Web服務(REST API),可讓您在雲中收集和儲存感測器數據並開發物聯網應用程式。 它可以與Arduino,Raspberry Pi和MATLAB一起使用(存在預製的庫和API),但是它應該與所有型別的程式語言一起使用,因爲它使用了REST API和HTTP。

在本教學中,通過使用Arduino程式碼上的API金鑰將Thingspeak與Arduino整合在一起。要設定API金鑰,必須首先開啓Thingspeak帳戶。以下過程描述了Thingspeak的設定過程。

軟體設定

在Thingspeak中建立一個帳戶

前往Thingspeak.com

然後單擊註冊。

填寫必要的資訊,然後單擊繼續。

只需選中,將此電子郵件用於Mathworks帳戶,然後單擊繼續即可。

驗證您的電子郵件,然後單擊繼續。

輸入使用者名稱和密碼。單擊繼續。

只需單擊確定。

選擇您打算如何使用Thingspeak,然後單擊「確定」。

單擊新建頻道,建立自己的頻道。

輸入頻道名稱和欄位名稱,然後單擊「儲存頻道」。

接下來是單擊API金鑰以獲取API金鑰。

生成新寫入API金鑰按鈕上方的金鑰是我們將在程式碼中使用的API金鑰。

Arduino IDE上的ESP8266 NodeMCU設定

開啓您的Arduino IDE,然後單擊檔案,然後單擊偏好設定。並將下面 下麪的鏈接複製到其他板管理器URL。

http://arduino.esp8266.com/stable/package_esp8266com_index.json

然後單擊確定。

接下來是單擊「工具」,然後轉到「 Board:」,然後單擊「 Board Manager」。

在搜尋欄中輸入ESP8266,然後單擊安裝。

硬體設定

程式碼

庫檔案

Arduino程式碼

</>

注意: 在Thingspeak帳戶中將「 API金鑰」更改爲您自己的API金鑰。並將「 WIFI-SSID」和「 WIFI-PASSWORD」發送到您自己的Wifi網路的SSID和PASSWORD。

程式碼分解
</>

這部分程式碼是我們將SPI匯流排分配給NodeMCU引腳的地方。計時器設定爲15秒。但是您可以更改計時器,但是最小間隔爲15秒,因爲Thingspeak每15秒更新一次數據。

</>

在此程式碼中,我們開始進行序列通訊,並將波特率設定爲115200 bps,然後檢查是否正常工作。然後呼叫connectWifi()函數。

</>

在此程式碼中,我們開始讀取獲得的數據,並將其儲存在溫度和壓力變數中。然後在序列監視器中顯示溫度和壓力值。

</>

在這段程式碼中,我們檢查是否能夠連線到Thingspeak伺服器,然後將數據發送到伺服器。在物聯網中,我們在通道的欄位1中顯示溫度數據,在欄位2中顯示壓力數據。

</>

此程式碼是我們的計時器,myPeriodic等於15。因此,在回圈可以再次執行之前,我們有15秒的計時器。

</>

此程式碼是connectWifi()函數。在此程式碼中,我們將裝置連線到Wifi,並檢查是否能夠連線。

參閱http://viadean.com/arduino_weather_remote.html