運算思維的物理計算-第七版

網站作者:新北市立江翠國中呂天齡

聯絡方式: luti@ntpc.edu.tw或 luti0845@gmail.com

最新更新時間:20230108

本網站授權方式:


為什麼要學運算思維的物理計算?

 

抽象與真實的物理世界

資料引用

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

111會考

111分科測驗


物聯網概念
IOT學習地圖
MCU模擬器
Wokwi模擬器實作

物聯網(Internet of Things,IoT)概念

1.它是什麼?

2.它應用在哪裡?

活動設計1-物聯網寵物衣 

https://www.facebook.com/ImNightMarketKing/videos/890417579035000/?idorvanity=2468989666672920

栗子數位化的兩小時(手機掃QRCODE)

https://h5.badprinter.com/dog-cloth/

思考問題:上述的裝置是運用了哪一些資訊科技的技術?

老師補充說明:AIOT架構

資料引用:中研院陳伶志博士團隊

http://scimonth.blogspot.com/2014/05/20146534.html

活動設計1:民生物聯網

LASS開源公益環境感測網路 Location Aware Sensing System

https://pm25.lass-net.org/


空氣品質開放資料偵測源-空氣盒子(訊舟科技)

https://airbox.edimaxcloud.com/

g0v 零時空汙觀測專案專案小組

https://list.airmap.g0v.tw/

紫豹

https://purbao.lass-net.org/

小結

物聯網(Internet of Things,IoT)是由實體物件連結網際網路所形成的網路系統,目的是藉由感測與晶片控制的整合,增進資訊系統的自動化智慧化

江翠國中資訊組製作


IOT學習地圖

資料引用:MicroPython 陳會安老師

實體層

1.嵌入式系統(Embeded System)

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

2.嵌入式系統的硬體-MCU

*小知識-開放硬體及開源系統

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

聯發科AI晶片

http://omnixri.blogspot.com/2022/10/icaiottinyml.html

2.嵌入式系統的硬體MCU開發軟體文字型

(1)C/C++

(2)MicroPython

ARDUINO BRINGS A MICROPYTHON IDE

*Arduino與MicroPython差異性

 

 3.嵌入式系統的硬體MCU開發軟體積木型

(1)Blockly based(C語言)

(2)Scratch based

(3)MicroPython based

(4)Javascript

感測層-感測器(Sensor)

活動設計2-體驗Online嵌入式系統-MicroBlock

官方網站


MCU模擬器(simulator)

資料引用https://all3dp.com/2/best-arduino-simulators-online-offline/

活動設計3:體驗線上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


實作先備知識

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


2.數位/類比訊號(Digital/Analog)及輸入/輸出(Input/Output)

(1)數位:0、1(off 、on)不是0就是1

(2)類比:數位以外的就是類比,像溫度有高低、聲音有大小

(3)輸入(讀取):取得外面的訊息(好像外面控制電腦,如電腦的輸入裝置,如:鍵盤(按鍵)

(4)輸出(寫入):輸出訊息給外部(好像對外部的控制,如電腦的輸出裝置,如:開關LED燈

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


Wokwi模擬器實作

教學影片(3小時)

 

一甲國中科技教育網

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

https://jasonworkshop.com/b20220801/

實作01
實作02
實作03
實作04
實作05
實作06
實作07
實作08
實作09
實作10
實作11
實作12

 

實作01: -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

top


實作2:外接 LED+電阻 Blink

程式執行成果

教學影片

1.硬體接線

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

專案分享

2.撰寫程式碼

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

https://wokwi.com/projects/333051415802937939

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

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

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

思考問題2:

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

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

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

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

A.選取電阻物件按R鍵

B.點導線變虛線刪除

參考Wokwi教學文件

專案分享

教學影片

思考問題:

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

專案分享

top


實作3: 紅綠燈

程式執行成果

實作步驟

1.硬體接線

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

平板同學

專案分享(半成品)

2.撰寫程式

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

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

專案分享

top


實作4:霹靂燈

 

程式執行結果

1.硬體接線

專案分享(半成品)

2.修改程式碼

3.測試

專案分享

4.自行創作

思考問題:

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

專案分享1

專案分享2

如果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構成的心型可否符合題目的要求

專案分享1

程式碼REF

專案分享2

top


實作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.多開關控制霹靂燈

專案分享

top


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

原理篇

VR(可變電阻)

ADC(類比訊號轉為數位訊號)

PWM(脈衝寬度調變)

 

程式執行結果

實作篇

1.硬體接線

手機平板筆電PC

https://wokwi.com/projects/333865133477462610

2.撰寫程式

程式碼下載

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

專案分享

top


實作7-PWM控制蜂鳴器Buzzer

原理篇

蜂鳴器(Buzzer)

利用PWM產生音頻,驅動蜂鳴器讓空氣產生震動,便能發出聲音

實作篇

1.硬體接線

手機平板筆電PC

https://wokwi.com/projects/333866298216809044

2.撰寫程式

程式碼下載

3.測試

專案分享

MicroPython音樂

專案分享2

top


實作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將輪流發光

top


實作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.修改程式碼修文字內容(中文無法顯示)測試

專案分享

top


實作12:OLED SSD1306+DTH11(22)

專案分享

top


進階-物聯網實作

1.程式庫安裝與管理

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

專案分享

其他

https://wokwi.com/projects/333864909661012562

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