--- tags: 課程規劃 --- # Goat 老師的物聯網課程規劃 [TOC] # 簡介 這是 Goat 老師的物聯網課程規劃,透過伴伴學社群線上交流的方式,整理出適合的資源來協助這堂課的順利進行。 希望課程成果: * 學會 Python * 參加 [APCS-大學程式設計先修檢測](https://apcs.csie.ntnu.edu.tw) ## 學習對象 高中生 ## 學習重點 * micropython * 物聯網 # 軟體工具 * 驅動程式與韌體 * 下載 USB 介面驅動程式 * [CH340](https://sparks.gogo.co.nz/ch340.html) * [CP210x](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads) * 下載 esp8266 韌體 * [官網下載頁面](https://micropython.org/download/esp8266/) * 關網有根據 flash size 分三個版本,上面的連結是 2MB 以上版本的韌體,若要下載 1MB 或 0.5MB 的韌體,請到[這裡](https://micropython.org/download/?port=esp8266) * 目前在樂意創客購買的 D1 Mini,flash size 為 4MB * 燒錄韌體 (使用 [Thonny IDE](https://thonny.org)) 1. 點選主選單的 [工具] -> [選項] -> [直譯器] 2. 靠近上方的「直譯器」選項選擇「Micropython (開發板類型)」 3. 點選右下的「安裝或是更新 Micropython」 4. 在 Port 的地方選取連接到開發板的 USB 介面 * 以筆者的開發板為例,NodeMCU 會出現 "Silicon Labs CP210x USB to UART Bridge";D1 Mini 會出現 "USB Serial CH340" 5. Firmware 的地方選擇之言下載的 esp8266 韌體 6. 點選安裝並等待完成 * 燒錄韌體 (Windows 環境) 1. 安裝完 USB 驅動程式後,確認裝置管理員的 COM 介面出現板子 2. 使用 python 下載 esptool `pip install esptool` 3. 清除 esp8266 上原有的韌體 `esptool.py --port COM埠號 erase_flash` 5. 燒錄新的韌體 `esptool.py --port COM埠號 --baud 鮑率 write_flash --flash_size=detect 0 ~/檔案路徑/檔案名稱.bin` * Putty 終端機 * 下載安裝 * 開啟連線 1. 開啟 Putty 2. 設定連線 ![](https://i.imgur.com/3aT3jKH.png) 3. Open ![](https://i.imgur.com/4lfRy7q.png) * * [Thonny IDE](https://thonny.org) 對於初學者來說,它是一個良好而直觀的IDE。上面的韌體燒錄、終端機連線功能,也都可以能使用 Thonny IDE 點滑鼠完成,十分方便。 * [Mu Editor ](https://codewith.mu) 適用於初學者程式設計師的簡單 Python 編輯器。 它透過 ESP32 和 ESP8266 板支援 MicroPython。 它工作得很好,具有簡單直觀的介面,並提供了一個選單,可以快速將MicroPython 韌體刻錄到您的板上,因此您不需要使用 esptool.py 來燒錄韌體。 您只能使用一個軟體寫程式和燒錄韌體。 該軟體還與支援MicroPython 的其他板相容,如 Pyboard 和 micro:bit。 USB to TTL程式安裝 # 實體工具 ## 杜邦線 - [(O) 樂意創客](https://www.ruten.com.tw/item/show?22112370271378) - 好報帳,發票詳細 - 拍照,證明有足夠銅芯 - [(X) 他牌](https://www.ruten.com.tw/item/show?22112370271378) 三用電錶 # 線上工具 ## 電路模擬器 - [Fritzing](https://fritzing.org/) ## 電路 & 程式模擬器 - [Wowiki - Ardino & ESP32 Simluator](https://wokwi.com/) ## 參考資源 ### 書 [超圖解 Python 物聯網實作入門:使用 ESP8266 與 MicroPython](https://www.books.com.tw/products/0010786530) [Prototyping Lab「邊做邊學」,Arduino的運用實例](https://www.books.com.tw/products/0010550967) 教案參考 https://sites.google.com/view/yjmtechnology/資訊科技/國三資訊科技/程式專題 [ESP32快速参考](https://docs.singtown.com/micropython/zh/latest/esp32/esp32/quickref.html) 如果要使用{import machine} 可直接参考https://docs.singtown.com/micropython/zh/latest/esp32/esp32/quickref.html ### 社群 [MQTT 與 AIoT 整合運用](https://www.facebook.com/groups/3636001276437792?locale=zh_TW) ### 函式庫 [MicroPython MAX7219 8x8 LED Matrix](https://github.com/mcauser/micropython-max7219) https://www.youtube.com/watch?v=IyGwvGzrqp8 这篇做得不错 ## wokwi https://wokwi.com/projects/346044979449168468 添加LA https://wokwi.com/projects/346047563452908114 我写了一个 code 自动识别 pin , 这个思路应该没错吧 - [Max7219 LED 矩陣](https://wokwi.com/projects/345643433824617043) - 程式碼修改自書本範例程式 - 使用內建 SPI class - 硬體 SPI 腳位需參考[這個文件](https://docs.singtown.com/micropython/zh/latest/esp32/esp32/quickref.html#id5)中的 SPI 腳位表 (感謝伴伴學的前輩們!) - 若要使用任意腳位,則需要使用 SoftSPI class。使用 SoftSPI 時,要在建構式額外給一個 miso 腳 (再次感謝伴伴學的前輩們!) - [動畫轉矩陣數值小工具](https://github.com/eric-yijuin-lin/cshs_iot/blob/main/led-matrix-helper.html) # 教案草稿 ## 心跳血氧偵測 - ESP32 + MicroPython + Max30102(暫時放棄,函式庫只有 IR, RED,然後用這兩個數值推算血氧的算式很複雜 - [Max30102函式庫](https://github.com/n-elia/MAX30102-MicroPython-driver) - 踩雷筆記 - NodeMCU-32S 在呼叫 setup_sensor() 之前要先跑過 i2c.scan() 否則就會掛掉(作者 GitHub 有提到某些板子會,但沒特別強調) - ESP32 + Cpp + Max30102 - [MAX30102](https://www.nmking.io/index.php/2023/03/26/1071/) - [Multi-Thread](https://randomnerdtutorials.com/esp32-dual-core-arduino-ide/) (因為Max30102 必須持續不斷偵測讀數,會卡到其他元件,因此要使用多執行緒) # 未整理筆記 ## Arduino 與 ESP32 的序列溝通 - 晶片的6~11腳內定被用於連接快閃記憶體,所以UART 1無法使用。 - Arduino Tx ----- ESP32 Rx2 - Arduino Rx ----- ESP32 Tx2 - Arduino GND ----- ESP32 GND - ※ 接好線後燒錄程式時高機率燒不上 Arduino,最好先把程式燒好再接線 - [參考資料1](https://www.programmingboss.com/2021/04/esp32-arduino-serial-communication-with-code.html) - [參考資料2](https://swf.com.tw/?p=1466) ## 透過 IFTTT 丟資料到 Google 試算表 - https://ithelp.ithome.com.tw/articles/10274039 - https://shop.mirotek.com.tw/iot/esp32-start-30/