すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:MCUとセルラーモジュールを統合したデバイスをIoT Platformに接続する

最終更新日:Apr 09, 2025

この記事では、Link SDK for Cを移植して、マイクロコントローラユニット (MCU) とセルラーモジュールを統合したデバイスをIoT Platformに接続する方法について説明します。

背景情報

インターネットに直接接続できないデバイスは、MCUとセルラーを統合できます。 MCUは、ATコマンドを使用することによってセルラーモジュールを制御する。 このようにして、デバイスをインターネットに接続できます。 Link SDK for Cを移植することで、デバイスをIoT Platformに接続できます。

この記事では、MCU開発ボードでLink SDK for Cを移植し、デバイスをIoT Platformに接続する方法について説明します。 この例では、デバイスは共通のMCUとセルラーモジュールを統合しています。 デバイスをIoT Platformに接続した後、IoT Platformを使用してデバイスを管理し、デバイスデータを分析できます。

Connection method

始める前に

Link SDKを移植する前に、次のコンポーネントを準備する必要があります。

  • ハードウェア:
    ハードウェアタイプ説明
    MCU開発ボード
    • 名前: STM32 Nucleoボード
    • モデル: STM32L476RG
    • システム: FreeRTOS
    • リファレンス: NUCLEO-L476RG
    セルラー通信ボード
    SIMカード
    • インタフェースモデル: Micro
    • 信号: 4G
  • 開発ツール:
    ツール説明
    STM32CubeMXMCU周辺機器の初期化コードを生成するために使用される開発ツール。 バージョン: 6.1.2。
    MDK-アーム開発環境とデバッグコードを統合するために使用される開発ツール。 バージョン: 5.26.2.0.
    シリアルポートデバッガデバイスの接続とデバッグに使用されるツール。 ボーレート: 115,200。
  • C用リンクSDK:

    IoT Platformコンソールにログインします。 [SDKのカスタマイズ] ページで、SDKを取得します。

    説明

    サンプルプロジェクトファイルをダウンロードして、移植例を表示できます。 次に、設定を参照して、Link SDK for Cをデバイスにポートできます。

  • デバイス認証情報:

    Link SDKを移植する前に、IoT Platformコンソールで製品とデバイスを作成し、デバイス認証情報を取得する必要があります。 この例では、デバイス固有証明書認証方式が使用されます。 詳細については、「デバイスごとの固有証明書検証の情報の取得」をご参照ください。

