2023年2月4日 星期六

利用雲端平台 ThingSpeak 記錄物聯數據

在之前各單元已經學習過如何利用 ESP8266  MicroPython 網路HTTP傳輸 、 ESP8266 MicroPython 無線基地台連線、ThingSpeak服務平台的申請使用,現在就來將這些相關學習串連起來。

本實作將利用ESP8266建立無線網路連線將DHT11溫溼度模組所取得的溫濕度資料上傳到 ThingSpeak 服務平台上加以記錄。

 [模組材料] 
1. 8266 D1 mini x 1 
2. DHT11溫溼度測量模組 x1 
3. 杜邦連接線 x 3條
[[DHT11溫濕度測量模組]]
* Supply voltage: 3.3 ~ 5.5V DC
* Output: single-bus digital signal
* Measuring range: Humidity 20-90% RH, Temperature 0 ~ 50 ℃
* Accuracy: Humidity + -5% RH, temperature + -2 ℃
* Resolution: Humidity 1% RH, temperature 1 ℃
* Long-term stability: <± 1% RH / Year





ESP32 與 OLED 接腳設定
【ESP8266】3.3V →【DHT11】VCC
【ESP8266】GND →【DHT11】GND
【ESP8266】D0 →【DHT11】DATA


撰寫實驗程式如下:
from machine import Pin
import dht, utime, urequests, network

sensor = dht.DHT11(Pin(16))

#指定ThingSpeak寫入金鑰
WRITE_KEY = ""


#設定網路連線帳號密碼
SSID = ""        # WiFi名稱
PASSWORD = ""    # WiFi密碼


#自訂無線基地台連線函式
def connect_wifi(ssid, passwd):
    sta = network.WLAN(network.STA_IF)
    sta.active(True)
    if not sta.isconnected():
       print("連線中... \n")
       sta.connect(ssid, passwd)
       while not sta.isconnected():
          pass
    print("連線成功... \n")
#進行網路連線
connect_wifi(SSID, PASSWORD)

try:
    while 1:
        sensor.measure()
        print("溫度: ", sensor.temperature())
        print("溼度: ", sensor.humidity())
        url  = "https://api.thingspeak.com/update?"
        url += "api_key=" + WRITE_KEY   #資料寫入金鑰
        url += "&field1=" + str(sensor.temperature())  #溫度
        url += "&field2=" + str(sensor.humidity()) #濕度
        print("_______________")
        urequests.get(url) #將資料寫雲端平台
        utime.sleep_ms(60000) #一分鐘後重複執行迴圈
except Exception as e: print(e)
程式在Thonny執行畫面如下:ThingSpeak 提供非商業使用的免費雲端服務,提供物聯網相關裝置的訊息紀錄之用,物聯裝置的免費商業使用限制訊息發送間隔必須大於15秒以上。


當上列程式碼順利執行後,取得的溫溼度資料就會上傳到 ThingSpeak 服務平台加以記錄,在 Private view 頁籤畫面中即可看到已記錄的資料圖表。