01 認識microBlock

(2022/08/05)

前幾天利用硬體ESP32-CAM+Gyro擴展板及透過Thonny來寫MicroPython程式,後來從Mason得知Gyro擴展板官網的MicroPython程式都是從microBlock的積木程式轉出來的,也建議我來玩玩microBlock!今天採用NodeMCU-32S【EZ Start Kit+擴展板】來測試,看【EZ Start Kit+擴展板】上的元件,能不能透過microBlock所寫的程式來控制。測試過程如下,供參


、認識microBlock

  • 利用積木方式來寫 ESP32 MicroPython 程式

  • microblock.app 官網:https://microblock.app/ (好像是泰國網站)

  • 台灣推廣網站:

  • 使用前的準備工作

    • 第一件事是【更新ESP32的韌體】

  • 寫完程式後,接下來上傳程式

    • 寫第一個程式是內建LED燈一亮一滅

    • 程式寫入的速度非常快

  • 這平台的另一個好處是可以把【積木程式】轉為【MicroPython程式碼】

  • 由於Gyro擴展板支援NodeMCU-32Snhe ESP32-CAM,官網大都使用【Gyro擴展板】,所以我這邊就不採用【Gyro擴展板】來測試,而是採用【EZ Start Kit+擴展板】來測試,看【EZ Start Kit+擴展板】上的元件,能不能透過microBlock所寫的程式來控制。


二、認識EZ start Kit+擴展板

  • 全新三合一擴展板,支援 micro:bit、Linkit 7697& ESP32

  • 搭配了1.3吋的OLED液晶螢幕,具有更多元的顯示變化

  • 讓學生不再浪費時間進行接線動作,更可減少因線路連接錯誤造成主板的損壞率

  • 搭配10種以上不同的實驗項目,並提供micro:bit、Linkit 7697與 ESP32 的範例程式,上手學習更輕鬆

  • micro:bit、Linkit 7697& ESP32插槽:支援micro:bit、Linkit 7697及 ESP32三種主板,依照專案需求選擇主板,開發模式更多元。

  • 樂高積木孔:可配合樂高專案應用。

  • 按鍵A&B:直徑約6.5mm的黑色圓形小按鈕,兩顆按鈕能讓您輸入指令並控制擴展板。

  • DHT11溫溼度感測器:可以量測溫溼度。量測值:空氣中的溫度(0~50度),與相對溼度(百分比),量測完成的數值可顯示於1.3吋的OLED液晶螢幕。

  • 單色LED:單色LED共有三個顏色,分別是紅色、黃色、綠色。 有了這三顆燈除了可以練習如何用程式點亮LED,也能製作紅綠燈小專題。

  • 光感測器:採用光敏電阻來檢測環境光的強弱,量測數值範圍是0~4095,數值越大表示光強度越強。

  • RGB LED:單色LED上方有相同數量的RGB LED燈,與普通的彩色LED不同之處為自帶驅動晶片。只需一條訊號線即可控制點亮不同顏色。

  • 無源蜂鳴器:能使用程式來讓它發出聲響,也可利用它來播放自己編寫的音樂或是當作警報器使用。

  • 紅外線接收:可以接收紅外線遙控器發出的訊息,執行此功能需搭配紅外線遙控器使用。

  • OLED顯示器:1.3吋的OLED螢幕,能顯示感測器所讀到的數值外,也能用於程式除錯。

  • 繼電器:主要功能是可用小電流控制大電流元件,簡言而之是一個電子開關,當送電給它時,內部會接通,反之則斷開。

  • 可變電阻:透過程式讀取可變電阻可得到0~4095的數值,調整數值的方法可透過旋轉可變電阻來改變,可用來製作需要調節控制的專案,例如:透過可變電阻調整LED亮度。

、OLED顯示器的使用

  • OLED顯示器的規格為I2C腳位、解析度為128*64

  • 顯示文字、數字、圖案

  • 測試後發現:

    • 座標起點為文字的左上角

    • 英文及數字】積木,每個字寛度8,且只顯示一行,超過的部份不會出現

    • 大型數字】積木每行可顯示6個數字或7個英文字(也可顯示英文字),超過一行時會往下一行

    • 中文文字】積,無法顯示文字,不知是不是要先提供中文字型

    • 有畫【直線】及【方形】積木,但沒有畫【圓形】積木!建議增加【圓形】積木!

    • 【顯示圖像】積木很方便,直接上傳一張圖片就可以用黑白的方式顯示

  • (後續)【亞柏老師的指導】

    • 要使用中文積木要先安裝中文字型在esp32中

    • 中文字型於下目錄內,可利用Thonny來存到ESP32內

      • microBlock.IDE\resources\app\extension\OLED-extension-6\modules

    • 但字型會太佔空間

    • 所以可改用小畫家來實現中文,再利用【顯示圖像】積木來使用

  • (20220816後續)【亞柏老師的指導】

    • OLED新增中文字擷取EXE及QR產生器。

    • 可依每次專案要顯示的中文字,自行擷取,不必帶著像以前要先上傳龐大字庫。

    • 到microBlock.IDE.V2.2.0_Gyro_V1.5c\resources\app\extension\2e-OLED-extension-7\modules

