*運算思維的物理計算*


111會考

111分科測驗

教學目標

“透過物理計算增強學生對程式設計的理解”

“實現實體(有形)的產出幫助學生從錯誤中看到學習的價值”

抽象與真實的物理世界

資料引用

https://towardsdatascience.com/physical-computing-using-jupyter-notebook-fb9e83e16760

物聯網IOT概念
開源系統概念
MCU開發版簡介

物聯網(IOT)概念

 

 

資料引用:MicroPython 陳會安老師

嵌入式系統(Embeded System)

圖片引用:梁文耀博士嵌入式智慧應用開源軟硬整合新趨勢


開源系統概念

1.開放硬體及開源系統的價值

開放硬體的價值不是在學習哪一片電路板(不需拘泥在各種開發版硬體)而是學習自由軟體開源系統(Linux base)及參與社群

 

2.MPU及MCU

MCU開發版簡介

1.硬體

2.開發程式軟體

開發Arduin及ESP32 程式,有幾種語言選擇:

(1)C/C++

(2)MicroPython

Arduino與MicroPython差異性

Python程式設計

為何選擇Python程式語言?

資料引用:政大應用數學系蔡炎龍老師

文字型程式設計怎麼學?難處在哪裡?

 

Python程式設計怎麼教?教什麼?

從Scratch邁向Python

資料引用:國北教顏榮泉老師

(0)Python電子書(簡體)

https://github.com/IThawk/learning/tree/master/Python

(1)Python基礎語法

(2)物件導向概念

活動設計:Python體驗遊戲

透過學習Python程式設計建立一套屬於自己的學習 SOP

活動設計:體驗線上嵌入式系統Online-MicroBlock(泰國)

線上版(積木與文字並存)

離線版(實機運作)

MCU積木程式類別

1.Blockly based(C語言)

2.Scratch based

3.MicroPython based

4.Javascript


Arduino模擬器(simulator)

優點:「物理計算」 它將軟體和硬體結合在一起,「以構建感知和回應現實世界的互動式物理系統」,能幫助工程師在實驗階段驗證不同的設計和演算法

缺點:忽略了與物理世界的聯繫

資料引用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)

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


微電腦、電路及程式設計 in 30 days

https://jasonworkshop.com/b20220801/

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.撰寫程式碼

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

https://wokwi.com/projects/333051415802937939

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

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.這樣的程式碼寫法好嗎?有無改進的空間(優化)?

專案分享1

專案分享2

如果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)

程式執行結果

 

原理篇

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是否會亮?

專案分享

思考問題:

1.無上升電阻的程式寫法

專案分享

2.多開關控制霹靂燈

專案分享


 實作6-可變電阻(VR)+PWM控制Led閃滅

原理篇

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音樂

專案分享2


實作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循環亮

專案分享

(修改rainbow列表RGB的值)

程式碼:下載

修改程式中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.程式碼

esp32-oled-main-py

esp32-oled-ssd1306-py

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

專案分享


實作12:OLED SSD1306+DTH11(22)

專案分享

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

專案分享

其他

https://wokwi.com/projects/333864909661012562


進階-物聯網實作

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://techtotinker.blogspot.com/2020/09/micropython-tutorial-what-is-micropython.html

https://towardsdatascience.com/micropython-on-esp-using-jupyter-6f366ff5ed9

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