Changes between Version 1 and Version 2 of azure_iot_hub_peach


Ignore:
Timestamp:
Jun 17, 2019, 11:18:20 PM (5 years ago)
Author:
coas-nagasima
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • azure_iot_hub_peach

    v1 v2  
    33Azure IoT Hub へ接続する[https://github.com/Azure/azure-iot-sdk-c Azure IoT Hub Device C SDK]を使ったサンプルです。
    44ターゲットデバイスは、[http://gadget.renesas.com/ja/product/peach.html GR-PEACH]で、Ethernet上のHTTPかMQTTで通信します。
    5 MQTTは、mbedTLS版でのみ確認できます。
     5MQTTは、mbedTLS版でのみ確認できています。
    66[http://gadget.renesas.com/ja/product/sakura.html GR-SAKURA]でも動作確認できています。[https://dev.toppers.jp/trac_user/contrib/wiki/azure_iot_hub こちら]を参照してください。
    77
    8 サンプルを動作させるには、[#following1 下記]の手順でAzure側にデバイスを追加し、そのデバイスの接続文字列を取得し、ソースコード「app_iothub_client/src/client.c」の以下の個所を書き換える必要があります。
     8サンプルを動作させるには、[=#following1 下記]の手順でAzure側にデバイスを追加し、そのデバイスの接続文字列を取得し、ソースコード「app_iothub_client/src/client.c」の以下の個所を書き換える必要があります。
    99
    1010{{{#!c
     
    1212}}}
    1313
    14 === ダウンロード ===
     14=== ダウンロード === #download
    1515
    1616GR-PEACHのソースコードはWolfSSL版が[https://dev.toppers.jp/trac_user/contrib/browser/azure_iot_hub_arm/trunk こちら]で、mbedTLS版が[https://dev.toppers.jp/trac_user/contrib/browser/azure_iot_hub_arm_mbedtls/trunk こちら]にあります。
     
    2121ビルドはGCC+Makefileで行います。arm向けGCCは[https://gcc-renesas.com/ja/rz/rz-download-toolchains/ こちら]や[https://launchpad.net/gcc-arm-embedded こちら]から入手できます。
    2222IDEとして[https://www.renesas.com/ja-jp/products/software-tools/tools/ide/e2studio.html e² studio]V7.4.0を使用しました。
     23Rubyの実行環境が必要なので、​[https://www.ruby-lang.org/ja/downloads/ こちら]からダウンロードして、コマンドプロントから実行できるよう、環境変数でパスを通してください。
    2324デバッグするには[https://github.com/gnu-mcu-eclipse/openocd/releases OpenOCD]が必要です。
    24 Rubyの実行環境が必要なので、​[https://www.ruby-lang.org/ja/downloads/ こちら]からダウンロードして、コマンドプロントから実行できるよう、環境変数でパスを通してください。
    2525e² studio V7.4.0のプロジェクトファイルも含まれているので、展開したフォルダをワークスペースとして開き、プロジェクトのインポートをこのフォルダに対して行うことで、取り込むことができます。
    2626
    2727=== フォルダ構成 ===
    2828
    29 ||app_iothub_client||||||サンプルプログラム||TOPPERS License||
    30 ||asp3_dcre||||||RTOS [http://www.toppers.jp/asp3-kernel.html TOPPERS/ASP3]||TOPPERS License||
    31 ||asp3_dcre||tinet||||[http://www.toppers.jp/tinet.html TINET 1.7]をRuby版CFG対応し、IGMPを追加したもの||TOPPERS License||
     29||||||app_iothub_client||サンプルプログラム||TOPPERS License||
     30||||||asp3_dcre||RTOS [http://www.toppers.jp/asp3-kernel.html TOPPERS/ASP3]||TOPPERS License||
     31||asp3_dcre||||tinet||[http://www.toppers.jp/tinet.html TINET 1.7]をRuby版CFG対応し、IGMPを追加したもの||TOPPERS License||
     32||asp3_dcre||||mbed||[https://www.mbed.com/ mbed] HAL APIの利用と実装||Apache 2.0 License||
    3233||asp3_dcre||syssvc||tlsf||メモリアロケータ[https://github.com/mattconte/tlsf tlsf]||BSD License||
    33 ||azure_iothub||||||[https://github.com/Azure/azure-iot-sdk-c Azure IoT Hub Device C SDK (tag 2019-04-11)]||MIT License||
     34||||||azure_iothub||[https://github.com/Azure/azure-iot-sdk-c Azure IoT Hub Device C SDK (tag 2019-04-11)]||MIT License||
    3435||azure_iothub||deps||parson||[https://github.com/kgabis/parson parson] jsonパーサー ||MIT License||
    3536||azure_iothub||c-utility||adapters||TOPPERS向けの実装を追加||TOPPERS License||
    36 ||curl-7.57.0||||||HTTPクライアント[https://curl.haxx.se/ cURL]||Curl License||
    37 ||musl-1.1.18||||||標準Cライブラリ[http://www.musl-libc.org/ musl]||MIT License||
    38 ||ntshell||fatfs||||FATファイルシステム [http://elm-chan.org/fsw/ff/00index_e.html FatFs]||!FatFs License||
    39 ||ntshell||ntshell||||仮想ターミナル[https://www.cubeatsystems.com/ntshell/ NT-Shell]||MIT  License etc.||
    40 ||ntshell||src||||Socket API、標準入出力、ファイルディスクリプタ||TOPPERS License||
    41 ||wolfssl-3.15.7||||||SSL/TLS ライブラリ[https://www.wolfssl.com/ wolfSSL]||GPL/商用||
     37||||||curl-7.57.0||HTTPクライアント[https://curl.haxx.se/ cURL]||Curl License||
     38||||||musl-1.1.18||標準Cライブラリ[http://www.musl-libc.org/ musl]||MIT License||
     39||ntshell||||fatfs||FATファイルシステム [http://elm-chan.org/fsw/ff/00index_e.html FatFs]||!FatFs License||
     40||ntshell||||ntshell||仮想ターミナル[https://www.cubeatsystems.com/ntshell/ NT-Shell]||MIT  License etc.||
     41||ntshell||||src||Socket API、標準入出力、ファイルディスクリプタ||TOPPERS License||
     42||||||wolfssl-3.15.7||SSL/TLS ライブラリ[https://www.wolfssl.com/ wolfSSL]||GPL/商用||
    4243||||||mbedtls-2.16.1||SSL/TLS ライブラリ[https://tls.mbed.org/ mbedTLS]||Apache 2.0 License||
    43 ||zlib-1.2.11||||||圧縮・伸張ライブラリ[https://www.zlib.net/ zlib]||zlib License||
     44||||||zlib-1.2.11||圧縮・伸張ライブラリ[https://www.zlib.net/ zlib]||zlib License||
    4445
    4546=== 標準Cライブラリ ===
    4647
    47 [[Image(composition.png)]]
     48[[Image(composition.png, 400px, align=center)]]
    4849
    4950
     
    6768https://azure.microsoft.com/ja-jp/pricing/details/iot-hub/
    6869
     70
     71== 開発手順 ==
     72
     73=== ワークスペースの読み込み ===
     74
     75[=#download タウンロード]したファイルを、適当なフォルダに展開します。
     76
     77この説明では「E:\e2studio\azure_iot_hub_arm」に展開します。
     78
     79[[Image(Folder.png, 342px, align=center)]]
     80
     81パス名にスペースや漢字などを含むと問題になることがあります。
     82
     83英数字とアンダーバーのみのフォルダ名で構成されたパス名にします。
     84
     85
     86e2studioを起動し、ワークスペースの場所に展開したフォルダを指定します。
     87
     88[[Image(SelectWorkSpace.png, 318px, align=center)]]
     89
     90
     91起動直後の「ようこそ」画面
     92
     93[[Image(Welcome.png, 505px, align=center)]]
     94
     95
     96「ようこそ」ページを閉じます。
     97
     98[[Image(EmptyWorkSpace.png, 505px, align=center)]]
     99
     100
     101メニューから「ファイル」→「インポート」を選択します。
     102
     103[[Image(SelectImport.png, 505px, align=center)]]
     104
     105
     106「一般」の中にある「既存プロジェクトをワーク・スペースへ」を選択し、「次へ」ボタンを押します。
     107
     108[[Image(ImportProjectToWorkSpace.png, 255px, align=center)]]
     109
     110
     111「プロジェクトのインポート」画面が表示されます。
     112
     113[[Image(ImportProject.png, 255px, align=center)]]
     114
     115
     116「ルート・ディレクトリの選択」にソースを展開したフォルダを入力します。
     117
     118「参照」ボタンを押して、そのまま「OK」ボタンを押せば入力されます。
     119
     120[[Image(SelectRootDirectory.png, 255px, align=center)]]
     121
     122
     123インポートが成功すると下記のように、「プロジェクト・マネージャ」にプロジェクトが表示されます。
     124
     125[[Image(FillProjectWorkSpace.png, 505px, align=center)]]
     126
     127=== ビルド ===
     128
     129メニューから「プロジェクト」→「すべてビルド」を選択すると、ビルドが開始されます。
     130
     131[[Image(BuildAll.png, 505px, align=center)]]
     132
     133
     134ビルドが終了すると、「プロジェクト・マネージャ」の「app_iothub_client」の下に「バイナリー」の項目が追加されます。
     135
     136[[Image(BuildComplate.png, 505px, align=center)]]
     137
     138
     139=== 書き込み ===
     140
     141GR-PEACHとPCをUSB接続すると、mbedストレージが表示されます。
     142
     143[[Image(MbedFolder.png, 342px, align=center)]]
     144
     145出力フォルダの「E:\e2studio\azure_iot_hub_arm\app_iothub_client\Debug」にある「app_iothub_client.bin」をmbedストレージにコピーします。
     146
     147[[Image(OutputFolder.png, 342px, align=center)]]
     148
     149時間をかけてプログラムが書き込まれます。
     150
     151[[Image(CopyBinToMbedFolder.png, 225px, align=center)]]
     152
     153=== デバッグ ===
     154
     155GR-PEACHとPCをUSB接続し、TeraTermでmbedシリアルポートに接続します。ポーレートは「115,200bps」です。
     156
     157[[Image(SerialPort.png, 191px, align=center)]]
     158
     159
     160「プロジェクト・マネージャ」の「app_iothub_client」を右クリックし、出てきたメニューから「プロパティ」を選択します。
     161
     162[[Image(ProjectProperty.png, 505px, align=center)]]
     163
     164「OpenOCD Path」画面の「Executable」に「openocd.exe」、「Folder」にopenocd.exeのあるフォルダのパスを入力します。
     165
     166[[Image(OpenOCDPath.png, 430px, align=center)]]
     167
     168「プロジェクト・マネージャ」の「app_iothub_client」の「バイナリー」の下に「app_iothub_client.elf」があるので、それを右クリックします。
     169
     170出てきたメニューから「デバッグ」→「デバッグの構成」を選択します。
     171
     172[[Image(DebugConfiguration.png, 505px, align=center)]]
     173
     174
     175「デバッグの構成」画面の「Renesas GDB Hardware Debugging」で右クリックし、「新規」を選択します。
     176
     177[[Image(NewDebugConf.png, 383px, align=center)]]
     178
     179
     180表示された「メイン」タブの「プロジェクト」が「app_iothub_client」、「C/C++ アプリケーション」が「Debug\app_iothub_client.elf」になっていることを確認します。
     181
     182[[Image(DebugConfMain.png, 430px, align=center)]]
     183
     184
     185「Debugger」タブでは、「Debug hardware」に「E1(RX)」を選択し、「Target Device」にGR-SAKURAのCPU「R5F63NB」を選択します。
     186[[Image(DebugConfDebugger.png, 430px, align=center)]]
     187
     188チェックを外す。
     189[#startup][[Image(DebugConfStartup.png, 430px, align=center)]]
     190
     191
     192そのほかの画面には変更はありません。
     193
     194[[Image(DebugConfSources.png, 430px, align=center)]]
     195
     196[[Image(DebugConfCommon.png, 430px, align=center)]]
     197
     198[[Image(DebugConfSVDPath.png, 430px, align=center)]]
     199
     200下にある「デバッグ」ボタンを押すと、プログラムのロードが始まり、「パースペクティブ切り替えの確認」画面が表示されますので、「はい」を押します。
     201
     202
     203プログラムのロードが終わると「start.S」ファイルで停止しています。
     204
     205[[Image(DebugPerspective.png, 259px, align=center)]]
     206
     207「デバッグ構成」画面の「[=#startup Startup]」タブのスクロールして下にある「再開」チェックボックスにチェックを入れると、停止せず実行されるようになります。
     208
     209
     210=== 実行 ===
     211
     212実行するとTeraTermの画面に以下のように表示が出ます。
     213
     214[[Image(DebugStart.png, 505px, align=center)]]
     215
     216
     217「Enter」キーを入力すると、プロンプト「NTShell」が表示されます。
     218
     219[[Image(TeraTermStart.png, 369px, align=center)]]
     220
     221
     222試しに「dhcpc renew」+「Enter」を入力すると、コマンド一覧が表示されます。
     223
     224[[Image(TeraTermDhcp.png, 369px, align=center)]]
     225
     226
     227DHCPサーバーからIPアドレスの取得を待ちます。
     228
     229また、証明書の検証には実際の時刻が必要なので、NTPで時刻同期するまで待ちます。
     230
     231「iothub」+「Enter」で、Azure IoT Hubへメッセージを5つ送信します。
     232
     233[[Image(TeraTermIoTHub.png, 369px, align=center)]]
     234
     235
     236送られたメッセージを確認するには、[=#following1 上記]サイトの「[https://docs.microsoft.com/ja-jp/azure/iot-hub/quickstart-send-telemetry-c#read-the-telemetry-from-your-hub ハブから利用統計情報を読み取る]」の手順で行います。
     237
     238= 謝辞 =
     239
     240日本マイクロソフトの太田様には、Azure IoT Hubの操作や設定、メッセージの確認方法など、詳しく教えて頂きました。ありがとうございました。[[br]]
     241 日本マイクロソフト株式会社[[br]]
     242 太田 寛[[br]]
     243 [[Image("data:image/svg+xml;base64,PHN2ZyBpZD0iTG9nb19GSVhFRCIgZGF0YS1uYW1lPSJMb2dvIOKAlCBGSVhFRCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNDAwIDQwMCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7fS5jbHMtMntmaWxsOiMxZGExZjI7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5Ud2l0dGVyX0xvZ29fQmx1ZTwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE1My42MiwzMDEuNTljOTQuMzQsMCwxNDUuOTQtNzguMTYsMTQ1Ljk0LTE0NS45NCwwLTIuMjIsMC00LjQzLS4xNS02LjYzQTEwNC4zNiwxMDQuMzYsMCwwLDAsMzI1LDEyMi40N2ExMDIuMzgsMTAyLjM4LDAsMCwxLTI5LjQ2LDguMDcsNTEuNDcsNTEuNDcsMCwwLDAsMjIuNTUtMjguMzcsMTAyLjc5LDEwMi43OSwwLDAsMS0zMi41NywxMi40NSw1MS4zNCw1MS4zNCwwLDAsMC04Ny40MSw0Ni43OEExNDUuNjIsMTQ1LjYyLDAsMCwxLDkyLjQsMTA3LjgxYTUxLjMzLDUxLjMzLDAsMCwwLDE1Ljg4LDY4LjQ3QTUwLjkxLDUwLjkxLDAsMCwxLDg1LDE2OS44NmMwLC4yMSwwLC40MywwLC42NWE1MS4zMSw1MS4zMSwwLDAsMCw0MS4xNSw1MC4yOCw1MS4yMSw1MS4yMSwwLDAsMS0yMy4xNi44OCw1MS4zNSw1MS4zNSwwLDAsMCw0Ny45MiwzNS42MiwxMDIuOTIsMTAyLjkyLDAsMCwxLTYzLjcsMjJBMTA0LjQxLDEwNC40MSwwLDAsMSw3NSwyNzguNTVhMTQ1LjIxLDE0NS4yMSwwLDAsMCw3OC42MiwyMyIvPjwvc3ZnPg==", 32px, middle, alt="Twitter", title="Twitter", link=https://twitter.com/embedded_george, target="_blank")]]@embedded_george[[br]]
     244 [[Image("data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhYiIgZGF0YS1pY29uPSJnaXRodWItc3F1YXJlIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQ0OCA1MTIiIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1naXRodWItc3F1YXJlIGZhLXctMTQgZmEtMngiPjxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZD0iTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTI3Ny4zIDQxNS43Yy04LjQgMS41LTExLjUtMy43LTExLjUtOCAwLTUuNC4yLTMzIC4yLTU1LjMgMC0xNS42LTUuMi0yNS41LTExLjMtMzAuNyAzNy00LjEgNzYtOS4yIDc2LTczLjEgMC0xOC4yLTYuNS0yNy4zLTE3LjEtMzkgMS43LTQuMyA3LjQtMjItMS43LTQ1LTEzLjktNC4zLTQ1LjcgMTcuOS00NS43IDE3LjktMTMuMi0zLjctMjcuNS01LjYtNDEuNi01LjYtMTQuMSAwLTI4LjQgMS45LTQxLjYgNS42IDAgMC0zMS44LTIyLjItNDUuNy0xNy45LTkuMSAyMi45LTMuNSA0MC42LTEuNyA0NS0xMC42IDExLjctMTUuNiAyMC44LTE1LjYgMzkgMCA2My42IDM3LjMgNjkgNzQuMyA3My4xLTQuOCA0LjMtOS4xIDExLjctMTAuNiAyMi4zLTkuNSA0LjMtMzMuOCAxMS43LTQ4LjMtMTMuOS05LjEtMTUuOC0yNS41LTE3LjEtMjUuNS0xNy4xLTE2LjItLjItMS4xIDEwLjItMS4xIDEwLjIgMTAuOCA1IDE4LjQgMjQuMiAxOC40IDI0LjIgOS43IDI5LjcgNTYuMSAxOS43IDU2LjEgMTkuNyAwIDEzLjkuMiAzNi41LjIgNDAuNiAwIDQuMy0zIDkuNS0xMS41IDgtNjYtMjIuMS0xMTIuMi04NC45LTExMi4yLTE1OC4zIDAtOTEuOCA3MC4yLTE2MS41IDE2Mi0xNjEuNVMzODggMTY1LjYgMzg4IDI1Ny40Yy4xIDczLjQtNDQuNyAxMzYuMy0xMTAuNyAxNTguM3ptLTk4LjEtNjEuMWMtMS45LjQtMy43LS40LTMuOS0xLjctLjItMS41IDEuMS0yLjggMy0zLjIgMS45LS4yIDMuNy42IDMuOSAxLjkuMyAxLjMtMSAyLjYtMyAzem0tOS41LS45YzAgMS4zLTEuNSAyLjQtMy41IDIuNC0yLjIuMi0zLjctLjktMy43LTIuNCAwLTEuMyAxLjUtMi40IDMuNS0yLjQgMS45LS4yIDMuNy45IDMuNyAyLjR6bS0xMy43LTEuMWMtLjQgMS4zLTIuNCAxLjktNC4xIDEuMy0xLjktLjQtMy4yLTEuOS0yLjgtMy4yLjQtMS4zIDIuNC0xLjkgNC4xLTEuNSAyIC42IDMuMyAyLjEgMi44IDMuNHptLTEyLjMtNS40Yy0uOSAxLjEtMi44LjktNC4zLS42LTEuNS0xLjMtMS45LTMuMi0uOS00LjEuOS0xLjEgMi44LS45IDQuMy42IDEuMyAxLjMgMS44IDMuMy45IDQuMXptLTkuMS05LjFjLS45LjYtMi42IDAtMy43LTEuNXMtMS4xLTMuMiAwLTMuOWMxLjEtLjkgMi44LS4yIDMuNyAxLjMgMS4xIDEuNSAxLjEgMy4zIDAgNC4xem0tNi41LTkuN2MtLjkuOS0yLjQuNC0zLjUtLjYtMS4xLTEuMy0xLjMtMi44LS40LTMuNS45LS45IDIuNC0uNCAzLjUuNiAxLjEgMS4zIDEuMyAyLjguNCAzLjV6bS02LjctNy40Yy0uNC45LTEuNyAxLjEtMi44LjQtMS4zLS42LTEuOS0xLjctMS41LTIuNi40LS42IDEuNS0uOSAyLjgtLjQgMS4zLjcgMS45IDEuOCAxLjUgMi42eiIgY2xhc3M9IiI+PC9wYXRoPjwvc3ZnPg==", 32px, middle, alt="GitHub", title="GitHub", link=https://github.com/ms-iotkithol-jp, target="_blank")]]
     245----
     246{{{#!div style="text-align: right"
     247ホームネットワークWG 長島 宏明
     248}}}