wiki:azure_iot_hub_peach

Version 4 (modified by coas-nagasima, 3 years ago) ( diff )

--

Azure IoT Hub 接続サンプル

Azure IoT Hub へ接続するAzure IoT Hub Device C SDKを使ったサンプルです。 ターゲットデバイスは、GR-PEACHで、Ethernet上のHTTPかMQTTで通信します。 MQTTは、mbedTLS版でのみ確認できています。 GR-SAKURAでも動作確認できています。こちらを参照してください。

サンプルを動作させるには、下記の手順でAzure側にデバイスを追加し、そのデバイスの接続文字列を取得し、ソースコード「app_iothub_client/src/client.c」の以下の個所を書き換える必要があります。

static const char* connectionString = "[device connection string]";

ダウンロード

GR-PEACHのソースコードはGithubにあります。WolfSSLとmbedTLSを両方含んでいます。 ファイルリストの右上にある「Clone or download」の「Download ZIP」をクリックすると、zipファイルでダウンロードできます。

開発環境

ビルドはGCC+Makefileで行います。arm向けGCCはこちらこちらから入手できます。 IDEとしてe² studioV7.4.0を使用しました。 Rubyの実行環境が必要なので、​こちらからダウンロードして、コマンドプロントから実行できるよう、環境変数でパスを通してください。 デバッグするにはOpenOCDが必要です。 e² studio V7.4.0のプロジェクトファイルも含まれているので、展開したフォルダをワークスペースとして開き、プロジェクトのインポートをこのフォルダに対して行うことで、取り込むことができます。 「asp3_dcre\target\gr_peach_gcc\renesas_rza1h_swd.cfg」を、OpenOCDインストールフォルダの下の「scripts\target」にコピーします。

フォルダ構成

app_iothub_clientサンプルプログラムTOPPERS License
asp3_dcreRTOS TOPPERS/ASP3TOPPERS License
asp3_dcretinetTINET 1.7をRuby版CFG対応し、IGMPを追加したものTOPPERS License
asp3_dcrembedmbed HAL APIの利用と実装Apache 2.0 License
asp3_dcresyssvctlsfメモリアロケータtlsfBSD License
azure_iothubAzure IoT Hub Device C SDK (tag 2019-04-11)MIT License
azure_iothubdepsparsonparson jsonパーサー MIT License
azure_iothubc-utilityadaptersTOPPERS向けの実装を追加TOPPERS License
curl-7.57.0HTTPクライアントcURLCurl License
musl-1.1.18標準CライブラリmuslMIT License
ntshellfatfsFATファイルシステム FatFsFatFs License
ntshellntshell仮想ターミナルNT-ShellMIT License etc.
ntshellsrcSocket API、標準入出力、ファイルディスクリプタTOPPERS License
wolfssl-3.15.7SSL/TLS ライブラリwolfSSLGPL/商用
mbedtls-2.16.1SSL/TLS ライブラリmbedTLSApache 2.0 License
zlib-1.2.11圧縮・伸張ライブラリzlibzlib License

標準Cライブラリ

GCC付属の標準Cライブラリnewlibではなく、muslを使用しています。 付属のnewlibでは、dirent.hやsocket.hがないので、curlやviのコンパイルに向いていません。 Linux向けのmuslを使用することで、POSIX向けのソースコードのコンパイルが難無く行えます。 ただし、未実装のAPIがあるとリンクエラーになります。 このソフトでは、ntshell/srcにコードがありますが、サンプルを動作させる最小限の実装を行っています。

Azure IoT Hub について

本サンプルの作成には以下のドキュメントを参考にしました。

https://github.com/ms-iotkithol-jp/IoTKitHoLV4

https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-c

Azureの利用は「IoT Hub Free エディション」を使用しました。

https://azure.microsoft.com/ja-jp/pricing/details/iot-hub/

開発手順

ワークスペースの読み込み

タウンロードしたファイルを、適当なフォルダに展開します。

