作者/圖片來源: CIRCUS Pi
本篇文章將透過範例程式與大家分享如何透過M5Stack Core Basic 主控板搭配土壤溼度、光強度等感測器所得的環境參數,建立一個智慧監控植物生長狀態的系統,並且將感測器所蒐集到的數據記錄於 ThingSpeak 雲端,再依據所得數據控制抽水馬達、植物燈條、風扇等運作,調整植物所需的水分、光量與溫度,解決植物因缺水、光照不足與土壤過於潮濕等問題,提供植物一個合適的生長環境。
材料清單
M5Stack BASIC IoT基礎開發板套件-K001
M5Stack Goplus2 直流電動機和伺服驅動器模組 -M025-B
M5Stack 環境感測模組-U001-B
M5Stack 土壤濕度感測模組-U019
M5Stack 光強度感測模組-U021
385微型抽水馬達
使用軟體與線上服務連結
UiFlow線上編輯器
開發者手冊
台灣 NTP Pool
ThingSpeak
硬體架構與設定
智慧植栽使用M5Stack Core BASIC 作為主控板,考量到需要同時驅動一顆抽水馬達(12V)、一顆散熱風扇(5V)、植物燈(5V),並且需要獲取感測器數值(光感測、土壤溼度),M5Stack提供了一款擴充性極高的BASE模組 M5Stack Goplus2 馬達驅動器模組,控制核心搭載STM32,支援2路直流馬達、4路伺服馬達,可擴充3個GPIO,正好符合我們的實作需求,以下是硬體配置圖。將M5Stack Core BASIC 拆開,透過排插擴充GOPLUS2模組,側邊Port A(M5Stack Core常用的接腳定義) 連接M5Stack 環境感測模組 。
接著將繼電器模組、光感測模組、土壤溼度模組依序連接GOPLUS2的左側三個GPIO連接埠(expand PortB Pin out ),風扇、抽水馬達連接GOPLUS2上方兩個DC馬達連接埠,將12V變壓器連接於下方額外供電,如下圖所示。
UiFlow 設定
Step 1. 更新韌體
在建立連線以前,必須先下載官方燒錄器(M5Burner)將韌體版本更新至最新。接上傳輸線後燒錄器會顯示COM Port編號,選擇最新版本的CORE UiFlow韌體版本,按下「Burn」完成燒錄。
Step 2. 建立連線
更新完韌體後,將Core切換至「Internet Mode」,選擇「Wi-Fi via AP」,進入連線頁面後會看到地球符號閃爍。
打開筆電的 Wifi搜尋AP熱點SSID名稱,每台Core的名稱都不一樣,這裡預設是M5-FB50 ,成功連線後開啟瀏覽器分頁,在搜尋欄輸入 : [192.168.4.1]導入連線設定頁面,輸入欲連線的SSID與密碼。
成功連線後瀏覽器顯示如下圖,Core的顯示器左上角的Wifi與連線的圖示皆會顯示綠色,下方會顯示遠端連線所使用到的API KEY,透過這樣的設定,Core會存取SSID與密碼,之後使用網路模式就可以直接連線,使用過多台AP也可以至Setup > Server select 進行選擇。
接下來打開電腦的瀏覽器,重新連上網際網路,進入Uiflow 網頁版,將API KEY 填入,選擇Core的類型後按下「OK」。
最下方的狀態列會顯示目前建立連線裝置的API KEY ,並顯示「Connected」,表示成功遠端連線,可以開始使用Blockly積木撰寫程式。
功能設計與程式撰寫
Step1. 設定模組
在開始撰寫Blockly前,要先導入這次會使用到的Unit模組函式庫,點選左下加號,勾選環境感測模組並選擇連接埠為Port A,按下OK確認。
導入模組後會顯示在左方顯示面板,打開Unit選單確認是否正確導入模組。

Step2. 網路連線與HTTP功能
首先設定智慧植栽 Core的Wifi連線功能,打開Uiflow的Advanced選單,選擇Network中的「『Connect ti Wi-Fi SSID』『 PASSWORD』」 並填入欲架設位置可以連線到的AP名稱與密碼。為了確認Wifi是否連線,加上一個判斷邏輯函式與螢幕的UI標籤元件,當Wifi連線時呈現綠色,為連線時呈現紅色,網路連線設定即結束。Uiflow使用到的功能列 : 判斷邏輯函式 、Wifi設定、UI元件。

