文档

自有模组驱动接入:STM32+合宙Air724

更新时间:

本文介绍如何快速移植C语言Link SDK,将搭载MCU+蜂窝模组的设备接入阿里云物联网平台。

背景信息

无法直接连网的设备,外接MCU+蜂窝模组后,MCU通过AT指令控制蜂窝模组,设备即可实现连网。通过移植阿里云物联网平台提供的C Link SDK,设备即可实现快速上云。

本文以搭载通用MCU+蜂窝模组的设备为例,介绍在MCU开发板上移植Link SDK的过程,将设备接入物联网平台,实现物联网平台管理与分析设备。

接入方案

开发准备

进行Link SDK移植前,您需准备以下材料。

  • 硬件:

    硬件类型

    说明

    MCU开发板

    • 名称:STM32 Nucleo板

    • 型号:STM32L476RG

    • 系统:FreeRTOS

    • 参考文档:NUCLEO-L476RG

    蜂窝通信板

    SIM卡

    • 接口型号:Micro

    • 信号:4G

  • 开发工具:

    工具名称

    说明

    STM32CubeMX

    用于生成MCU外设初始化代码的开发工具,版本为6.1.2。

    MDK-Arm

    集成开发环境和调试代码的开发工具,版本为5.26.2.0。

    串口调试工具

    用于连接和调试设备的工具,其串口波特率为115200。

  • C Link SDK:

    物联网平台控制台SDK定制页面,获取SDK。

    具体操作,请参见获取C Link SDK

    说明

    您可以下载示例工程文件,查看C Link SDK移植到示例工程后的结果,并参考其中的配置,将C Link SDK移植到设备。

    定制SDK
  • 设备认证信息:

    进行C Link SDK移植前,您需在物联网平台控制台创建产品和设备,获取设备认证信息,本文使用一机一密的认证方式。具体操作,请参见获取一机一密设备认证信息

开发流程

  1. 连接硬件。

    1. 将SIM卡插入蜂窝通信板SIM0卡槽。

      通信板插入SIM卡
    2. 使用杜邦线,将MCU开发板的UART1串口与蜂窝通信板的UART1串口相连。其引脚分别对应如下:

      开发板与通信板连接

      杜邦线序号

      接线颜色

      蜂窝通信板串口引脚

      MCU开发板串口引脚

      黄色

      U1_TXD

      PA10

      绿色

      U1_RXD

      PA9

      蓝色

      GND

      GND

    3. 使用杜邦线,将MCU开发板的UART3串口与开发工具的串口相连。其引脚分别对应如下:

      开发板与开发工具相连

      杜邦线序号

      MCU开发板串口引脚

      开发工具串口引脚

      PC4

      RXD

      PC5

      TXD

      GND

      GND

      示例中MCU开发板引脚的示意图详情,请参见STM32 Nucleo-64 boards第35页的Figure24。

    4. 使用Micro USB接口为两块板上电,长按通信板的开机

      上电后,PWR亮红灯,NET黄灯闪烁,LTE亮蓝灯。

      上电
  2. 工程移植。

    1. 打开CubeMX,创建并生成基础工程代码配置。

      关于使用CubeMX开发工具的使用方法,请参见CubeMX官网

      需配置的串口和系统的设置如下:

      说明

      下表中,UART1的波特率和FREERTOS内存大小的值为推荐值,您可以根据业务实际情况进行配置。

      串口或系统

      说明

      UART1

      • 输出:异步

      • 波特率:230400

      • DMA:启用

      • 接收中断:启用

      UART3

      • 输出:异步

      • 波特率:115200

      FREERTOS

      内存大小:81920

    2. 使用MDK-Arm,打开工程文件,并将获取的C Link SDK导入工程。

      C Link SDK文件中,除了./LinkSDK/demo文件夹中的文件,其他文件夹中的.c.h文件均需导入工程。使用MDK-Arm导入源代码到工程的步骤,请参见添加源文件到工程

    3. 在工程中,编写代码,配置系统底层依赖。

      系统底层相关的依赖都在代码aiot_sysdep_portfile_t g_aiot_sysdep_portfile中,完成系统底层依赖接口的适配,更多信息,请参见移植示例说明

      您可以在示例工程,查看系统底层依赖配置的示例文件./Linkkit/portfiles/aiot_port/freertos_tcp_modem_port.c

    4. 在项目工程中,编写代码,配置驱动蜂窝模组。

      • 适配AT命令:打开./Linkkit/portfiles/aiot_port/aiot_at_api.c文件,修改适配AT命令列表。

      • 适配串口:

        • 调用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,配置设备认证信息。

      需要配置的参数如下:

      参数

      示例

      说明

      url

      iot-as-mqtt.cn-shanghai.aliyuncs.com

      设备的接入域名。本示例使用华东2(上海)的公共实例。

      • 若使用旧版公共实例,您可将cn-shanghai更改为您服务所在的地域ID。请在物联网平台控制台左上角,查看您服务所在的地域。地域ID的取值,请参见地域和可用区

      • 若使用企业版实例或新版公共实例,您可在实例详情页面,单击查看开发配置,查看MQTT设备接入的信息。

      新旧版公共实例和企业版实例、以及接入域名的更多信息,请参见查看实例终端节点

      product_key

      a18wP******

      设备认证信息。开发准备时,您获取的设备证书。

      您也可以在物联网平台设备的详情页查看设备的认证信息。

      device_name

      stm32l4_mbedtls_cat1

      device_secret

      uwMTmVAMnGGHaAkqmeDY6cHxxB******

  3. 调试运行。

    1. 单击编译按钮,编译工程文件。

    2. 单击下载按钮,将编译后的Demo可执行文件下载至MCU开发板。

    3. 单击运行,在MCU上,运行Demo可执行文件。

