作者:創客萊吧 MakerLab
本篇文章教大家用 micro:bit 製作空氣盒子,空氣感測、溫度、濕度一應具全,有興趣的人一起做看看吧!
曾有人用 Arduino 、 NodeMCU 與 LinkIt7697 各製作了可以偵測 PM2.5 、溫度與濕度的版本的空氣盒子,並將資料透過 Wi-Fi 放在 ThingSpeak 上,那若換成 micro:bit 能不能成功呢?答案是當然可以,馬上來看看製作教學吧!
所需材料:
- micro:bit x1
- MbitBot x1
- 0.96 OLED 顯示螢幕 x1
- ESP-12F 模組(需改成 5V ) x1
- 震動感應器 x1
- PMS3003(G3)x1(需將 VCC、 GND、 SET 與 TXD 的線拉出製成杜邦公端)
- Micro USB 數據線
- DHT11下列線材與螺絲請視自己使用的各模組接口與螺絲孔而定。
- Grove 母座雙頭線 x2
- Grove 母座 to 母端杜邦線 x3
- 固定用螺絲螺帽與外殼(可自行設計)
注意事項:
在所需材料中有特別提到要將 ESP-12F 修改成 5V ,因為 MbitBot IO 的電壓接近 5V ,直接接上 ESP-12F 可能會損壞。修改非常簡單,一般購買的 ESP-12F 會附贈一個轉板,將 ESP-12F 焊在轉板後,在轉板的背面焊上一顆 AMS1117( 3..3V ) ,並將正面中間那顆電組解焊就完成了,記得將轉板焊上連接用的排針。
至於空氣品質感測器 PMS3003 的部份,需將線拉出製成杜邦公端,只需將 VCC 、 GND 、 SET 與 TXD 的線拉出即可, PMS3003 的接口標示如下:
連接時間:
MbitBot 上面有八個接口,分別將各個模組如下圖位置連接,程式示範將會以下圖接的位置來撰寫。
每個模組除了 VCC 與 GND 接在 MbitBot 各個接口的 5V 與 G 的位置外,其餘訊號線的連接如下描述:
- PMS3003 的 TXD 接在 MbitBot 的 P1 , SET 接在 P2 。
- DHT11 的訊號接在 MbitBot 的 P5 。
- ESP-12F 的 RXD 接在 MbitBot 的 P15 , TXD 接在 P16 。
- OLED 的 SDA 接在 MbitBot 的 SDA, SCL 接在 SCL 。
- 震動感應器的訊號接在 MbitBot 的 P13 。
程式示範:
確認接線無誤就可以來撰寫程式囉,首先打開 MakeCode 並安裝 MbitBot 的程式庫,沒使用過 MbitBot 可以參考:
https://www.makerlab.tw/blog/categories/micro-bit%E7%B3%BB%E5%88%97
目前安裝最新的 MbitBot 程式庫同時也會自動搜尋並安裝 OLED 與 Neopixel 兩個程式庫。
第一步先讓感測器的值顯示在螢幕上,點選 OLED 並拉出初始化設定的積木「initialize OLED with height 64 width 128」 這個積木,並放到當啟動時。
新增五個變數並點選 MbitBot 拉出 PMS3003 與 DHT11 的值,將數值放入變數內,再放到重複無限次,這一步是為了一口氣將所有數值讀取出來,記得選擇所接的接口編號喔。
接下來將感測器數值透過螢幕顯示出來,點選 OLED 並拖曳出如下圖所示的程式積木,內容是先清除螢幕並新增標題為「 AirBox 」,透過「 insert newline 」這個積木可以空一行,並依序新增標題與數值。
這時可以暫停一秒來做個測試,如果接線無誤,下載程式到 micro:bit 應該就會顯示了。因為讀取程式需要時間,所以開機後要耐心等待個幾秒鐘,螢幕才會顯示,不過如果等超過 10 秒還沒顯示就代表是錯誤,請不要再癡癡等待。
上傳 ThingSpeak
接下來我們就將感測器的數值送上 ThingSpeak 吧!不想傳到網路上的夥伴可以跳過這段,關於 ThingSpeak 的註冊與使用這邊就不贅述了,不知道的夥伴可以 Google 一下。因為我們總共有 5 個數值( PM1.0 、 PM2.5 、 PM10 、溫度與濕度),所以要在自己的 Channel 增 5 個 Chart ,這裡用的排序是 PM1.0 、 PM2.5 、 PM10 、溫度、濕度。
回到 MakeCode ,先刪除暫停一秒的程式,點選 MbitBot 並拖曳出如下圖的兩個積木,第一個 ESP8266 程式積木記得選擇連接的接口,並在 SSID 與 KEY 填入您的 Wi-Fi 帳號密碼,第二個 Upload ThingSpeak 程式積木請在 API Keys 的位置填入您 ThingSpeak Channel 的 Write API Key ,並依照 Chart 的排序在下方欄位放入感測器讀值,因為只有 5 個,其餘的空著即可。
因為連接與上傳需要時間,所以程式積木本身已內含所需的延遲時間,所以不需要再額外新增暫停的積木。將上述程式下載到 micro:bit ,耐心等待一段時間後應該就能在 ThingSpeak 上看到自己的資料囉!
如果您過了幾分鐘都看不到資料,或是是因為您的 Wi-Fi 較弱,程式內建的時間太短,還來不及連不上 Wi-Fi ,程式就執行下一步了。可以在剛剛新增的 ESP8266 程式積木下方加入暫停時間,如下圖所示。
除了顯示與上傳,當然也要亮個燈讓 Micro:bit 直覺顯示空氣品質概況,我們就以PM2.5 的值來作為顯示什麼顏色的依據吧!
首先點選左邊選單的 Neopixel 並拉出如下圖的積木新增到當啟動時,並設定 pin 為 P12 (因為 MbitBot 上的 RGB 燈是連接在 P12 喔),後方輸入 4 是因為我們有 4 個 RGB LED ,並拉出設定亮度的積木「 strip set brightness 」將光線調弱一點。
接下來新增一系列的如果…否則…邏輯積木,將透過偵測 PM2.5 的數值大小分為 4 種顏色,顯示顏色的積木「 strip show color 」在左側積木列的 Neopixel 裡。
您也可以新增 micro:bit 的表情讓空氣盒子的表達更生動。
新增完成後下載到 micro:bit 裡就能如下圖般顯示囉!
本篇的完整範例程式:
https://makecode.microbit.org/_W0qPPk4Fg3xu
小結
這次的教學介紹就到這裡,基本上該有的功能都已經在本篇完成了,之後會再教大家如何使用 PMS3003 與 ESP-12F 的低功號模式,並加入震動感測器的功能,大家先動手做做看,完成本篇的進度吧!
- 【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位開發者一同掌握科技創新的技術資訊!