IoT 物聯網教學-新版 micro:bit 空氣小屋(MbitBot Lite)- 記錄空氣品質更簡單

一、介紹

micro:bit 空氣小屋 ( MbitBot ) 登場已有一段時日,除了受到大家的支持與好評之外,當中也蒐集了不少使用者反饋給我們的訊息,針對這些建議我們整理成五個重點:

  1. 功能上的擴充性插槽是否可以再增加幾個。
  2. 螢幕是不是可以大一點。
  3. 除了上傳資料以外,是不是也能取得資料。
  4. 接線的部分是不是可以更單一、更簡單。
  5. 感測器是不是可以不要直接露出來。

因此,本次在設計新版空氣小屋時,我們將這些建議融入到這一次的設計當中,除了採納這些提議之外,我們也針對上一版產品的缺點或多餘的功能做了一些刪減,就讓我們一起來看看新版本到底加了什麼、改變了什麼吧!

二、新版本的功能與配置

1. 擴充性

為了讓使用者操作上更有彈性,並可隨意增加自己想要的功能。我們更換了代表micro:bit 手腳的擴充板,讓新的版本更適合成為您解決問題的方案。

我們將原本主要用來作「機械動力」的MbitBot,更換為「擴充性更強」的MbitBot Lite 如下圖所示。 MbitBot Lite 去掉了控制馬達的晶片與RJ25 連接器,並捨棄Grove 插槽將連接腳位更換為排針。除了體積縮小之外,增加了18650 電池座與功能切換開關。針對I2C 特殊功能腳位,也額外擴充3 組連接位子。完完全全將所有腳位的控制權交給使用者,模組想接哪裡就接哪裡,使得擴充更方便。

MbitBot Lite

2. 更大的螢幕

用來顯示資訊的螢幕我們從原本的0.96 吋增加到1.3 吋的OLED,並將螢幕顯示顏色更換至舒適的白色。原先的螢幕採用雙色OLED,在顯示上固定上半段會有幾行像素為黃色,其餘為藍色,黃、藍交接處有一行像素無法顯示。這次的版本我們全面改為白色OLED,顯示大字體於上半段時,不再有分色或不顯示的問題。

Circus 1.3吋OLED顯示螢幕

3. 資料上傳與取得

上一版無法兼顧資料取得的原因出在Wi-Fi 模組,要達到想要的功能,操作上相對來說較為複雜,所以就沒有將功能實做出來供大家使用,這次我們換上了iCShop 自製的Wi-Fi 模組Logyun 連雲,連雲可以輕易的完成資料的上傳與擷取,上一版空氣小屋我們提供的是ThingSpeak,連雲還能讓您上傳自己的Google 試算表,並支援MQTT的功能,關於連雲的強大功能可以參考以下文章:

1號傳送門:IOT 物聯網模組 – Logyun 連雲 開箱介紹

2號傳送門:Logyun連雲 – 史上最簡單IOT模組

Logyun 連雲

4. 接線更簡單

這次我們統一了接線方式。不論是空氣品質感測器、溫溼度感測器、顯示螢幕或是連接Wi-Fi 的連雲,模組端都是特殊的防呆接頭,連接MbitBot Lite 這端都是採用能與排針相連的杜邦母座接頭。想怎麼接就怎麼接,線不夠長嗎?您可以購買彩色杜邦雙頭線(公/母)自行連接來加長線段。

彩色杜邦雙頭線(公/母)

5. 感測器保護與變動

這次將各個模組都藏在小屋內,避免直接碰觸造成感測數值不正確,小屋周圍一樣都有開孔讓空氣對流。我們拿掉了上一版的震動感測器,因為micro:bit 本身具備加速度感測功能,故將此重複的功能去除。雖然東西變少、體積變小,功能卻更豐富。

熟知了新版本的功能後,是不是迫不及待要趕緊試試看了呢?現在就跟著我們依照以下的內容,從組裝到撰寫程式,一步步搭建自己的空氣品質觀測站!

三、組裝教學

在組裝之前,我們需要準備相關感測器與五金零件,您可以透過下列清單找到相關連結與數量,順便檢查有沒有少東西呦!

