本帖最后由 dcexpert 于 2015-3-24 22:15 编辑
家庭鱼缸和植物看护系统由计算机、鱼缸监测、植物监测等几个部分组成。检测节点采集传感器的信号,然后通过SAM R21的2.4G无线发送到主机。计算机和主机MCU通过串口通信,MCU将监测的数据发送到计算机,由计算机进行分析处理,然后在图表中显示数据和数据的曲线。检测节点分鱼缸和植物两种。鱼缸部分由太阳能电池、锂电池、浑浊度传感器、水质传感器、SAM R21等组成,SAM R21的ADC完成信号采集,然后通过RF将数据发到接收器。在阳光比较充足的时候,可以通过太阳能板给锂电池充电和给系统供电。植物部分由土壤湿度传感器、光线传感器、SAM R21组成,SAM R21除了完成信号采集,还要接收从机发过来的信号,以及和计算机通信等功能。
鱼缸部分
由太阳能电池、锂电池、浑浊度传感器、水质传感器、SAM R21等组成。在阳光比较充足的时候,可以通过太阳能板给电池充电和给系统供电。开始的时候预备监测水温、PH值、水质、浑浊度、电池电压等多个参数,后来发现SAM R21的ADC只有两路可用(ADC06/ADC07),其它ADC端口因为功能复用,不能直接用于ADC采集,所以最后只保留了水质、浑浊度、电池电压、RSSI几个参数。
单片机程序从WSNDemo(Wireless Sensor Network)程序修改而来。WSNDemo例程提供了一个完整的无线采集的框架,在此基础上,添加自己的信号采集和数据处理部分,就可以实现一个简单的无线数据采集系统,非常方便。
SAM R21每10秒采集一次数据,采集后发送到主机,然后休眠。10秒后由RTC将MCU唤醒,进行下一次数据采集。设置10秒是为了方便测试,实际使用时还可以延长采集时间,因为这些信号的变化都很缓慢。另外因为SAM R21开发板上板载的EDBG调试器不能进入低功耗模式,所以电池的大部分功耗也在这部分了。
太阳能电池+锂电池+SAM R21+传感器
太阳能电池的效果不是太理想,光线稍弱就不能直接供电。可以考虑换一个功率大一点的,不过这样会增加不少成本,体积也会增加。
充电管理和升压模块,可以实现一边充电一边供电的功能。但是太阳能板效果不是太好,只有光线较强时才有效果,所以后来一直使用USB进行充电。升压模块也可以不用,直接将电池连接到SAM R21的5V0 IN上,这样还可以降低电池升压转换时带来的损耗。
自制的充电、升压板,可以当移动电源用了。通过拨码开关设置不同的电阻组合进行限流,能够根据电池容量调节最大的充电电流。
SAM R21从机
传感器转接板
鱼缸和传感器(左边是浑浊度传感器,右边是DIY的水质监测传感器)
植物部分
由土壤湿度传感器、光线传感器、SAM R21组成。SAM R21模块在充当监测MCU的同时,也做为和计算机通信的MCU(设置为Coordinator)。它直接通过USB进行供电,USB也同时做为串口通信。本来这里也计划用太阳能板和锂电池供电的,但是因为USB串口在通信的同时也可以供电,就取消了这个功能。
SAM R21和传感器接口板,传感器信号由ADC06/ADC07采集
光线强度监测+信号转接
土壤湿度监测
SAM R21主机
PC监视软件
PC监视软件使用了Lazarus+FPC开发,这样不但开发简单,也具有跨平台的特点,程序可以在windows和Linux下运行,适应不同的系统要求。实际编程时是在Win7在进行,调试和测试在Debian7下完成。
程序使用串口和SAM R21进行通信,SAM R21上的串口是EDBG上的USB转串口,在Windows下需要安装驱动,在Linux下无需安装驱动。为了让通信更快一些,设置了串口的速率为115200。串口通信协议是在atmel的wsmdemo例程基础上修改而来,去掉了不用的参数,增加了传感器参数和自定义的数据类型。数据可以在表格和图表中显示,图表的折线图可以清晰的反应出参数的变化。
程序还可以自动保存参数,下次运行时可以自动读取保存的参数。参数保存使用了xml格式。软件可以长时间稳定运行,实测连续运行了两天没有出现问题。因为时间关系,数据和折线图暂时没有做导出功能,也没有做数据自动分析和告警。
软件运行界面
植物监视
鱼缸监视(这两个图片效果还不错吧)
串口通信数据
监视数据
折线图,选中参数前的方框,就可以显示对应的曲线,效果还不错吧。
视频
鱼缸监视系统
http://v.ku6.com/show/7zU1FDqCiXx5qbYUjSf6WA...html
无线通信过程
http://v.ku6.com/show/5GQ7Kjm9TzIJm4jU9SZdPA...html
PC软件演示
http://v.ku6.com/show/VfMEiP1I_w7UVpbpZ9BPDQ...html
参考原理图
因为时间关系,加上SAM R21本身功能已经很强了,所以没有做PCB板,也就没有专门画原理图和PCB,只有简单的设计草图。传感器的输出都是模拟量,通过SAM R21上的PA06和PA07进行采集。电压通过读取内部的IO电压,再和内部参考电压比较得出。RSSI信号是传输中,通过程序读取出来。
物料清单
下面是主要使用到的物料清单
- SAM R21 x2
- 锂电池 x2(只使用1个)
- 太阳能电池 x2(只使用1个)
- 锂电池充电模块 x1
- 5V升压模块 x1
- 浑浊度传感器 x1
- 光敏电阻 x1
- 土壤湿度传感器 x1(自制)
- 水质传感器 x1(自制)
- 9*15cm万用板 x1
- 杜邦线若干
- 导线若干(卷)
- 热熔胶
- 电容、电阻、排针若干
还有一些事先计划用并采购了,但是因为一些原因(如ADC端口不够)而没有使用的传感器和元器件。
参考代码
最后要感谢EEWORLD提供了这样一个学习机会,感谢管理员的帮助,以及各网友的交流。