學習 AWS IoT 最棒的方式 — AWS Edukit
目前全世界物聯網(IoT)裝置成長非常快,預計今年全球市場規模高達五千億美元,主因為目前市場上流行的商品從手錶、手機、家電產品、電動車…等硬體,皆以物聯網應用對其做加值服務。
而 AWS 也深知這點,於是在近幾年的 IoT 領域相關服務中也不斷的更新,甚至在 2019 年宣布大中華區首座 AWS IoT Lab 物聯網實驗室將在台北開幕,這個實驗室由 AWS Partner Network(APN)合作夥伴所提供的合格硬體和軟體解決方案所組成,旨在幫助客戶設計和部署物聯網應用。
種種跡象都說明了物聯網應用是未來趨勢,然而大部分的 AWS 服務基本上都是提供「服務」,很少會讓使用者實際接觸到比較底層的硬體部分,但對於物聯網這個領域的使用者來說,比起使用 IoT 服務,他們更想知道「如何實際從 硬體裝置 安全的將資料傳送至 IoT 服務」,畢竟大多數使用者可能已經有投入生產的硬體,這些裝置橫跨各種場域、廠牌、規格,甚至有些使用者是初學者,對物聯網領域一無所知,以至於根本無從學起,所以對於 AWS 來說實在很難在 IoT 服務的教學文件中統一的說明。
終於在 2020 年 AWS 推出了物聯網的學習計畫:IoT EduKit,裡面包含了與第三方合作廠商:M5Stack 所推出的硬體裝置「M5Stack Core2 for AWS」(以下簡稱 Core2
),以及一系列的教學、程式套件,讓使用者可以親身體驗如何從硬體裝置開始設計 IoT 應用。
M5Stack Core2
硬體規格
Core2 使用 ESP32-D0WDQ6-V3 微控制器,具有雙 Xtensa 32 位元 LX6 核心,主頻率高達 240 MHz,支援 2.4 GHz Wi-Fi、Bluetooth v4.2 BR/EDR 和 BLE(低功耗藍牙),並搭載 8 MB PSRAM 和 16 MB 快閃記憶體。
PSRAM 全稱 Pseudo static random access memory,指的是虛擬靜態隨機存取記憶體;之所以叫「虛擬靜態」是因為它具有類 SRAM 的介面協議:給出地址、讀、寫命令,就可以實現存取,不像 DRAM 需要 memory controller 來控制記憶體單元定期重新整理資料。
詳細的硬體規格如下:
- ESP32-D0WDQ6-V3 支援 2.4 GHz Wi-Fi、Bluetooth 4.- 2、低功耗藍芽(BLE)
- 16 M 快閃記憶體、8 M PSRAM
- 內建 ATECC608 硬體加密晶片
- 內建 PDM 麥克風、電源指示燈、六軸 IMU、振動馬達、I2S 編解碼器、放大器、揚聲器、RTC、電源按鈕、重置按鈕和 10 個 RGB LED
- 電容式觸控螢幕
- TF 卡插槽 (支援高達 16 GB)
- 內建 500 mAh 鋰離子電池,配備電源管理晶片
- 支援 FreeRTOS、MicroPython、UIFlow 和 Arduino 等開發框架
- 通過 AWS 裝置資格認證計畫
對於 Core2 有了基本的了解後,我們就可以來開箱了!
外包裝由一個半透明的塑膠盒裝著,裡面附有開發板(Core2)以及一條用來供電或燒錄程式碼的 USB-A to USB-C 線。
眼尖的人會發現裡面還有一個六角柱狀的 L 型板手,主要是用來拆解 Core2 背後的六角螺絲用,有興趣的使用者可以拆解看看,便可以看到 Core2 的內部構造(如下圖)。
圖片來源:AWS IoT EduKit
當使用者接上電源線,或者打開左側電源開關便可以將 Core2 開啟,在原廠設定的情況下會出現「歡迎頁面」,向左滑動可以看到在上述所提及的感測器介紹,包括時間、聲紋、六軸以及 LED 等功能。
圖片來源:AWS IoT EduKit
基本上 Core2 的電源線可以接在我們常見的豆腐頭上提供電源(當然不接電源也可以,但電池可能沒辦法支援長期運作),倘若要燒錄程式的話,就需要將它接在電腦上,走 UART 進行燒錄,使用者可以在有支援的 IDE(Arduino、PlatformIO)或裝置管理員中查看埠位置。
如果 Core2 沒有出現在設備列表中,可以檢查是否打開電源,並且是用盒內附的 USB-A to USB-C 線,因為某些 USB-C 線在建立 Serial Port 時會有相容性問題。
上述提及的「歡迎頁面」。
開發的事前準備
Core2 支援多種開發框架,像是 FreeRTOS、UIFlow、Arduino、PlatformIO 等,使用者可以自行決定要使用哪一種開發平台進行程式碼的編譯與燒錄。
在此會以 Arduino IDE 做介紹。
Arduino IDE
在安裝 Arduino IDE 前,使用者得先根據作業系統來下載 CP210X 的 USB 驅動程式,以利 Arduino 能夠透過 USB 燒錄程式至 Core2:
下載完驅動程式後,可於 Arduino 官網選擇對應作業系統版本:
- 完成後得先進行前置設定。首先打開 Arduino IDE 後,選擇
檔案
→個人偏好
→ 修改開發板管理員網址
為https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
。
- 開啟
工具
→開發板
→開發板管理員
,會跳出開發板管理員的介面。
- 搜尋並下載
M5Stack
開發板套件。
- 下載完成後,便可以在
工具
→開發板
→M5Stack Arduino
中選到 M5Stack-Core2 開發板設定。
- M5Stack 有提供程式庫給 Arduino 使用者,可於
工具
→管理程式庫
來下載。
- 在
程式庫管理員
中搜尋並下載M5Core2
。
當完成上述步驟之後,就可以在程式碼中匯入 M5Core2.h
啦,裡面已經有模組化好的功能可以直接使用,匯入的方式有兩種:
- 點選
草稿碼
→匯入程式庫
→M5Core2
,選擇後便會自動於程式碼中看到#include <M5Core2.h>
- 直接於程式碼中打上
#include <M5Core2.h>
基本上是第二種方式會比較快速,除非使用者需要查詢或者匯入其他程式庫才會用第一種方法。
當上述的步驟都完成後,就可以正式的撰寫與燒錄程式碼至 Core2 以打造 IoT 應用。
使用 Core2 就如同其他開發板一樣,可以連接許多的感測器,所以應用非常廣泛,像現在疫情盛行之時,全世界都偏離了正常運作,人們被困在家裡好幾個月。在這種情況下,由於缺乏維護與管理(澆灌、除蟲等日常維護),許多花園和農場受到了影響,造成不少的損失,亞洲甚至發生了多起蝗蟲襲擊農場的災害。所以我們可以使用 Core2 連接到各種感測器,如:溫濕度感測器、土壤濕度感測器、空氣品質感測器和太陽光測量感測器,並收集這些數據進行分析。
更有人透過 Breath-to-Electrical (BTE) 感測器連接至 Core2,來將生物呼吸轉換成數位訊號,並將這些訊號透過 Core2 上傳至 AWS 進行分析,最後將肺功能結果顯示於 Core2 上。
結論
AWS 與其合作夥伴推出了一套 IoT 解決方案,包含了一個開發板(Core2)以及相關的開發套件與教學,讓使用者可以手把手地從硬體設置,一直到如何將資料傳送至 AWS 來設計一個完整的物聯網解決方案,省去了以往使用者無從下手、不知道該如何學起的窘境。最後,也歡迎大家嘗試看看 Core2,來搭建屬於你自己的 IoT 應用。