1. 材料清單

2. 安裝空氣品質感測器

準備如下圖所示的相關物件:

a. G3 PM2.5 感測器與連接線 x1
b. 十字圓頭螺絲 M2x10mm x2
c. 鍍鎳六角螺帽M2 x2
d. 圖中所示壓克力片 x1

Step 2-1. 首先將連接線依照孔位安裝到感測器上。

Step 2-2. 拿出壓克力片,將唯一平邊與感測器風扇對齊,並且感測器螺絲孔對齊壓克力螺絲孔,兩孔都使用M2螺絲與螺帽固定,方向如下圖所示:

完成後如下圖所示:

3. 安裝OLED 顯示螢幕

準備如下圖所示的相關物件:

a. Circus 1.3吋OLED顯示螢幕 x1
b. 4x母端杜邦線+母座 to circus 4pin x1
c. M3六角細牙銅柱7mm x2
d. 十字圓頭螺絲 M3 x 6mm x2
e. 六角螺帽M3 x2
f. 圖中所示壓克力片 x1

Step 3-1. 將連接線依照孔位裝在OLED 上。

Step 3-2. 拿取銅柱與螺帽,如下圖所示將銅柱固定在兩個孔位上。

Step 3-3. 使用M3 螺絲將OLED 固定在壓克力片上。

完成後如下圖所示:

4. 安裝Logyun 連雲

準備如下圖所示的相關物件:

a. Logyun 連雲 x1
b. 4x母端杜邦線+母座 to circus 4pin x1
c. M3六角細牙銅柱7mm x2
d. 十字圓頭螺絲 M3 x 6mm x2
e. 六角螺帽M3 x2
f. 圖中所示壓克力片 x1

Step 4-1. 將連接線依照孔位裝到連雲上。

Step 4-2. 取銅柱與螺帽,如下圖所示將銅柱固定在兩個孔位上。

Step 4-3. 使用M3 螺絲將連雲固定在壓克力片上,連雲正面字體上方對應壓克力孔洞與邊距較寬的那側,並且3mm 小孔配置為左上右下。

完成後如下圖所示:

5. 安裝擴充板、micro:bit 與溫溼度感測器

準備如下圖所示的相關物件:

a. micro:bit V1.5 x1
b. MbitBot Lite x1
c. 18650 鋰電池 x1
d. Circus DHT11溫濕度感測器模組 x1
e. 4x母端杜邦線+母座 to circus 4pin x1
f. M3六角細牙銅柱10mm x4
g. 十字圓頭螺絲 M3 x 6mm x4
h. 十字圓頭螺絲 M3x10mm x2
i. 六角螺帽M3 x6
j. 圖中所示壓克力片 x1


Step 5-1. 將18650 電池依照正負極安裝在 MbitBot Lite 的電池座上。

Step 5-2. 取銅柱與螺帽,如下圖所示將銅柱固定在擴充板四個孔位上。

Step 5-3. 拿取M3*6mm 的螺絲將擴充板固定在壓克力片上,方向如下圖所示:

Step 5-4. 拿出M3*10mm 螺絲與M3 螺帽,將溫溼度感測器如下圖所示,固定在壓克力片上。

固定完畢如下圖所示,順手將前方的指撥開關2號切至ON,以便之後控制RGB LED。

Step 5-5. 將連接線依照孔位安裝在溫溼度感測器上。

Step 5-6. 連接線另一端如下表與下圖所示,安裝在擴充板上的P8 位子。並將micro:bit 一並安裝上去。

溼度感測器連接 MbitBot Lite 接線對照表

白色線為空腳可以不連接,若是覺得難整線可以將其連接到GND(黑色排針)。

6. 連接其他裝置

接下來將其他裝置的連接線都安裝到擴充板上。

Step 6-1. 將空氣品質感測器上的連接線另一端,如下表與下圖所示,安裝在擴充板上的P1 與P2 的位子。

空氣品質感測器連接MbitBot Lite 接線對照表

