zoukankan      html  css  js  c++  java
  • 涂鸦开发-单片机+涂鸦模组开发+OTA

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

    提示

    我使用的模组为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文件

    $KARMARMCCinfromelf.exe --bin --output=binuser.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.这个函数里面也对比拷贝下

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

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

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

    让他在后台设置下.

    警示:远程升级注意事项

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

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

    这个很有必要!

    这个很有必要!

    这个很有必要!

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

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

    定时器里面

    主函数

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

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

  • 相关阅读:
    Sqlite数据库sqlite3命令
    cerr
    include 尖括号和双引号
    C程序存储空间布局——各数据段的内存位置
    贪心算法
    CodeBlocks
    O(n)是什么
    微软公司面试题
    CSS3---结构性伪类选择器—not
    CSS3---结构性伪类选择器-root
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14646436.html
Copyright © 2011-2022 走看看