初探物聯網開放硬體


物聯網IOT概念
開放硬體(微處理器)概念與簡介
開發版(Arduino.ATtiny85.ESP32)概念

物聯網(IOT)概念

嵌入式系統(Embeded System)

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

資料引用https://www.eettaiwan.com/20200109nt01-how-embedded-development-evolved-past-two-decades/


開放硬體(微處理器)概念與簡介

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

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

學習資源

https://www.youtube.com/watch?v=B4T8hzO0IYc&list=PLs9OF90VHRwFr6tp28re1Qn0LsnqiFx5S&index=2

https://sites.google.com/view/asuscso/%E5%A5%BD%E7%AB%99%E5%88%86%E4%BA%AB/%E9%9B%BB%E5%AD%90%E6%8E%A7%E5%88%B6

2.MPU及MCU

3.IOT學習脈絡地圖及資源

資料引用:MicroPython 陳會安老師

趙英傑老師

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


5.開發板硬體三核心

S = signal = 訊號

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

G = GND = 接地


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

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

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

7.模擬器(simulator)

其實模擬器的定義十分廣泛,只要以不同於被模擬端的設備,提供擬真的環境,讓使用者可以去模擬特定的需求,那就可以算是模擬器。

舉個例子來說,航空公司會在訓練機師時,使用專業的飛行模擬器,讓訓練中的機師在絕對安全的情況下模擬駕駛,而不用承擔實體飛機墜落的風險。

8.Arduino模擬器(simulator)

優點:工程模擬器能幫助工程師在實驗階段驗證不同的設計和演算法

缺點:使用模擬器忽略了物理計算的關鍵點,那就是與物理世界的聯繫

比較:

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

活動設計:體驗線上Arduino模擬器-WoKwi

1.簡介

Wokwi 是一個線上電子模擬器。您可以使用它來模擬 Arduino、ESP32 和許多其他流行的開發板和感測器器。

2.範例

以下是您可以使用 Wokwi 製作的一些簡單示例:

3.特色

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.參考網站


初探開發版(Arduino.ATtiny85.ESP32)概念

1.硬體

2.開發程式軟體

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

(1)C/C++

最正統資源最豐富,有數不盡的程式庫與範例。用 C/C++ 開發還可細分為使用 Arduino Framework 或樂鑫自己研發的 ESP-IDF(Espressif IoT Development Framework))。 Arduino 簡單易入門,資源豐富,但如果你要玩真的,不該被 setup()、loop() 框住,Task 導向才是王道,IDF 跑 freeRTOS 更符合嵌入系統的標準。IDF 相對複雜許多,能做到一些 Arduino 做不到的事,例如:偵測 WiFi 訊號。 但 Arduino 仍可整合互通,例如在 IDF 引用 Arduino Library、在 Arduino 呼叫 IDF API。

(2)Lua

Lua 是一種腳本語言,把 ESP32 韌體換成內含 Lua 直譯器的版本,便可在 ESP32 上跑 Lua 程式,跟以前可以用 JavaScript 寫程式的 Espruino概念相近。

(3)C#

微軟的物聯網解決方案包含 nanoFramework,把 .NET CLR 精簡到 32K RAM、256K Flash 就能跑,故能支援一堆低階開發板,包含 ESP32! 但建置 nanoCLR 及燒錄的步驟頗複雜,另外一點是雖然 nanoFramework 可整合原生 C/C++ 程式庫,要整合其他硬體少不了將 Arduino 程式庫翻成 nanoFramework 相容的程序

(4)MicroPython

精簡版 Python3,只需 256K 儲存空間跟 16 KB RAM 的硬體上執行

資料引用:https://blog.darkthread.net/blog/esp32-for-iot/

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html 

(5)積木式程式語言

3.Arduino與ESP32差異性

4.開發版的選擇-專案(你想做甚麼)


初探開發版(Arduino.ATtiny85.ESP32)實作

專題1-LED
專題2-RGB LED
專題3-Neopixel(ws2812)

專題1-LED

一.Arduino

活動設計: Arduino Simulator - LED Blink(閃爍)

程式執行成果

 

教學影片

教學網頁

實作步驟

1.硬體接線

 

2.撰寫Led Arduino程式

