前言
本篇將延續上一篇[
Blynk IoT 物聯網服務結合 Wio Terminal 開發板:建立裝置、設定儀表板、測試連線],進一步說明如何使用Blynk IoT 物聯網服務控制 Wio Terminal 沉水馬達,這相當於透過雲服務來達到跨網段控制裝置的效果。
https://blog.cavedu.com/2022/02/19/blynk-iot-wio-terminal-introduction/
材料清單
智慧植栽套件材料清單如下,其中 5 6 項會在下一篇範例登場,本篇先用不到,在此先列出。智慧植栽嘛,一定要有相關感測器,當然也希望能透過雲服務來監控植栽的狀況囉!
- Wio Terminal 開發板
- 繼電器或MOSFET模組
- 被實驗的盆裁跟水源
- 抽水馬達及對應的電源
- 土壤濕度感測器(建議買防水的,如果你只打算用一次,就準備便宜的就好)
- 溫溼度感測器(DHT11、20、22)都可以,本範例使用DHT20
示意圖如下,請注意土壤溼度感測器因為拍照關係所以拉比較高,實際使用時請插入到上下箭頭區間之間的位置。
情境說明
本文包含兩個範例
- 土壤溼度感測器控制沉水馬達
- Blynk 雲服務控制沉水馬達
使用設備如下,您可以依照方便選用相容的裝置,但如果不想修改程式的話,開發板還是選 Wio terminal 最快囉。
Wio Terminal
請參考本文完成 Wio Terminal 的相關設定,您需要
下載 Arduino 1.8 並安裝 Wio Terminal 完成,也歡迎參考阿吉老師(就是我)所錄製的 Wio terminal tinyML 影片,使用光感測器搭配 Edge Impulse 網站來完成手勢辨識專案,很好玩。
[embedyt] https://www.youtube.com/embed?listType=playlist&list=PLZkpEAYL25ABrMJJ3cod4PfQJ1Hviuk5B&v=sGpRnlGPapY[/embedyt]
Dfrobot 土壤溼度感測器
Gravity: 類比式防水電容式土壤濕度感測器,使用時請將金屬片插入土壤到上下箭頭區間內。
根據
產品頁面說明,
土壤乾燥的數值: (570, 380) / 濕潤: (380, 190)/ 非常濕: (190, 0)。唯實際數值可能根據現實狀況(土質、馬達種類與您使用的植栽)而有不同。
[gallery columns="2" ids="43727,43726"]
Seeed MOSFET 控制模組與沉水馬達
以本範例來說,MOSEFET 模組的 Vin 不需要外接電源也可以順利驅動沉水馬達,請把馬達的紅黑線分別接到 MOSFET 模組的正負螺絲端子即可,請務必做好防水,操作上還蠻容易有水噴濺出來的。沉水馬達顧名思義,使用時須放在水中,否則空轉很容易燒毀。
產品wiki請參考
[gallery columns="2" ids="43725,43731"]
Blynk web dashboard 設定
請根據以下資訊來完成 Blynk dashbaord 與相關 widget 設定,我們也整理出了彼此之間的關係,熟悉之後您可以自行改用。當然也可以課金解鎖(標註有
UPGRADE 的 wdiget 就須付費)更多功能啦!
Datastream - 虛擬腳位 - 實體裝置(Wio terminal 腳位) - dashboard widget 的關係說明如下:
指定虛擬腳位時請注意,虛擬腳位編號不重要也不需要與實體腳位編號對應,但須注意不可重複。由下圖可知即便溫度濕度來自同一個感測器,但還是要分別為溫度與濕度各自指定一個虛擬腳位,後續才能分別對應到獨立的 widget。
- switch - V2 - MOSFET (右側 Grove port) - Switch
- soil_moisture - V5 - 土壤溼度感測器(A2 類比輸入腳位) - Gauge 與 Label (多個 widget 取得同一筆資料來源是可以的)
- temperture - V6 - DHT20感測器的溫度(左側 Grove port) - Gauge
- humidity - V7 - DHT20感測器的溼度(左側 Grove port) - Gauge
有一個 slider 新增了但是沒用到,忽略即可。
範例1 土壤溼度感測器控制沉水馬達
執行時請確認土壤溼度感測器往下插到正確的位置(上下箭頭之間)、相關電路防水都做好了,水管不會亂噴等等,再上傳程式。這個程式很簡單,就是根據土壤濕度(類比讀取)來控制 MOSFET模組,進而做到控制沉水馬達。請根據實際狀況(土質、馬達種類與您使用的植栽)來調整相關數值。
注意,不要為了測試就瘋狂澆水,植物會受不了的喔!
程式碼如下
[pastacode lang="c" manual="int%20motorPin%20%3D%200%3B%20%20%2F%2FGrove%20port%20-%20pin%200%0A%0Avoid%20setup()%0A%7B%0A%20%20Serial.begin(38400)%3B%0A%20%20pinMode(motorPin%2C%20OUTPUT)%3B%0A%20%20Serial.println(%22Grove%20-%20MOSFET%20Test%20Demo!%22)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20analogWrite(motorPin%2C%200)%3B%20%20%2F%2Fdefault%20turn%20off%20the%20motor%0A%20%20if%20(analogRead(2)%20%3E%20380)%20%7B%0A%20%20%20%20analogWrite(motorPin%2C%20200)%3B%20%2F%2Fmodify%20if%20motor%20runs%20too%20fast%0A%20%20%20%20delay(3000)%3B%0A%20%20%20%20analogWrite(motorPin%2C%200)%3B%0A%20%20%7D%0A%20%20else%20%7B%0A%20%20%20%20analogWrite(motorPin%2C%200)%3B%0A%20%20%7D%0A%20%20delay(2000)%3B%0A%7D" message="control mosfet(motor) by soil moisture" highlight="" provider="manual"/]
範例2 Blynk 雲服務控制沉水馬達
Blynk 相關設定請點我
相關注意事項如上,執行之後,您可以看到 Blynk dashboard 顯示您的裝置為 [
online],這時候就可以按下 switch 控制馬達來澆水了,很酷吧!
程式碼如下
[pastacode lang="c" manual="%23define%20BLYNK_TEMPLATE_ID%20%20%20%20%20%20%20%20%20%20%20%22%22%0A%23define%20BLYNK_DEVICE_NAME%20%20%20%20%20%20%20%20%20%20%20%22%22%0A%23define%20BLYNK_AUTH_TOKEN%20%20%20%20%20%20%20%20%20%20%20%20%22%22%0A%0A%2F%2F%20Comment%20this%20out%20to%20disable%20prints%20and%20save%20space%0A%23define%20BLYNK_PRINT%20Serial%0A%0A%23include%20%3CrpcWiFi.h%3E%0A%23include%20%3CWiFiClient.h%3E%0A%23include%20%3CBlynkSimpleWioTerminal.h%3E%0A%0Achar%20auth%5B%5D%20%3D%20BLYNK_AUTH_TOKEN%3B%0A%0Achar%20ssid%5B%5D%20%3D%20%22%22%3B%20%20%20%20%20%20%2F%2F%20wifi%20settings%0Achar%20pass%5B%5D%20%3D%20%22%22%3B%0A%0A%2F%2F%20built-in%20blynk%20functions%20when%20specified%20Vpin%20is%20changed%0ABLYNK_WRITE(V1)%20%2F%2F%20slider%0A%7B%0A%20%20int%20pin1Value%20%3D%20param.asInt()%3B%20%2F%2F%20assigning%20incoming%20value%20from%20pin%20V1%20to%20a%20variable%0A%20%20Serial.print(%22V1%20Slider%20value%20is%3A%20%22)%3B%0A%20%20Serial.println(pin1Value)%3B%0A%7D%0A%0ABLYNK_WRITE(V2)%20%20%2F%2Fswitch%0A%7B%0A%20%20int%20pin2Value%20%3D%20param.asInt()%3B%20%0A%20%20Serial.print(%22V2%20switch%20value%20is%3A%20%22)%3B%0A%20%20Serial.println(pin2Value)%3B%0A%7D%0A%0Avoid%20setup()%0A%7B%0A%20%20%2F%2F%20Debug%20console%0A%20%20Serial.begin(115200)%3B%0A%0A%20%20Blynk.begin(auth%2C%20ssid%2C%20pass)%3B%0A%20%20%2F%2F%20You%20can%20also%20specify%20server%3A%0A%20%20%2F%2FBlynk.begin(auth%2C%20ssid%2C%20pass%2C%20%22blynk.cloud%22%2C%2080)%3B%0A%20%20%2F%2FBlynk.begin(auth%2C%20ssid%2C%20pass%2C%20IPAddress(192%2C168%2C1%2C100)%2C%208080)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20Blynk.run()%3B%0A%7D%0A" message="control MOSFET module by Blynk switch widget" highlight="1,2,3,14,15" provider="manual"/]
留言 💬 (0)
還沒有留言,來當第一個。