20211112文山國小(1)

主題:ESP32初體驗

教材講義:http://gg.gg/1112ws

講師:黃文玉老師 (shspswenyu@gmail.com)

  • 高雄市新上國小電腦老師

  • 高雄市SCRATCH推廣教師

  • 教育部中小學教師運算思維增能研習種子教師

  • Facebook S4A社團管理員之一

  • 致力Scratch、Arduino、micro:bit、Web:Bit、凱比機器人等程式教育及創客教育的推廣(分享一系列的文章)


一、認識ESP32



  • 燒錄第一個程式(把程式寫入開發板內)

  • 回復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,又相當於PocketCardGPIO14

      • 按鍵B(IO15):接到micro:bit插槽的P11,又相當於PocketCardGPIO25

      • 可變電阻器(IO2):接到micro:bit插槽的P2,又相當於PocketCardGPIO32

      • 光感測器(IO1):接到micro:bit插槽的P1,又相當於PocketCardGPIO33

      • 溫濕度感測器(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鍵全關

<<本次課程結束,下週有更精彩且是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

  • 利用遙控器控制車子前後左右及停止

他校的課程規劃(暫存)

  1. Web:Bit初體驗 (3hr)

    • 認識Web:Bit

    • 內建感測器的應用

    • 怪獸舞台與運算思維

    • 數理解題及小遊戲製作

  2. Web:Bit在物聯網的應用(3hr)

    • 氣象資料資料取得

    • Google試算表收集資料

    • MQTT與網路廣播

    • 開發板、手機、電腦互聯互動

  3. Web:Bit在智能屋的應用(3hr)

    • 使用EZ Start Kit擴展板

    • 智能屋控制系統

    • 簡易保全系統

    • 環境監控與應變

    • 遠端控制

  4. 用Web:Bit玩登月小車(3hr)

    • 控制小車的基本運動

    • 避障小車

    • 循跡小車

    • 遙控小車

    • 顏色辨識