教學目標
“透過物理計算增強學生對程式設計的理解” “實現實體(有形)的產出幫助學生從錯誤中看到學習的價值” |
抽象與真實的物理世界
資料引用
https://towardsdatascience.com/physical-computing-using-jupyter-notebook-fb9e83e16760
活動設計:體驗線上嵌入式系統Online-MicroBlock(泰國)
MCU積木程式類別
1.Blockly based(C語言)
2.Scratch based
3.MicroPython based
4.Javascript
資料引用https://all3dp.com/2/best-arduino-simulators-online-offline/
活動設計:體驗線上Arduino模擬器
1.簡介
Wokwi 是一個線上電子模擬器。您可以使用它來模擬 Arduino、ESP32 和許多其他流行的開發板和感測器器。
2.範例
以下是您可以使用 Wokwi 製作的一些簡單示例:
3.特色
https://blog.wokwi.com/avr8js-simulate-arduino-in-javascript/
邏輯分析儀模擬器
Why Wokwi is the Best Arduino Simulator in 2021?
https://hackaday.io/project/175329-why-wokwi-is-the-best-arduino-simulator-in-2021/details
4.參考網站
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)
Wokwi模擬器實作
(1)Arduino C語言
https://jasonworkshop.com/b20220801/
(2)ESP32 MicroPython語言
實作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
實作2:外接 LED+電阻 Blink
程式執行成果
教學影片
1.硬體接線
平板手機同學(無法畫圖)
2.撰寫程式碼
程式碼:下載(程式除錯法+填補法)
https://wokwi.com/projects/333051415802937939
提示:紅色框處之程式碼(修改及增加)
3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,外接LED將重複一閃一滅
思考問題1:如何控制LED閃滅的時間?
思考問題2:
(1)LED的顏色可以改變嗎?
(2)電阻的值可以改變嗎?
(3)導線的顏色可以改變嗎?
(4)電阻的方向可以改變嗎?
A.選取電阻物件按R鍵
B.點導線變虛線刪除
教學影片
思考問題:
上述電路圖一定要這要接嗎?
實作3: 紅綠燈
程式執行成果
實作步驟
1.硬體接線
(若教學時間不足將圖先畫完然後分享給學生.運算思維(程式設計.才是我們資訊科技教學的核心.而非硬體接線)
平板同學
2.撰寫程式
程式碼-下載(非完整.需自行增加程式碼)
3.按一下模擬器畫面的三角形(開始模擬)鈕,測試紅綠燈LED
實作4:霹靂燈
程式執行結果
1.硬體接線
專案分享(半成品)
2.修改程式碼
3.測試
4.自行創作
思考問題:
1.這樣的程式碼寫法好嗎?有無改進的空間(優化)?
專案分享1
如果led要這樣顯示則要如何修改程式碼?
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構成的心型可否符合題目的要求
程式碼REF
專案分享2
實作5-Led+外接電阻+開關(Button)+上升電阻(Pull_up)
程式執行結果
原理篇
1.按鈕種類
2.按鈕接點
3.按鈕彈跳訊號
範例-無上拉電阻
https://wokwi.com/projects/333687372925370962
4.消除按鈕彈跳訊號
(1)上拉(提升)電阻(Pull-up resistors)
(2)下拉電阻(Pull-down resistors)
資料引用:https://www.youtube.com/watch?v=I4Rbh-7RgYs
範例-有上拉電阻
https://wokwi.com/projects/333687135739576914
實作篇
1.硬體接線
2.撰寫程式
3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,按下開關LED是否會亮?
思考問題:
2.多開關控制霹靂燈
VR(可變電阻)
ADC(類比訊號轉為數位訊號)
PWM(脈衝寬度調變)
程式執行結果
實作篇
1.硬體接線
手機平板筆電PC
https://wokwi.com/projects/333865133477462610
2.撰寫程式
3.測試.按一下模擬器畫面的三角形(開始模擬)鈕,改變電阻值大小看LED是否會漸亮?
實作7-PWM控制蜂鳴器Buzzer
蜂鳴器(Buzzer)
利用PWM產生音頻,驅動蜂鳴器讓空氣產生震動,便能發出聲音
實作篇
1.硬體接線
手機平板筆電PC
https://wokwi.com/projects/333866298216809044
2.撰寫程式
3.測試
MicroPython音樂
實作8-RGB呼吸燈
程式執行成果
實作步驟
1.硬體接線(RGB共陽極.COM接點接VCC)
2.撰寫程式
專案分享(修改程式碼方法.調整frq.duty)
ESP32的duty取值範圍為0 <= duty <= 1023
ESP32的PWM頻率範圍為0 < freq <= 78125
3.按一下模擬器畫面的三角形(開始模擬)鈕,測試RGB LED
實作9: NeoPixel(霓虹像素)(WS2812)
RGB燈條的應用
原理篇
實作篇
1.硬體接線
2.撰寫程式
16顆WS2812循環亮
程式碼:下載
修改程式中RGB顏色代碼
3.按一下模擬器畫面的三角形(開始模擬)鈕,NeoPixel模組的RGB LED將輪流發光
實作10: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:串列時脈線)
實作11:OLED液晶模組 0.96吋 白色 12864點陣 SSD1306驅動 3.3V-5V 4線I2C介面規格書
教學影片
1.硬體接線
2.程式碼
3.修改程式碼修文字內容(中文無法顯示)測試
實作12:OLED SSD1306+DTH11(22)
實作13:OLED溫溼度蒐集及警報系統
其他
https://wokwi.com/projects/333864909661012562
進階-物聯網實作
1.程式庫安裝與管理
2.物聯網專案分享
Temperature and Humidity using Franzininho, DHT22 and SSD1306
參考資料
MicroPython on ESP32
https://docs.micropython.org/en/latest/
https://hackmd.io/@Zoyam/ByeHHYDKv
https://techtotinker.blogspot.com/2020/09/micropython-tutorial-what-is-micropython.html
https://towardsdatascience.com/micropython-on-esp-using-jupyter-6f366ff5ed9
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