基于ZigBee无线的温湿度测量设计与实现.docx
《基于ZigBee无线的温湿度测量设计与实现.docx》由会员分享,可在线阅读,更多相关《基于ZigBee无线的温湿度测量设计与实现.docx(15页珍藏版)》请在冰豆网上搜索。
基于ZigBee无线的温湿度测量设计与实现
计算机科学与技术学院
《ZigBee无线网络原理》课程设计报告
设计题目:
基于ZigBee的温湿度测量的设计
设计人员:
学号:
学号:
学号:
学号:
学号:
指导教师:
年 月
目录2
摘要I
ABSTRACTﻩII
1.设计目标ﻩ1
2.设计内容1
3. 设计方案3
4.实验所需器材ﻩ3
7.实验小组成员分工ﻩ9
8.实验总结10
9.小组成员评分11
ZigBee温湿度测量
摘要
随着物联网的兴起,ZigBee技术以其独有的优势正在为我们提供更多优质便捷的技术成果。
本课题研究的是基于ZigBee技术,设计和实现了一种对室内温湿度测量的解决方案。
设计以电脑控制端、ZigBee技术、温湿度驱动模块等硬件模块组成的温湿度测量系统。
实现室内的温度和湿度进行动态采集等实时控制功能。
为远距离采集温湿度提供了一种新思路,同时可以为将来智能家居的温湿度测量设计提供一定的参考意义。
【关键词】ZigBee核心板 温湿度模块传感器无线控制
ﻬ
ABSTRACT
Withtherise oftheInternetofthings, ZigBeetechnology with itsunique advantageistoprovidemorequalityandconvenientfor ourtechnologicalachievements.This researchisbasedontheZigBeetechnology,adesign andimplementationoftheindoortemperatureandhumiditymeasurementsolutions. Thedesignofcontrol terminal,withcomputer technology,ZigBeetemperatureandhumidity measuring systemoftemperatureandhumidity drivingmodule.To realizedynamicacquisitionreal-timecontrol functionoftheindoor temperatureandhumidity.Providesanewidea forremote acquisitionoftemperatureandhumidity,andcanprovidesome referencesforthefuturedesignoftheintelligenttemperatureandhumiditymeasurementHome Furnishing.
[keywords]ZigBeeTemperature andhumiditysensormoduleWirelesscontrol
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语言上位机控制程序:
核心代码:
publicvoid initChuanKou(String portName){
ﻩﻩ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 (UnsupportedCommOperationException e) {
ﻩﻩe.printStackTrace();
ﻩ}
returnfalse;
}
public voidreceiveData()throws IOException{
Listlist=new ArrayList();
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;
ﻩﻩchar shi=(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;
import javax.swing.JButton;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjavax.swing.ImageIcon;
public classJieMian extendsJFrame{
ﻩprivateJTextField textField;
privateJTextFieldtextField_1;
ﻩpublicJieMian() {
getContentPane().setFont(newFont("宋体",Font.PLAIN,16));
ﻩgetContentPane().setBackground(newColor(205,133,63));
getContentPane().setLayout(null);
ﻩﻩ
ﻩJLabellabel= new JLabel("\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=new JTextField();
ﻩtextField.setBounds(291,88,66, 21);
ﻩﻩgetContentPane().add(textField);
textField.setColumns(10);
ﻩ
JLabel lbll=newJLabel("\u6D4B\u91CF\u6E7F\u5EA6\uFF1A");
lbll.setFont(new Font("宋体",Font.PLAIN,15));
ﻩlbll.setBounds(168,124, 75, 26);
ﻩﻩgetContentPane().add(lbll);
textField_1 =new JTextField();
ﻩﻩtextField_1.setBounds(291, 127, 66, 21);
ﻩgetContentPane().add(textField_1);
textField_1.setColumns(10);
ﻩ
JLabel lblNewLabel=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=new JLabel("\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口和串口设备初始化
说明:
从电脑获取串口命令函数
void SampleApp_SendPeriodicMessage( void )
{
uint8 T_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
{
// Erroroccurredinrequestto send.
}
}
说明:
将串口命令发送至车载ZigBee节点函数
6.品实物图展示
图6.1 温湿度模块的静态展示
ﻩ
图6.3 温湿度测量的电脑控制端界面
图6.4PCB原理图
图6.4 PCB原理图
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.