1. 简介
在前篇中,按照IoT设备的系统框图,我们完成了除通讯协议与通讯模块以外的IoT LED的功能(下图绿色部分),实现了一个可以用按键和UART控制的小型“照明设备”。本篇将结合Wifi模块和通讯协议实现IoT功能。
2. 通讯协议与通讯模块
通讯协议使用的是BP-S,BP-S协议是BP协议的串口(Serial)辅助协议,旨在降低BP协议函数库对芯片的负载,从而使像C51、ATTiny之类的8位芯片也有能力实现。
通讯模块使用的是蜂信的BC2310。BC2310是基于乐鑫官方WIFI模块ESP-WROOM-02(搭载ESP8266EX)的一款最小系统开发板,使用原生SDK开发,旨在充分展示和利用ESP8266EX的自身硬件资源。
3. 系统设计
基于前篇的内容,本文将在ATMega4809中集成BPS协议,然后在BC2310中烧录官方例程,激活信号0xE002作为LED信号。关于BC2310的程序部分,此处不做赘述,具体参考蜂信官网。以下我们将详述ATMega4809的代码部分。
4. 软件配置
(1)在前篇中MCC配置的基础上,使能TC0的通道1中断,该中断主要用于实现软件定时器。
(2)移植libbps函数库,定义宏BPS_CPU8支持8位CPU,定义宏BPS_USE_STD使用标准库使BPS库更高效。
(3)softTimer_XXX为软件定时器API,支持最多3个定时器,本工程只用了1个,其超时回调函数为
void bpsTimeoutCb(void *argv, BPS_UINT16 argc)
{
setNetState(BPS_FALSE);
}
用于记录BPS通信超时。软件定时器内容主要参考自
https://blog.csdn.net/qq_26904271/article/details/83833168。
5. 结果演示
APP可以远程控制LED,ATMega4809按键信息也可以同步上传到APP。
最后附上工程压缩包。
繁絮至此,但求明细。
IoTLed工程
引用: freebsder 发表于 2019-10-31 09:03 可以可以,花式点灯,越点越有姿势。
见笑见笑,捣腾着玩罢了