iT邦幫忙

1

Day 3, 雨量感測並網站監控圖表

  • 分享至 

  • xImage
  •  

是的,今天依然是強迫自己跟著教程學習的一天,在經歷一些人生挫折後,變得厭世易感冒是很正常不過的事情,失敗與挫折除了讓自己的心靈變得更加脆弱外,還要花比普通人更多的時間在運動上,才不會身體虛弱看起來像個容易欺負的廢物。但好在只要每天做一點,就能有所進步,那我們開始吧!
材料:

  1. D1 mini
  2. 雨水感測模組
  3. 一堆線
  4. Adafruit.com
    https://ithelp.ithome.com.tw/upload/images/20220606/20149573CFqnm3nIE7.png
    這次,我們使用的是 D1 mini的 A0腳位,並匯入ADC模組。
    ADC為 analog to digital的縮寫,就是將我們想要獲得的資料從類比(大自然)轉換成數位(可以量化觀測)訊號,在經過程式(推理理解巧思)製成我們想要的結果(雨水感測器)。這次就不附上電路圖囉!請支持原版教材,此非業配,只是想要夜晚能睡好覺,標籤會tag教程出版廠商名稱。
    以下是教程裡的程式碼:
from machine import ADC
import time

# 建立 A0 腳位的 ADC 物件, 並命名為 adc
adc = ADC(0)

while True:
    # 用 read() 方法從 A0 號腳位讀取 ADC 轉換後的數值
    # 然後將讀到的值用 print() 輸出
    print(adc.read())
    
    # 暫停 0.05 秒
    time.sleep(0.05)

https://ithelp.ithome.com.tw/upload/images/20220606/20149573zPR8a4RZU8.png

我們會發現,在有水停留在雨水感測板子上時,數值會下降,而數值介於0~1024之間,也就是說,下雨越大,數值越小。但是,身為不愛多一層思考,喜歡簡單明瞭的懶人,這樣的結果令人十分不滿意。
那我們可以怎麼做呢?
其實,也很簡單,就是1024扣掉獲得數值就可以了。
接著,便是丟上網路,變成監控數據,看起來質感升級的時刻。我們再一次使用Adafruit網站: https://io.adafruit.com
到Dashboard頁面點擊https://ithelp.ithome.com.tw/upload/images/20220606/20149573odpZZl8Xux.png 並命名事件名稱:
點擊Creat創建。https://ithelp.ithome.com.tw/upload/images/20220606/20149573g7MJEgldc3.png
點擊剛剛創建的名稱,進入頁面,我們點選https://ithelp.ithome.com.tw/upload/images/20220606/20149573YcEPNErP5c.png 設定
接著,點取Creat new block https://ithelp.ithome.com.tw/upload/images/20220606/201495733UdaqCKTIt.png
我們會看見視圖畫選擇,我選了名為Guage的選項,勾選事件https://ithelp.ithome.com.tw/upload/images/20220606/201495739Om92WZU2h.png
進入下一階段,將Max value換成1024值,點選Creat block,就完成了設置。
https://ithelp.ithome.com.tw/upload/images/20220606/20149573CgggtQwLdL.png
接下來又是召喚網路連接的時刻,以下是程式碼:

from machine import ADC
import time, network, urequests

# 連線 Wifi 網路 
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("你的網路名稱", "網路密碼")
while not sta_if.isconnected():
    pass
print("Wifi已連上")

aio_username = "Adafruit帳號"
aio_key = "Adafruit金鑰"
aio_feed = "rain(創建事件名稱)"

# 建立 A0 腳位的 ADC 物件, 並命名為 adc
adc = ADC(0)

while True:
    # 讀取雨水感測器經過 ADC 轉換後的數值
    value = adc.read()
    
    if value < 700: # 依照 Lab09 的測試, 低於 700 表示有下雨
        # 雨水越多, ADC 值越低, 所以用最大值 1024 減 ADC 值,
        # 以便將資料反轉為雨水越多, 數值越高
        data = {"value": 1024-value}
    else:
        # 沒下雨的話就送出 0
        data = {"value": 0}
        
    # 設定 Adafruit IO 上傳資料的 API 網址
    url = ("https://io.adafruit.com/api/v2/" + aio_username +
           "/feeds/" + aio_feed + "/data?X-AIO-Key=" + aio_key)
    
    # 用 POST 上傳 JSON 資料
    urequests.post(url, json=data)

    # 暫停 2 秒, 避免送出太多資料超過 Adafruit IO 免費額度
    time.sleep(2)

啟用成功後,擠出你的淚水滴在正確的板子上,你就會看見雨量變化了。
https://ithelp.ithome.com.tw/upload/images/20220606/201495732aH76nXu82.png


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

尚未有邦友留言

立即登入留言