玩转物联网-4G模块如何快速将数据上传到OneNET平台

1 前言

        OneNET是由中国移动打造的物联网开放平台,在物联网应用和真实设备之间搭建高效、稳定安全的应用平台。该平台支持适配各种网络环境和协议类型,可实现各种传感器和智能硬件的快速接提供丰富的 API和应用模板以支撑各类行业应用和智能硬件的开发。

        FS800DTU核心板是基于飞思创4G Cat.1模组设计的,上面集成了DC-DC、SIM卡、天线和串口电平转换电路,支持5-16V供电输入,我们不需要额外的设计,接上天线、SIM卡和串口就可以使用。FS800DTU支持4路Socket,支持TCP/UDP/HTTP/MQTT等通信协议,适配了阿里云、OneNET等物联网平台。我们也不需要一条一条发AT指令配置,出厂自带YunDTU固件,通过飞思创提供的配置工具直接填写参数即可,连上服务器后数据直接透传,小白也能快速上手。

2 环境搭建

2.1 硬件准备

  1. FS800DTU核心板(型号:FS-MCore-F8A2M1)。
  2. 4G物联卡一张,移动,联通,电信均可。
  3. USB转TTL模块,包括4根杜邦线。
  4. 4G天线一根。

2.2 软件准备

        SerialPort_To_Network_ConfigTools参数配置软件:

2.3 硬件连接

        将天线,SIM卡装到4G模块上(按照模块上的插卡方向操作),按图示方式接好线,注意串口是交叉连接:

2.4 检查驱动

        打开电脑的设备管理器,查看是否有CH340驱动,图中是已经装好驱动的,如果在端口处没有该设备,可以在产品资料包里找到该驱动并安装

3 OneNETlOT云平台设备创建

3.1 账号创建

        (1)进入OneNET中国移动物联网开放平台OneNET - 中国移动物联网开放平台,点击登录,输入账号和密码,没有的小伙伴可以注册一个:

        (2)点击开发者中心:

3.2 创建产品

        点击产品开发->点击创建产品->选择产品品类->选择设备接入->自定义产品名称->选择所属城市->选择直连设备->选择MQTT协议->选择OneJson->选择蜂窝->选择标准方案->点击确定:

3.3 设置物模型

        (1)产品开发->添加自定义功能点->选择属性类型->自定义产品名称->自定义标识符->自定义数据类型->定义取值范围->自定义步长->定义单位->读写类型->点击新增(添加湿度按照该流程即可):

        (2)点击保存:

3.4 添加设备

        设备管理->添加设备->选择刚刚创建的设备->自定义设备名称->点击确定:

3.5 获取设备连接信息

        选择设备管理->记录设备名称设备密钥产品ID

        选择产品开发->选择刚创建的产品->选择设备开发->选择Topic管理->选择物模型Topic->将属性上报的发布和订阅记录下来(将里面的{device-name}这一小段替换为设备的名称,我这里是864127063057190):

        至此,关于OneNET的设备就已经创建完成了。

4 连接OneNET

4.1 打开配置工具读取基本信息

        在资料包里双击打开SerialPort_To_Network_ConfigTools参数配置软件->选择设备对应的端口->点击同步产品信息:

        点击读取基本信息,查看基本信息是否如图完整->点击查询运行状态,查看是否注册上网络以及设备运行状态->点击查询信号强度,查看设备信号强度是否正常。(0-7很差,8-13能注上网,14-18较差,19-25正常,26-31优秀,99异常):

4.2 设置模块连接参数并进行数据交互

        (1)选择CLOUD->选择ONENET和用户注册->对应填写第三章记录的连接参数->点击设置所有参数,下面等待连接就行了

        (2)等待设备主动连OneNET出现FS@MQTT CONNECTED:1表示连接成功,如果出现其他的返回值说明有问题,可以根据资料中的手册找到对应返回值代表的含义,或者联系飞思创工作人员协助解决。设备端显示连接成功的信息之后可以回到OneNET平台查看设备上线情况,如果没有显示在线就刷新一下页面,这样就会出现“在线”的字样:

        (3)接下来就可以上报物模型属性数据了,OneNET - 中国移动物联网开放平台在该文档中找到“设备属性/事件“部分,将JSON格式的数据复制下来,然后将参数修改为自己的参数,最后点击发送。