手順

  1. ハードウェアをインストールします。
    1. SIMカードをセルラー通信ボードのSIM0カードスロットに挿入します。
    2. MCU開発ボードのUART1シリアルポートを、デュポン回線を使用してセルラー通信ボードのUART1シリアルポートに接続します。 次の図はピンを示しています。
    3. MCU開発ボードのUART3シリアルポートを開発ツールのシリアルポートにデュポン回線を使用して接続します。 次の図はピンを示しています。
      デュポンラインNo.MCU開発ボードのシリアルポートピン開発ツールのシリアルポートピン
      PC4RXD
      PC5TXD
      GNDGND

      MCU開発ボードのピンの図の詳細については、STM32 Nucleo-64ボードの記事の35ページの図24を参照してください。

    4. 2つのボードの電源を入れるのにマイクロUSBインターフェイスを使用し、コミュニケーションボードの開始を長く押して下さい。

      ボードの電源を入れた後、PWRライトは赤、NETライトは黄色に点滅し、LTEライトは青になります。

      Power on the boards
  2. プロジェクトを移植します。
    1. CubeMXを開いて、基本プロジェクトコードを作成および生成します。

      CubeMX開発ツールの使用方法の詳細については、CubeMX公式Webサイトをご覧ください。

      シリアルポートとシステムの設定を次の図に示します。

      説明 次の表では、UART1のボーレートとFREERTOSのメモリサイズが推奨値です。 ビジネスニーズに基づいて値を設定できます。
      シリアルポートまたはシステム説明
      UART1
      • 出力: 非同期
      • ボーレート: 230,400
      • DMA: 有効
      • 割り込みの受信: 有効
      UART3
      • 出力: 非同期
      • ボーレート: 115,200
      FREERTOSメモリサイズ: 81,920
    2. MDK-Armを使用してプロジェクトファイルを開き、取得したLink SDK for Cをプロジェクトにインポートします。
      SDKでは、を除きます。/LinkSDK/demoフォルダは、すべてのをインポートする必要があります。c。h他のフォルダ内のファイルをプロジェクトにします。 詳細については、「プロジェクトへのソースファイルの追加」をご参照ください。
    3. プロジェクトにコードを記述して、基になるシステム依存関係を設定します。
      依存関係は、aiot_sysdep_portfile_t g_aiot_sysdep_portfileグローバル変数に含まれます。 詳細については、「Link SDK For Cをポートする方法の例」をご参照ください。

      サンプルプロジェクトをダウンロードしてを表示できます。/Linkkit/portfiles/aiot_port/freertos_tcp_modem_port.cのサンプルコードファイル。

    4. セルラーモジュールを駆動するためのコードをプロジェクトに記述します。
      • 適応のためのATコマンドの設定: を開きます。/Linkkit/portfiles/aiot_port/aiot_at_api.c
      • 適応のためのシリアルポートの設定:
        • aiot_at_setopt操作を呼び出して、ATモジュールのデータ送信インターフェイスを設定します。
        • シリアルポートがデータを受信した後、aiot_at_uart_recv操作を呼び出してATコマンドを解析します。

      サンプルプロジェクトをダウンロードしてを表示できます。/Linkkit/portfiles/aiot_port/linkkit_wrapper.cのサンプルコードファイル。

    5. を開きます。/linkkit_mcu_cellular_project/LinkKit/portfiles/aiot_port/mqtt_at_basic_demo.cファイルで、デバイス認証情報を設定します。
      下表に、各パラメーターを説明します。
      パラメーター説明
      urliot-as-mqtt.cn-shanghai.aliyuncs.comエンドポイント。 この例では、中国 (上海) リージョンのパブリックインスタンスが使用されています。
      • パブリックインスタンスを使用する場合は、cn-shanghaiをインスタンスが存在するリージョンのIDに置き換えます。 IoT Platformコンソールの左上隅にリージョンを表示できます。 リージョンIDの詳細については、「リージョンとゾーン」をご参照ください。
      • Enterprise Editionインスタンスを使用している場合、 [インスタンスの詳細] ページで [開発設定の表示] をクリックして、デバイスに関するMQTT接続情報を表示できます。
      product_keya18wP ******デバイス認証情報。 このパラメーターは、デバイスの開発時に取得されるデバイス証明書を示します。

      IoT Platformコンソールの [デバイスの詳細] ページで情報を表示することもできます。

      device_namestm32l4_mbedtls_cat1
      device_secretuwMTmVAMnGGHaAkqmeDY6cHxxB ******
  3. コードをコンパイルして実行します。
    1. をクリックしてプロジェクトファイルをコンパイルします。
    2. Download iconアイコンをクリックして、実行可能なサンプルコードファイルをMUC開発ボードにダウンロードします。
    3. をクリックして、MUC開発ボードで実行可能なサンプルコードファイルを実行します。

