20211112文山國小(1)
主題:ESP32初體驗
教材講義:http://gg.gg/1112ws
講師:黃文玉老師 (shspswenyu@gmail.com)
高雄市新上國小電腦老師
高雄市SCRATCH推廣教師
教育部中小學教師運算思維增能研習種子教師
Facebook S4A社團管理員之一
致力Scratch、Arduino、micro:bit、Web:Bit、凱比機器人等程式教育及創客教育的推廣(分享一系列的文章)
一、認識ESP32
參考文章:
https://makerpro.cc/2020/06/esp32-review-and-why-recommend-nodemcu-32s/
https://youyouyou.pixnet.net/blog/post/120250897-%e7%ac%ac%e4%ba%8c%e7%af%87-esp32%e7%9a%84hello-world
各開發板所使用的模組
樂鑫科技(ESPRESSIF):開發ESP32晶片 (工作電壓:3.0~3.6V)
樂鑫科技(ESPRESSIF):整合【ESP32-D0WDQ6雙核心系統單晶片】+【石英震盪器】+【4MB快閃記憶體】,組成一個【ESP32-WROOM-32模組】
各開發商:將【各類WROOM模組】+【直流電源降壓元件】+【UART轉USB通訊晶片】,就能組成一個基本的ESP32開發板。
Web:Bit:ESP32-WROOM-32
PocketCard:ESP32-WROOM-32D
DOIT NodeMCU:ESP32-WROOM-32
HaloCode:ESP32-WROVER
TTGO ...
我玩過的ESP32開發板
Web:Bit開發板
Webduino(慶奇科技)推出,高雄市前瞻計畫購買,很多學校都有
官方程式編輯軟體
Web:Bit教育版網頁版:https://webbit.webduino.io/blockly/?demo=default
Web:Bit教育版安裝版:可用USB連線、設定WIFI及韌體回復原廠,如果要將程式寫入板子,又要回復原廠,一定要裝安裝版!
各內建元件所使用的腳位及金手指腳位與GPIO的對照圖(很重要)
https://webbit.webduino.io/tutorials/doc/zh-tw/education/index.html金手指腳位與micro:bit相容
PocketCard開發板
高雄凱斯電子推出 https://www.buyic.com.tw/product_info.php?products_id=7003&Twesid=1iht42nl67l0f5lp78vlg1oml0
官方無提供編輯軟體,但提供第三方的作法:https://kaise-ksrobot.github.io/docs/ch/MCU/ESP/PocketCard/PocketCard_home.html
前陣子九軸感測器(MPU9250)漲價改版成Lite版,將9軌改3軸(MSA301)
一樣要知道各內建元件所使用的腳位及金手指腳位與GPIO的對照圖
金手指腳位與micro:bit相容
Halocode(光環板)開發板
大陸Makeblock推出 https://mblock.makeblock.com/zh-cn/
官方程式編輯軟體
mblock5線上版:https://ide.makeblock.com/
mblock5安裝版
該公司另外一塊【童芯派】也是使用ESP32晶片
NodeMCU-32S (38隻腳位)
Aithinker 安信可科技
尤濬哲老師推薦
DOIT NodeMCU (30隻腳位,體型比NodeMCU-32S大一點點)
我使用過的軟體
Arduino IDE:大都專業人士在使用
PictoBlox:建構在Scratch下的積木程式(印度公司)
這適合國小學生的使用,我玩Arduino也是用此軟體
mblock5:建構在Scratch下的積木程式(大陸公司)
bDesigner
桃園市八德國小蔡佳倫老師自行研發
BlocklyDuino
聯發科公司針對Linkit 7697所推出的積木程式(目前好像已停止更新了)
經過法蘭斯、劉正吉、ICSHOP幾位大神加以改良及增加很多積木讓功能更加完善
所以,這兩次研習,我們會以BlocklyDuino來做為我們主要的軟體(積木很多,有時像在逛迷宮一樣,小心迷路)
BlocklyDuino下載:
先下載Blocklyduino V3:https://github.com/MediaTek-Labs/BlocklyDuino-for-LinkIt/releases/tag/3.0.312b?fbclid=IwAR2RDvEFnyUv_J-0VFGn1mogC1fm4e-OkYzY2JWh59rnxFkY5Si4wB-WO2c
再下載法蘭斯BlocklyDuino F1版:https://drive.google.com/drive/folders/1BleacNvHvj1HDJ7srcNTexv9JQnM6QhK?fbclid=IwAR1-mEKhNH5Yi8ckgXkX8dRJZWF1p_fSCuhhgqe0IfsDLBa_QWDPwg9khRg
再進行吉哥積木、法蘭斯積木及ICSHOP積木的安裝
我已先完成了上述環境的整合,下載如下:https://educase.kh.edu.tw/navigate/s/9C05F2C8C63046ABAEC8EBA707AC03FBAUY
下載,解壓縮後,建議直接放在C槽或D槽的根目錄下
大家在使用此軟體時,如果有遇到問題也可以跟法蘭斯反應!!
燒錄第一個程式(把程式寫入開發板內)
回復Web:Bit原廠韌體
要使用Web:Bit教育版的安裝版
回復原廠韌體後,Device ID會變成【長ID】(有17碼)
按鍵的使用
先寫程式顯示按鍵被按下及未按下時其值為何?(按下為0、未按下為1)
按A鍵顯示紅色A
按B鍵顯示綠色B
按A+B鍵顯示藍色C
三、各式開發板與ICSHOP EZ Start Kit+擴展板結合的使用
ICSHOP也是高雄在地廠商,所以高雄三大廠商的設備,我們都用到了!
ICSHOP EZ Start Kit+介紹:https://www.icshop.com.tw/product-page.php?28443
我們利用以下題目來測試不同ESP32開發板的程式寫作
按A鍵打開三顆LED燈
按B鍵關閉三顆LED燈
OLED屏幕出現溫度、亮度及可變電阻的值
使用Web:Bit開發板
ICSHOP EZ Start Kit+擴展板上各元件所使用的腳位
紅燈(IO4):接到micro:bit插槽的P13,又相當於Web:Bit的GPIO18
黃燈(IO5):接到micro:bit插槽的P14,又相當於Web:Bit的GPIO19
綠燈(IO6):接到micro:bit插槽的P15,又相當於Web:Bit的GPIO23
按鍵A(IO11):接到micro:bit插槽的P5,又相當於Web:Bit的GPIO35
按鍵B(IO15):接到micro:bit插槽的P11,又相當於Web:Bit的GPIO27
可變電阻器(IO2):接到micro:bit插槽的P2,又相當於Web:Bit的GPIO33
光感測器(IO1):接到micro:bit插槽的P1,又相當於Web:Bit的GPIO32
溫濕度感測器(IO7):接到micro:bit插槽的P16,又相當於Web:Bit的GPIO5
OLE顯示器(SCL(IO17)、SDA(IO18)):分別接到micro:bit插槽的P19、P20,又相當於Web:Bit的GPIO22、GPIO21(也就是I2C腳位)
程式:除OLED顯示器使用吉哥積木,其他主要使用法蘭斯積木
使用PocketCard開發板
ICSHOP EZ Start Kit+擴展板上各元件所使用的腳位
紅燈(IO4):接到micro:bit插槽的P13,又相當於PocketCard的GPIO18
黃燈(IO5):接到micro:bit插槽的P14,又相當於PocketCard的GPIO19
綠燈(IO6):接到micro:bit插槽的P15,又相當於PocketCard的GPIO23
按鍵A(IO11):接到micro:bit插槽的P5,又相當於PocketCard的GPIO14
按鍵B(IO15):接到micro:bit插槽的P11,又相當於PocketCard的GPIO25
可變電阻器(IO2):接到micro:bit插槽的P2,又相當於PocketCard的GPIO32
光感測器(IO1):接到micro:bit插槽的P1,又相當於PocketCard的GPIO33
溫濕度感測器(IO7):接到micro:bit插槽的P16,又相當於PocketCard的GPIO5
OLE顯示器(SCL(IO17)、SDA(IO18)):分別接到micro:bit插槽的P19、P20,又相當於PocketCard的GPIO22、GPIO21(也就是I2C腳位)
程式:除OLED顯示器使用吉哥積木,其他主要使用法蘭斯積木
使用NodeMCU-32S開發板
ICSHOP EZ Start Kit+擴展板上各元件所使用的腳位
紅燈(IO4):接到NodeMCU-32S的GPIO16
黃燈(IO5):接到NodeMCU-32S的GPIO12
綠燈(IO6):接到NodeMCU-32S的GPIO13
按鍵A(IO11):接到NodeMCU-32S的GPIO5
按鍵B(IO15):接到NodeMCU-32S的GPIO36
可變電阻器(IO2):接到NodeMCU-32S的GPIO34
光感測器(IO1):接到NodeMCU-32S的GPIO39
溫濕度感測器(IO7):接到NodeMCU-32S的GPIO15
OLE顯示器(SCL(IO17)、SDA(IO18)):分別接到NodeMCU-32S的GPIO22、GPIO21(也就是I2C腳位)
程式:除OLED顯示器使用吉哥積木,其他主要使用法蘭斯積木
使用NodeMCU-32S還有吉哥積木可用
發現【吉哥積木】/【模組】/【EZ Start Kit+】的積木是針對NodeMCU-32S來建立的,用這些積木都不用管【腳位】
另外,發現按鍵要按久一點才有作用!
使用Linkit 7697開發板
若使用7697開發板可以直接使用ICSHOP積木
四、Web:Bit其他功能測試
繼電器、蜂鳴器、燈條測試
按A鍵啟動繼電器,2秒後關閉
按B鍵播放全家便利商店歡迎音樂
簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1
WS2812燈條一直閃爍
所使用腳位
繼電器(IO13):接到micro:bit插槽的P9,又相當於Web:Bit的GPIO17
蜂鳴器(IO0):接到micro:bit插槽的P0,又相當於Web:Bit的GPIO25
燈條(IO16):接到micro:bit插槽的P12,又相當於Web:Bit的GPIO2
紅外線接收器測試
紅外線接收器(IO3):接到micro:bit插槽的P8,又相當於Web:Bit的GPIO16
顯示按鍵編碼在OLED上
利用KEYES遙控器,取得上下左右及OK的編碼值如下
上:ff629d
下:ffa857
左:ff22dd
右:ffc23d
OK:ff02fd
1:ff6897
2:ff9867
3:ffb04f
利用按1鍵點亮紅燈、按2鍵點亮黃燈、按3鍵點亮綠燈、按OK鍵全關燈
OLED測試
OLED顯示【文山國小】的QRCODE
OLED顯示【可變電阻】的圖表https://sites.google.com/jes.mlc.edu.tw/ljj/linkit7697/oled%E9%A1%AF%E7%A4%BA%E5%9C%96%E8%A1%A8
OLED顯示目前時間 (由於需網路校正時間,此項目下次再玩)
<<本次課程結束,下週有更精彩且是ESP32的強項-- 網路及IOT應用>>
五、小車功能測試 (上次去仁愛國小的課程,就不移掉了)
前進、後退、左右轉及停止測試
按A鍵小車前進
按B鍵小車後退
按A+B鍵小車停止
同理,測試
按A鍵原地左轉
按B鍵原地右轉
按A+B鍵停止
修改上面的程式就可以了
請小車走出一個正方形
按A鍵開始行走
以地上的大正方形磁磚為路徑
走完後,記得要停止
畫正方形口訣:走一個邊長、轉90度、重複4次
利用速度X時間=距離,先設定慢一點速度,控制時間來決定行走距離
同理,利用轉向角度X時間,來控制轉向的角度
避障小車
使用【超音波測距感測器】來量測前方障礙物的距離
先測試感測器如何量測距離,及測試感測器有沒有問題
避障規則(可自訂)
前方20公分有障礙物時,會隨機左右轉來避開障礙
前方20公分沒有障礙物時,小車就一直向前走
循跡小車
使用兩組【紅外線感測器】來偵測是否在線上
先測試感測器在黑線及白線上的感測值
偵測結果:
右:黑、左:黑 => 0 (黑線上會亮燈)
右:黑、左:白 => 1
右:白、左:黑 => 2
右:白、左:白 => 3
程式如下:
利用紅外線遙控器來遙控小車
讀取遙控器的按鍵編碼
利用KEYES遙控器,取得上下左右及OK的編碼值如下
上:ff629d
下:ffa857
左:ff22dd
右:ffc23d
OK:ff02fd
利用我家海爾電視的遙控器,取得上下左右及OK的編碼值如下
上:20df02fd
下:20df827d
左:20dfe01f
右:20df609f
OK:20df22dd
利用遙控器控制車子前後左右及停止
他校的課程規劃(暫存)
Web:Bit初體驗 (3hr)
認識Web:Bit
內建感測器的應用
怪獸舞台與運算思維
數理解題及小遊戲製作
Web:Bit在物聯網的應用(3hr)
氣象資料資料取得
Google試算表收集資料
MQTT與網路廣播
開發板、手機、電腦互聯互動
Web:Bit在智能屋的應用(3hr)
使用EZ Start Kit擴展板
智能屋控制系統
簡易保全系統
環境監控與應變
遠端控制
用Web:Bit玩登月小車(3hr)
控制小車的基本運動
避障小車
循跡小車
遙控小車
顏色辨識