{
  "id": "123",
  "version": "1.0",
  "params": {
    "Temp": {   //修改为产品对应的标识符(我这里是Temp)
      "value": 66  //修改自定义键值
    },
    "Humi": {    //修改为产品对应的标识符(我这里是Humi)
      "value": 23  //修改自定义键值
    }
  }
}

        当服务端响应内容的code为200,表示发送成功,此时可以来到设备的属性页面进行查看。如果发送失败,可以根据云端响应错误码排查问题。

5 总结

        本篇文章讲述OneNET平台和FS800DTU的基本信息和获取OneNET连接参数的操作步骤,并介绍了使用FS800DTU接入OneNET平台实现物模型主题通信的方法,感谢大家的观看,对本文章有任何不清楚的地方或者想对产品有更多的了解可以私信或者在评论区留言,我们看到会及时回复您!

<think>好的,我需要帮用户解决如何使用STM32F103C8T6和A7670C-4G模块通过MQTT协议连接到OneNet平台的问题。首先,我得先回顾一下已有的参考资料,虽然原来的引用是关于ESP8266的,但可能有些步骤是通用的,比如OneNet平台的配置和MQTT协议的基本使用。 用户的问题涉及到A7670C-4G模块,这个模块和ESP8266不同,是4G模块,所以在硬件连接和AT指令上可能有差异。我需要先确认A7670C的通信接口,通常应该是UART,所以STM32可能需要通过串口发送AT指令来控制它。 接下来,用户需要的是连接OneNet的MQTT通信。首先,必须确保A7670C模块能够连接到互联网,可能需要配置APN,因为4G模块需要设置运营商的APN才能上网。然后,建立TCP连接,连接到OneNet的MQTT服务器地址和端口。之后,使用MQTT协议进行连接、订阅主题和发布消息。 我需要参考之前ESP8266的流程,但调整到4G模块的步骤。例如,初始化部分可能类似,但AT指令不同。比如,设置APN的AT指令可能是AT+CGDCONT=1,"IP","APN名称"。然后,建立TCP连接可能需要使用AT+QIOPEN指令,发送MQTT连接报文等。 另外,OneNet平台上的设备创建和MQTT的参数(如产品ID、设备ID、鉴权信息)是必须正确配置的。用户可能需要生成正确的MQTT连接参数,比如clientId、username和password,这些通常基于OneNet的产品信息。 代码方面,STM32需要处理串口通信,发送AT指令并解析响应。可能需要编写状态机来处理不同的步骤,比如初始化模块、连接网络、建立MQTT连接、订阅主题、发布数据等。同时,需要处理错误情况,比如重试机制。 还需要注意A7670C模块的MQTT支持情况,有些模块可能内置MQTT协议栈,可以直接发送相关AT指令,而有些可能需要通过TCP发送原始的MQTT报文。根据模块的文档,可能需要不同的处理方式。 最后,测试步骤包括验证模块是否成功注册到网络,TCP连接是否建立,MQTT连接是否成功,以及数据是否能正确上传和接收命令。可能需要使用串口调试工具来查看模块的响应,确保每一步都正确执行。 可能遇到的问题包括AT指令格式错误、网络连接失败、MQTT参数错误等,需要逐一排查。另外,电源稳定性对4G模块也很重要,需要确保供电充足,避免模块重启或断开连接。 总结下来,步骤大致是硬件连接、模块初始化、网络配置、MQTT连接、数据通信,以及平台配置和测试。需要结合A7670C的特定AT指令和OneNet的要求来调整原有ESP8266的流程。</think>以下是使用STM32F103C8T6与A7670C-4G模块通过MQTT协议接入OneNet平台的实现指南: ### 一、硬件连接 1. **模块接线** - A7670C的UART_TX → STM32的USART2_RX (PA3) - A7670C的UART_RX → STM32的USART2_TX (PA2) - A7670C的VCC → 3.7-4.2V独立电源(建议使用锂电池供电) - A7670C的GND → 共地连接 - 注意:4G模块需插入SIM卡并确保已开通数据服务 2. **状态指示** - 连接STM32的GPIO至A7670C的NET_STATUS引脚,用于监测网络状态 ### 二、OneNet平台配置 1. 创建新产品(协议选择MQTT旧版) 2. 添加设备并记录以下参数: - `ProductID`、`DeviceID`、`API-Key` - MQTT接入地址:`mqtt.heclouds.com`,端口:`1883` ### 三、STM32开发流程 #### 1. 模块初始化 ```c // 初始化USART2与A7670C通信 USART_InitTypeDef uart; uart.BaudRate = 115200; uart.Mode = USART_MODE_TX_RX; HAL_UART_Init(&huart2); // 发送基础AT指令 Send_AT_Command("AT\r\n", 100); // 测试通信 Send_AT_Command("AT+CPIN?\r\n", 500); // 检测SIM卡 Send_AT_Command("AT+CSQ\r\n", 500); // 信号强度检测 ``` #### 2. 网络连接配置 ```c // 设置APN(以中国移动为例) Send_AT_Command("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n", 1000); // 激活移动场景 Send_AT_Command("AT+QIACT=1\r\n", 3000); ``` #### 3. MQTT连接建立 ```c // 创建MQTT客户端 Send_AT_Command("AT+QMTCFG=\"recv/mode\",0,0,1\r\n", 500); // 启用异步消息 // 连接OneNet服务器 char mqtt_connect[128]; sprintf(mqtt_connect, "AT+QMTOPEN=0,\"mqtt.heclouds.com\",1883\r\n"); Send_AT_Command(mqtt_connect, 5000); // MQTT登录(需替换实际参数) char mqtt_login[256]; sprintf(mqtt_login, "AT+QMTCONN=0,\"设备ID\",\"产品ID\",\"鉴权信息\"\r\n"); Send_AT_Command(mqtt_login, 3000); ``` #### 4. 数据通信实现 ```c // 订阅主题 Send_AT_Command("AT+QMTSUB=0,1,\"$sys/产品ID/设备ID/thing/property/set\",1\r\n", 1000); // 发布数据示例 char payload[128]; sprintf(payload, "{\"temperature\":25.6}"); char pub_cmd[256]; sprintf(pub_cmd, "AT+QMTPUB=0,0,0,0,\"$sys/产品ID/设备ID/thing/property/post\"\r\n"); HAL_UART_Transmit(&huart2, (uint8_t*)pub_cmd, strlen(pub_cmd), 1000); HAL_UART_Transmit(&huart2, (uint8_t*)payload, strlen(payload), 1000); ``` ### 四、关键调试要点 1. **AT指令响应处理** 需实现状态机解析`+QMTCONNACK`、`+QMTRECV`等事件响应 2. **数据格式验证** OneNet要求JSON数据格式严格符合规范,建议使用`cJSON`库构建数据包 3. **心跳机制** 需定时发送`AT+QMTPING=0`保持长连接(建议间隔120秒) ### 五、典型问题解决方案 1. **连接超时** - 检查APN配置是否匹配SIM卡运营商 - 确认OneNet设备三元组信息正确性 2. **数据上报失败** - 使用网络调试工具抓包验证MQTT报文格式 - 检查JSON数据中是否包含非法字符 3. **模块异常重启** - 加强电源滤波电路(推荐增加1000μF电容) - 检查天线连接质量(建议测试场强>20dBm) 该实现方案基于A7670C的MQTT透传模式,实际开发时请参照移远官方《A76xx系列AT指令手册》[^2]进行协议栈参数优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值