実行結果

  • デバイスでログを表示できます。
    • 次のログデータは、デバイスがIoT Platformに接続されていることを示します。
      linkkit_init[2.222][LK-0313] MQTTユーザーがaiot_mqtt_connect apiを呼び出し、connect
      [2.266][LK-0317] stm32l4_mbedtls_cat1&a18wP ******
      [2.277][LK-0318] B4C45425D73E24B2935D73C1E98B6079A630FBE03F61E2A2031CEE7867 ******
      unknown option, 2
      unknown option, 5
      [2.377][LK-1000] サーバーとのmbedtls接続を確立します (host='a18wP ****** .iot-as-mqtt.cn-shanghai.aliyuncs.com '、port=[443])
      [7.311][LK-1000] mbedtls接続を確立する成功 (合計で18686バイト、最大使用21294バイト)
      [7.500][LK-0313] MQTT接続成功で5286 ms 
    • 次のログデータは、デバイス時刻がサーバー時刻と同期していることを示しています。 詳細については、「NTPサービス」をご参照ください。
      AIOT_MQTTEVT_CONNECT
      [7.544][LK-0309] パブ: /ext/ntp/a18wP ******/stm32l4_mbedtls_cat1/request
      [LK-030A] > 7B 22 64 65 76 69 63 65 53 6E 64 54 69 6D 65 | {"deviceSendTime
      [LK-030A] > 22 3A 22 37 35 33 39 22 7D | ":" 7539 "}
      [7.688][LK-0309] パブ: /ext/ntp/a18wP ******/stm32l4_mbedtls_cat1/response
      現地時間: 1620915828805、2021/05/13-22:23:48:805
      ハートビート応答 
    • 次のログデータは、デバイスがThing Specification Language (TSL) データをIoT Platformに送信することを示しています。 詳細については、「TSLモデルとは」をご参照ください。.
      [1620915829.788][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/config/log/get
      [LK-030A] > 7B 22 69 64 22 3A 22 31 22 2C 22 76 65 72 73 69 | {"id":"1","versi
      [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on ":" 1.0 "、" param
      [LK-030A] > 73 22 3A 7B 22 67 65 74 54 79 70 65 22 3A 22 63 | s ":{" getType ":" c
      [LK-030A] > 6F 6E 74 65 6E 74 22 2C 22 63 6F 6E 66 69 67 53 | ontent "," configS
      [LK-030A] > 63 6F 70 65 22 3A 22 64 65 76 69 63 65 22 7D | cope ":" device "}}
      [1620915830.011][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/config/log/get_reply
      [1620915830.033][LK-1507] LOGPOSTユーザーログ設定が到着しました
      ログスイッチの状態: 1
      [1620915835.066][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/log/post
      [LK-030A] > 7B 22 69 64 22 3A 22 32 22 2C 22 76 65 72 73 69 | {"id":"2","versi
      [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on ":" 1.0 "、" param
      [LK-030A] > 73 22 3A 5B 7B 22 75 74 63 54 69 6D 65 22 3A 22 | s ":[{" utcTime ":"
      [LK-030A] > 32 30 32 31 2F 35 2F 31 33 20 32 32 3A 32 33 3A | 2021/5/13 22:23:
      [LK-030A] > 35 35 22 2C 22 6C 6F 67 4C 65 76 65 6C 22 3A 22 | 55 "," logLevel ":"
      [LK-030A] > 44 45 42 55 47 22 2C 22 6D 6F 64 75 6C 65 22 3A | DEBUG "、" モジュール ":
      [LK-030A] > 22 41 50 50 22 2C 22 63 6F 64 65 22 3A 22 32 30 | "APP" 、"code":"20
      [LK-030A] > 30 22 2C 22 74 72 61 63 65 43 6F 6E 74 65 78 74 | 0 "、" traceContext
      [LK-030A] > 22 3A 22 30 22 2C 22 6C 6F 67 43 6F 6E 74 65 6E | ":" 0 "," logConten
      [LK-030A] > 74 22 3A 22 6C 6F 67 20 69 6E 20 77 68 69 6C 65 | t ":" ログインしながら
      [LK-030A] > 28 31 29 22 7D 5D 7D | (1)"}]}
      [1620915836.855][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/event/property/post
      [LK-030A] > 7B 22 69 64 22 3A 22 33 22 2C 22 76 65 72 73 69 | {"id":"3","versi
      [LK-030A] > 6F 6E 22 3A 22 31 2E 30 22 2C 22 70 61 72 61 6D | on ":" 1.0 "、" param
      [LK-030A] > 73 22 3A 7B 22 4C 69 67 68 74 53 77 69 74 63 68 | s ":{" LightSwitch
      [LK-030A] > 22 3A 20 30 7D 2C 22 73 79 73 22 3A 7B 22 61 63 | ": 0}," sys ":{" ac
      [LK-030A] > 6B 22 3A 31 7D 7D | k ":1}}
      [1620915837.099][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/event/Error/post
      [1620915837.122][LK-0309] pub: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/event/property/post_reply
      [1620915837.177][LK-0A08] DM recvジェネリック返信
      demo_dm_recv_handler、type = 0
      msg_id = 3, code = 200, data = {}, message = success
      [1620915837.311][LK-0309] パブ: /sys/a18wP ******/stm32l4_mbedtls_cat1/thing/event/Error/post_reply
      [1620915837.344][LK-0A08] DM recvジェネリック返信
      demo_dm_recv_handler、type = 0
      msg_id = 4, code = 200, data = {}, message = success 
  • IoT Platformコンソールにログインして、デバイスのステータスと操作ログを表示できます。

    • 左側のナビゲーションウィンドウで、[デバイス] > [デバイス] を選択します。 次に、デバイスを見つけてオンラインステータスを表示します。 [状態] 列の値 [オンライン] は、デバイスがIoT Platformに接続されていることを示します。
    • 左側のナビゲーションウィンドウで、[メンテナンス] > [デバイスログ] を選択します。 デバイスログを表示する製品を選択します。