基于ZigBee无线光照检测.docx
《基于ZigBee无线光照检测.docx》由会员分享,可在线阅读,更多相关《基于ZigBee无线光照检测.docx(19页珍藏版)》请在冰豆网上搜索。
基于ZigBee无线光照检测
计算机科学与技术学院
《ZigBee无线网络原理》课程设计报告
设计题目:
基于ZigBee光照检测系统的设计
设计人员:
学号:
学号:
学号:
学号:
指导教师:
2015年4月
目录
目录2
摘要I
ABSTRACTII
1设计目标1
2设计内容1
3设计方案3
4实验所需器材3
5实验各个模块的相关电路设计3
5.1光照传感器相关参数及特点3
5.2光照传感器图4
5.3消息推送原理图5
6实验软件设计5
6.1基于java语言上位机控制程序:
5
6.2ZigBee核心板下位机核心部分9
6.3安卓手机终端推送11
7作品实物图展示12
8实验小组成员分工16
9实验总结16
10.小组成员评分17
ZigBee光照检测
摘要
随着物联网的兴起,ZigBee技术以其独有的优势正在为我们提供更多优质便捷的技术成果。
本课题研究的是基于ZigBee技术,设计和实现了一种无线光照检测的解决方案。
设计以电脑控制端、智能手机终端、ZigBee技术、光照感应器模块等硬件模块组成的光照检测通知系统。
实现对环境光照的时时检测,通知等功能。
为对于环境光照的检测提供了一种新思路,同时可以为将来智能家居的遥控设计提供一定的参考意义。
【关键词】ZigBee核心板光照感应
ABSTRACT
WiththeriseoftheInternetofthings,ZigBeetechnologywithitsuniqueadvantageistoprovidemorequalityandconvenientforourtechnologicalachievements.ThisresearchisbasedontheZigBeetechnology,designandimplementationofawirelesslightdetectionsolution.Thedesignofcontrolterminal,computerterminal,intelligentmobilephonewithZigBeetechnology,lightsensorhardwaremoduleandetc.thelightdetectionnotificationsystem.Canalwaysdetectlightontheenvironment,notificationandotherfunctions.Asforthedetectionoflightenvironmentprovidesanewwayofthinking,andcanprovidesomereferencesforthefuturedesignofintelligentremotecontrolHomeFurnishing.
[keywords]ZigBeeLightinductionWirelesscontrol
1设计目标
本次设计要求实现PC端和智能手机终端对环境光照的时时检测,报告。
PC端控制软件可以用java语言,对java串口控件要熟悉的掌握。
同时要求学生对CC2530芯片编程和zigbee协议栈有相当程度的理解以及熟练的应用,安卓手机软件的开发使用java语言,熟悉ZigBee串口以及中断的使用,会基本的C语言熟练掌握IARFOR8051软件的使用与程序下载以及手机软件开发环境。
2设计内容
(1)利用ZigBee核心板,光照传感器,建立无线控制系统。
(2)自行设计光敏传感器电路并配备ZigBee模块,电脑,安卓用做终端设备,采用广播方式接入到ZigBee协调器网络,实现对环境光照的时时感应和对安卓手机的推送
(3)启动ZigBee核心板主控软件,对光照时时检测。
并向电脑发生送光照状态,单片机收到指令后进行相关处理,并通过网络给安卓推送信息
图2.1系统组成框图
3设计方案
(1)CC2530芯片做接收信息设备和控制设备。
(2)ZigBee终端设备和协调器组网成功通信。
(3)自制光照传感器的电路(根据实验材料的具体情况)。
(4)上位机发送状态。
4实验所需器材
此处用CC2530芯片用作接收信息和控制芯片,实现环境光照时时检测,推送,L298N驱动模块(驱动电机)
(1)光照感应器
(2)ZigBee核心板和JLINK下载模块及其相关的驱动
(3)杜邦线若干,电池若干(最好是可以充电的)
5实验各个模块的相关电路设计
5.1光照传感器相关参数及特点
1、采用灵敏型光敏电阻传感器
2、比较器输出,信号干净,波形好,驱动能力强,超过15mA
3、配可调电位器可调节检测光线亮度
4、工作电压3.3V-5V
5、输出形式:
数字开关量输出(0和1)
6、设有固定螺栓孔,方便安装
7、小板PCB尺寸:
3.2cmx1.4cm
8、使用宽电压LM393比较器
5.2光照传感器图
图5.2光照传感器图
说明:
1、光敏电阻模块对环境光线最敏感,一般用来检测周围环境的光线的亮度,触发单片机或继电器模块等;
2、模块在环境光线亮度达不到设定阈值时,DO端输出高电平,当外界环境光线亮度超过设定阈值时,DO端输出低电平;
3、DO输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的光线亮度改变;
4、DO输出端可以直接驱动继电器模块,由此可以组成一个光控开关。
5.3消息推送原理图
说明:
终端节点采集数据后,发送到协调器,然后协调器通过串口发送给Publisher,Publisher发布消息到代理服务器Brkoer,消息代理服务器讲消息发送到订阅此主题的Subcribe。
图5.3 电路图
6实验软件设计
6.1基于java语言上位机控制程序:
packageUart;
importjava.io.IOException;
importjava.io.InputStream;
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Enumeration;
importjava.util.HashMap;
importjava.util.Hashtable;
importjava.util.TooManyListenersException;
importgnu.io.CommPortIdentifier;
importgnu.io.PortInUseException;
importgnu.io.SerialPort;
importgnu.io.SerialPortEvent;
importgnu.io.SerialPortEventListener;
importgnu.io.UnsupportedCommOperationException;
publicclassMyUartimplementsRunnable,SerialPortEventListener{
//定义串口管理类
publicstaticCommPortIdentifierportId=null;
publicstaticEnumerationportList=null;//枚举类
//定义输入流
InputStreaminputStream=null;
//定义输出流
SerialPortserialPort=null;
//定义一个读的线程
ThreadreadThread=null;
//定义日期时间对象
Datedate=null;
//定义D时间格式化类
DateFormatformat=null;
Stringtime=null;
publicstaticHashtablemsg=newHashtable();
//publicstaticvoidmain(String[]args){
//portList=CommPortIdentifier.getPortIdentifiers();
//while(portList.hasMoreElements()){
//portId=(CommPortIdentifier)portList.nextElement();
//if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){
///*找Windows下的第一个串口*/
//if(portId.getName().equals("COM4")){
////if(portId.getName().equals("/dev/term/a"))/*找Unix-like系统下的第一个串口*/
//MyUartuart=newMyUart();
//}
//}
//}
//}
publicMyUart(){
try{
//打开一个串口
serialPort=(SerialPort)portId.open("SimpleReadApp",2000);
}catch(PortInUseExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
/*获取串口的输入流对象*/
inputStream=serialPort.getInputStream();
}catch(IOExceptione){}
try{
//给串口添加监听
serialPort.addEventListener(this);
}catch(TooManyListenersExceptione){}
//串口有数据到达时,通知
serialPort.notifyOnDataAvailable(true);
try{
//串口基本设置
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);/*设置串口初始化参数,依次是波特率,数据位,停止位和校验*/
}catch(UnsupportedCommOperationExceptione){}
//创建读线程对象
readThread=newThread(this);
//启动线程
readThread.start();
//msg的初始化
msg.put("time","0");
msg.put("numOfGroup","8");
msg.put("status","0");
}
//获取当前时间的函数
publicvoidtime(){
date=newDate();
format=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss");
time=format.format(date);
}
//延时函数
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
try{
Thread.sleep(2000);//线程休眠20000毫秒
}catch(InterruptedExceptione){}
}
@Override
publicvoidserialEvent(SerialPortEventevent){
//TODOAuto-generatedmethodstub
switch(event.getEventType()){
caseSerialPortEvent.BI:
/*Breakinterrupt,通讯中断*/
caseSerialPortEvent.OE:
/*Overrunerror,溢位错误*/
caseSerialPortEvent.FE:
/*Framingerror,传帧错误*/
caseSerialPortEvent.PE:
/*Parityerror,校验错误*/
caseSerialPortEvent.CD:
/*Carrierdetect,载波检测*/
caseSerialPortEvent.CTS:
/*Cleartosend,清除发送*/
caseSerialPortEvent.DSR:
/*Datasetready,数据设备就绪*/
caseSerialPortEvent.RI:
/*Ringindicator,响铃指示*/
caseSerialPortEvent.OUTPUT_BUFFER_EMPTY:
/*Outputbufferisempty,输出缓冲区清空*/
break;
caseSerialPortEvent.DATA_AVAILABLE:
/*Dataavailableattheserialport,端口有可用
数据。
读到缓冲数组,输出到终端*/
byte[]readBuffer=newbyte[8];
try{
while(inputStream.available()>0){
//从输入流读取数据
intnumBytes=inputStream.read(readBuffer);
}
//获取当前时间
time();
//msg清空
msg.clear();
//更新msg消息
msg.put("time",time);
msg.put("numOfGroup",""+(readBuffer[0]-48));
msg.put("status",""+(readBuffer[2]-48));
//System.out.print(time+":
");
//System.out.print(msg.get("numOfGroup"));
////System.out.print(readBuffer[0]-48+"");
////System.out.print(readBuffer[1]-48+"");
//System.out.print("");
//System.out.print(msg.get("status"));
////System.out.print(readBuffer[3]-48+"");
//System.out.print("");
//System.out.println();
}catch(IOExceptione){}
break;
}
}
}
6.2ZigBee核心板下位机核心部分
说明:
登记串口任务号,以及IO口设备初始化
说明:
从电脑获取串口命令函数
6.3安卓手机终端推送
7作品实物图展示
图7.1光线正常展示
图7.2光线变暗调试
图7.3电脑端界面
图7.4PCB原理图
图7.4PCB原理图
图7.5实物传感器图
8实验小组成员分工
姓名
课程设计中承担的任务
负责画PCB电路图,编写调试程序,组织小组成员分工合作
制作电路板,编写java程序
制作电路板,并打好电路板上的元器件焊接洞孔
查找资料,辅助编写程序,撰写文档
9实验总结
通过这次课程实践,我们学会了如何画一个好的电路图,对DXP电路画图软件有了更深刻的了解,已经能够熟练地制作自己的元件库和画好电路图。
自己做集成电路板,根据原理图实物焊元器件,检测电路是否有问题等等一系列的实践让我们的动手能力有了很大的提高,在完成电路板的制作之后,自己写的软件程序来一步一步的调试,一步一步的接近成功,这个过程是很艰难的,和富有挑战性的,但同时当你真正成功控制硬件电路的时候,你会发现这个艰难的学习工程是很美妙的。
我们组要求在智能手机上能时时推送,对安卓手机的软件编程有了更清晰的了解
同时我们这次课程实践小组之间分工明确,通力协作,这也是我们能够按时完成本次课程实践的最主要因素,没有小组成员的努力小组长是不可能在这么短的时间内完成所有工作,所以让我们知道了合作意识对一个团队的重要性。
除此之外,我们都学会了在物联网邻域一项重要的无线通信技术ZigBee,懂得如何运用此项技术进行运用开发。
总之,这次课程实践收获颇丰,有很好的锻炼。
10.小组成员评分
学号
姓名
评分
签字
指导老师签字:
年月日