與上一版空氣小屋一樣,我們取消空氣品質感測器RX 的接線,取代的是能設定休眠模式的SET 腳位接線。在新的版本,我們一樣可以開啟或關閉進入休眠模式。

Step 6-2. 將連雲上的連接線另一端,如下表與下圖所示,安裝在擴充板上的P13 與P14 的位子。

Logyun 連雲 連接MbitBot Lite 接線對照表

Step 6-3. 將OLED 上的連接線另一端,如下表與下圖所示,安裝在擴充板上的SCL 與SDA 的位子。

OLED 連接 MbitBot Lite 接線對照表

7. 組裝外殼

準備如下圖所示的相關物件:

a. 其餘壓克力片

b. 十字圓頭螺絲 M3 x 8mm x10

c. 六角螺帽M3 x10

Step 7-1. 如下圖所示,將四周對應的壓克力相互組裝起來。

a. 右側視圖

b. 左側視圖

c. 上視圖

d. 正面視圖

Step 7-2. 與 Logyun 連雲相連的壓克力為左側屋頂,依照下圖所示組裝。

Step 7-3. 將右側屋頂的壓克力片,依照下圖所示安裝,3mm 小洞需對齊螺絲孔。

Step 7-4. 接著將最後一片壓克力片依照下圖所示安裝上去,缺口剛好會對應 micro:bit 的Micro USB 插孔。

Step 7-5. 外殼組裝完畢後,拿取M3*8mm 螺絲與M3 螺帽如下圖所示,將其10個位子固定起來。

a. 由上方往下看共六個位子

b. 底部共四個位子

c. 如下圖所示用螺絲螺帽固定

Step 7-6. 完成。

四、程式庫擴充

1. 打開大家熟悉的MakeCode 程式編輯網頁,並開啟擴充頁面。

2. 我們要擴充的項目有三項,之所以分別擴充是為了防止MakeCode 更新時,有機率造成程式庫不支援,分開擴充可以避免掉有問題的程式庫,讓其他功能可以繼續使用。

a. 第一個要擴充的是:NeoPixel

可以直接在擴展頁面內找到。

b. 第二個要擴充的是:Logyun 連雲

需要使用下列網址來擴充 Logyun  連雲的程式庫。

擴充連結:https://github.com/iCShopMgr/CIRCUS_Pi_Logyun

c. 第三個要擴充的是:MbitBot 空氣小屋

因為擴展板已與上一版不同,所以我們提供獨立的程式庫讓使用者使用。

擴充連結:https://github.com/iCShopMgr/MbitBot_AirBox

擴充完成畫面如下:

五、程式撰寫

我們撰寫的功能為,讀取空氣品質與溫溼度共5 筆數值,依照PM2.5 的數值為依據,顯示不同燈號與表情,隨後透過Wi-Fi 將資料上傳至Google 試算表

顯示的部分則透過背景執行,以每3 秒的間隔輪流顯示空氣品質與溫濕度。

1. 初始化

從程式庫「MbitBot空氣小屋」內拖拉出3 個程式積木,分別是「OLED顯示器初始化」、「OLED設定文字大小[大]」、「PMS3003連接腳位RX TX休眠模式設定」。

將OLED 文字大小設定為大,空氣品質感測器PMS3003的腳位則設定為RX(P2)與TX(P1),休眠模式設定為OFF。

從程式庫「Neopixel」內拖拉出2 個程式積木,分別是「(strip)設為引腳[P12]初始化燈帶(2)顆LED(模式[RGB])」、「(strip)設置亮度為(30)」,一個是設定RGB LED 連接在哪個腳位與設定LED 數量,另一個是設定LED總亮度。在此我們設定RGB LED 連接於P12 並設定2 顆LED,亮度依照自己喜好設定,不要太亮可以依照下圖所示設定為30。

2. 讀取數據並顯示燈號與表情

Step 2-1. 取得空氣品質感測數值有兩個步驟,第一個步驟是讀取總資料,第二步則是取出資料。我們首先從程式庫「MbitBot空氣小屋」內拖拉出「PMS3003連接腳位RX[] TX[]讀取資料」,將RX 設定為P2 腳位,TX 設定為P1 腳位,緊接著插入一個「延遲時間」,使得感測器能有充裕的時間讀取資料,接下來我們設定3 個變數來儲存取得的資料。

