本帖最后由 cazure 于 2018-6-3 22:24 编辑
这个系统是我研究了很久,理论实践后的结果,我使用的是CC2530开发板,数据可以通过无线发送至上位机,也可以接收上位机的命令。
硬件资源:
- cc2530开发板
- oled 0.96显示屏
- 光敏电阻
- DTH11温湿度模块
- 还有一些按键,灯,实际应用可接继电器
软件资源:
- ZStack-CC2530-2.5.0 TI的原版协议栈
- XMF_OLED 小蜜蜂老师发布在论坛的oled驱动
- Visual Studio 2012和IAR
系统实现的基本思路
这是个花卉灯控制系统,采集的数据需要通过一定线路传输。如果使用纯串口通信距离会受限制,如果使用RS485现场布线太繁琐,所以我使用了CC2530的zigbee无线通信。该通信方法可同时容纳多个现场照明节点,在一定距离和数量内可以说是一个最佳的选择。系统主要分两种设备一个是协调器设备,一个是现场照明节点,如果想增加传输距离可使用增益天线和路由节点。
协调器用来接收现场节点发过来的数据,同时能发送指令控制现场节点的运行模式,生长灯等等。
现场照明节点上安装有光敏电阻,oled屏,DTH11,按键和照明灯。
数据流向: 现场照明节点-->采集--->发送 {无线 } 接收-->协调器-->串口-->上位机
命令流向: 上位机-->串口-->协调器 {无线 } 接收-->现场照明节点-->执行命令
系统的硬件结构框图
协调器板主要是核心板,状态指示灯和usb转串口组成,为了能传输更远,可以加个增益电路和天线照明节点主要是核心板,状态指示灯,照明灯(led模拟),光敏电阻,DTH11,按键还有oled屏
视图按键连接再核心板的P1_2
模式按键连接再核心板的P0_1
光敏电阻连接在P0_5 刚好是AD采集通道
DTH11连接在P0_4
灯LED1 LED2作为状态指示,代表系统正常运行和无线数据传输
灯LED3 LED4作为照明灯#1 和#2
LED1->P1_0
LED2->P1_1
LED3->P1_3
LED4->P1_4
整个系统使用115200的波特率,速度和效率都是最佳的
系统的软件流程
软件的设计上,我使用的是vs的wpf工程,主要分为串口数据部分和数据采集控制部分
- 串口数据部分可以作为串口助手使用,主要是接收串口数据
- 数据采集控制部分又可分为数据采集,显示节点状态和节点控制以及设置节点的参数
特色和创新点
特色是使用zigbee无线通信,能减少现场布线。
创新点:使用oled屏作为显示设备,在原有的光敏电阻的基础上增加了温湿度模块,能过同时采集光照和温湿度,并且通过协调器上传至上位机。上位机可以设置光照节点发送数据的频率和自动控制下光照的限定值。历史数据使用折线表显示。
自我评价:
不足点:没有实现5Hz的采集频率,因为无线传输可能会有丢包的出现,我降低传输速率保证传输质量。实际可同时容纳几个光照节点。历史数据保存在文件中,不能存储大量数据。
设计系统的难度主要在协议栈,因为需要协议栈能采集,显示,发送,并且自己定义数据格式,同时我在上课所以将近用了一周时间。
上位机实现都是比较简单的。在这里非常感谢小蜜蜂老师提供的oled的cc2530驱动!!!
第一次搞这个,弄的不是很好,大家多多指点视频链接地址
欢迎大家来围观,一楼有视频链接
Source.rar
(34.75 KB)
CSharp.rar
(1.62 MB)
附件是上位机C#工程和协议栈2.5的源码目录,整个工程太大,上传不了
我将我制作的这些工程文件都上传至gitee.com花卉生长灯的项目地址 https://gitee.com/cazure/FlowerLight
终于可以发链接了,欢迎大家的关注和反馈
|