1、.无 线 传 感 网 络 技 术课 程 实 训 (论 文 )超声波传感器数据采集及界面开发院 ( 系 ) 名 称 电 子 与 信 息 工 程 学 院专 业 班 级 物 联 网 121学 号 120402066学 生 姓 名 江 立 骥指 导 教 师 李 锐 副 教 授起 止 时 间 : 2015.6.292015.7.17.课程设计(论文)任务及评语院(系):电子与信息工程学院 教研室:物联网工程学 号 120402066 学生姓名 江立骥 专业班级 物联网 121课程设计(论文)题目超声波传感器数据采集及界面开发课程设计(论文)任务任务要求:1、建立点对点的无线传感网络;2、在上位机开发出
2、GUI 界面;3、读取超声波传感器采集数据;4、数据经串口在 GUI 界面中显示;5、采集数据转化为具有实际意义的可用数据。技术要求:1、GUI 界面采用 MATLAB 语言进行开发;2、无线数据通信部分采用 Zigbee 协议;3、系统正常运行,软件界面友好、操作简单。指导教师评语及成绩平时成绩: 答辩成绩: 论文成绩: 作品成绩: 总成绩: 指导教师签字: 年 月 日注:平时成绩占 20%,答辩成绩占 20%,论文成绩占 40%,作品成绩 20%。.目 录第 1 章 绪论 .11.1 超声波传感器发展概况 .11.2 超声波传感器在物联网技术中的应用 .21.3 本文研究内容 .2第 2
3、章 总体设计方案 .32.1 方案论证 32.2 总体设计方案框图及分析 .3第 3 章 超声波传感器单元硬件设计 .53.1 超声波传感器特性与参数: .53.1.1 超声波传感器特性 .53.1.2 超声波传感器参数 53.2 模块工作原理 6第 4 章 MATLAB 串口界面开发调试 84.1 MATLAB 开发环境 .84.2 程序代码 .114.3.1 打开串口 114.3.2 停止显示 124.3.3 十进制显示 134.3.4 清空 .134.3.5 清空发送区 .14第 5 章 综合测试与数据分析 .155.1 仿真与调试 .155.2 数据的采集 .15第 6 章 总结 .1
4、8参考文献 .19.第 1 章 绪论1.1 超声波传感器发展概况随着科技的迅猛发展越来越多科技成果被广泛的运用到人们的日常生活当中,给我们的生活带来了诸多方便。这一设计就是本着这个宗旨出发,利用超声波的特性来为我们服务。 人们能听到声音是由于物体振动产生的,它的频率在 20HZ-20KHZ 范围内,超过20KHZ 称为超声波,低于 20HZ 的称为次声波。常用的超声波频率为几十 KHZ-几十MHZ。由于超声波指向性强,因而常于距离的测量。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人,汽车安全,海洋测量等上得到了广泛的应用
5、。与激光测距、红外线测距相比,超声波对外界光线、色彩和电磁场不敏感,更适于黑暗、电磁干扰强、有毒、灰尘或烟雾的恶劣环境,在识别透明及漫反射性差的物体上也更有优势。而且超声波还有其指向性强、能量消耗缓慢、传播距离较远等优点。超声波测距是一种非接触式测量,广泛应用于倒车防撞雷达、机器人接近觉、海洋测量、物体识别等领域。距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。距离是在不同的场合和控制中需要检测的一个参数,所以,测距就成为数据采集中要解决的一个问题。尽管测距有多种方式,比如,激光测距,微波测距,红外线测距和超声波测距等。但是,超声波测距不失为一种简单可
6、行的方法。超声波距离传感器可以广泛应用在物位(液位)监测,机器人防撞,各种超声波接近开关,以及防盗报警等相关领域,工作可靠,安装方便, 防水型,发射夹角较小,灵敏度高,方便与工业显示仪表连接,也提供发射夹角较大的探头。本设计是超声波测距仪装置,该装置利用了发射接收一体化的超声波传感器和微处理器。采用超声波传感器分时工作于发射和接收,利用声波在空气中的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物到超声波测距器之间的距离。因此经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。在日常生活中起了广泛的作用。.1.2 超声波传感器在物联网技术中的应用物联网传感器是人类五官的延长
7、,又称之为电五官。至上个世纪 90 年代物联网概念出现以来,越来越的人们对其产生兴趣。物联网是在计算机互联网的基础上,利用射频识别、无线数据通信、计算机等技术,构造一个覆盖世界上万事万物的实物互联网。作为政府从战略层面进行推进的产业,传感器在物联网中的应用如何从愿景走向现实并得到快速发展已成为业界关注的话题。基于 RFID、无线传感网络、超声波传感器等相关物联网技术提出了智能停车场管理系统模型,通过对车辆入场、入车位、出车位和出场的全流程描述,介绍车位预订、车位引导、停车位测控、出场管理等功能的实际应用.除此之外,还有超声波测距,超声波金属探伤等。1.3 本文研究内容本文研究内容为用超声波传感
8、器测量距离,实际需要用 MATLAB 工程软件开发适合自己的串口界面,用来对传感器采集的数据进行接收和显示。除此之外还需要协调器,用来接收超声波传感器的数据;超声波传感器,用来实时测量距离的数据;32 位转串软件和烧写程序,通过 CC2530 的 IO 端口发送一个高电平脉冲到超声波传感器的触发端,在超声波传感器的回声端采集高电平的长度。从而计算出障碍物离超声波传感器的距离。并通过 MATLAB 界面编程的串口,最后通过调试使得能够精确测量距离。技术要求:1、GUI 界面采用 MATLAB 语言进行开发;2、无线数据通信部分采用 Zigbee 协议;3、系统正常运行,软件界面友好、操作简单。.
9、第 2 章 总体设计方案2.1 方案论证利用 MATLAB 开发串口界面,超声波传感器测量距离参数,协调器作为电脑和传感器之间的纽带进行数据传送。最后综合调试,使其结构更加简单、可靠性更高、使用加方便。图 2.1 总体界面2.2 总体设计方案框图及分析如图 2.2 所示,本超声波传感器与之适配的直流稳压电源供电,产生的实时数据由与电脑 USB 相连的协调器接收。协调器接收的是超声波传感器产生的无线信号,最后经过协调转换将数据通过数据线传送至电脑。由于距离不断变化,会不断输出不同的一组一组十六进制数据,同时协调器也会接收来自实验室内其它无用信号,最后经过程序甄别,挑出可用信号,转化为十进制可读的
10、数据。即距离参数数据。.图 2.2 总体设计方框图超声波传感器协调器 串口 电脑输出设置参数.第 3 章 超声波传感器单元硬件设计3.1 超声波传感器特性与参数:3.1.1 超声波传感器特性 当电压作用于压电陶瓷时,就会随电压和频率的变化产生机械变形。另一方面,当振动压电陶瓷时,则会产生一个电荷。利用这一原理,当给由两片压电陶瓷或一片压电陶瓷和一个金属片构成的振动器,所谓叫双压电晶片元件,施加一个电信号时,就会因弯曲振动发射出超声波。相反,当向双压电晶片元件施加超声振动时,就会产生一个电信号。基于以上作用,便可以将压电陶瓷用作超声波传感器。超声探头的核心是其塑料外套或者金属外套中的一块压电晶片
11、。构成晶片的材料可以有许多种。晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的性能。超声波传感器的主要性能指标包括:(1)工作频率。工作频率就是压电晶片的共振频率。当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。(2)工作温度。由于压电材料的居里点一般比较高,特别时诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不产生失效。医疗用的超声探头的温度比较高,需要单独的制冷设备。(3)灵敏度。主要取决于制造晶片本身。机电耦合系数大,灵敏度高;反之,灵敏度低。3.1.2 超声波传感器参数小功率超声探头多作探
12、测作用。它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。超声探头的核心是其塑料外套或者金属外套中的一块压电晶片。构成晶片的材料可以有许多种晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的参数。1) 使用电压:DC5V 2) 静态电流:小于 2mA3) 电平输出:高 5V 4) 电平输出:底 0V5) 感应角度:不大于 15度 .6) 探测距离:2cm-450cm 7) 高精度:可达 0.3cm板上接线方式,VCC、trig(控制端)、 echo(接收端)、 ou
13、t(空脚)、 GND图 3.1 超声波时序图3.2 模块工作原理最常用的超声测距的方法是回声探测法,超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。一个控制口发一个 10US 以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。超声波在空气中的传播速度为 340m/s,根据计时器记录的时间 t,就可以计算出发射点距障碍物面的距离 s,即:s=340t/2。具体方法:1) 采用 IO
14、 触发测距,给至少 10us 的高电平信号;2) 模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;3) 有信号返回,通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间测试距离=(高电平时间*声速(340M/S)/2; .图 3.2 超声波模块端口图示.第 4 章 MATLAB 串口界面开发调试4.1 MATLAB 开发环境MATLAB 由一系列工具组成。这些工具方便用户使用 MATLAB 的函数和文件,其中许多工具采用的是图形用户界面。包括 MATLAB 桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着
15、MATLAB 的商业化以及软件本身的不断升级,MATLAB 的用户界面也越来越精致,更加接近 Windows 的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB 提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。Matlab 是一个高级的 矩阵 /阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M 文件)后再一起运行。新版本的 MATLAB语言是基
16、于最为流行的 C+语言基础上的,因此语法特征与 C+语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是 MATLAB 能够深入到科学研究及工程计算各个领域的重要原因。MATLAB 是一个包含大量计算算法的集合。其拥有 600 多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如 C 和 C+ 。在计算要求相同的情况下,使用MATLAB 的编程工作量会大
17、大减少。MATLAB 的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。MATLAB 自产生之日起就具有方便的数据可视化功能,以将向量和 矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的 MATLAB 对整.个图形处理功能作了很大的
18、改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB 同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB 也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB 还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。4.2 操作 GUI 具体方法打开 MATLAB 软件;图 1 MATLAB GUI 开发界面新建 Blank GUI: filenewGUI.
19、图 2 创建新 Blank GUI 界面设置所需的操作按钮和必要的元素,完成操作界面如下:图 3 串口界面.4.2 程序代码4.3.1 打开串口function start_serial_Callback(hObject, eventdata, handles)if get(hObject, value)% 获取串口的端口名com_n = sprintf(com%d, get(, value);% 获取波特率rates = 300 600 1200 2400 4800 9600 19200 38400 43000 56000 57600 115200;baud_rate = rates(get
20、(handles.rate, value);% 获取校验位设置switch get(handles.jiaoyan, value)case 1jiaoyan = none;case 2jiaoyan = odd;case 3jiaoyan = even;end% 获取数据位个数data_bits = 5 + get(handles.data_bits, value);% 获取停止位个数stop_bits = get(handles.stop_bits, value);% 创建串口对象scom = serial(com_n);% 配置串口属性,指定其回调函数set(scom, BaudRate,
21、 baud_rate, Parity, jiaoyan, DataBits,.data_bits, StopBits, stop_bits, BytesAvailableFcnCount, 10,.BytesAvailableFcnMode, byte, BytesAvailableFcn, bytes, handles,.TimerPeriod, 0.05, timerfcn, dataDisp, handles);% 将串口对象的句柄作为用户数据,存入窗口对象.set(handles.figure1, UserData, scom);tryfopen(scom); %打开串口catch %
22、 若串口打开失败,提示“串口不可获得! ”msgbox(串口不可获得!);set(hObject, value, 0); %弹起本按钮 return;endset(handles.period_send, Enable, on); %启用【自动发送】按钮set(handles.manual_send, Enable, on); %启用【手动发送】按钮set(handles.xianshi, string, ); %清空接收显示区set(handles.activex1, value, 1); %点亮串口状态指示灯set(hObject, String, 关闭串口); %设置本按钮文本为“关闭串
23、口”else %若关闭串口% 停止并删除定时器t = timerfind;if isempty(t)stop(t);delete(t);end4.3.2 停止显示function dataDisp(obj, event, handles)global value% 串口的 TimerFcn 回调函数% 串口数据显示% 获取参数hasData = getappdata(handles.figure1, hasData); %串口是否收到数据strRec = getappdata(handles.figure1, strRec); %串口数据的字符串形式,定时显示该数据numRec = getap
24、pdata(handles.figure1, numRec); %串口接收到的数据个数% 若串口没有接收到数据,先尝试接收串口数据.if hasDatabytes(obj, event, handles);end% 若串口有数据,显示串口数据if hasData% 给数据显示模块加互斥锁% 在执行显示数据模块时,不接受串口数据,即不执行 BytesAvailableFcn回调函数setappdata(handles.figure1, isShow, true); % 若要显示的字符串长度超过 10000,清空显示区if length(strRec) 10000strRec = ;setappd
25、ata(handles.figure1, strRec, strRec);End4.3.3 十进制显示% 显示数据set(handles.xianshi, string, strRec);a=hex2dec(strRec(16);b=hex2dec(strRec(17);c=hex2dec(strRec(19);d=hex2dec(strRec(20);ss=a*4096+b*256+c*16+d;set(handles.juli,String,ss);4.3.4 清空function qingkong_Callback(hObject, eventdata, handles)% 清空要显示的
26、字符串setappdata(handles.figure1, strRec, );% 清空显示set(handles.xianshi, String, );停止显示.function stop_disp_Callback(hObject, eventdata, handles)% 根据【停止显示 】按钮的状态,更新 isStopDisp 参数if get(hObject, Value)isStopDisp = true;elseisStopDisp = false;end4.3.5 清空发送区function clear_send_Callback(hObject, eventdata, ha
27、ndles)% 清空发送区set(handles.sends, string, )% 更新要发送的数据set(handles.sends, UserData, );function checkbox2_Callback(hObject, eventdata, handles)function copy_data_Callback(hObject, eventdata, handles)% 设置是否允许复制接收数据显示区内的数据if get(hObject,value)set(handles.xianshi, enable, on);elseset(handles.xianshi, enable
28、, inactive);end.第 5 章 综合测试与数据分析5.1 仿真与调试打开 MATLAB 软件,连接好电脑和协调器,开启超声波传感器,随后设置参数如下:串口 COM3,波特率 115200,校验位为无校验,数据位为 8,停止位为 1。图 5.1 设计界面5.2 数据的采集开启超声波传感器开关,红色提示灯会亮,并将传感器探头一段朝向桌面一定距离,并保持一段时间。随后通过自己开发的窗口显示的来自传感器的数据。其中程序会将数据第六位由十六进制转换为十进制,并绘制图像。实际测量效果图如图 5.3。.图 5.2 传感器窗口实际效果图图 5.3 超声波传感器串口编号为 0F观 5.2 图,EE
29、为起始位,第四列编号为传感器编号,其中 0F 为超声波传感器编号,编号详见 5.3 图。经过程序甄别,识别第一组信号为超声波传感器数据,并将其由十六进制转换为十进制可读数据,试验成功。.图 5.4 协调器.第 6 章 总结本次课设超声波传感器数据采集及界面开发。在课设过程中,我们先从 MATLAB软件的熟练使用学起,并在老师的带领下,用 MATLAB 试做了 MATLAB 计算器。在此过程中,学会了许多有关界面开发的知识。也犯了很多错误,但为后来的界面开发积累了实践经验。刚开始设计串口界面时候,有些无从下手,但经过后来的思索和一步步实践,逐步找到了自己的节奏。其中我感到最难的部分就是程序代码的
30、逻辑结构,回调函数的使用。由于之前只学过 JAVA,对非 JAVA 的语言有些看不懂,也难以理解。后来经过老师的点拨,和自己上网查资料,逐渐学会了代码语言部分。随后,经过对串口界面的开发,发现了自己在总体设计上的一些小缺陷。比如按钮位置大小和排序的安排不当,使得不得不从新设计。随着界面开发的深入,逐步加深对该软件的认识和对传感器参数的熟悉和理解。同时,我也阅读大量的资料了串口窗口一些特点。课程设计是对所学知识的应用,理论联系实际让我对学过的知识有了更加深刻的理解。尤其在十六进制数转换为十进制可读数据的过程,耽误我很多时间,也让我学会了很多,更加深对程序语言的理解。通过对界面设计、制作、测试。调
31、试的过程,不但掌握了基本的传感器调试技术,也掌握了 MATLAB 软件的操作。最后经过不断调试,不断地修改以及小组成员的协作,顺利的测出结果。本次课设中对我最大的困难就是编程语言的局限性。以后会在学习中不断加深对语言的学习,暴露出许多缺点,也让我充分认识到自身的不足,让我更好地认识自己,并不断提升自己的专业水平。经过这段时间里的学习,我学习到了很多新知识,也对传感器协作的过程有了更深的了解,并且对界面开发有了较深的认识,学会并掌握了 MATLAB 开发软件的使用与调整界面技术,加深了对 MATLAB 使用的熟练程度,认识到物联网技术宽广的应用前景。为日后工作打下基础。本人签字: .参考文献1张
32、应福.物联网技术与应用J.通信与信息技术,2010,(1)2张莉.ZigBee 技术在物联网中的应用J.电信网技术,2010 年 3 月,第 3 期.3赵茂泰.智能仪器原理及应用J.北京:电子工业出版社.4彭军.传感器与检测技术M.北京:高等教育出版社5 张谦琳. 超声波检测原理和方法M. 北京:中国科技大学出版社,1993.10.6 时德刚,超声波测距的研究J. 计算机测量与控制,2002,9(10):7. 吕泉. 现代传感器原理及应用M. 清华大学出版社有限公司, 2006. 8. 李建华. 超声波传感器的特性及应用J. 电子世界, 1990 (4): 12-14. 9. 梁子剑. 浅析超声波传感器及其应用J. 商情, 2013 (35): 238-238