仓库温湿度自动控制模拟系统
作者:sunduoze
一、作品简介
仓库温湿度自动控制模拟系统以RSL10为控制器模拟工厂仓库的温湿度控制。传感控制节点采集温湿度及光照气压的信息,手机APP可主动连接并获取多个节点反馈并绘制曲线,当温度或湿度偏高则控制开启制冷空调或除湿机,反之则关闭,当温度湿度或光照异常时,判断为火灾信号并报警;手机APP可下发任务到传感控制节点来主动控制。传输节点通过串口收发蓝牙的信息实现手机与电脑交互。兼容设计实现3个硬件共用1个应用固件且可用手机APP实现FOTA。
二、系统框图
- 硬件框架
硬件系统包含2个传感控制节点(安森美RSL10 Sensor板)和1个传输节点(安森美RSL10 002GEVB板)。
-
- 1 传感控制节点
传感控制节点使用了安森美RSL10-SENSE-DB-GEVK评估板。板载BME680环境监测传感器可用于环境温湿度,气压,CO2等信息的检测;板载LV0104CS传感器可用于检测光照强度,当火灾发生时,光亮超过正常阈值,故有辅助检测的意义;板载的LED用于连接状态的显示和调试辅助用途,按键PB1用于开机时清空N24RF64的EEPROM记录的状态信息,按键PB2可用于选择Sensor节点号(实际申请到2块板子,开机后,检测此按键状态,来选择板卡号,pressed=Sensor 2);手工额外焊接的OLED可以用来打印Sensor信息,控制信息,板卡信息等。
-
- 传输节点
传输节点使用了安森美RSL10-002GEVB,借用板载J-link的虚拟串口与RSL10进行串口DMA交互,RSL10内部uart与蓝牙link。手机端APP通过蓝牙连接此节点,节点连接电脑,实现手机与电脑的交互。
-
- 硬件ID匹配实现
本设计使用D03,D05,DIO12这些IO,在程序初始化时,检测不同状态,实现了程序对板卡的匹配。
- 软件框架
- 软件主程序运行框图
-
- 软件子程序
- APP_Timer任务:检测并处理电池电压(屏蔽)
- LED_Timer任务:处理BLE不同状态下LED的状态指示
- sensor_timer任务:检测传感器信息,执行控制逻辑, OLED刷新数据,打包传感信息及状态信息数据通过BLE发送
- ctrl_timer任务:调试用,由于全局变量会导致Segger-RTT无法使用,故控制任务在sensor_timer内完成。
- BLE消息处理任务中包含以下几部分具体任务:
GAPM_CmpEvt,GAPM_ProfileAddedInd,GAPC_ConnectionReqInd,GAPC_DisconnectInd,GAPC_ParamUpdatedInd,GAPC_ParamUpdateReqInd
- BLE客户服务处理任务中包含以下几部分具体任务:
GATTC_ReadReqInd,GATTC_WriteReqInd,GATTM_AddSvcRsp,GATTC_CmpEvt
其中GATTC_WriteReqInd中,自定义添加了上位机发送到BLE的数据解析任务,此部分也包含了接受BLE数据到通过DMA发送到UART
-
- 手机端软件处理(由于不同的安卓版本导致界面存在一定的差异)
安卓手机端使用蓝牙调试器APP,开发了传感控制节点的应用,包含了各种传感信息的显示,同时可显示数据波形,通过按钮可控制节点显示。
三、部分功能说明
- 软件自动匹配。通过使用D03,D05,DIO12这些IO,来实现相同的APP可适配不同的硬件(COIN板暂时没用,但是仍然可以适配)下表是对安森美官方各种板卡的公共资源分配信息。
DIO
|
002GEVB board
|
Sensor board
|
Coin board
|
Function
|
Common
|
D00
|
-
|
*led_r*
|
|
|
led_r
|
D01
|
-
|
*led_g*
|
|
|
led_g
|
D02
|
-
|
*led_b*
|
|
|
led_b
|
D03
|
ext_io-H
|
ext_io-L
|
ext_io
|
*
|
ext_io
|
D04
|
U1_Rx
|
SDA
|
TP1
|
|
sda-sensor
|
D05
|
**BTN1**/U1_Tx
|
SCL
|
TP2-L
|
*
|
scl-sensor
|
D06
|
*OD_LED*
|
MEMS_DO
|
-
|
|
led
|
D07
|
SCL
|
-
|
-
|
|
-
|
D08
|
SDA
|
-
|
-
|
|
-
|
D09
|
-
|
INT--
|
-
|
|
-
|
D12
|
-
|
**BTN2**
|
-
|
|
button2
|
D15
|
-
|
**BTN1**
|
-
|
|
button1
|
- 传感控制节点BME680驱动。通过调用BESC库来实现BME680传感器的调用,这个传感器包含了温度,湿度,气压,CO2,呼吸VOC等数据,程序汇总通过引用bsec_env_output_struct结构体的output变量全局引用,实现传感数据的应用层调用。
- 传感控制节点LV0104CS驱动。这个传感器用于PIN2PIN替代NOA1305CUTAG环境光传感器,单独build驱动实现环境光的LUX显示并通过lv0104cs_read_lux_data函数实现应用层的调用。
- 传感控制节点OLED驱动。OLED是低功耗显示屏幕,通过I2C接口与RSL10进行连接,该屏幕用于调试内容打印,sensor状态显示,APP控制信号显示及着火报警信息反馈。
- 传输节点。传输节点借用板载J-link的虚拟串口与RSL10进行串口DMA交互,RSL10内部uart与蓝牙link。手机端APP通过蓝牙连接此节点,节点连接电脑,实现手机与电脑的交互。
四、作品源码
仓库温湿度自动控制模拟系统.zip
(1.1 MB, 下载次数: 5)
apk是安卓应用程序(自己可以去市场下载“蓝牙调试器”),bin可以直接用这个程序打开,然后自己可以进行编辑修改。定义自己的数据格式。
android.apk
(2.63 MB, 下载次数: 2)
仓库温湿度自动模拟控制系统_V_20210622-233656.pro..bin
(2.47 KB, 下载次数: 2)
五、作品功能演示视频
哔哩哔哩_bilibili
FOTA此处不演示,可跳转此链接查看:【仓库温湿度自动控制模拟系统】9. RSL10 FOTA app的适配
六、项目总结
1. 这个是个很棒的练手案子,对于个人而言蓝牙这一块可以说是从0到1开始深入了解,全新的芯片,全新的IDE,硬件版本同样新到超出release的文档,这个过程有非常大的挑战,整个开发过程是非常痛苦,并且到想放弃,但是过段时间折腾一下又有点点突破,磕磕碰碰一步一步走到现在。痛苦的过后将会迎来重生,感谢主办方和EEWORLD,感谢过程中管理员小姐姐的一次又一次的加油打气。
2. 开发的过程中,对整个开发过程影响最大的应该是MESH组网这一块,通过官方的例子,实现基本控制功能,但是由于自己欠缺的太多,官方安卓app也没有源码,后转到微信小程序进行尝试,还是无果。整个工程合并过程满是荆棘,最后也放弃了。想当初因为MESH这个香喷喷的功能,果断放弃Keil,转向Onsemi IDE。这一步迈的步子过于大,一口想吃成胖子,不料....。再后来不在纠结于此,回头把sensor逐个驱起来,慢慢也找回了信心,慢慢走了下来。
3. 整个项目开发下来,目前的工程是可以当做基础模块来引用,很多蓝牙应用的场景,不外乎主从交互这些功能,在此基础上增加更多传感器进行功能适配和扩展就可以72变,仓库温湿度自动控制系统如果要求高,那整个系统远比这个雏形要复杂的多,而且工业环境可靠性是关键,温湿度控制部分的内容等等有很多细节可以扩展,所以可以进步的空间非常大。在这里仅借题发挥来学习一些新的器件,接触一些新的领域,扩宽自己,同时将自己的所学分享出来,让后来者少走弯路,仅此而已。
4. 此外,吐槽还是少不了的。对于安森美的IDE和例子程序,工程风格各式各样,对于初学者难度很大,无形之中把门槛提高了,还有关键的一些代码直接是库,有时候想看看里边又无从下手(暂时没找到源码)。还有IDE使用过程中,static变量会导致uart发送故障,新增的全局变量导致RTT无法使用,莫名其妙很多代码无法打断点等等这些奇葩问题费了不少劲,思路一定得活,不能一条道走到黑,这种活动中很重要。
【仓库温湿度自动控制模拟系统】9. RSL10 FOTA app的适配
【仓库温湿度自动控制模拟系统】3. RSL10 BLE Mesh 组网初体验
【仓库温湿度自动控制模拟系统】2. ON Semiconductor IDE 吃(tian)瓜(keng)
go go go, 让RSL10的LED开始闪烁(文尾有小彩蛋)
RSL10 全家福开箱照
七、其他
仓库温湿度自动控制模拟系统_sunduoze.docx
(6.11 MB, 下载次数: 0)
|