、按鍵的功能

  • EZ Start Kit+有兩個按鍵

      • 按鍵A(IO11):腳位為GPIO5

      • 按鍵B(IO15):腳位為GPIO36

  • 取得按鍵A(或B鍵)按下時的數位值

      • 利用OLED顯示其值

  • 發現:

    • 按鍵要利用【擴展板供電】才有作用

    • 未按鍵的數位值為1

    • 按下後的數位值為0

、LED燈的功能

  • 按A鍵點亮【紅燈】、按B鍵點亮【黃燈】、按A+B鍵點亮【綠燈】

    • 紅色LED燈(IO4):GPIO16

    • 黃色LED燈(IO5):GPIO12

    • 綠色LED燈(IO6):GPIO13

    • LED燈需要【擴展板供電】才有作用

  • (後續)【亞柏老師的指導】

    • 可直接使用【按鈕】積木

    • 感謝亞柏老師還幫忙製作了【兩鍵同時放開】後的積木

、各感測器的使用

  • 顯示溫濕度、光亮度、可變電阻值

    • 溫濕度感測器(IO7):GPIO15

    • 光感測器(IO1):GPIO39

    • 可變電阻(IO2):GPIO34

  • 發現:

    • 不知是不是設備有問題?我的濕度值都是0!!

    • 可變電阻的值 ( 0(順時針到底)~4095(順時針到底))

    • 光亮度:全暗為0、我測的最大值約2800,照光也不會增加!

  • (後續)【亞柏老師的指導】

    • 改用下圖的積木

    • 讀取之間DELAY些比較好

    • 用變數或許比較好

    • 跟 DHT11品質有關,可換個試試

    • 修改如下:

      • 但量測到濕度還是0,應該是用到不同的函式庫吧!

、蜂鳴器的使用

  • 蜂鳴器腳位(IO0):GPIO14

  • 播放全家便利商店歡迎音樂

    • 簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1

  • 發現:

    • 由於全家音樂,中間有一個音階是2拍,所以把整段分割成三小段

    • 發現積木少了低8度的音階,所以利用修改microPython程式碼來解決,如下:

  • (後續)【亞柏老師的指導】

    • 亞柏老師指導如何修改【常見曲目區】的音樂(修改 microBlock.IDE\resources\app\microBlock-IDE\boards\esp32-dev-board\js下的field_note.js)

    • 然後【常見曲目區】就會看到【全家歡迎音樂

  • 我後來發現還有另一個【蜂鳴器】積木,裡面就有提供頻率的積木

    • 所使用的頻率:330、262、196、262、294、392、294、330、294、196、262

  • (後續)【亞柏老師的指導】

    • 亞柏老師又提供【列表字典工具】的積木,所以又把一大串的積木利用【表單】來簡化

  • 也可利用【字串轉清單】的方法來處理

  • (後續)【亞柏老師的指導】

    • 亞柏老師又教了用二維陣列的方法,如下

、燈條的使用

  • WS2812B晶片,只占用1個腳位(IO16)GPIO26

  • 點亮燈條的燈

、紅外線遙控器的使用

  • 紅外線接收器(IO3):GPIO33

  • 取得遙控器按鍵的【編碼值】

    • KEYES遙控器的方向鍵編碼值

      • 上:ff629d

      • 下:ffa857

      • 左:ff22dd

      • 右:ffc23d

      • OK:ff02fd


  • 按KEYES遙控器的方向鍵

    • 按上鍵,全亮燈

    • 鍵,全

    • 按左鍵亮紅燈

    • 按中鍵(OK鍵)亮黃燈

    • 按右鍵亮綠燈

      • 註:要用變數來存取得的編碼

、繼電器的使用

  • 繼電器是以小搏大的開關設備,用小電壓去控制大電壓

  • 所以就可以來控制家中的電燈、電扇等使用市電(110V)的電器

  • 繼電器腳位(IO13)GPIO25

  • 用法跟點亮一顆LED燈一樣

  • 按A鍵啟動繼電器;B關閉繼電器

十一、超音波測距感測器的使用

  • 我們把【超音波測距感測器】的TRIG接在IO12(GPIO4)、ECHO接IO14(GPIO27),可自己選擇要使用的腳位

  • VCC接3.3V、GND接GND

  • 要注意本【超音波感測器】(HC-SR04P)可用3.3V,其他大部份的是5V