本帖最后由 Ansersion 于 2019-6-22 11:42 编辑
物联网智能灯
一、简介:
物理网智能灯可以通过因特网实时同步数据到用户的手机终端,用户也可以通过手机终端远程操控智能灯。
二、系统描述:
智能灯主要由3部分组成:
- GD32E231作为主控,从而可以控制外设;
- ESP8266作为Wifi通信模块,负责透传主控和BcServer服务器之间的数据,和GD32E231通过串口实现数据交互;
- LED灯,也就是外设,由GD32E231使用GPIO控制。
智能灯和安卓APP使用Beecom协议(简称BC协议)通过BcServer服务器相互传输数据。
三、GD32E231控制逻辑描述:
GD32E231使用状态机实现5种状态,说明如下:
- CONNECT
使用BC协议的CONNECT命令向BcServer服务器发起连接。如果成功则表示已经对接上BcServer服务器,然后进入“REPORT校验码”状态;否则等待一段时间,继续发起CONNECT命令。
- REPORT校验码
使用BC协议的REPORT命令向BcServer服务器发送信号表校验码。如果成功则表示BcServer服务器已经保存了该设备的信号表,然后进入“REPORT所有信号值”状态;否则进入“REPORT信号表”状态。
- REPORT信号表
使用BC协议的REPORT命令向BcServer服务器发送设备信号表。如果成功则表示BcServer服务器已经接收并保存了该设备信号表,然后进入“REPORT所有信号值”状态;否则回到“CONNECT状态”。
- REPORT所有信号值
使用BC协议的REPORT命令向BcServer服务器发送所有信号值(即LED等状态)。如果成功则表示BcServer服务器已经收到并同步了该设备信号值,然后进入“工作循环”状态;否则回到“CONNECT状态”。
- 工作循环
“工作循环”状态下,GD32E231一直保持空闲,除非接收到以下事件:
- 按键触发外部中断事件:
该事件触发后,GD32E231向BcServer服务器上传最新LED信号值。
- 接收到网络数据事件(即串口中断)
该事件触发后,GD32E231将解析网络数据,并相应更新本地参数或者进行相关操作,同时将命令发送超时时间清零。
- 命令发送超时事件
该事件触发后,表示GD32E231发送的网络数据包无响应,则回到“CONNECT状态”。
- 保活超时事件
该事件触发后,GD32E231必须向BcServer服务器发送BC协议的PING命令,从而维持智能灯与BcServer服务器之间的链接。
四、演示视频(推荐切换“高清”观看):
五、源码与文档:
基于GD32E231的物联网智能灯.docx
(1.47 MB, 下载次数: 13)
bc_light_keil_eeworld_gd32e231.zip
(1.19 MB, 下载次数: 13)
|