Wokwi模擬器(MicroPython on ESP32)第四版


MicroPython on ESP32簡介

資料引用:張文宏老師

資料引用:https://www.youtube.com/watch?v=l9OhMBk_lUE&t=41s

小結

資料引用:陳豐生業師(豐爸)

資料引用:MicroPython for kids


實作先備知識(國中九年級理化電學及資訊科技數位化原理.基礎程式設計Scratch...)

1.電路原理(基本迴路)


2.開發板硬體三核心

S = signal = 訊號

V = Vin = 輸入電壓(USB供電時為5V或3.3V)

G = GND = 接地


口訣:人要腳踩實地(G)先吃飯(V),才能接受指令做事(S)

3.數位/類比訊號(Digital/Analog)

資料引用:https://hackmd.io/x3cd61mySQyJ9Op5iN3jeA?view&fbclid=IwAR1tQbVtawH58JlAmZ-_5QV2RMrP3yMRC5puHjUT23XiUIGtEizMwc5FdJ8


Wokwi模擬器實作

 

實作1: -ESP32內建 LED Blink(閃爍)

原理篇

模擬器實作篇

程式執行成果

 

實作步驟

1.硬體接線

REPL(Read–Eval–Print- Loop)-交互式直譯器環境

每一種腳本語言都擁有自己的直譯器

1.寫一句程式碼如print("Hello, ESP32!")(read讀入)

2.按下模擬器後執行一句(evaluate執行)

3.印出輸出"Hello ESP32!"(print印出)

4.繼續循環以上步驟(loop循環)

每次新的REPL循環開始的時候,總會有>>> 在一行的最開始,我們把>>>稱作命令提示符號

文字型程式設計的方法

1.嘗試一點點.動手打出來.一行一行打.熟能生巧(刷題)

2.程式出錯(bug)怎麼辦?專家也是由失敗中不斷地修正

3.將大問題拆解成小問題.觀察錯誤在哪裡.縮小錯誤的範圍

4.培養失敗及挫折力(容錯力).細心耐心之培養

2.撰寫程式碼

程式碼:下載(程式補填法)

平版同學

專案分享(半成品)

程式流程圖講解:

程式碼講解:

資料引用:https://www.geniopy.com.tw/index.html

3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,內建藍色LED將重複一閃一滅

存檔.下載及分享

思考問題:

如何控制LED閃滅的時間?

程式碼可以優化嗎?

專安分享I

專案分享II


實作2:外接 LED+電阻 Blink

程式執行成果

教學影片

1.硬體接線

平板手機同學(無法畫圖)

專案分享

2.撰寫程式碼

程式碼:下載(程式除錯法+填補法)

提示:紅色框處之程式碼(修改及增加)

3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,外接LED將重複一閃一滅

思考問題1:如何控制LED閃滅的時間?

思考問題2:

(1)LED的顏色可以改變嗎?

(2)電阻的值可以改變嗎?

(3)導線的顏色可以改變嗎?

(4)電阻的方向可以改變嗎?

A.選取電阻物件按R鍵

B.點導線變虛線刪除

參考Wokwi教學文件

專案分享

教學影片

思考問題:

上述電路圖一定要這要接嗎?

專案分享


實作3: 紅綠燈

程式執行成果

實作步驟

1.硬體接線

