ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

涂鸦开发-单片机+涂鸦模组开发+OTA

2021-04-12 09:05:02  阅读:211  来源: 互联网

标签:bin 涂鸦 模组 OTA 单片机 用户程序 数据


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

<iframe frameborder="0" height="500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/tuya" width="100%"></iframe>

 

提示

我使用的模组为WBR3     Wi-Fi&Bluetooth

单片机使用的STM32

假设使用串口2和模组通信

开始

1.下载单片机数据解析发送包

 

 

 

 

 

 

2.把上面下载的mcu_sdk文件夹拷贝到自己的工程

 

 

3.添加到工程

 

 

4.编译一下工程

 

 

 

变量定义的错误

1.这个错误是因为变量没有定义到开始的位置

 

 

 

2.修订

 

 

 

修改 uart_receive_input 函数报错

1.把uart_receive_input函数放到串口2接收中断里面,形参是串口2接收的数据

 

 

 

 

2.包含 wifi.h头文件

 

 

 

 

3.把 uart_receive_input 函数放到串口接收中断

 

 

 

 

 

3.屏蔽

 

 

4.编译下

 

关于 ENABLE  的 警告

 

 

这是因为涂鸦的SDK里面也有这个定义

直接在wifi.h里面屏蔽掉ENABLE和DISENABLE的定义

然后加上单片机的头文件

 

 

 

关于 "DP_TYPE_FAULT" is undefined

1.涂鸦做版本替代的时候弄错了

 

 

2.把DP_TYPE_FAULT 改为 DP_TYPE_BITMAP 就可以

 

 

 

屏蔽掉一次性缓存多个字节的错误

这个地方意思是如果你的单片机一次性缓存多个字节

就调用这个函数,咱一开始已经使用uart_receive_input  接收了

所以这个屏蔽就可以

 

 

 

 

这个错误

 

 

 

修改后

 

 

 

 

 

这个错误

 

 

 

修改后

 

 

 

 

 

这个错误

 

 

 

修改

 

 

 

这个错误先屏蔽,后面会详细说明

 

 

 

关于WiFi测试功能错误

 

 

1.关闭这个功能就可以

 

 

 

2.屏蔽

 

 

 

按键长按启用配网绑定

mcu_set_wifi_mode(SMART_CONFIG);

注意里面有个 SmartConfigStartFlag = 1;

这个和指示灯配合使用.

 

 

根据模组状态改变指示灯状态

 

 

 

 

 

模组远程升级

1.打开远程升级

SUPPORT_MCU_FIRM_UPDATE

 

 

2.编译之后,屏蔽掉这个错误即可

 

 

 

3.我准备了一份 操作flash的文件,用户拷贝到自己的工程,然后根据自己的项目更改

 

 

4.在接收更新数据里面写上下面的程序

 

5.用户程序还需要清除升级标记

 

 

 

 

 

 

 

6.打开BootLoader

 

 

7.下面的地方要和用户程序保持一致

 

 

8.把BootLoader下载到单片机

 

 

 

 

9.根据打印的信息调整用户程序

 

10. 把用户程序下载到单片机

注:为了不擦除原先下载的BootLoader程序,需要选择只擦除使用的部分

 

 

11.如果没有下载器,使用串口下载,可按照下面的步骤下载

1.用记事本打开BootLoader程序的hex文件

 

 

 

 

 

 

2.用记事本打开用户程序的hex文件

 

 

 

3.删除用户程序的hex数据的第一行和最后一行

 

 

 

 

 

 

4.最终用户程序

 

 

 

 

 

 

 

5.复制修改后的用户程序的hex数据(全部复制)

 

 

 

6.把复制的数据粘贴到BootLoader文件的下面的位置

 

 

 

 

7.粘贴后的样子

 

 

 

 

 

 

8.然后把组合后的hex文件下载到单片机里面即可

 

 

 

12.如果正常运行了用户程序,再接着下面的步骤!

 

 

 

13.修改用户程序的 版本号

 

 

 

14.配置生成bin文件

$K\ARM\ARMCC\bin\fromelf.exe --bin --output=bin\user.bin !L

 

 

15.编译之后会在工程目录的bin文件夹生成bin文件

 

 

 

 

16.在涂鸦平台上选择新增自定义固件

 

 

 

17.按照自己的填写

 

 

18.选择OTA升级

 

14.新增固件版本

 

 

 

 

19.固件版本和用户程序里面保持一致,上传用户程序的bin文件

 

 

 

 

 

 

20.点击验证固件

 

 

 

 

21.使用涂鸦APP绑定模组!点击设备信息,查看设备ID

 

 

 

 

 

 

22.把设备ID添加测试

 

 

 

 

 

 

 

23.给模组断电上电,重新打开APP,会看到APP提示升级

 

 

 

 

 

 

 

 

 

数据接收处理和上报

1.假设返回灯的开关状态,假设0是关,1是开

注意这个里面是上报所有数据的地方,默认是模组自己去调用这个函数,来获取所有数据.

 

 

自己还需要调用 mcu_dp_bool_update这个函数 在灯改变的时候上报数据

注意:其它的数据也需要这样子处理!!!!

 

 

2.接收处理APP发送的控制灯命令

注:只要接收到相应的控制指令就会进入相应的控制函数,里面的具体功能自己实现

 

 

3.上报string类型的数据

这种数据上报还需要上报string数据长度

 

 

4.string类型数据接收

 

 

关于获取时间

1.有两个时间,一个是格林时间,一个是当地区时的时间

注:如果要销往国外,建议使用当地区时时间

 

 

 

 

 

2.打开本地区时时间

 

 

3.编译

在此函数里面获取时间

 

 

4.只有发送命令的时候才能获取

 

 

5.补充知识点-时间转换为时间戳

 

 

 

 

 

 

 

6.补充知识点-时间戳转时间

 

 

 

假设后台增加或者修改了功能

1.重新下载SDK

 

2.把最新的SDK的这个地方新的程序段对比修改或者拷贝到现在的源码里面的这个地方

 

 

3.这个地方也是对比修改或者拷贝下

 

 

 

4.下面的接收处理也对比修改或拷贝过来

 

 

5.这个函数里面也对比拷贝下

 

 

 

 

警示:设备数据上报相同的数据问题

如果模组对比了下和以前数据一样,则模组就不会上报相同的数据.

如果需要让后台接收这种数据,需要和涂鸦的技术那边说一下

让他在后台设置下.

 

 

 

警示:远程升级注意事项

建议在模组升级过程中不执行其它程序

建议用户用一个变量控制下

这个很有必要!

这个很有必要!

这个很有必要!

推荐的方式:定义一个升级标志变量,一个累加变量

在升级时设置升级标志置一,同时清除升级累加变量

 

 

定时器里面

 

 

主函数

 

 

 

 

 

如果需要添加自己的打印日志程序

 

 

 

注意:最好是加个环形队列用中断发送,这样子不耽误整个程序运行

 

标签:bin,涂鸦,模组,OTA,单片机,用户程序,数据
来源: https://www.cnblogs.com/yangfengwu/p/14646436.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有