版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——基于ZigBee的无线数据采集系统
无线数据采集控制系统的设计
课程名称专业综合课程设计课程设计总评成绩学生姓名、学号学生专业班级指导教师姓名课程设计起止日期2023.11.7-2023.12.1
无线数据采集控制系统的设计
第1章需求分析
1.1课程设计题目
无线电子开关
1.2课程设计任务及要求无线电子开关的设计
PC端用java编写程序通过串口给CC2530模块A发送开关等指令,CC2530模块A通过射频模块将指令以无线方式发送给CC2530模块B,CC2530模块B根据指令开灯或关灯。
针对给定的任务,结合专业课程和专业知识完成系统的硬件或软件设计,对硬件设计:要求完成系统和接口设计,并能动手制作和调试,对测量结果进行分析处理。设计须提供实物成果。对软件设计:要求能够熟悉软件工具,设计其算法或者是系统结构,实现该算法和软件,能够对其计算过程进行推导或者是说明软件系统结构,并能调试成功,对试验结果进行分析处理。
通过专业综合的课程设计,使学生能够综合把握无线传感网技术、java语言程序设计、数据库等课程的专业知识,要求学生经过课程设计的教学环节进一步理解无线传感器网络的结构和组成原理,把握数据采集节点,无线传输,串口通信等模块的基本设计方法,完成系统应用程序的设计。
通过专业综合课程设计,提高学生电子信息系统综合设计能力。把握电子信息系统的基本开发过程及应用方法。要求学生经过课程设计的教学环节进一步理解电子信息系统的设计方法,根据所选择的对象进行应用系统的硬件和软件设计,提高学生专业的综合素质及专业能力。
1.3软硬件运行环境及开发工具
软件开发环境为eclipse+IAREmbeddedWorkbench硬件开发环境为CC25301.4主要芯片说明
CC2530是ZigBee无线数据传输其中的一个核心芯片,它能够以十分低的总材料成本建立强的网络节点。CC2530芯片有四种不同的闪存版本:分别具32/64/128/256KB的闪存。CC2530芯片工作实具有不同的运行模式,使得它特别适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。在业界内,CC2530结合了德州仪器的业界领先的黄金单元ZigBee协议栈,提供了一个强大和完整的ZigBee解决方案。
CC2530芯片共包含了40个引脚,引脚的排布如图1所示:图1:cc2530引脚图
1
CC2530芯片模块大致可以分为三类:CPU和内存相关的模块;外设、时钟和电源管理相关的模块以及无线电相关的模块。
(1)CPU和内存:CC253x芯片系列中使用的8051CPU内核是一个单周期的8051兼容内核。
(2)调试接口:执行一个专有的两线串行接口,用于内电路调试。(3)I/O控制器:负责所有通用I/O引脚。
(4)五通道DMA控制器:系统可以使用一个多功能的五通道DMA控制器,使用XDATA存储空间访问存储器,因此能够访问所有物理存储器。
(5)定时器1:是一个16位定时器,具有定时器PWM功能。。(6)内置MAC定时器:是专门为支持IEEE802.15.4,MAC或软件中其他时槽的协议设计。(7)定时器3和定时器4:是8位定时器,具有定时器/计数器/PWM功能。
(8)睡眠定时器:是一个超低功耗的定时器,计算32kHz晶振或32kHzRC振荡器的周期。
(9)看门狗:一个内置的看门狗,允许CC2530在固件挂起的状况下复位自身。
第2章系统总体设计
2.1系统组成方案
由eclipse编写上位机程序,TAR编写下位机程序,通过无线方式发送命令。如图2
light1:1101Blight2:1011串口AC图2:设计方案2.2系统工作原理
上位机程序以轮询方式通过PC串口向ZigBee节点A发送命令light:1011,节点A通过无线方式向节点B转发命令light:1011,节点B接收到命令后点亮蓝灯,黄灯和绿灯(1点亮,0熄灭)。
上位机程序以轮询方式通过PC串口向ZigBee节点A发送命令light:1011,节点A通过无线方式向节点C转发命令light:1011,节点C接收到命令后点亮蓝灯,红灯和绿灯(1点亮,0熄灭)。
2.3系统构建
PC端用java编写程序通过串口给CC2530模块A发送开关等指令,CC2530模块A通过射频模块将指令以无线方式发送给CC2530模块B和模块C,CC2530模块B和模块C根据指令开灯或关灯。
2
根据指令(light1或light2)第5位判断后缀为1或者为2,节点B和节点C分别依据指令开灯或者关灯
第3章系统硬件设计
3.1主模块电路设计
本系统采用TI公司生产的CC2530为核心器件。CC2530是一个真正的片上系统(SoC)解决方案,它能够以十分低的材料成本建立强大的网络节点,它结合了领先的RF收发器的优良性能、业界标准的加强型8051CPU、系统内可编程闪存、8KBRAM、A/D转换器以及大量其他强大的功能,并且其具有不同的运行模式,使得它特别适应超低功耗要求的系统。围围着CC2530芯片,系统大致可分为三大模块:CPU和内存相关的模块,外设、时钟和电源管理相关的模块以及无线电相关的模块。3.2显示模块电路设计
设计通过A发送的指令来控制4个LED灯的亮灭,LED模块电路及灯的引脚图,如图3、图4所示。
图3:LED模块电路
图4:LED灯对应引脚
若要点亮LED灯,CC2530的通用IO口需要配置三个寄放器:P1SEL,P1DIR,P1INP,P2INP功能选择寄放器PxSEL,其中x为端口标号0~2,用来设置端口的每个引脚为通用I/O或外部设备I/O。默认为通用I/O。
方向寄放器PxDIR,其中x为端口标号0~2,用来设置端口的每个引脚为输入或输出。默认为输入。
输入模式寄放器P1INP,用来设置P1端口用作输入时为上拉、下拉模式或三态模式。默认为上、下拉模式。具体是上拉还是下拉,由P2INP来设置。
3
输入模式寄放器P2INP,用来设置P0、P1、P2端口用作输入时为上拉、下拉模式。默认为上拉模式。完整配置:
?P1SEL//P1_0、P1_1通用IO?P1DIR|=0x03;//P1_0、P1_1输出?P1INP//P1_0、P1_1上下拉?P2INP//P1上拉简化配置:
?P1DIR|=0x03;//P1_0、P1_1输出3.3通信模块电路设计
CC2530是符合802.15.4标准的无线收发芯片,但是本设计并没有遵守802.15.4协议规则,在发送过程中忽略了网络ID、源地址和目标地址等参数,在接收的过程中阻止了帧过滤。通过发送和接收过程的处理使得CC2530无线部分的使用完可能的简单明了,通过最少的代码说明问题。无线芯片的调试具有一定的难度,一般存在发送设备和接收设备。为了通过最简单的代码说明无线芯片的使用,只编写一个设备的代码同时实现发送和接收功能。设备代码的功能也相对简单,CC2530从串口接收数据并把数据通过RF部分原分不动地发送出去,于此同时CC2530把从RF部分接收的数据原分不动的通过串口发送出去,通过这样的方式实现无线串口。发送的数据编号以及控制指令,来控制灯的亮度和开关。
串口数据属于“流〞型数据包,RF部分属于“帧〞型数据包。在串口数据处理与分析中,一般采用特定的串口头和长度的方式解析数据,但是本文采用通过串口时间间隔的方式解析数据,这种方法等同于modbus-RTU串口数据处理的方法。通过这种检测字节数据时间间隔的方法使得CC2530的串口部分可以接收无特别格式要求的数据,真正实现无线串口功能。
第4章系统软件设计
4.1上位机程序设计
上位机程序通过两个类来实现,第一个SerialPort类用来实现控制程序面板,其次个DSerialPort类来实现串口通信。图5所示为Java的两个类:
图5:Java的两个类
SerialPort类中,通过网格布局管理器来实现面板的布局,设置各个标签以及文本框,复选框,组合框,窗口的大小位置以及标题等。
4个灯的设置大致一致,通过jcheckbox来表示灯选中以及未选中时的设置。
jlabel1=newJLabel(\全关1:\jcheckbox1=newJCheckBox(\绿\jcheckbox2=newJCheckBox(\红\jcheckbox3=newJCheckBox(\黄\jcheckbox4=newJCheckBox(\蓝\jlabel2=newJLabel(\全关2:\jcheckbox5=newJCheckBox(\绿\jcheckbox6=newJCheckBox(\红\jcheckbox7=newJCheckBox(\黄\jcheckbox8=newJCheckBox(\蓝\
4
//灯一的设置
jcheckpanel1=newJPanel();
gridbagconstraints.anchor=GridBagConstraints.EAST;gridbagconstraints.gridwidth=1;
gridbaglayout.setConstraints(jlabel1,gridbagconstraints);add(jlabel1);
gridbagconstraints.anchor=GridBagConstraints.WEST;
gridbagconstraints.gridwidth=GridBagConstraints.REMAINDER;
gridbaglayout.setConstraints(jcheckpanel1,gridbagconstraints);add(jcheckpanel1);
jcheckpanel1.add(jcheckbox4);jcheckpanel1.add(jcheckbox3);jcheckpanel1.add(jcheckbox2);jcheckpanel1.add(jcheckbox1);
//灯一开关的设置
jcheckbox1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(getLightState1().equals(\jlabel1.setText(\全关1:\elseif(getLightState1().equals(\jlabel1.setText(\全开1:\elsejlabel1.setText(\开灯1:\}});
通过switch语句,串口开启后轮番发送Data的参数以及设置参数异常时的命令:
voidstartRun(){Timertimer=newTimer();TimerTasktask=newTimerTask(){inti=0;
publicvoidrun(){if(com_open){//串口开启则发送try{switch(i){case0:{sp.write(lightcommand1+getLightState1());break;}case1:{sp.write(lightcommand2+getLightState2());break;}}if(i==2){i=0;}elsei++;}catch(Exceptione){System.out.println(\发送异常\}}}};timer.schedule(task,1000,200);//在200毫秒后执行此任务,每次间隔2秒执行一次,假使传递一个Data参数,就可以在某个固定的时间执行这个任务.}
串口通信DSerialport类中,通过listport方法,列出了所有可用的串口,并设置返回值类型为void:
5
publicvoidlistPort(JComboBoxjcombox1){CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();System.out.println(\:\while(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIAL){jcombox1.addItem(cpid.getName());System.out.println(cpid.getName()+\cpid.getCurrentOwner());}}}
通过selectport方法,选择一个端口,设置返回值类型void:
publicvoidselectPort(StringportName,intrate){mPort=null;CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();while(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIALbreak;}}openPort(rate);}
通过openPort方法,开启SerialPort,设置返回值类型void:
privatevoidopenPort(intrate){if(commPort==null)System.out.println(String.format(\无法找到名字为'%1$s'的串口!\commPort.getName()));else{System.out.println(\端口选择成功,当前端口:\现在实例化SerialPort:\try{serialPort=(SerialPort)commPort.open(appName,timeout);System.out.println(\实例SerialPort成功!\}catch(PortInUseExceptione){thrownewRuntimeException(String.format(\端口'%1$s'正在使用中!\commPort.getName()));}try{serialPort.setSerialPortParams(rate,8,1,0);//设置波特率等参数}catch(UnsupportedCommOperationExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();
6
}
}}
通过checkport方法检查端口是否正确连接:
privatevoidcheckPort(){if(commPort==null)thrownewRuntimeException(\没有选择端口,请使用\\方法选择端口\if(serialPort==null){thrownewRuntimeException(\对象无效!\}}
通过write方法向端口发送数据,在调用此方法前需要先选择端口并确定serialport正常开启。
publicvoidwrite(Stringmessage){checkPort();try{outputStream=serialPort.getOutputStream();}catch(IOExceptione){thrownewRuntimeException(\获取端口的OutputStream出错:\}try{outputStream.write(message.getBytes());System.out.println(\信息发送成功!\}catch(IOExceptione){thrownewRuntimeException(\向端口发送信息时出错:\}finally{try{outputStream.close();}catch(Exceptione){}}}
通过startread开始监听从端口中接受的数据:
publicvoidstartRead(inttime){checkPort();try{inputStream=serialPort.getInputStream();}catch(IOExceptione){thrownewRuntimeException(\获取端口的InputStream出错:\}try{serialPort.addEventList
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版教育培训机构课程服务合同协议3篇
- 《预制直埋复合塑料保温管道应用技术规程》 DB64-T 1056-2014
- 《女性生殖系统教学课件》课件
- 2025教师聘用合同协议书
- 二零二五年版生态修复项目招标投标合同3篇
- 2025住房装修合同书范文
- 二零二五年酒店供应链及资源整合合同3篇
- 电视剧角色演员聘用合同书
- 水库大坝加固工程外线施工合同
- 科研机构外架施工合同
- 疫情物品采购合同模板
- 老年病科专业知识考核试卷
- 病例报告表(CRF)模板
- 2024年重庆市中考数学试卷(AB合卷)【附答案】
- 2024届高考语文作文备考:立足材料打造分论点 教学设计
- 幼儿园大班数学练习题100道及答案解析
- 2024年四川省德阳市中考道德与法治试卷(含答案逐题解析)
- 施工现场水电费协议
- SH/T 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范(正式版)
- 六年级数学质量分析及改进措施
- 一年级下册数学口算题卡打印
评论
0/150
提交评论