iT邦幫忙

0

Day 2, D1 mini 使用DHT12測溫溼度,並用MQTT協定用手機接收訊息(白話文:自己做溫溼度紀錄器,並用手機遠距監控資料)

  • 分享至 

  • xImage
  •  

此為個人紀錄及逼迫自己每天學習的動力日誌。今天,依然是跟著教程,練習動手做。也許因為昨夜罕見的失眠,今天沒睡好神智不清之下,感覺肚子的肥肉跟通貨膨脹下的結構式調薪一樣又漲了,而今天的挫折差點壓垮我,最後才發現是大小寫問題以及沒開啟程式……。恩,我們開始吧!
首先,我們要有材料如下:

  1. D1 mini
  2. DHT12溫溼度模組
  3. 一堆線
    使用的網站及APP:
  4. 電腦:io.adafruit.com(請自己註冊)
  5. 手機:MQTT Client

當你懵懵懂懂且沒仔細看教程之下,看見DHT並查詢google後會得到這樣的結果:
https://ithelp.ithome.com.tw/upload/images/20220605/20149573S1pMtSXq24.png
以及
https://ithelp.ithome.com.tw/upload/images/20220605/20149573F8ZwJCF5Q0.png
恭喜您獲得首次的失敗及身心靈打擊!

如果查的是DHT12,我們會知道DHT12就是溫溼度感測器(廢話)。
https://ithelp.ithome.com.tw/upload/images/20220605/20149573xiJJYB7RzV.png
由於這次使用的是D1 mini並使用Micropython直譯器,直接匯入dht模組就能開始進行溝通的第一步了。
https://ithelp.ithome.com.tw/upload/images/20220605/20149573aHIIvSWExE.png
https://ithelp.ithome.com.tw/upload/images/20220605/20149573Bv5QwGsShe.png
資料來源: https://datasheet.lcsc.com/szlcsc/DHT12-Digital-temperature-and-humidity-sensor_C83989.pdf
我們可以根據說明書,確認腳位。並與D1 mini連接。在此設定D1 mini的零號(D3)腳位與DHT12的2號腳連接,當然D1 mini腳號也可以換成別號,只要能動不燒掉就行。
以下是完成接線圖:
https://ithelp.ithome.com.tw/upload/images/20220605/20149573SA4Qhg6zC1.png

from machine import Pin
import time
import dht

sensor = dht.DHT11(Pin(0))         # 使用 D3 腳位取得溫溼度物件
while True:
    sensor.measure()
    temp_humi = "%2d℃/%2d%%" % (
        sensor.temperature(),
        sensor.humidity())
    print(temp_humi)
    time.sleep(3)

https://ithelp.ithome.com.tw/upload/images/20220605/201495730ltzXpUg5m.png
那我們要怎麼做才能做出用手機監控的酷炫效果呢?
這裡就要提到MQTT通訊協定,首先我們就從生活中的實際例子舉一反三:
不知道大家有沒有被這則新聞轟炸過?
https://ithelp.ithome.com.tw/upload/images/20220605/201495736bxLA2dja9.png
沒有?我這有連結再轟炸一次https://news.ltn.com.tw/news/life/breakingnews/3933459
這跟MQTT有甚麼關係呢?
我總結一下共通性:
https://ithelp.ithome.com.tw/upload/images/20220605/20149573LJJGZNtH00.png
故事中有一位美魔女(發佈端:Publisher),向媒人婆(MQTT中介伺服器:Broker)提供自己的三圍體重年齡 學歷等資料及徵婚條件(頻道:channel),此時,頭大的超強媒人婆便用自己的超強搜索能力,找到了兩位符合條件且都在尋找伴侶的仁兄(訂閱端:subscriber),並將美魔女資料提供給他們參考,幫忙牽線。別只在那邊吐槽50歲未婚女人怎敢自稱美魔女,要注意,不管是美魔女本人,還是兩位條件符合者,他們都是主動在婚姻市場裡尋覓彼此的,被動的話,是不會被媒人婆找到的 所以如果被迫單身的話,請主動。並且對於媒人婆而言,兩方都是顧客(MQTT Client)。
回來主題,我們可以改成:
https://ithelp.ithome.com.tw/upload/images/20220605/201495732P44zX7iXZ.png
接著,我們會需要提供自己的帳號及金鑰還有媒人婆是誰(adafuit),畢竟不同的媒人婆可不會免費幫一位來路不明的人牽線。網址:https://io.adafruit.com/
https://ithelp.ithome.com.tw/upload/images/20220605/2014957392Mrh7vQd5.png

接著是程式碼:

from machine import Pin
import time
import network
from umqtt.robust import MQTTClient
import dht

sensor = dht.DHT11(Pin(0))                 # 使用 D3 腳位取得溫溼度數據

client = MQTTClient(
    client_id="weather", 
    server="io.adafruit.com", 
    user="adafruit帳號", 
    password="adafruit金鑰",
    ssl=False)

sta_if = network.WLAN(network.STA_IF)     # 取得無線網路介面
sta_if.active(True)                       # 啟用無線網路
sta_if.connect('網路名稱', '密碼')     # 5G連不到要注意,連結無線網路
while not sta_if.isconnected():           # 等待無線網路連上
    pass

print("connected")

client.connect()
while True:
    sensor.measure()
    temp_humi = "%2d℃/%2d%%" % (
        sensor.temperature(),
        sensor.humidity())
    client.publish(
        b"你的adafruit帳號/feeds/temp_humi",
        temp_humi.encode())
    print(temp_humi)
    time.sleep(3)

https://ithelp.ithome.com.tw/upload/images/20220605/201495738nabFrrXKS.png

好的,現在我們的溫溼度資料已經連上網了,接下來就剩下手機及APP了

這次使用的是:
https://ithelp.ithome.com.tw/upload/images/20220605/20149573Zcg6Qz8ZyJ.png
https://ithelp.ithome.com.tw/upload/images/20220605/2014957388ynaU5uT8.png
請注意:

  1. 手機的client ID與python程式裡的ID不能一樣
  2. 注意帳號大小寫,我在這裡栽了好久
  3. 注意螢光筆標示要Enable,不然沒有訊號別怪我。
  4. 記得存檔
    接著我們開始創建Subscriber:
    輕點剛創建的檔案,就會直接進入Subscriber畫面,輸入:
    你的adafruit帳號/feeds/temp_humi,並點擊Subscribe
    https://ithelp.ithome.com.tw/upload/images/20220605/20149573CTMifeSVYH.png
    等待片刻………,完成!
    https://ithelp.ithome.com.tw/upload/images/20220605/20149573PWaCrVK3BN.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言