本文參考 Mediatek Labs 的 AWS (Amazon Web Services) IoT 教學頁面,告訴您如何讓簡易的 AWS IoT 服務執行在您的 LinkIt ONE 開發板上。在建立並執行您的第一份 AWS IoT 草稿碼之前,請先根據以下連結來建置開發環境並取得 AWS IoT 憑證。
AWS IoT Services 結合 LinkIt™ ONE 開發平台入門教學 – 環境建置與取得憑證
快速入門:
- 將 LinkIt ONE 開發板切為儲存模式並放入 .pem 檔
- 在 Arduino IDE 中匯入 mbed TLS 與 AWS IoT Services MQTT 函式庫
- Wi-Fi 設定
- 編寫程式
按部就班:
Step 1: 將 LinkIt ONE 開發板切為儲存模式並放入 .pem 檔
開發 AWS IoT Services 之應用程式可在 Arduino IDE 完成。在開始寫程式之前,我們得先將憑證放到 LinkIt ONE 開發板的記憶體中,如果您還沒有取得憑證的話,請根據本文來操作。步驟如下:
- 請依照下圖將 LinkIt ONE 開發板切為儲存 (Mass Storage) 模式:
LinkIt ONE 切換到 mass storage 模式 - 在電腦中找到卸除式存放裝置(Devices and Removable Storage),請開啟對應於您的 LinkIt ONE 開發板的那個卸除式存放裝置。
LinkIt ONE 作為卸除式儲存裝置 - 複製 .pem 的憑證檔到 LinkIt ONE 中。
將憑證檔放入 LinkIt ONE - 現在請將板子切回 Normal Bootup 模式 (UART) 並接續編寫草稿碼。
將 LinkIt ONE 開發板板子切回 Normal Bootup 模式
Step 2: 在 Arduino IDE 中匯入 mbed TLS 與 AWS IoT Services MQTT 函式庫
編寫 AWS LinkIt ONE 的草稿碼需要匯入 mbed TLS 與 AWS IoT Services MQTT 等函式庫才能支援 MQTT 通訊。mbed TLS 函式庫可讓您的裝置(包含嵌入式裝置) 具備 SSL/TLS 功能,不需要修改太多程式就可直接使用。
您可在 GitHub 上的 aws_mbedtls_mqtt repository 找到本 Arduino 專案的原始碼(aws_paho_mqtt.ino) 以及函式庫。請將本函式庫複製到您的 Arduino/libraries 資料夾中即可。
Step 3: Wi-Fi 設定
LinkIt ONE 開發板有豐富的聯網功能,包含 Wi-Fi, Bluetooth and GSM/GPRS。本範例將使用 Wi-Fi 來連上網際網路。請參閱 LinkIt ONE developer’s guide 的 section 5.3 “Connecting to the web using Wi-Fi” 來理解如何在板子上接好 Wi-Fi/Bluetooth 天線並在程式碼中匯入 LWifi 函式庫。
Step 4: 編寫程式
本範例將示範如何運用 AWS IoT Services與 LinkIt ONE 開發板進行 MQTT 的 publish 與 subscribe 這兩個功能。您需要在 Arduino 草稿碼中更新您所選用的 AWS IoT Services 標題 (topic) 名稱,以及方才存放在 LinkIt ONE 開發板中的憑證名稱。
- 在 Arduino IDE 中開啟
aws_paho_mqtt.ino
這份草稿碼。 - 解析主機名稱 (hostname) 來取得 IP 位址,請在 cmd 中執行以下指令:
ping g.us-east-1.pb.iot.amazonaws.com 執行指令後的畫面如下圖,只是您電腦所顯示的 IP 應該是不一樣的。請把 IP 位址記下來。
驗證主機名稱的 IP 位址將 VMSTR IP_ADDRESS 變數值改為您在上一步所取得的 IP 位址
VMSTR IP_ADDRESS = “54.86.88.20”; //currently only support IP address - 修改您的憑證名稱。
char cafileName[] = "A5.pem";
char clientCRTName[] = "cert.pem";
char clientKeyName[] = "privatekey.pem";
- 將以下變數值換成您的 topic 名稱。
subParams.pTopic = "yourTopicName";
Params.pTopic = "yourTopicName";
- 將程式碼上傳到 LinkIt ONE 開發板。
- 在 Arduino IDE 中開啟 Serial Monitor,首先看到的訊息是關於是否成功連上網路AP 與 AWS 。
上傳草稿碼之後顯示於 Serial Monitor 上的訊息
使用 MQTT 通訊協定持續將訊息發佈到 Serial Monitor
恭喜!您已經成功使用 AWS IoT Services、LinkIt ONE 開發板搭配 MQTT 通訊協定來發布訊息了。
您需要用到 MQTT client 才能驗證 MQTT 的 subscribe 功能,請參考 AWS IoT Services Getting Started Guide 中的 “Verify MQTT Subscribe and Publish” 說明頁面。