运行结果

  • 您可以在设备端,查看设备日志。

    • 以下日志说明设备已连接物联网平台。

      linkkit_init[2.222][LK-0313] MQTT user calls 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] establish mbedtls connection with server(host='a18wP******.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
      [7.311][LK-1000] success to establish mbedtls connection,(cost 18686 bytes in total, max used 21294 bytes)
      [7.500][LK-0313] MQTT connect success in 5286 ms
    • 以下日志为设备的时间同步功能。更多信息, 请参见NTP服务

      AIOT_MQTTEVT_CONNECT
      [7.544][LK-0309] pub: /ext/ntp/a18wP******/stm32l4_mbedtls_cat1/request
      [LK-030A] > 7B 22 64 65 76 69 63 65  53 65 6E 64 54 69 6D 65 | {"deviceSendTime
      [LK-030A] > 22 3A 22 37 35 33 39 22  7D                      | ":"7539"}
      [7.688][LK-0309] pub: /ext/ntp/a18wP******/stm32l4_mbedtls_cat1/response
      local time: 1620915828805, 2021/05/13-22:23:48:805
      heartbeat response
    • 以下为设备的物模型数据。更多信息,请参见什么是物模型

      [1620915829.788][LK-0309] pub: /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 7D | cope":"device"}}
      [1620915830.011][LK-0309] pub: /sys/a18wP******/stm32l4_mbedtls_cat1/thing/config/log/get_reply
      [1620915830.033][LK-1507] LOGPOST user log config arrived
      log switch state is: 1
      [1620915835.066][LK-0309] pub: /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","module":
      [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":"log in while
      [LK-030A] > 28 31 29 22 7D 5D 7D                             | (1)"}]}
      [1620915836.855][LK-0309] pub: /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] pub: /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 generic reply
      demo_dm_recv_handler, type = 0
      msg_id = 3, code = 200, data = {}, message = success
      [1620915837.311][LK-0309] pub: /sys/a18wP******/stm32l4_mbedtls_cat1/thing/event/Error/post_reply
      [1620915837.344][LK-0A08] DM recv generic reply
      demo_dm_recv_handler, type = 0
      msg_id = 4, code = 200, data = {}, message = success
  • 您可以在物联网平台控制台查看设备的状态和运行日志。

    • 左侧导航栏,选择设备管理 > 设备,找到设备,查看设备状态。设备状态显示为在线,则表示设备与物联网平台成功连接。设备状态

    • 在左侧导航栏,选择监控运维 > 日志服务,选择产品后,查看设备的日志信息。设备日志

  • 本页导读 (1)
文档反馈