(若教學時間不足將圖先畫完然後分享給學生.運算思維(程式設計.才是我們資訊科技教學的核心.而非硬體接線)

平板同學

專案分享(半成品)

2.撰寫程式

程式碼-下載(非完整.需自行增加程式碼)

3.按一下模擬器畫面的三角形(開始模擬)鈕,測試紅綠燈LED

專案分享


實作4:霹靂燈

 

程式執行結果

1.硬體接線

專案分享(半成品)

2.修改程式碼

3.測試

專案分享

4.自行創作

思考問題:

1.這樣的程式碼寫法好嗎?有無改進的空間(優化)?

專案分享

如果led要這樣顯示則要如何修改程式碼?

REF

2.上述的程式控制有一定的規律性無法任意控制(只能由最左或最右邊控制)?

 

專案分享

Arduino sequential LED project | led chaser with 7 effects

專案1

https://wokwi.com/projects/279897423635022344

專案2

https://wokwi.com/projects/279890929738842636

專案3

https://wokwi.com/projects/332411280056910420

評量:心型燈

程式執行結果

電路圖忽略限流電阻

1.硬體接線

專案分享(半成品)

2.撰寫程式

程式碼分享(需自行修改)

3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,12個LED構成的心型可否符合題目的要求

專案分享1

程式碼REF

專案分享2


實作5-Led+外接電阻+開關(Button)+上升電阻(Pull_up)

程式執行結果

 

原理篇

資料引用:https://www.youtube.com/watch?v=I4Rbh-7RgYs

實作篇

1.硬體接線

2.撰寫程式

程式碼下載(要自己修改)

3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,按下開關LED是否會亮?

專案分享

思考問題:

若將上升電阻刪除會如何?

無上升電阻的程式寫法

專案分享


實作6-可變電阻(VR)+PWM應用

原理篇

可變電阻(電位器)

PWM(脈衝寬度調變)

110-2-images1

程式執行結果

實作篇

1.硬體接線

2.撰寫程式

程式碼下載

3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,改變電阻值大小看LED是否會漸亮?

專案分享

其他PWM的應用-蜂鳴器Buzzer

專案分享1

專案分享2


實作7-RGB呼吸燈

程式執行成果

 

實作步驟

1.硬體接線(RGB共陽極.COM接點接VCC)

2.撰寫程式

專案分享(修改程式碼方法.調整frq.duty)

ESP32的duty取值範圍為0 <= duty <= 1023

ESP32的PWM頻率範圍為0 < freq <= 78125

 

3.按一下模擬器畫面的三角形(開始模擬)鈕,測試RGB LED

實作8: NeoPixel(霓虹像素)(WS2812)

RGB燈條的應用

原理篇

實作篇

1.硬體接線

2.撰寫程式

16顆WS2812循環亮

專案分享

(修改rainbow列表RGB的值)

程式碼:下載

修改程式中RGB顏色代碼

3.按一下模擬器畫面的三角形(開始模擬)鈕,NeoPixel模組的RGB LED將輪流發光


實作9:DTH11(22)溫溼度感測器

通信——物聯網之魂

(1)串列通訊匯流排(Universal Asynchronous Receiver/Transmitter)

實作步驟

1.硬體接線

2.撰寫程式

程式碼:下載(程式仿作或程式碼識讀)

3.按一下模擬器畫面的三角形(開始模擬)鈕,測試是否有顯示出溫溼度

專案分享

(2)I²C(積體電路之間.積體匯流排電路 Inter-Integrated Circuit)

I²C通訊只需要2條雙向線:

SDA(serial data:串列資料線)

SCL(serial clock:串列時脈線)

實作10:OLED液晶模組 0.96吋 白色 12864點陣 SSD1306驅動 3.3V-5V 4線I2C介面規格書

教學影片

1.硬體接線

2.程式碼

esp32-oled-main-py

esp32-oled-ssd1306-py

3.修改程式碼修文字內容(中文無法顯示)測試

專案分享


實作11:OLED SSD1306+DTH11(22)

專案分享

實作12:OLED溫溼度蒐集及警報系統

專案分享


進階-物聯網實作

1.程式庫安裝與管理

2.物聯網專案分享

在 ATtiny85 上監控天氣

抓取NTP主機時間

在OLED螢幕顯示天氣概況

http-server

Temperature and Humidity using Franzininho, DHT22 and SSD1306

1602 lcd+超音波感測器


參考資料

MicroPython on ESP32

https://docs.micropython.org/en/latest/

https://hackmd.io/@Zoyam/ByeHHYDKv

MicroPython for Kids

https://create.arduino.cc/projecthub/Hack-star-Arduino/esp32-simulator-2022-learn-esp32-micropython-programming-2ea335

https://sites.google.com/a/nsysu.kksh.kh.edu.tw/tg02-1/nodemcu-32-esp32-iot-inquiry-teaching

http://www.1zlab.com/wiki/micropython-esp32/micropython-introduction/

https://lastminuteengineers.com/esp32-arduino-ide-tutorial/

https://docs.singtown.com/micropython/zh/latest/esp32/esp32/tutorial/index.html

https://wolles-elektronikkiste.de/en/programming-the-esp32-with-micropython

https://sites.google.com/site/wenyuwebbit/13-micropython%E5%AF%AB%E4%BD%9C

http://yhhuang1966.blogspot.com/2018/09/esp32-bpibit.html

https://www.programcreek.com/python/example/101394/machine.RTC

https://nkust.gitbook.io/micro-bit/shi-shi-yong-micropython

https://atceiling.blogspot.com/

https://github.com/jumbokh/micropython_class/tree/master/ESP32/Lab/Lab