GY001-带RS485或CAN总线的WiFi+4G摄像头拍照图传模块-整板测试-外部触发或阿里云物联网平台控制拍照上传到阿里云对象存储OSS,阿里云物联网平台OTA升级程序,阿里云物联网平台动态注册设备

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

说明

这节实现的功能是外部接口触发拍照, 然后把图片上传到阿里云OSS;

另外的功能是设备连接阿里云物联网平台, 可以通过阿里云物联网平台发送拍照命令给设备, ;

设备接收到命令以后拍照上传到阿里云的OSS; 同时支持使用阿里云物联网平台OTA升级程序;

测试

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

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

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

image

 

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

image

 

3,修改为自己的阿里云物联网平台上的参数(如果只是发送图片到阿里云OSS,不使用阿里云物联网平台可以不用填写)

image

 

image

 

4,修改为自己的OSS参数

image

 

编译下载测试(远离补光灯,远离补光灯,远离补光灯)

1,点击这个进行编译

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

 

2,编译下载程序,在日志窗口打印下面的日志说明可以了

image

 

image

可以在平台上看到设备在线

image

 

3,用户可以短接一下这两个引脚, 设备就会启动执行拍照

image

 

也可以在平台上发布消息给设备让设备拍照

image

 

image

 

{"cmd":"take","delay":0,"count":3,"interval":1000,"giveup":6}

delay//设备启动以后延迟多少时间进行拍照(ms)
count//拍照次数
interval//连拍时的时间间隔(ms)
giveup//第一次采集摄像头图片时舍弃前面的多少张(刚启动采集时前几张不稳定)

image

 

4,可以在日志上看到设备执行状态

image

 

可以在阿里云对象存储oss上看到图片

image

 

测试OTA

1,修改下程序版本号,原先是0.0.0, 改为0.0.1

GY001_0000_0.0.0:  GY001 代表板子型号; 中间的0000代表硬件版本,字符串随意规定; 最后的0.0.0 代表软件版本

image

 

 

2,然后编译

image

3,编译完成以后固件是这个

image

 

image

 

4,添加升级包

4.选择添加模块(使用默认的好像不能主动查询到固件信息)

升级包名称:随意写,  所属产品:选择您当前设备所属的产品

 

5.模块名称,这个是和单片机程序设置的型号对应的

image

image

 

7.选择咱刚才添加的升级包模块,版本号填写用户程序设置的版本号

image

 

5.上传固件

image

 

6.先选择不需要验证

验证的话需要先让其中一个设备远程升级验证下.不过实际产品应用尽量选择验证!

这个验证呢后面会说,咱先快速的使用起来.

image

 

 

7.点击批量升级

 

8.选择动态升级

注意,待升级版本号那里之所以是0.0.0 是因为咱设备连上服务器以后会上报了自己的版本号

image

 

 

 

 

9.下面这些选项,按照自己的需求更改

 

10.观察下串口日志

image

image

image

 

测试带验证的

1,修改版本0.0.2 然后编译下

image

 

2,添加升级包(其它步骤和上面一样,只是选择需要平台验证)

image

 

3,选择验证

image

 

image

 设备就会开始升级,并升级完成

image

 

 然后后续步骤就可以和上面一样点击批量升级升级全部设备; 建议每次更改程序以后都先使用自己的设备测试一下升级,然后再批量进行升级其它设备;

image

 

程序说明(OTA)

1,设备连接上服务器以后先上报软件版本

image

image

image

 

2,接收服务器返回的数据,有升级数据以后执行升级

image

image

 

 其实就是把固件url下载地址flash记录一下,然后重启;

image

 

3,重启以后获取url

image

image

 

下面有个硬件版本设置, 列如: 同一个板子,也是同一个项目,但是外接的传感器不一样, 烧录程序的时候就可以设置不同的硬件版本,

然后程序里面判断硬件版本号执行不同的采集程序.

image

 

4,等待联网成功执行更新

image

 

可以在回调函数里面获取升级状态

image

 

5,升级程序默认是提供的重启以后升级, 也可以在当前运行程序中升级;

image

 

 

程序说明(连接阿里云物联网平台)

1,初始化

image 

 

2,在mqtt回调函数里订阅主题,发布一些消息, 把接收的数据发送到缓存

image

 

image

 

3,提取缓存数据, 根据topic进行不同的处理

image

 

image

 

程序说明(上传图片到阿里云OSS)

1,初始化

image

image

 

2,等获取拍照命令

image

 

 注:这个拍照命令是从外部端子触发或者平台数据发过来的

image

image

 

 

3,后面就是执行拍照, 还有发送一些数据给物联网平台

image

/***发布消息******/
            int len = sprintf(struct_aliyun_mqtt_device.mqtt_send_buff, "/%s/%s/user/update", struct_aliyun_mqtt_device.aliyun_product_key, struct_aliyun_mqtt_device.aliyun_device_name);//topic
            struct_aliyun_mqtt_device.mqtt_send_buff[len]=0;
            //发送的数据, 按照code 来解析, 后面的是具体的消息字符串和消息id
            len = sprintf(&struct_aliyun_mqtt_device.mqtt_send_buff[mqtt_data_topic_len],"{\"code\":%d,\"msg\",\"%s\",\"msg_id\",%d}",201,"take",0);//开始执行拍照
            struct_aliyun_mqtt_device.mqtt_send_buff[mqtt_data_topic_len+len]=0;

            int msg_id = esp_mqtt_client_publish(struct_aliyun_mqtt_device.mqtt_handle, struct_aliyun_mqtt_device.mqtt_send_buff, &struct_aliyun_mqtt_device.mqtt_send_buff[mqtt_data_topic_len], len, 0, 0);

这里使用的自定义topic发送了执行状态, 我规定的是  code 是对应的执行到哪一步了; 后面的 msg 和 msg_id 是为了提供更详细些的描述

 

4,发送物模型数据, 地理位置和电池电压, 这是这边添加的物模型数据

地理位置不能显示在地图上,还不知道为啥,只能显示上报的数据;

image

 

需要在产品里面添加物模型-添加地理位置

image

image

 

image

 

 

image

 

 

需要在产品里面添加物模型-添加电池电压

image

 

image

 

image

 

然后就可以在平台上看到设备上报的数据

image

 

 

5,把图片发送到阿里云对象存储OSS

image

 

6,发送完以后还使用自定义topic上报了图片存储的路径

实际项目中后台需要知道上报的图片路径,后台就可以从oss获取图片去处理

image

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

posted on 2026-05-29 15:06  杨奉武  阅读(36)  评论(0)    收藏  举报

导航

支付宝 QQ群