当前位置: 首页 > news >正文

GY001-WiFiBLE+4G转CAN总线或RS485中高速通信 - 4G通信CAN数据发送到MQTT, GPS上传数据, 1ms一帧测试

GY001-WiFi&BLE+4G转CAN总线或RS485中高速通信 - 4G通信CAN数据发送到MQTT, GPS上传数据, 1ms一帧测试

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/product/gy001_can_485.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

说明

这节的功能是把接收的CAN数据发送到MQTT, 从MQTT接收的数据转发到CAN总线;

同时设备定时上报经纬度信息;

最后测试4G转CAN总线的1毫秒一帧通信测试;

测试

1,设备准备工作

安装上4G天线;

如果支持GPS定位的设备需要连接GPS天线, 天线记得需要放到室外;

B/H接CAN总线 H;  A/L接CAN总线 L;

image

 

2,把这节的工程放到开发环境下面的目录里面并解压!

把这节的工程放到开发环境下面的目录里面并解压!

把这节的工程放到开发环境下面的目录里面并解压!

image

3,然后右键选择通过 Code 打开

image

 

4,修改为自己服务器的IP地址和端口号,和CAN总线通信波特率

image

image

 

5,点击这个进行编译

提示: 第一次编译时间有点长, 编译完这一次后面再编译就快了

image

 

6,编译下载程序, 然后点击查看日志窗口

image

 

7, 4G联网成功, 并获取到了网络时间说明可以了

image

联网成功以后,设备的NET指示灯会循环  灭500ms, 然后快闪3下

image

 

8, 打开MQTT调试助手

image

 

image

 

这边设备的IMEI是 868408061805590

这边设置的设备订阅的主题是:  user/{设备的IMEI}/can

这边设置的设备发布的主题是:  device/{设备的IMEI}/can

设备的IMEI要根据自己的填写, 可以根据外壳二维码获取, 或者在程序日志里面,ctrl+F 搜索  mqtt_client_id

image

 

填写好参数以后,先点击连接, 再点击订阅

image

 

9, 测试下设备接收到CAN数据以后发送到MQTT

image

01 00 00 0F FF FF 08 00 00 00 00 00 00 00 00

01 代表扩展帧, 如果是标准帧则是00

00 代表数据帧, 如果是遥控帧则是01

00 0F FF FF  是帧ID

08 代表CAN数据有效数据长度

00 00 00 00 00 00 00 00  是固定8字节的数据

 

10, 测试下每隔1ms使用TCP服务器发送数据给设备

格式: 01 00 1F FF FF FF 08 01 02 03 04 05 06 07 08

我这边就选择1ms定时发, 持续30多秒

image

发送一段时间暂停,可以看到服务器上发送的数据个数和设备接收以后发到CAN总线的数据个数

 

image

 

 

11, 获取GPS数据需要订阅  device/{设备的IMEI}/location

image

 

54 A5 E3 42 D2 10 B6 41

54  A5 E3 42  是经度,113.xxxxxx(低位在前,高位在后)   这个是根据IEEE754规约  知识点参考链接 https://www.cnblogs.com/yangfengwu/p/12111552.html

D2 10 B6 41 是纬度,22.xxxxxx (低位在前,高位在后)

 

程序说明

1,CAN初始化和创建CAN数据接收任务

image

2,在CAN接收任务中把CAN数据发送到MQTT

image

3,等待4G联网成功以后,初始化MQTT

image

 

image

MQTT接收的数据发送到数据缓存

image

 

4,从缓存中提取mqtt接收的数据, 通过CAN发送

image

 

image

  

5,发送GPS数据是在这里

image

 

image

 

关于OTA升级

1,更改固件信息是在这里

image

 

GY001 代表板子型号; 中间的0000代表硬件版本,字符串随意规定; 最后的0.0.0 代表软件版本,总长度不得超过32字节

2,咱编译以后会生成build文件夹, 然后OTA升级文件是这个

image

 

3,升级方式1

可以直接在这里写上升级文件的http下载地址:  http://xxxx/xxxx/audioCamera.bin

image

 

程序每次启动以后如果版本不一样会自动升级

image

 

image

 

image

 

image

 

4,升级方式2

用户可以把升级url地址调用下面的方式存储,然后软重启即可

软重启建议使用 sleep_time_gpio_wakeup(1);  这样不会影响内部时钟

image

 

5,升级方式3

如果客户想在程序运行中不重启直接升级, 客户可以直接把升级地址赋值给  ota_url

然后调用  

if(struct_ota_task.runing == 0){

gy_ota_task_create(&struct_ota_task);

}

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.