一、前言
最近在做一个小项目——宠物/儿童智能穿戴防丢失设备,这个项目主要是通过stm32单片机实时接收处理GPS模块(ATGM332D定位模组)数据信号,并且能够通过蓝牙接收相关信息,并且丢失后,能够通过4G模块或者短信模块将GPS的定位数据发送到华为云,当然也可以发送到其他云平台。
这篇文章是4G模块连接华为云,之前我写过一篇WIFI模块连接华为云的文章,链接如下,讲解的更加详细,重复的部分我就不写了。
esp8266WiFi模块通过MQTT连接华为云_esp mqtt 透传_洲洲不是州州的博客-CSDN博客
做这个项目的时候,让我联想到了以前在网上看到别人做的——基于4G模块取快递的小车,可以实现在家操控小车超远距离控制小车,其实只要解决了4G模块的通信问题,好像我也可以复现试一试,后面有时间了我再做一个这个项目。
这里我有个疑问?刚开始我尝试过,在这个4G模块可以插上流量卡和SIM电话卡进行与基站的通信,我用的这个4G模块好像不能发送短信?很奇怪,为什么现在有的4G模块既可以进行4G网络通信也可以发送短信,我看了一下这个模块手册,我这个模块好像只能进行网络通信。有明白的读者可以帮我解答一下。
因为这篇文章重点是解决4G模块连接华为云的问题,什么GPS通信、蓝牙模块什么的我这里就不写了,反正都是串口通信很简单,没必要浪费时间写这些,这里着重讲一下我调试4G模块的过程。
由于是4G模块,肯定需要访问公网,不像我前面写的一篇文章中esp8266 WIFI模块既可以连接公网又可以连接私有网络(在同一个局域网下面),因为以前我在使用WIFI模块时,经常在同一个局域网下面,用网络调试助手就能查看接收到的数据。 所以刚开始,我尝试将底层数据通过4G模块上传到公网ip上,然后又去下载花生壳,尝试进行内网穿透,虽然后面也调试成功了,但是太麻烦了。刚开始没想起来还有各种各样云平台,简直是太方便了。
最终将数据上传到云端之后,想着能在手机端APP上实时发送和接收来自云端的信息,准备在微信小程序里或者APP上查看数据,奈何博主不会Java程序,不会自己做界面,还是太菜了,唉,所以就放弃了做APP界面的想法。
二、EC600N模块使用
1.透传模式
2.非透传模式
AT
指令处理。用户需要发送数据给公网服务器时,必须先发送数据发送指 令,发送完成后等收到正确返回消息才能发送数据,数据发送结束后模块将继续工作在 AT
指令模式。 模块收到公网服务器的数据后会将数据直接转发给用户或者给用户发送提示信息,等待用户使用 AT 指令读取模块收到的服务器发送过来的数据。
注意:
3、华为云的MQTT使用教程:
三、具体连接步骤
1、初始化检测
握手测试 正常返回:OK
AT
查询信号质量 正常返回:+CSQ:2-30,99 OK
AT+CSQ
检测SIM卡是否插入 正常返回:+CPIN: READY OK
AT+CPIN?
查询网络的注册状态 正常返回: +CREG: 1,1 OK
AT+CREG?
查询网络附着状态 正常返回: +CGATT: 1 OK
AT+CGATT?
查询模块IMEI
AT+GSN
查询卡号ICCID
AT+QCCID
2、打开MQTT客户端网络
当上一步初始化检测通过后,然后注册好华为云之后,4G模块就可以连接云平台了。
格式:
AT+QMTOPEN=0,"自己的云地址",接入端口号
示例:
AT+QMTOPEN=0,"5asddf42f3ad.st1.iotda-device.cn-north-4.myhuaweicloud.com",1883
这里的1883表示是MQTT
3、创建产品
4、创建模型
当注册好产品后,就创建该产品的模型,在模型里面添加服务,每个服务下面新增属性,这个属性就是后面我们上传的数据了,后面我们上传数据时格式,要根据这个属性格式来。
5、注册设备
6、连接客户端到MQTT服务器
这一步特别容易出现连接不成功的现象,博主在自己连接过程中,因为各种原因导致连接失败,这时候需要检查自己云平台是否在运行状态,还需要仔细检查连接命令参数是否有误。
格式:
AT+QMTCONN=0,"ClientId","Username","Password"
示例:
AT+QMTCONN=0,"65681c99e585c81787ad402c1_ec600n_device_0_0_2023112512","67856c99e585c81787ad402c1_ec600n_device","855262821333124bf520f4674ae18d4dd2709239dddfda27c60e12c71725d90f"
7、发布主题消息
这一步可以参考我之前写过的这篇文章:esp8266WiFi模块通过MQTT连接华为云_esp mqtt 透传_洲洲不是州州的博客-CSDN博客
具体命令如下:
格式:
AT+QMTPUB=0,0,0,0,"$oc/devices/设备ID/sys/properties/report"
示例:
AT+QMTPUB=0,0,0,0,"$oc/devices/6561c99e585c81787ad402c1_ec600n_device/sys/properties/report"
8、发送消息
这里消息格式的json格式的,这个是我们之前创建设备时自己选择的。
具体命令如下:
格式:
{"services": [{"service_id": "之前创建的服务名称","properties": {"服务的属性1": 57,"服务的属性2": 60},"event_time":"20211112T120000Z"}]}
示例:
{"services": [{"service_id": "Data","properties": {"value1": 57,"value2": 60},"event_time":"20211112T120000Z"}]}
注意:发送完消息之后,一定要发送内容结束符1A ,否则云平台显示不了上传的数据。
9、断开与MQTT服务器的连接
命令如下:
AT+QMTDISC=0
四、stm32处理串口数据
这里就不用写太多了,主要想法是采用串口空闲中断+结构体处理数据,具体项目源码可私信我获取。
原文地址:https://blog.csdn.net/qq_41834692/article/details/134619896
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_27736.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!