Wokwi模擬器MicroPython實作


Scratch(Block based圖像化)到Python(Text based文字型)程式語言

http://ms2.ctjh.ntpc.edu.tw/~luti/110scratch-to-python.htm

程式設計學習的方法

初探Python程式語言

基礎語法

活動設計:透過視覺化圖像理解Python程式碼執行過程(運算思維中的抽象化)

範例下載

活動設計:透過Colab(需先登入Google)學習Python

翰林國九課本範例

https://colab.research.google.com/drive/1VSzvPUa5skw-MxSXVYaRqNoFREiPW4Zc

MicroPython on ESP32簡介

MicroPython on ESP32軟硬體架構

Python物件導向程式設計方法

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


活動設計0: MicroPython on ESP32初體驗

 

第一個MicroPython程式

程式出錯(bug)怎麼辦?(這是學習程式設計必經之路.不要害怕失敗及挫折.細心耐心及容錯力之培養)

除錯(Debug)

在程式執行時,因本身有錯誤或隱藏著的一些未被發現的缺陷或問題,而造成的功能不正常、當機、資料遺失、中斷等現象,稱為 bug。而 debug是更正錯誤(除錯)的意思。

早期的計算機由於體積非常龐 大有些小蟲子可能會鑽入機器內部,造成計算機工作失靈.史上的第一個「Bug」是因為一隻飛蛾意外走入一 電腦而引致故障,因 此用「Bug」從原意為臭蟲引申為程式錯誤。

參考資料

維基百科

 

簡單的計算機

活動設計1: ESP32內建 LED Blink

程式執行成果

 

實作步驟

1.硬體接線

2.撰寫程式

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

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

REF

思考問題:

1.這樣的程式碼寫法有無改進的空間?(變數概念引入)

2.可以改變閃滅的時間長短嗎?

REF

專案分享

活動設計2: ESP32內建 LED Blink +印出文字

程式執行成果

 

2.修改ESP32內建 LED Blink 程式

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

3.按一下模擬器畫面的三角形(開始模擬)鈕,內建藍色LED將重複一閃一滅外.文字視窗是否會有文字顯示?

REF

專案分享

牛刀小試評量:SOS LED Blink

摩斯密碼(Morse Code)看到50秒

摩斯密碼線上翻譯器操作

提示:程式碼下載(需修改)


活動設計3:ESP32外接 LED+電阻 Blink

程式執行成果

1.硬體接線

2.撰寫程式

程式碼:下載(程式除錯法)

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

REF

4.思考問題(Wokwi教學文件)

(1)LED可以改顏色嗎

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

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

A.選取電阻物件按R鍵

B.點導線變虛線刪除

重新繪製電路圖

(4)如何修改檔名?

(5)如何存檔及下載到電腦?

(6)如何將作品分享?

專案分享

思考問題:多色LED閃滅控制

(若教學時間不足將圖先畫完然後分享給學生.修改程式)

提示:程式碼下載(需修改)

REF

專案分享

進階自行創作

https://wokwi.com/projects/279890929738842636


活動設計4: ESP32 紅綠燈

程式執行成果

實作步驟

1.硬體接線

2.撰寫Led 程式(不同程式語法)

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

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

REF

專案分享

思考問題:模擬交通號誌(智慧交通)?

參考


活動設計5-RGB閃滅(可調整燈明亮.亦可模擬紅綠燈)

程式執行成果

 

實作步驟

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

2.撰寫Led 程式

程式碼:RGB基本ON或OFF下載(程式仿作或程式碼識讀)

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

專案分享

進階應用-RGB呼吸燈

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

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

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

Arduino-ESP32

https://esp32io.com/tutorials/esp32-rgb-led


活動設計6-NeoPixel(霓虹像素)(WS2812)

1.硬體接線

2.撰寫程式

程式碼:下載(修改程式碼方法.調整RGB)

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

專案分享

自行創作七彩燈條

修改程式中RGB顏色代碼


活動設計7-DTH11(22)溫溼度感測器

通信——物聯網之魂

(1)串列通訊匯流排

UART通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter)

實作步驟

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

2.撰寫程式

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

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

專案分享


活動設計8-OLED液晶模組 0.96吋 白色 12864點陣 SSD1306驅動 3.3V-5V 4線I2C介面規格書

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

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

SDA(serial data:串列資料線)

SCL(serial clock:串列時脈線)

教學影片

1.硬體接線

2.程式碼

esp32-oled-main-py

esp32-oled-ssd1306-py

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

專案分享


活動設計9-OLED SSD1306+DTH11(22)

專案分享


(3)WWW(Web)服務架構及技術概念

(1)Http Protocol(超文本傳輸協定)

HTTP是全球資訊網的數據通信的基礎

解說:

資料引用:https://chanchandev.com/HTTP/Cache/cache-intro/1156542307/#Chef-Master-%E6%9B%B4%E6%96%B0%E6%96%99%E7%90%86%E5%81%9A%E6%B3%95

(2)MQTT(Message Queuing Telemetry Transport) 訊息序列遙測傳輸

1分20'開始看到3分15'

解說:

手機app -Virtuino MQTT(安卓手機)

 

活動設計:體驗MQTT

教學影片

參考網站


進階實作

在 ATtiny85 上監控天氣

抓取NTP主機時間(Wifi)

在OLED螢幕顯示天氣概況(Wifi)

http-server

Temperature and Humidity using Franzininho, DHT22 and SSD1306

1602 lcd+超音波感測器


參考資料

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

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

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