基于ZigBee无线的温湿度测量设计与实现.docx
《基于ZigBee无线的温湿度测量设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ZigBee无线的温湿度测量设计与实现.docx(15页珍藏版)》请在冰豆网上搜索。
基于ZigBee无线的温湿度测量设计与实现
计算机科学与技术学院
《ZigBee无线网络原理》课程设计报告
设计题目:
基于ZigBee的温湿度测量的设计
设计人员:
学号:
学号:
学号:
学号:
学号:
指导教师:
年月
目录
目录2
摘要I
ABSTRACTII
1.设计目标1
2.设计内容1
3.设计方案3
4.实验所需器材3
5.实验软件设计3
5.1基于JAVA语言上位机控制程序:
3
5.2ZigBee核心板下位机核心部分5
6.品实物图展示7
7.实验小组成员分工9
8.实验总结10
9.小组成员评分11
参考文献12
ZigBee温湿度测量
摘要
随着物联网的兴起,ZigBee技术以其独有的优势正在为我们提供更多优质便捷的技术成果。
本课题研究的是基于ZigBee技术,设计和实现了一种对室内温湿度测量的解决方案。
设计以电脑控制端、ZigBee技术、温湿度驱动模块等硬件模块组成的温湿度测量系统。
实现室内的温度和湿度进行动态采集等实时控制功能。
为远距离采集温湿度提供了一种新思路,同时可以为将来智能家居的温湿度测量设计提供一定的参考意义。
【关键词】ZigBee核心板温湿度模块传感器无线控制
ABSTRACT
WiththeriseoftheInternetofthings,ZigBeetechnologywithitsuniqueadvantageistoprovidemorequalityandconvenientforourtechnologicalachievements.ThisresearchisbasedontheZigBeetechnology,adesignandimplementationoftheindoortemperatureandhumiditymeasurementsolutions.Thedesignofcontrolterminal,withcomputertechnology,ZigBeetemperatureandhumiditymeasuringsystemoftemperatureandhumiditydrivingmodule.Torealizedynamicacquisitionreal-timecontrolfunctionoftheindoortemperatureandhumidity.Providesanewideaforremoteacquisitionoftemperatureandhumidity,andcanprovidesomereferencesforthefuturedesignoftheintelligenttemperatureandhumiditymeasurementHomeFurnishing.
[keywords]ZigBeeTemperatureandhumiditysensormoduleWirelesscontrol
1.设计目标
本次设计要求实现一个PC端可以检测并展示温湿度即时的变化。
PC端控制软件可以用JAVA语言,对JAVA串口控件要熟悉的掌握。
同时要求学生对CC2530芯片编程和zigbee协议栈有相当程度的理解以及熟练的应用,熟悉ZigBee串口以及中断的使用,会基本的C语言熟练掌握IARFOR8051软件的使用与程序下载。
2.设计内容
1.实现对室内温湿度参数的实时采集,测量空间的温度和湿度,由ZigBee核心板对采集的温湿度值进行循环检测、数据处理、显示,实现温湿度的智能检测。
2.实现超越数据的及时报警,并启动控制系统。
3.现场检测设备应具有较高的灵敏度、可靠性、抗干扰能力。
4.要求达到的技术指标:
测温范围:
0。
C-60。
C
测温精度:
+0.5。
C
测湿范围:
0-100%RH
测湿精度:
+2.5%RH
图2.1系统组成框图
3.设计方案
1)了解温湿度传感器工作原理,根据原理画好PCB原理图。
2)根据PCB原理图自制PCB板电路,将液晶屏,温湿度传感器,ZigBee开发板等相关元件设备进行集成。
3)测试PCB电路,检查相关电路能否正常工作,以及ZigBee核心板的能否正常调试。
4)在完成电路调试后,用下载器下载调试程序成功完成程序对相关元件的驱动
5)实验完成后做好相应的实验总结。
4.实验所需器材
此处用CC2530芯片用作接收信息和控制芯片,实现无线遥控,单跳控制距离可以达到100米以上,L298N驱动模块(驱动电机)
(1)温湿度传感器,
(2)电脑和ZigBee核心板和JLINK下载模块及其相关的驱动
(3)杜邦线若干,电池若干(最好是可以充电的)
5.实验软件设计
5.1基于JAVA语言上位机控制程序:
核心代码:
publicvoidinitChuanKou(StringportName){
selectPort(portName);
try{
serialPort=(SerialPort)portId.open("MyChuanKou",2000);
}catch(PortInUseExceptione){
e.printStackTrace();
}
try{
inputStream=serialPort.getInputStream();
outputStream=serialPort.getOutputStream();
}catch(IOExceptione){
e.printStackTrace();
}
}
//识别端口
booleanselectPort(StringportName){
portList=CommPortIdentifier.getPortIdentifiers();
while(portList.hasMoreElements()){
portId=(CommPortIdentifier)portList.nextElement();
if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){
if(portId.getName().equals(portName)){
returntrue;
}
}
}
System.out.println("识别不了"+portName+"请重新选择COM口");
returnfalse;
}
publicbooleansetParam(){
try{
serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
returntrue;
}catch(UnsupportedCommOperationExceptione){
e.printStackTrace();
}
returnfalse;
}
publicvoidreceiveData()throwsIOException{
Listlist=newArrayList();
Stringbuf=null;
booleansu=false;
inti=0;
while((i=inputStream.read())>0){
System.out.print((char)i+"");
charb=(char)i;
list.add(b);
if(list.size()>8)
su=true;
}
if(su==true){
System.out.println(list);
System.out.println(list.size());
charwen=(char)list.get
(2);
chardu=(char)list.get(3);
System.out.println(wen);
System.out.println(du);
Stringwendu=""+wen+du;
wen_du=wendu;
charshi=(char)list.get(5);
chardu_1=(char)list.get(6);
Stringshidu=""+shi+du_1;
shi_du=shidu;
System.out.println("温度显示为:
"+wendu);
System.out.println("湿度显示为:
"+shidu);
su=false;
}
}
上位机界面代码:
packagecom.wang;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjava.awt.Font;
importjava.awt.Color;
importjavax.swing.JTextField;
importjavax.swing.JButton;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.ImageIcon;
publicclassJieMianextendsJFrame{
privateJTextFieldtextField;
privateJTextFieldtextField_1;
publicJieMian(){
getContentPane().setFont(newFont("宋体",Font.PLAIN,16));
getContentPane().setBackground(newColor(205,133,63));
getContentPane().setLayout(null);
JLabellabel=newJLabel("\u7269\u8054\u7F51\u6E29\u6E7F\u5EA6\u91C7\u96C6\u7CFB\u7EDF");
label.setForeground(newColor(0,255,255));
label.setFont(newFont("华文行楷",Font.PLAIN,26));
label.setBounds(78,21,269,48);
getContentPane().add(label);
JLabellabel_1=newJLabel("\u6D4B\u91CF\u6E29\u5EA6\uFF1A");
label_1.setFont(newFont("宋体",Font.PLAIN,15));
label_1.setBounds(168,83,86,31);
getContentPane().add(label_1);
textField=newJTextField();
textField.setBounds(291,88,66,21);
getContentPane().add(textField);
textField.setColumns(10);
JLabellbll=newJLabel("\u6D4B\u91CF\u6E7F\u5EA6\uFF1A");
lbll.setFont(newFont("宋体",Font.PLAIN,15));
lbll.setBounds(168,124,75,26);
getContentPane().add(lbll);
textField_1=newJTextField();
textField_1.setBounds(291,127,66,21);
getContentPane().add(textField_1);
textField_1.setColumns(10);
JLabellblNewLabel=newJLabel("\u5C0F\u7EC4\u6210\u5458\uFF1A\u79B9\u542F\u6807\u4F59\u742A");
lblNewLabel.setForeground(Color.CYAN);
lblNewLabel.setBounds(192,168,262,31);
getContentPane().add(lblNewLabel);
JLabellblNewLabel_1=newJLabel("\u6C6A\u548C\u5143\u5F20\u7FFC\u8D39\u51CC\u4E91");
lblNewLabel_1.setForeground(Color.CYAN);
lblNewLabel_1.setBounds(250,203,136,21);
getContentPane().add(lblNewLabel_1);
JLabellblNewLabel_2=newJLabel("Newlabel");
lblNewLabel_2.setIcon(newImageIcon("C:
\\Users\\Wang\\Desktop\\2.png"));
lblNewLabel_2.setBounds(70,79,66,72);
getContentPane().add(lblNewLabel_2);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(480,300);
}
publicvoidgetWuDu(Stringwen,Stringshi){
textField.setText(wen);
textField_1.setText(shi);
}
}
5.2ZigBee核心板下位机核心部分
说明:
登记串口任务号,以及IO口和串口设备初始化
说明:
从电脑获取串口命令函数
voidSampleApp_SendPeriodicMessage(void)
{
uint8T_H[8];//温湿度
T_H[0]='9';
T_H[1]='';
T_H[2]=wendu_shi+48;
T_H[3]=wendu_ge%10+48;
T_H[4]='';
T_H[5]=shidu_shi+48;
T_H[6]=shidu_ge%10+48;
T_H[7]='';
if(AF_DataRequest(&SampleApp_Periodic_DstAddr,
&SampleApp_epDesc,
SAMPLEAPP_WANGHEYUAN_ID,
8,
T_H,
&SampleApp_TransID,
AF_DISCV_ROUTE,
AF_DEFAULT_RADIUS)==afStatus_SUCCESS)
{
}
else
{
//Erroroccurredinrequesttosend.
}
}
说明:
将串口命令发送至车载ZigBee节点函数
6.品实物图展示
图6.1温湿度模块的静态展示
图6.3温湿度测量的电脑控制端界面
图6.4PCB原理图
图6.4PCB原理图
7.实验小组成员分工
姓名
课程设计中承担的任务
负责画PCB电路图,编写调试程序,组织小组成员分工合作
上位机控制端的美工
制作电路板,并打好电路板上的元器件焊接洞孔
根据原理图焊接实物元器件,并测试电路是否正常工作
查找相关资料文献,总结完成实践报告
8.实验总结
硬件搭接和软件烧录完毕之后,在实验室进行了调试,调试成功。
通过测试,采集的数据表明本文所研究的温室监控系统中Zigbee传感网络的设计方案是可行的,所设计的传感节点的功能也顺利实现。
在本次设计研究和撰写论文的过程中,我们查阅了许多文献资料,从中学到了很多有关系统开发和程序调试方面等的知识。
在软件开发过程中掌握了一些技术难题的解决方法和技巧,巩固和加深了所学知识的理解,能够把所学的知识与实践相结合,培养了认真严谨的学习态度,为以后开发软件积累了大量的经验,提高了分析问题和解决问题的能力。
但是由于认识上的片面和不足,各方面的条件影响也很多,本设计还有待进一步的完善和优化,这些我们会在以后的学习中要注重积累。
另外在这次课程实践中,我们小组成员分工明确,团结合作,每个人尽力做了自己力所能及的工作,最后能成功完成这次实验离不开我们每一个小组成员的努力。
更重要的是,通过这次的课程实践,我们对ZigBee无线网络技术有了更实际上的认识,把书本上的知识运用到了实际中。
总之,这次的课程实践让我们每一个人都受益匪浅
9.
小组成员评分
学号
姓名
评分
签字
指导老师签字:
年月日
参考文献
[1] 黄永军. ZigBee 远程数据采集系统的设计与实现[D].武汉:
武汉理工大学硕士论文,2009,6
[2] 王雪. 无线传感器网络测量系统[M], 北京:
机械工业出版社, 2007:
212
[3] 洪文平. ZigBee 在无线感测网路之发展.情报顾问-产业研究报告,2007-3
[4] 孙利民,李建中,陈渝等.无线传感器网络[M].北京:
清华大学出版社,2005
[5] 李文仲,段朝玉.ZigBee2006 无线网络与无线定位实战[M].北京 北京航天航空大学出版社,2008.1.
[6] 徐小涛,吴延林. 无线个域网(WPAN)技术及其应用[M].北京:
人民邮电出版社,2009.5
[7] 顾瑞红,张宏科.基于 ZigBee 的无线网络技术及其应用[J],网络通信世界,2005.
[8] 崔逊学,赵湛等.无线传感器网络的领域应用与设计技术[M].北京:
国防工业出版社,2009.5
[9] 瞿雷,刘盛德,胡咸斌. ZigBee 技术及应用[M]北京:
北京航空航天大学出版社, 2007.9
[10] 赵芸,张浩.彭道刚,ZigBee 无线网络技术的应用[J],机电一体化,2007.9.