Version 6 (modified by 4 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が必要です。 インストール後「asp3_dcre\target\gr_peach_gcc\renesas_rza1h_swd.cfg」を、OpenOCDインストールフォルダの下の「scripts\target」にコピーします。
e² studio V7.4.0のプロジェクトファイルも含まれているので、展開したフォルダをワークスペースとして開き、プロジェクトのインポートをこのフォルダに対して行うことで、取り込むことができます。こちらを参照してください。
フォルダ構成
app_iothub_client | サンプルプログラム | TOPPERS License | ||
asp3_dcre | RTOS TOPPERS/ASP3 | TOPPERS License | ||
asp3_dcre | tinet | TINET 1.7をRuby版CFG対応し、IGMPを追加したもの | TOPPERS License | |
asp3_dcre | mbed | mbed HAL APIの利用と実装 | Apache 2.0 License | |
asp3_dcre | syssvc | tlsf | メモリアロケータtlsf | BSD License |
azure_iothub | Azure IoT Hub Device C SDK (tag 2019-04-11) | MIT License | ||
azure_iothub | deps | parson | parson jsonパーサー | MIT License |
azure_iothub | c-utility | adapters | TOPPERS向けの実装を追加 | TOPPERS License |
curl-7.57.0 | HTTPクライアントcURL | Curl License | ||
musl-1.1.18 | 標準Cライブラリmusl | MIT License | ||
ntshell | fatfs | FATファイルシステム FatFs | FatFs License | |
ntshell | ntshell | 仮想ターミナルNT-Shell | MIT License etc. | |
ntshell | src | Socket API、標準入出力、ファイルディスクリプタ | TOPPERS License | |
wolfssl-3.15.7 | SSL/TLS ライブラリwolfSSL | GPL/商用 | ||
mbedtls-2.16.1 | SSL/TLS ライブラリmbedTLS | Apache 2.0 License | ||
zlib-1.2.11 | 圧縮・伸張ライブラリzlib | zlib 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」タブでは、「Configu options」に「-f interface/cmsis-dap.cfg -f target/renesas_rza1h_swd.cfg」を入力します。
「Startup」タブでは、「Initial Reset」と「Load executable」のチェックを外します。
#startup
プログラムの書き込みは、mbedストレージへの書き込みにのみで行います。デバッガ経由ではできないようです。 「Load symbols」はソースコードデバッグするのに必要なので、チェックしておきます。
そのほかの画面には変更はありません。
下にある「デバッグ」ボタンを押すと、プログラムのロードが始まり、「パースペクティブ切り替えの確認」画面が表示されますので、「はい」を押します。
プログラムのロードが終わると「mbed_stub.c」ファイルのmain関数で停止しています。
「デバッグ構成」画面の「Startup」タブのスクロールして下にある「Set breakpoint at」チェックボックスにチェックを外すと、main関数で停止せず実行されるようになります。
実行
実行するとTeraTermの画面に以下のように表示が出ます。
「Enter」キーを入力すると、プロンプト「NTShell」が表示されます。
既知の問題があり、起動時のDHCPの動作が失敗してしますので「dhcpc renew」+「Enter」を入力すると、DHCPからIPアドレスの取得を開始します。
DHCPサーバーからIPアドレスの取得を待ちます。
また、証明書の検証には実際の時刻が必要なので、NTPで時刻同期するまで待ちます。
「iothub」+「Enter」で、Azure IoT Hubへメッセージを5つ送信します。
送られたメッセージを確認するには、上記サイトの「ハブから利用統計情報を読み取る」の手順で行います。
謝辞
日本マイクロソフトの太田様には、Azure IoT Hubの操作や設定、メッセージの確認方法など、詳しく教えて頂きました。ありがとうございました。
ホームネットワークWG 長島 宏明
Attachments (31)
- composition.png (49.6 KB ) - added by 4 years ago.
- Folder.png (28.0 KB ) - added by 4 years ago.
- SelectWorkSpace.png (14.3 KB ) - added by 4 years ago.
- Welcome.png (80.8 KB ) - added by 4 years ago.
- EmptyWorkSpace.png (89.7 KB ) - added by 4 years ago.
- SelectImport.png (100.6 KB ) - added by 4 years ago.
- ImportProjectToWorkSpace.png (30.3 KB ) - added by 4 years ago.
- ImportProject.png (32.1 KB ) - added by 4 years ago.
- SelectRootDirectory.png (39.3 KB ) - added by 4 years ago.
- FillProjectWorkSpace.png (99.0 KB ) - added by 4 years ago.
- BuildAll.png (100.5 KB ) - added by 4 years ago.
- BuildComplate.png (95.8 KB ) - added by 4 years ago.
- OutputFolder.png (45.1 KB ) - added by 4 years ago.
- MbedFolder.png (17.7 KB ) - added by 4 years ago.
- CopyBinToMbedFolder.png (10.3 KB ) - added by 4 years ago.
- ProjectProperty.png (109.1 KB ) - added by 4 years ago.
- OpenOCDPath.png (30.7 KB ) - added by 4 years ago.
- DebugConfiguration.png (119.3 KB ) - added by 4 years ago.
- NewDebugConf.png (56.5 KB ) - added by 4 years ago.
- DebugConfMain.png (60.7 KB ) - added by 4 years ago.
- DebugConfDebugger.png (68.1 KB ) - added by 4 years ago.
- DebugConfStartup.png (63.0 KB ) - added by 4 years ago.
- DebugConfSources.png (54.6 KB ) - added by 4 years ago.
- DebugConfSVDPath.png (49.3 KB ) - added by 4 years ago.
- DebugPerspective.png (20.0 KB ) - added by 4 years ago.
- DebugStart.png (101.2 KB ) - added by 4 years ago.
- DebugConfCommon.png (67.3 KB ) - added by 4 years ago.
- SerialPort.png (8.0 KB ) - added by 4 years ago.
- TeraTermStart.png (27.1 KB ) - added by 4 years ago.
- TeraTermDhcp.png (30.2 KB ) - added by 4 years ago.
- TeraTermIoTHub.png (46.0 KB ) - added by 4 years ago.
Download all attachments as: .zip