Step 3. 設定UI介面與顯示
UIFlow提供方便的使用者顯示介面元件,包含標題(Title)、文字標籤(Label)、Rect(方形)、Circle(圓形)、image(圖片),使用者僅需要透過拖拉方式即可新增/移除。
首先撰寫顯示器功能,將環境感測器、土壤濕度感測器、光感測器收集到的資料顯示在示於畫面,創建一個函式(小編這裡命名為Display)。Uiflow使用到的功能列 : Event、建立函式、Module(GOPLUS 2)、 環境感測器模組、UI元件。(注意 : GO PLUS2的Uiflow函式庫目前僅支援線上版本。2021/01/24)

Step 4. 植栽照護系統
完成讀取並顯示感測器的資料後,接下來針對溫度、濕度、光照量各項環境數據,設計出自動加水、延長光照時間、散熱等相對應的功能。
A. 自動加水
自動加水功能,是當土壤溼度低於一個定值時即啟動抽水馬達進行加水的動作(濕度下限值為使用者根據植物特性自訂)。Uiflow使用到的功能列 : 建立函式、Module(GOPLUS 2)、 判斷邏輯函式、 UI元件,程式如下圖所示。
B. 自動延長照時
自動延長照時功能為模擬多肉植物或是特殊的季節作物需要調節光照時,可調節植物燈的開關的模式。本範例使用戶外植物為例,當太陽下山後,即增加光照時數。由於Core具備Wifi連線上網的特性,使用Uiflow 內建的NTP功能,NTP(Network Time Protocol)為網路時間協定,是在資料網路中可變的電腦系統,之間通過封包交換進行時鐘同步的一個網路協定。首先必須先設定時區連線伺服器(https://www.pool.ntp.org/zone/tw),設定打開與關閉植物燈的時間即可。Uiflow使用到的功能列 : 建立函式、Module(GOPLUS 2)、 判斷邏輯函式、 UI元件。
C. 自動散熱
自動散熱功能,可依據植物生長條件設定溫度上限值,當溫度到達指定值時即開啟風扇散熱,調節溫室內的溫濕度。
Uiflow使用到的功能列 : 建立函式、Module(GOPLUS 2)、 判斷邏輯函式、 UI元件。
4. Demo模式-手動開啟功能
使用者可以將抽水馬達、植物燈、風扇等功能設定在CORE的A、B、C 按鈕 上,方便測試與Demo展示。
Uiflow使用到的功能列 : EVENT、 建立函式、Module(GOPLUS 2)、 判斷邏輯函式、 UI元件。
Step 5. 雲端儲存紀錄植物的環境參數
ThingSpeak 是一個開源的數據平台,在Wifi連線的情況下使用Http協定傳送感測器的資料紀錄。
首先必須先建立一個ThingSpeak 帳號(建立帳號),進入主控頁面後建立新的Channel,為頻道取一個名字,並將欲紀錄資料填入(Field1、Field2…..)。
建立後,點選API KEYS,將寫入資料的網址複製起來,回到UIFLOW頁面(僅需要複製網址就好)。
進入UIFLOW介面後,導入HTTP 功能。
將複製的網址貼入URL選項內,這裡需要透過UIFlow文字功能做改寫,field為感測器的編號,必須根據感測器選定專屬的編號,並將欲傳輸的資料導入。
&接著加入傳送成功與否的提示訊息,如果成功顯示綠色,失敗則呈現紅色。
完成後,重新啟動CORE。正確傳送資料後,ThingSpeak的統計圖表會開始顯示資料與時間戳記。
結語
本篇文章透過M5Stack CORE Basic 搭配GOPLUS2模組快速搭建整個智慧植栽系統,針對不同環境參數設計出自動澆水、自動調溫、自動調光等功能,在間隔10-15秒的傳輸時間內做記錄,唯獨比較可惜的是CORE Basic 並不包含RTC即時時鐘的功能,無法即時將感測器的資料與時間戳記進行較為精準且無延遲的配對,使用者如果想達到精準的時間戳記,可以使用M5StackCore2作為核心(內建RTC),透過TF卡存取資料後再進行雲端發布即可。
(本文經同意轉載自CIRCUS Pi、原文連結;責任編輯:謝涵如)
- 【CIRCUS Pi】ESP32教學系列:用ESP32玩91段電子紙 - 2025/03/24
- 【CIRCUS Pi】ESP32教學系列:硬體中斷 - 2024/12/25
- 【CIRCUS Pi】使用 Arduino UNO R4 WiFi 輕鬆製作 LED Matrix 動畫 - 2024/10/14
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!