この説明では「E:\e2studio\azure_iot_hub_arm」に展開します。

パス名にスペースや漢字などを含むと問題になることがあります。

英数字とアンダーバーのみのフォルダ名で構成されたパス名にします。

e2studioを起動し、ワークスペースの場所に展開したフォルダを指定します。

起動直後の「ようこそ」画面

「ようこそ」ページを閉じます。

メニューから「ファイル」→「インポート」を選択します。

「一般」の中にある「既存プロジェクトをワーク・スペースへ」を選択し、「次へ」ボタンを押します。

「プロジェクトのインポート」画面が表示されます。

「ルート・ディレクトリの選択」にソースを展開したフォルダを入力します。

「参照」ボタンを押して、そのまま「OK」ボタンを押せば入力されます。

インポートが成功すると下記のように、「プロジェクト・マネージャ」にプロジェクトが表示されます。

ビルド

メニューから「プロジェクト」→「すべてビルド」を選択すると、ビルドが開始されます。

ビルドが終了すると、「プロジェクト・マネージャ」の「app_iothub_client」の下に「バイナリー」の項目が追加されます。

書き込み

GR-PEACHとPCをUSB接続すると、mbedストレージが表示されます。

出力フォルダの「E:\e2studio\azure_iot_hub_arm\app_iothub_client\Debug」にある「app_iothub_client.bin」をmbedストレージにコピーします。

時間をかけてプログラムが書き込まれます。

デバッグ

GR-PEACHとPCをUSB接続し、TeraTermでmbedシリアルポートに接続します。ポーレートは「115,200bps」です。

「プロジェクト・マネージャ」の「app_iothub_client」を右クリックし、出てきたメニューから「プロパティ」を選択します。

「OpenOCD Path」画面の「Executable」に「openocd.exe」、「Folder」にopenocd.exeのあるフォルダのパスを入力します。

「プロジェクト・マネージャ」の「app_iothub_client」の「バイナリー」の下に「app_iothub_client.elf」があるので、それを右クリックします。

出てきたメニューから「デバッグ」→「デバッグの構成」を選択します。

「デバッグの構成」画面の「Renesas GDB Hardware Debugging」で右クリックし、「新規」を選択します。

表示された「メイン」タブの「プロジェクト」が「app_iothub_client」、「C/C++ アプリケーション」が「Debug\app_iothub_client.elf」になっていることを確認します。

「Debugger」タブでは、「Debug hardware」に「E1(RX)」を選択し、「Target Device」にGR-SAKURAのCPU「R5F63NB」を選択します。

チェックを外す。 #startup

そのほかの画面には変更はありません。

下にある「デバッグ」ボタンを押すと、プログラムのロードが始まり、「パースペクティブ切り替えの確認」画面が表示されますので、「はい」を押します。

プログラムのロードが終わると「start.S」ファイルで停止しています。

「デバッグ構成」画面の「Startup」タブのスクロールして下にある「再開」チェックボックスにチェックを入れると、停止せず実行されるようになります。

実行

実行するとTeraTermの画面に以下のように表示が出ます。

「Enter」キーを入力すると、プロンプト「NTShell」が表示されます。

試しに「dhcpc renew」+「Enter」を入力すると、コマンド一覧が表示されます。

DHCPサーバーからIPアドレスの取得を待ちます。

また、証明書の検証には実際の時刻が必要なので、NTPで時刻同期するまで待ちます。

「iothub」+「Enter」で、Azure IoT Hubへメッセージを5つ送信します。

送られたメッセージを確認するには、上記サイトの「ハブから利用統計情報を読み取る」の手順で行います。

謝辞

日本マイクロソフトの太田様には、Azure IoT Hubの操作や設定、メッセージの確認方法など、詳しく教えて頂きました。ありがとうございました。

日本マイクロソフト株式会社
太田 寛
Twitter@embedded_george
GitHub


ホームネットワークWG 長島 宏明

Attachments (31)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.