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/ (好像是泰國網站)
台灣推廣網站:
ESP Gyro擴充板:https://sites.google.com/view/esp-gyro/mblock
客制化的 ESP32 中文版:https://reurl.cc/ZAyVEl (取自ESP Gyro擴充板官網)
為 windows 的離線版本,解壓後(儘可能放至根目錄下(C:或D:),路徑不要太長)
打啟 microBlock IDE.exe 會出現如下的操作介面
使用前的準備工作
第一件事是【更新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