Step 2-2. 從程式庫「MbitBot空氣小屋」內拖拉出「DHT11溫溼度模組[P8]讀取溫度」,讀取後方的下拉式選單能選擇濕度或是溫度,連接位子我們設定為腳位P8,同樣設定兩個變數用來儲存溫度與濕度。

Step 2-3. 接著將儲存PM2.5 的變數拿來做比對,依照數值高低設定不同LED 燈色與表情。LED 顯示燈光顏色的程式積木在程式庫「Neopixel」內,「(strip)顯示顏色(紅)」

3. 連上Wi-Fi 並上傳Google 試算表

Step 3-1. 首先連接Wi-Fi,從程式庫「Logyun 連雲」內拖拉出 Logyun  連雲連接RX[] TX[] Wi-Fi 名稱:() 密碼: ()」,設定腳位RX 連接P13,TX 連接P14,並填入自己要連接的Wi-Fi 名稱和密碼,並加入「延遲時間」Logyun  連雲有時間連上Wi-Fi。

Step 3-2. 從程式庫「Logyun 連雲」內拖拉出「上傳Google試算表 連結金鑰() Field1 …」,請登入自己的Google 雲端硬碟並開啟一個Google 試算表,點選共用並設定權限為編輯者。

Step 3-3. 請將連結網址中「 d/ 後方到 /edit 前方」的那串碼複製下來,此碼為該試算表的連結金鑰, Logyun  連雲會透過金鑰來連接到指定的試算表。

Step 3-4. 將複製的金鑰填入連結金鑰後方,並按下程式積木下方有個「+」號,點此符號新增要上傳的資料筆數,我們有5 筆資料所以新增5 個Field。因為上傳的資料填入格式規定為「文字類別」,所以要將我們儲存資料的變數轉換成文字類別才能填入上傳的程式積木中,如下圖所示。

4. 螢幕顯示

這邊用到前一版同樣的小技巧,為了讓螢幕顯示與資料讀取、上傳分開為兩個不同的執行頻率,所以將螢幕顯示獨立拉到背景來執行。

Step 4-1. 首先點選程式積木列表中的「進階」「控制」,並拖拉出裡面的「背景運行」。因為在背景運行裡,我們要放的是顯示資料的程式,為了避免空氣小屋一開始開機時沒資料,導致顯示錯誤,所以開頭加入一個「延遲時間」的程式積木,再放入「重複判斷<true>執行」的程式。

Step 4-2. 最後在「重複判斷<true>執行」內放入要顯示文字資訊的程式,在這裡我們用到兩個關於OLED顯示的程式積木,從程式庫「MbitBot空氣小屋」內分別拖拉出「OLED清除畫面」「OLED顯示位子x:() y:() 文字:()」。

在顯示資訊之前,我們習慣先清除畫面再顯示,避免與上一筆資訊重疊到,導致顯示錯誤。如下圖所示以3 秒的間隔不停顯示空氣品質數據與溫溼度數據。

Step 4-3. 以上就完成了我們一開始設定的功能,將程式下載到micro:bit 並按下MbitBot Lite 的電源開關,就完成囉!!!

程式連結:https://makecode.microbit.org/_DwmgeC7MdPmF

連雲v1.2 程式連結:https://makecode.microbit.org/_HAUMgULJf2kJ

打開自己的Google 試算表,觀察看看有沒有上傳成功呢?

六、結論

這次除了換掉擴充板之外,最大的改變就是使用了強大的Logyun 連雲,使得空氣偵測專案能得到更大的發展空間。有興趣想使用更多功能的話,可以參考以下文章了解更多功能:

1號傳送門:IOT 物聯網模組 – Logyun 連雲 開箱介紹

2號傳送門:Logyun連雲 – 史上最簡單IOT模組

若想知道更多關於micro:bit 專案的相關訊息,歡迎參考我們CIRCUS Pi 網站的技術文章