该设计分享的是太阳能供电无线气象站及信件检测器和AVR以太网终端的设计及详细制作过程,方便网友能够吸取其中精华,老日成为大家崇拜的老鸟。
简单的说,这里将要介绍我制作的一个系统,用它来做下面几件事情:
- 定期检测位于室外的邮政信箱,如果有信件,会用中文语音通知我和家人。
- 一个简单的室外气象站,以半小时的间隔不间断的采集室外的温度和湿度信息,供后期分析。
同时,这个系统也是:
这里先给出这个系统的实际效果视频,给大家一个直观的印象:
在视频中我将一份报纸投入家中的信箱,随后在家里的IHES(家庭智能化环境系统)终端便会用中文语音报告“有信件,请查收!”。同时,在必要的时候它也会播报出当前由这个系统所采集到的温度和湿度情况。整个过程并无人工干预。
接下来我将开始介绍这个系统的制作过程。下文首先为介绍系统整体构架和技术要求,然后会按照硬件->软件,每个模块的顺序介绍原理和实现过程。然后会给出一些数据作性能分析,最后将交待整个系统的成本。对文章涉及的相关背景资料,会在文末的参考资料给出。相关代码、原理图也会在文章末尾给出。
“这个”系统包括的是:放置在室外的传感器和控制电路,在室内的以太网终端系统,它负责通过无线信号与室外传感器通讯,并将结果转发到以太网上。至于视频中看到(听到)的语音以及IHES核心系统的介绍,本文将不作涉及。我或许会在今后写这方面的介绍文章,也可以参考在参考资料章节给出的我已经写过的文章[5]。
系统的构架和性能要求
或许你会想,要检测信箱的信件,方法有非常多。最简单的办法就是在信箱入口装一个开关,然后拖一根线到室内和电脑连接。这样应该也能实现视频中的功能。至于温湿度检测,那也直接连线出去不就得了?
但实际上这样做也会存在些问题。首先要布线,考虑到家里已经装修过,走明线会影响美观。同时如果直接将室外的信号与室内计算机系统连接,危险很大。在打雷是很容易被雷击到,同时室内外电势差也不得不考虑。另外,要能够有效地检测出信箱中是否存在信件,也不是简单的装一个开关那么简单。首先信箱是现成的,不方便做很大的改动,同时这个开关的设计(机械开关或者是光电)也需要一定的考虑。
总之,我还是用了一种比较折腾,但是仍旧适合个人DIY的办法:
首先这个系统会通过无线信号把位于室外的传感器和室内的计算机系统隔离开。当然,这样一来,事情又复杂了一些:室外的传感器需要自我供电,并且需要设计专门的控制器来负责与室内的系统进行通讯。另外,因为这里采用的无线信号并非采用标准的蓝牙或者WIFI等可以被PC所识别的协议,因此需要另外设计硬件将我们定义的无线协议转换成PC可以识别的协议,这里需要有电路将无线信号转换成以太网的TCP数据包中转给PC。
当然,要实现这些还会有更多的细节需要考虑,这也是为何我写这篇文章的原因了。我们暂时先不考虑这些细节,
下面给出分析道这里我这个系统的框图,IHES室外传感器框图:
系统框图说明:
这里按照各模块所在地理位置(室外/室内)进行划分。图中上半部分是位于室外的传感器和控制器。其中各传感器会将它采集到的原始模拟信号转化成数字信号发送给传感器控制器。而传感器控制器会将各传感器报告的数据汇总并作简单处理后,通过无线模块发送给室内的接受终端。因为采用无线通讯,所以再考虑用一个电缆来给室外传感器供电就多此一举了。那么自然这里的电能供给就是指用电池供电了。但电池用尽后需要更换,这又显得比较麻烦。所以我的设计中传感器采用了太阳能供电+锂电池蓄电的方式来给室外传感器供电。考虑到成本,这里的太阳能电池不能用很大功率的,自然,整个室外传感器电路就需要运行在比较低的功耗条件下了。并且,南方经常有连续几周的阴雨天气,在阴雨天气中太阳能电池几乎不输出功率,此时就需要在设计中将系统的功耗压缩到最小。这里对供电和功耗指标是,室外传感器需要能够在一次完全电池充电后,仅靠电池电力维持持续工作15天以上。另一个指标是,在晴天太阳能电池的输出功率可以将电池完全充满。
图中的无线模块采用工作在2.4GHz波段具有收发功能的芯片/模块。这类模块仅实现了物理层的通讯协议,需要为他们设计编写对应的链路通讯协议。当然这样也适合用单片机来操作。因为功耗的限制,这里的无线模块的通讯距离比较小。
上图的下半部分是位于室内的以太网/无线转发器。他的主要工作就是将由以太网发来的IHES中央服务器请求转发成无线信号与室外的传感器通讯,并将收到的无线数据包转发到以太网络反馈给中央服务器。另外,这个模块上也开设了一个Web服务器,允许我们直接用浏览器登陆该模块来与室外传感器通讯。
其实这个模块做的大部分工作也可以直接交给中央服务器(PC)来实现,这样仅需要实现一个诸如usb口->无线信号的适配器即可,但是考虑到这里选用的无线模块功率较低,在中央服务器处以经无法介绍到室外发来的信号。所以我在设计中将这部分单独设计为一个模块,将他放置于离室外传感器比较近的阳台上。这样的一个限制就是:这个模块不适合用一台单独的PC来实现(考虑到阳台的环境恶劣、占地以及成本因素)。这里我选择用成本低廉的单片机来实现这个模块的转发和webserver功能。这样的另外一个好处就是功耗很低,可以通过网线供电的方式来给模块提供电能,而不需要另外接电源适配器。这后文我也会介绍如何改造交换机网口来实现用五类双绞线(以太网用线)给设备供电。
室外传感器的数据最终将以TCP数据包的形式发送到中央服务器上作处理和分析,并通过语音合成以中文语音将检测结果反馈给我们。最后就是上面视频中的效果了。
各模块的原理、设计和制作:https://www.csksoft.net/blog/post/ihes_outsidesenso...
软件描述,视频演示:
这段视频是IHES服务器进行开机自检中的片段。它会将与室外传感器的数据请求全过程用语音朗读出来。从中可以看(听)出这个系统的协作过程。
参考资料
[1] 基于AVR的TR24a驱动例程:spiriton-tr24a-demo, by Alexander Yerezeyev
https://code.google.com/p/spiriton-tr24a-demo/
[2] An AVR microcontroller based Ethernet device, by Guido Socher
https://www.tuxgraphics.org/electronics/200606/article06061.shtml
[3] Arduino-Lite Google Code repos, By 我(Shikai Chen)
https://code.google.com/p/arduino-lite/
[4] Arduino-Lite简介, By 我
https://www.csksoft.net/blog/post/255.html
[5] IHES中的语音合成介绍, By 我
https://www.csksoft.net/blog/post/linux_weatherforecast.html
[6] EM198810 RF Transceiver
https://www.emc.com.tw/eng/com_prod_dsc.asp?gid=&tid=000001&tt=com_rfic_ds&nn=2.4GHz+RF+IC
[7] DHT11 Humidity Sensor
https://www.aosong.com/Upload/PicFiles/20091121029421455.pdf
[8] ENC28J60 Stand-alone Ethernet Controller with SPI
https://ww1.microchip.com/downloads/en/DeviceDoc/39662a.pdf
[9] DS18B20 Programmable Resolution 1-Wire Digital Thermometerler
https://datasheets.maxim-ic.com/en/ds/DS18B20.pdf
[10] Atmega48PA datasheet