程式碼:下載

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

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

進階思考問題:如何完成以下的作品

程式執行成果1-跑馬燈1(霹靂燈2)(教學時間不足可自行減少LED數)

提示:依圖接線.然後寫程式參考程式碼(非完整.需自行增加程式碼).測試之

程式優化(程式碼簡潔及執行效率高)

資料引用:

https://wokwi.com/arduino/projects/279897423635022344

https://www.instructables.com/LED-Chaser-With-7-Patterns-wokwi-Arduino/

程式執行成果2-跑馬燈2(霹靂燈2)

參考程式碼

資料引用:

https://wokwi.com/arduino/projects/279890929738842636

其他範例

https://wokwi.com/arduino/projects/324363154581619283?fbclid=IwAR3Q_-sv-XnqlPzbXOSV_I1ByY7ZHV1sv1b_fSucY5vUusagrxQRF7GWvRY

二.ATtiny85

範例

https://wokwi.com/arduino/projects/283019827166052872

三.ESP32

使用(C/C++)

活動設計: ESP32 Simulator ( Arduino Core) - LED Blink(閃爍)

Wokwi_ESP32簡中版

https://wokwi.com/projects/new/esp32?template=esp32&lang=zh

程式執行成果

教學影片

教學網頁

https://create.arduino.cc/projecthub/Hack-star-Arduino/how-to-simulate-esp32-projects-online-ad21d9

實作步驟

1.硬體接線

2.撰寫Led Arduino程式

程式碼:下載

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

進階思考問題:如何完成以下的作品

活動設計: ESP32 Simulator ( Arduino Core) -紅綠燈

程式執行成果

實作步驟

1.硬體接線

2.撰寫Led Arduino程式

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

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

Ref:https://wokwi.com/arduino/projects/324205863907623506

體驗MicroPython

活動設計: ESP32 Simulator ( MicroPython Core) - ESP32內建 LED Blink

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

範例

https://wokwi.com/arduino/projects/305452627045384768


專題2-RGB LED

資料引用:康軒九下生科CH2

活動設計: ATtiny85 Simulator -RGB閃滅

程式執行成果

實作步驟

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

2.撰寫程式

程式碼:下載

資料引用:康軒九下生科CH2

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

資料引用:康軒九下生科CH2

https://wokwi.com/arduino/projects/325018289191256660

活動設計: ATtiny85 Simulator -RGB呼吸燈(單顆)

程式執行成果

脈衝寬度變調(PWM:Pulse Width Modulation)

程式碼:下載

進階挑戰

程式執行成果

https://wokwi.com/arduino/projects/325173779693044307


專題3-NeoPixel(WS2812)全彩LED色環元件

一. Arduino

活動設計: ESP32 Simulator (Arduino Core)-WS2812

Wokwi_ESP32簡中版

https://wokwi.com/projects/new/esp32?template=esp32&lang=zh

程式執行成果

1.硬體接線

 


2.撰寫NeoPixel Arduino程式

使用(C/C++)

Wokwi模擬器環境已內建Adafruit_NeoPixel程式庫,請將底下的程式碼(C語言)貼入Wokwi程式編輯器窗格:

程式碼下載

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

修改RGB顏色

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

進階應用-呼吸燈

程式碼下載

資料引用趙英傑老師

 

https://sites.google.com/a/nsysu.kksh.kh.edu.tw/tg02-1/arduino-lesson-plan

體驗MicroPython

活動設計: ESP32 Simulator (MicroPython Core)-WS2812

範例

https://wokwi.com/arduino/projects/305569065545499202


專題四-OLED液晶模組 0.96吋 白色 12864點陣 SSD1306驅動 3.3V-5V 4線IIC介面

活動設計: ESP32 Simulator (MicroPython Core)-SSD1306

教學影片

1.硬體接線

2.程式碼撰寫

esp32-oled-main-py

esp32-oled-ssd1306-py

體驗MicroPython

3.修改測試

Ref:https://wokwi.com/arduino/projects/305568836183130690


進階實作

DHT22(翰吉教學)

Temperature and Humidity using Franzininho, DHT22 and SSD1306

在 ATtiny85 上監控天氣

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

1602 lcd+超音波感測器

http-server