TOPPERS 活用アイデア・アプリケーション開発
コンテスト

部門

：アプリケーション開発部門

作品のタイトル： TOPPERS ASP を使用した Azure IoT アプリ

作成者：手塚湧太郎

共同作業者：本田晋也，長島宏明

対象者： TOPPERS OS を用いて Azure IoT アプリ開発をお考えの方使用する開発成果物： TOPPERS ASP カーネル

目的・狙い
組込みシステムにおいて，IoT 技術が注目されている．IoT を活用するプラットフォームの 1 つとして「Azure IoT」が注目されており，Azure IoT 活用したアプリケーション開発を通し，TOPPERS OS を用いた IoT アプリケーション開発のさらなる可能性を示すことを狙いとしている．

アイデア/アプリケーションの概要
本アプリケーションは，Wio Terminal を用いて，ZUMO による走行制御を行うとともに，その走行データの一部を Azure IoT 上に蓄積するアプリである．走行モードやデータ送信モードの管理を TOPPERS ASP によって実行している．TOPPERSOS による Azure IoT アプリケーション開発手法について示すことができた．

アプリケーションの概要• 方眼上のコースをコマンドに従い走行し，データをAzureに送信するロボット– リアルタイムOS• TOPPERS ASP3

– メインタスク• 各setup• 走行コマンドの受け取り• 走行モードと送信モードを管理– 機能１(走行モード)• Zumoの走行を管理• コマンドを受け取り，ライン上を走行する– 機能2(送信モード)• Azure IoT Hubを利用しZumoセンサーデータをクラウドへ送信• ジャイロセンサーのデータを送信する
Parallel & Distributed Systems Lab.

1

使用環境
• 以下のサイトを参考にAzure環境を用意した– https://matsujirushi.hatenablog.jp/entry/2020/0
8/10/222132• Azureサブスクリプション• Azure Portalから以下を作成– Azure IoT– Azure IoT Hub• Azure IoT Explorer– メッセージ確認用に使用
Parallel & Distributed Systems Lab.

2

動作環境
•

Arduino・Arduino IDE– 組込みシステムのプログラミング環境とボードコンピュータ Wio terminal– C++に近い言語でプログラミング•

Wio terminal– Arduino互換のマイクロコントローラ– 5方向スイッチ– WiFi接続•

ZUMO– 各種センサーを搭載した移動ロボット••••

ArduinoZUMO

LED加速度センサジャイロセンサ
電子コンパス– Arduinoにより制御• プログラムにより• モータの制御• センサの読み込み
Parallel & Distributed Systems Lab.

3

アプリケーション構築•

構築のためダウンロードしたもの– Wio TerminalのAzure IoT 接続サンプル• https://github.com/Azure/azure-iot-arduino– Wio TerminalのTOPPERS/ASP3サンプル• https://github.com/exshonda/Arduino_TOPPERS_ASP– Wio TerminalのZUMO管理ライブラリ•

アプリケーション開発– TOPPER ASP3サンプルに作成したrun_zumo関数とAzureサンプルのrun_demo関数をタスクとして登録• run_zumo : ZUMOによる走行を実行する関数• run_demo : Azure IoTにメッセージを送信する関数– メモリ不足やタスクIDの割り当て方，タスクルーチン開始のタイミングなどに注意した

Parallel & Distributed Systems Lab.

4

アプリケーション構成•

アプリケーション構成
setup
・WiFiコネクション
・AzureIoTHuBコネクション
・ASP3の起動

run_Zumo
・Zumoロボットを走行

run_demo
・AzureIoTHubへメッセージを送信

main_task タスクの起動やコネクション切断，コマンド設定

ArduinoFreeOS

•

ASP３

アプリケーション実行の流れ
ArduinoFreeOS
SetUp
WiFi
コネクション

AzureIoTHub
コネクション

ASP3起動

run_Zumo

ASP３
dly_tsk
run_demo

コネクション切断繰り返す– 今回使用したサンプルではWiFiコネクションの確立はArduinoFreeOSを使用する必要があるため，確立してからASP3によるタスクルーチンを開始するようにした
Parallel & Distributed Systems Lab.

5

動作手順
• Aruino IDEにライブラリを追加– ライブラリの管理で、下記を検索してインストール• Seeed_Arduino_rpcWiFi(Ver.1.0.4)• Seeed_Arduino_rpcUnified(Ver.2.1.3)• Seeed_Arduino_FS(Ver.2.0.3)• Seeed_Arduino_SFUD(Ver.2.0.1)• Seeed_Arduino_mbedtls(Ver.3.0.1)• AzureIoTHub (Ver.1.6.0)• AzureIoTUtility(Ver.1.6.1)• AzureIoTProtocol_MQTT(Ver.1.6.0)• AzureIoTProtocol_HTTP (Ver.1.6.0)– zip形式のライブラリをインクルードからインストール• TOPPERS_ASP• TOPPERS_ASP_FreeRTOS_API• ZumoShieldN• library.zipに添付
Parallel & Distributed Systems Lab.

6

動作手順
• ビルドオプションの変更– platform.txtを書き換える– 従来のアプリの場合は以下にある• C:¥Users¥<yourusername>¥AppData¥Local¥Arduino15¥packages– compiler.cpp.extra_flags=に以下のオプション指定• -DONT_USE_UPLOADTOBLOBParallel & Distributed Systems Lab.

7

動作手順
•WiFiの設定– ファイルを開くからTOPPERS_ASP_and_Azure.inoを開く– タブをiot_config.hに切り換え– 下記の部分を使用する環境に合わせて，変更– DEVICE_CONNECTION_STRINGをAzure IoTから取得した接続文字列に変更•

マイコンボードに書き込みで実行開始
Parallel & Distributed Systems Lab.

8

デモ動画
Azure IoT Explorerでのメッセージ •走行の様子– https://www.dropbox.com/s/fdya3
kb4g2ioota/iOS%20%E3%81%AE%E7%94%BB%E5%83%8F.MOV?dl=0
センサー
値

入力
コマンド

0F

-86

R-3

L92

L88

F

0

R-87

R-93

F

Parallel & Distributed Systems Lab.

9