毕设题目:
——————————————————————————————————————————————————————————————————————————————
基于Zigbee的智能家居监测系统的设计与实现
智能家居是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统;
其目的是提升家居的安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。根据智能家居的特点,设计一个基于Zigbee的智能家居监测系统。
主要设计任务如下:
1. 了解Zigbee基本模块;
2. 了解ZStack协议;
3. 熟悉Zigbee模块的功能并在ZStack协议下实现监测任务;
4. 完成信号采集并把信号发送至手机端。
要求:
1. 了解Zigbee主要模块的功能;
2. 在Zigbee模块上实现ZStack协议;
3. 用户界面具有个性化特点;
4. 功能操作简单方便,具有一定的实用性。
应收集的资料及参考文献:
1. Zigbee 模块的相关参数;
2. ZStack协议的相关内容。
——————————————————————————————————————————————————————————————————————————————
ZigBee 就是 IEEE 802. 15. 4 的代名词。
Z-Stack 是ZigBee 的具体实现。
开题
开题时要知道自己的系统怎么实现,如何完成,要有具体的解决方案。
而现在我对题目的理解就是:在zigbee模块上实现Z-Stack协议,并在手机上实现一个有点儿用的功能 :)
根据题目的要求,在ZigBee模块上实现Z-Stack协议,指的就是至少实现这样的一个(点对点)网络:
一台ZigBee模块作为该网络的协调器,一台ZigBee模块作为该网络的终端设备。
协调器与终端设备之间实现通信。
实现监测任务
监测并非监控,不需要有如用ZigBee模块来控制其他家电的操作。
只需要对家居环境的一些参数进行收集即可。
需要终端设备上配有例如温度,湿度,气体成分的传感器。
家居指的是家庭装修、家具配置、电器摆放等一系列和居室有关的甚至包括地理位置(家居风水)都属于家居范畴。
完成信号采集
终端设备把传感器检测到的数据传给协调器(进行汇总)。
信号发送至手机端
这一点最头疼,
现在市面上只有极少数的手机支持ZigBee协议,大部分手机只有WiFi,蓝牙。
目前我找到的解决方案有:
A.ZigBee与WiFi的双模无线网关设计方案
http://www.elecfans.com/tongxin/119/20140930355368.html
B.基于CC2530的ZigBee转以太网网关的设计与实现
http://blog.csdn.net/wiznet2012/article/details/38379703
C.串口USB连PC,PC联网与手机进行通信。也就是ZigBee模块将信息传给PC机,PC再把信息传给移动端。
基于Zigbee的智能家居监测系统的设计与实现
我的具体解决方案如下:
场景
在ZigBee模块上安装温度,湿度传感器,两台及以上ZigBee模块自组网,
选定作为协调器节点的模块用USB线与家用电脑连接,电脑连入互联网。手机连入互联网。
原理
两台及以上ZigBee模块组网互通,传送实时温湿度信息汇总到协调器节点,
协调器节点与电脑串口通信传递信息,电脑与手机间通过互联网实现通信传递信息。
硬件
配有传感器的ZigBee模块两台及以上
USB线一条
联网的电脑一台
联网的手机一部
软件
一套ZigBee程序
一个Windows软件
一个Android应用
体验
用户点开手机打开APP,即可获取室内温湿度信息,还可以观察到一天中温湿度的变化。
当然这些信息电脑上也能看到。
ZigBee程序在终端设备节点实现与协调器节点的绑定,并读取传感器的数据发送给协调器节点。
ZigBee程序在协调器节点实现网络组建,并将收集到的数据通过串口发送到电脑。
Windows程序用Java编写实现两个主要功能:读取节点从串口发送的数据,建立socket服务将数据发送给连接该服务的应用程序。
Android程序同样使用Java语言,即建立与电脑的连接,接收实时的数据信息。
*这种需要连电脑的设计老师并未同意,理由是不会有人为了实现远程监控,离开家后还把电脑开着。
现在只能是买硬件来实现模块联网了。开题当天又加了一堆功能。。。
其具体的实现为:一台作为终端设备的ZigBee模块配有温湿度传感器,读取温湿度信息并发送给协调器节点;
一台ZigBee模块作为该网络的协调器节点,搜集从其他节点发送过来的家居环境中的温湿度信息;
协调器节点作为一台TCP主机接入互联网,将搜集来的数据通过W5500模块发送给手机;
手机端通过APP应用程序接收实时的温湿度数据信息。
手机端还可以设置希望的温湿度范围,该范围将保存在协调器节点上,当接收到其他节点传来的数据后进行判断,
如果超出设定的范围,将发出相应的指令,完成相应的调温调湿动作。
预期将会在三个平台上完成三个相关程序:
1.运行在ZigBee终端设备节点上的ZigBee程序:该程序在终端设备节点实现读取温湿度传感器的数据信息,并发送数据信息给协调器节点的功能;
2.运行在ZigBee协调器节点上的ZigBee程序:该ZigBee程序在协调器节点的功能为实现网络组建,并将收集到的数据通过W5500模块发送到手机端。同时对数据进行判断,做出相应的动作。
3.运行在手机平台的Android应用程序:实现与协调器节点建立连接并接收实时的数据信息的功能。并对接收到的数据进行处理。
好复杂啊。。。感觉要跪
//6月17日更新,前天答的辩。
最终还是放弃了W5500模块,改回了用电脑作为系统核心的设计方案。
主要原因还是不会用啊,
ZigBee模块与W5500模块之间主从设备的编程还是比较迷的。
我的水平还不能仅凭网上的一篇帖子就把它弄明白:(
但最初也不应该选W5500模块来用网线进行连接,
选WiFi模块应该会更好些,或者说更好演示些,
但肯定是没有用电脑来的更容易。
所以我最后到底做了什么呢?
利用ZigBee模块,电脑,手机 ,完成了一套对温湿度进行实时监测和调控的智能家居环境温湿度监测系统。
这系统可以干些什么呢?
1.可以在电脑和手机上显示实时的温湿度信息;
2.可以在电脑上可以查看温湿度的历 史记录;
3.可以设置温湿度范围,如果超出范围系统可以自主调节温湿度。
。。。相比别人毕设做个操作系统来说,是惨了点。。。
但以后还会有同学接着这个“基于”继续进行他们的设计,姑且留下些经验好了。
整体的设计就像这样:
在终端设备节点上配有一个温湿度传感器, 在协调器节点上连接了一个风扇, 连个节点间用天线传递信号。
协调器节点与电脑用USB数据线相连。 电脑与手机用的是无线网 ,现在电脑连手机的热点。
显然这个风扇就是被系统控制的调温设备;
电脑连手机热点为了演示和掩饰自己网络通信技术水平很低的无奈之举,
反正这台电 脑的信息是传到了这台手机上。。。IP是硬写在程序里的。呵呵
(想象的)可以改进的地方:
电脑与手机的信息交流如果是上诉这样设计的话,实用性真是超低。
低一点要求的话,电脑和手机都连WiFi,在同一个局域网里,手机和电脑的连接不想输IP的话,可以用扫二维码的方式实现啊。
手机想要获得信息,电脑弹出个二维码,扫码连接。
高一点要求的话,电脑真的是有必要的吗?既然是用WiFi,直接在ZigBee模块上配个 WiFi模块不是更好,
ZigBee模块也就是一个单片机,进行一些简单的判断操作完全没有问题。
二维码干脆直接印在ZigBee模块,WiFi模块,调温设备组合在一起的这个物件上好了,
或者只需用电脑操作一次,进行一些必要的配置操作,然后以后的操作就不再需要电脑,
而是ZigBee模块与手机之间直接进行信息交流。如果想在电脑上显示也可以,但不是必须的。
如果是要包装成产品,肯定是要这样的。但如果只是要演示,那就什么样都无所谓了。
这次毕设唯一可以称之为亮点的地方就是这个自主调节功能:“湿度过高,风扇开启 ”。
原理就是这样:
电脑在收到温湿度信息后,会进行范围判断,如果超出范围,电脑会向协调器节点发送命令,协调器节点收到命令后,
做出相应的操作,比如发送一个下降沿信号,开启风扇。好吧这称为亮点也有点过了。。。
(想象的)可以改进的地方:
协调器节点:“我接收到其他节点发送过来的信息,我再把这个信息通过串口发给你电脑,
你帮我判断一下现在的温湿度是否超出范围。如果超出范围你给我来个信儿,
我好做出相应的操作。。。等等好像哪里不对劲啊,为什么需要你帮我判断?”
信息就是要汇总到协调器节点,那在协调器节点上判断一下不就行了。。。
按照上面设计,电脑根本不存在的好吧,是啊,用手机直接把限定范围发送到协调器节点上储存,
协调器节点接收信息的同时,就做下判断。超出范围就直接发信号开启风扇。
这才是正确的思路啊
什么你问我没有电脑信息怎么储存,模块上最大200多K不够吧?
哦?你一条信息的长度,记录的频率,代码对存储数据空间的优化等,都是很能影响储存空间的大小的。
像是这一秒,下一秒,和下N秒的数据都是一样的,根本不用都记下啊。看你优化咯。
再不够不是还可以连个外部存储设备吗,外放的音响上不是都可以插闪存卡的吗。
要看历史数据,直接从模块把信息传给手机,把数据在手机上显示出来,应该也是可以实现的。
关于风扇
ZigBee模块和风扇连在一起,你就可以把它想象成一个智能风扇了。
最初想的是,不就是个风扇么,引脚置一不就上电了,风扇不就转了。
但你可以想象一下。3.3v带起来的风扇真的能起到调控的作用么。。。
可能就真的只能作为演示系统了。
正好手头有个稍微有点儿科技感的风扇,拆开看是有电路板的,
电路板上还有芯片,这个风扇是按钮控制的,按一下开启一档风,
再按一下加一档,再按一下加到三档,再按就关闭。
我就那根电线挨个引脚试,反正输入只有5v,试触几下也不会有太大问题。
然后就找到了一个只要置零就会使风扇工作状态改变的焊点,
在这个点上焊上导线,导线另一端接在ZigBee模块上的一个引脚。
编程使这个引脚置零,就可以控制这个风扇了。
如果控制其他设备,原理应该也是一样的。
上面更新的都是扯淡,
真正答辩的时候还是发现了问题,老师给予了建议:
主要的问题有:
1.发送信号到手机端到底是触发还是轮询。
发送温湿度信息给手机是轮询,发送设备控制信号是触发。
2.模块检测的频率是用户不能自己设置的
想要改的话,就加个传参数的延时函数就行了。
这是属于设计的问题,看想没想到了。
3.数据处理
对数据的处理应该是这个系统的核心
没用数据库就这么用文件一条一条存,优化还是优化