无线传感器函数代码?

无线传感器网络试题汇总

1、狭义的无线传感网络包含(传感点)(网络协议)(网络拓扑结构)。

2、传感器节点由(传感器模块)(处理器模块)(无线通信模块)(能量供应模块)四部分组成。

3、IEEE802.15.4规范定义了27个物理信道,信道编号从0到26,其中0号信道,1号信道,26号信道的中心频率分别是(868MHz)(900MHz)(2170MHz)。

4、IEEE802.15.4的数据传送有三种方式,一是(终端数据传输器译到协调器);二是(协调器传送器件到终端器件),三是(在两个对等器件间传输)。

5、IEEE802.15.4标准中共定义了四种类型的帧:(信标帧)(数据帧)(确认帧)(MAC命令帧)。

6、定时器1是一个(16)位定时器,可在时钟( 上升沿 )或( 下降沿 )递增或者递减计数。

7、定时器1有(自由运行模式)(取模模式)(递增计数/递减计数模式)(通道模式)四种工作模式。

8、定时器通道控制模式包含(输入捕获模式)和(输出比较模式)两种模式。

10、设置定时器1的控制寄存器T1CTL值为0X0E,则时钟进行了(128)分频,定时器工作于(取模)模式(参看教材246页表6-44)。

11、将定时器通道1设置为下降沿捕获,允许通道1中断,则捕获/比较寄存器T1CCTL1的值为(0x46);将定时器通道0设置为输出比较模式,输出置0,通道0的比较模式为:“输出置0”,则捕获/比较寄存器T1CCTL0的值为(0x48)(参看教材246页表6-46)。

12、CC2530有( 21)个IO口,其中(p0)(p1)2个8位端口,P2一个(5)位端

13、将P0口设置为输出,则P0DIR=(0xFF)。(参看教材174页表6-4)

14、将P1口设置为输出,则P1SEL=(0X00)。(参看教材175页表6-5)

15、如果已经允许P0中断,只允许P0口的低4位中断,P0IEN=(0X0F)。(参看教材184页表6-14)。

17、TinyOS操作系统是加州大学伯克利分校的David Culler领导的研究小组为无线传感网(Wireless Sensor Net,简称WSN)量身定制的开源的(嵌入式)操作系统。而nesC语言由C语言扩展而来,用来描述TinyOS的(执行模型和结构);nesC语言是TinyOS的(编程语言),也是TinyOS应用程序的(开发工具)。

20、接口提供命令(command)和事件(event)两种类型函数,但这两种类型接口函数的实现和调用方式完全不一样,向下调用命令,向上触发事件。命令函数(command)必须由接口的提供者(provider)实现,接口使用者调用(call);事件函数必须由接口提供者触发通知(signal),接口使用者实现事件函数,也就是说,上层组件(接口使用者)调用底层组件(接口提供者)的命令函数,启动底层组件实现命令功能;底层组件实现某种功能后,通过事件触发事件,通知报告上层组件对相应的事件进行处理。

21、模块和配置组件各有两部分代码块,第一块部分为声明部分,主要定义提供或使用接口,第二个块为

要:针对医疗、体育训练等过程中的身体指标监测问题,设计了基于ADS1292和LMT70的无线运动传感器节点,其中温度测量模块、心率监测模块实现了实时采集人体心电信号、体表温度,运动记录模块使用MPU6050芯片结合卡尔曼滤波算法来实现人体运动信息精准检测,最后STM32将以上信息通过CC2652RB蓝牙芯片发送给服务器(手机)并由自主开发的APP实时显示,同时还设计了心跳、体温异常等信息的語音提醒等功能,实验结果表明系统运行稳定,测量精度可满足实际要求。

关键词:心率检测;温度测量;运动姿态检测;无线传输;APP显示

心率、体温、运动状态等指标均涉及到人体健康,也是医疗、体育训练等项目中越来越重视的关键指标,该系列指标的无线快速监测问题已成为最新医疗器械、手环、手机等设备中的必备功能,传统的监测方法由于器件灵敏度等问题存在效率低、误差大、功能单一等问题,同时传统的检测设备多采用有线数据传输方式,导致设备的接线较为复杂且传输线在使用中也存在接触不良、开路等问题,造成维修与检测工作量大且很难找到开路点等问题,特别是高速运动过程中的指标监测技术在稳定性、灵活性、快速性等方面仍有待提高。笔者基于学校教学研究项目及全国大学生电子设计竞赛项目对基于STM32的无线运动传感节点进行了设计与开发,实现了实时采集人体心电信号、人体温度、人体运动信息精准监测等功能并通过高速单片机将以上信息通过CC2652RB蓝牙芯片发送给服务器(手机)并由自主开发的APP实时显示,同时还设计了心跳、体温异常等信息的语音提醒等功能。

目前的姿态检测多使用三轴加速度传感器进行运动检测,主要因为其成本较低,但三轴加速度传感器测量数据单一、准确性低。而MPU6050姿态融合传感器,通过姿态融合算法可以精确地对人体的运动进行分析,数据复杂但准确性高。目前的小型控制电路核心控制器多采用89C51单片机,其I/O脚使用简单,但高电平时驱动能力不强,而且89C51单片机运行速度过慢、保护能力很差,很容易烧坏芯片。

而近几年流行起来的高速STM32单片机有以下优点:运存大、主频高,运算能力强、外设丰富,定时器多、外部接口丰富,且拥有多个串口,USB通信、SPI通信等一应俱全,故采用该系列单片机作为主控芯片。目前的无线传输方式主要有Wi-Fi、蓝牙、ZigBee等传输形式,虽然Wi-Fi传输距离长,但是价格高、功耗高、电池续航时间短。ZigBee在短距离传输具备优势且功耗极低,但其传输速率不高且开发过程比较复杂,需大量协议程序代码。蓝牙传输模块价格低、功耗低、可以延长续航,虽然传输距离稍近,但是近距离通信毫无压力。综合比较后最终确定整个系统由手机、单片机、温度测量模块、心率监测模块、运动记录模块等组成,系统框架如图1所示。

心脏在收缩或舒张时会产生微弱的生物电流,这种电流可以传到人体表面。心电图机就是通过监测心脏这种周期性变化产生的电流变化,以连续曲线的形式,在心电图中记录下来。心电图记录纸上横向坐标可以测量各波的宽度,即时间。每小格距离为1 mm,采用25 mm/s的纸速时,则横坐标上每1 mm的距离等于0.04 s。根據需要可以提高走纸的速度,如成倍提高至50 mm/s或100 mm/s,则每小格1 mm就分别为0.02 s或0.01 s。在心电图上测量心率时,只需测量一个P-P(两个P峰之间的间隔)或R-R(两个R峰之间的间隔)间期的秒数,然后除以60即可得出心率数,计算公式:

(次/分),还可采用查表法或使用专门的心率尺直接读出相应的心率数。当心律不规则,P-P和R-R间期不均匀时,不能用一个心动周期计算,一般采取数个(如10个)心动周期的P-P或R-R周期平均值计算。测量各波的时间,应选用波形清晰的导联并且同时用多个方法测量导联方能准确,各波的时间测量应自该波形内缘的起点测至波形内缘的终点。

LMT70是精密模拟温度传感器,其供电要求低、引脚简单、具有很宽的温度测量范围,是一款医用级的传感器。LMT70几乎适用于所有高精度、低功耗的经济高效型温度感测应用,例如物联网传感器节点、医疗温度计、高精度仪器仪表和电池供电设备。根据其测量结果精确、体积小、电源要求低的特点,由于LMT70的输出电压传递函数近似于线性但并非绝对线性,故也可以用二阶或三阶传递函数方程更好地描述,通常用在对温度变化测量精度要求较高的工业控制领域。

二阶传递函数可以在更宽的有限温度范围内提供良好的结果。在-55 ℃至+150 ℃的整个温度范围内,单个二阶传递函数在极端温度下的误差会增加。使用最小二乘和方法,使用如表1所示的电气特性温度查找表中的值生成了最合适的二阶传递函数:

其中TM为温度值,VTAO为直流电压值,a与b为二阶、三阶传递系数,c为补偿值。

在较宽的温度范围内,最精确的单个方程式是三阶传递函数。使用最小二乘法并使用表2中的值生成了最合适的三阶传递函数:

其中,a、b、c为传递系数,d为补偿值。

由于本系统对温度的精度要求不高,温度传感器LMT70的温度计算公式采用了一阶传递函数:

其中NUM为温度传感器的输出电压,故需要进行模数转换后送到单片机内部进行温度还原。

实验表明,MPU6050姿态融合传感器可通过四元数法来算出运动量,四元数法:

当采用欧拉角表示姿态变换时,表征的是分别绕着(i,j,k)三个坐标轴的三次旋转,根据欧拉定理,这三次旋转可以等效成绕着某轴一次旋转而成,其中的某轴就是公式中的u=(u1,u2,u3),旋转角度就是公式中θ。

使用四元数进行载体姿态更新方程:

其中,t为初始时间,δ为采样间隔。

四元数的更新可通过上式完成。因此只要知道初始四元数(载体的初始姿态)和四元数的导数就可以完成任意时刻四元数的解算,从而得到运动信息。由于MPU6050自带的DMP库可以直接输出四元数,故可以大大减轻STM32的运算负担,将芯片采集到的信息代入方程计算出结果即可对人体的运动状态进行估计。

3  硬件电路与软件设计

系统核心控制器采用了STM32F103单片机,该单片机的主频速度可达72 MHz,用其来完成温度信息、运动信息、心率信息的计算可大大提高系统的灵敏度。根据实际需求使用ADS1292模拟前端芯片设计了心电检测模块电路,系统以温度传感器LMT70为基础,加入模数转换芯片ADS1115设计了温度检测模块,无线传输使用了基于CC2652RB的蓝牙模块,其波特率最高可达115 200比特每秒,可保证心率信号的实时传输,确保系统在高速运动时的稳定运行。系统使用了可以进行5 V转3.3 V降压的芯片AMS1117对整个电路进行供电,在搭建完成基本电路加入了充电过冲保护模块和开机锁等功能。

系统整体软件流程如图2所示,程序开始后单片机会启动ADS1292、ADS1115、MPU6050读写函数,实时获取心电信号、温度数据、加速度数据并使用卡尔曼滤波算法对采集值进行滤波处理,最终得到稳定值后计算实际值。

以MPU6050的运动数据滤波为例,部分简易卡尔曼及一阶互补核心滤波算法为:

函数功能:简易卡尔曼滤波

入口参数:加速度、角速度

函数功能:一阶互补滤波

入口参数:加速度、角速度

最終该系统整体电路包括硬件与服务器(手机),如图3所示,图中的设备正在测量心率。除此之外,运动信息的采集测试选用了华为手机自带软件进行对比测试,温度信息采集测试选用体温枪进行对比测试。温度和步数由下图系统自主设计的APP进行显示。

该系统把心电、心率、温度、步数、距离分成四个部分,然后通过市面上的专业测量仪器对测试者进行测试,之后再使用作品进行测试,并得出测量结果。心电图使用系统的作品进行了测试微调得出的结果,如图4所示,与由德州市中医院实际测得的专业心电图,如图5所示,进行对比。

其他实验因试验次数过多,系统将每十次测试的结果计算平均值并加以记录,测试结果如表3所示。

该系统对基于STM32的无线运动传感技术进行了研究,给出了一种基于高速单片机与高精度心率、体温传感器相结合的无线测量系统设计方案,可检测人体的心率、体温、运动状态、卡路里消耗等信息并通过手机APP实时显示各项指标,同时设计了语音播报模块来进行有效提醒,并在软件程序中采用卡尔曼滤波算法来提高检测数据的精确性,极大地缩短检测和系统处理时间。实验测试表明,本系统传输速率快、准确性高、功耗低、成本低,而且模块化设计,便于功能扩展,能够满足医疗、体育训练等项目中快速准确地对身体指标实时监测的需求,为人体指标的无线测量与传输技术提供了相关设计新思路,具有一定的实用价值。

[1] 苏波,李艳秋,于红云,等.从环境中获取能量的无线传感器节点 [J].传感技术学报,2008(9):.

[2] 阎石.数字电子技术基础:第6版 [M].北京:高等教育出版社,2018.

[3] 谢文和.传感器及其应用 [M].北京:高等教育出版社,2006.

[4] 苏波,李艳秋,于红云,等.从环境中获取能量的无线传感器节点 [J].传感技术学报,2008(9):.

[5] 王卫东.模拟电子技术基础:第2版 [M].北京:电子工业出版社,2010.

[6] 杨振江.新型集成电路使用指南与典型应用 [M].西安:西安电子科技大学出版社,1998.

[7] 邱关源,罗先觉.电路 [M].北京:高等教育出版社,2006.

[8] 童诗白,华成英.模拟电子技术基础:第3版 [M].北京:高等教育出版社,2000.

[9] 张伟,吴红杰,徐海鹰.电路设计与制版 Protel DXP高级应用 [M].北京:人民邮电出版社.

[10] 黄志伟.全国大学生电子设计竞赛电路设计 [M].北京:北京航空航天大学出版社,2006.

作者简介:高天学(1991—),男,汉族,山东济南人,讲师,硕士研究生,研究方向:电子与通信技术、智能控制。

新型编程语言——nesC其最大的特点是,将组件化/模块化思想和基于事件驱动的执行模型相结合。现TinyOS操作系统和基于TinyOS的应用程序都是用nesC语言编写的,大大提高了应用开发的方便性和应用执行的可靠性。本文以WSN为背景,通过一个基于TinyOS的灯闪烁实例——Blink,详细介绍nesC语言的结构以及用该语言如何实现组件化/模块化的应用程序,为深入研究TinyOS的应用开发提供一种实现方法。

  nesC是C语言的扩展,精通C语言的程序员掌握这种语言相对比较快。与C语言的存储格式不同,用nesC语言编写的文件是以“.nc”为后缀。每个nc文件实现一个组件功能(组件化/模块化)。在nesC程序中,主要定义两种功能不同的组件——模块(module)和配件(configuration)。

  模块主要用于描述组件的接口函数功能以及具体的实现过程,每个模块的具体执行都由4个相关部分组成:命令函数、事件函数、数据帧和一组执行线程。其中,命令函数是可直接执行,也可调用底层模块的命令,但必须有返回值,来表示命令是否完成。返回值有3种可能:成功(见BlinkM.nc代码部分)、失败、分步执行。事件函数是由硬件事件触发执行的,底层模块的事件函数跟硬件中断直接关联,包括外部事件、时钟事件、计数器事件。一个事件函数将事件信息放置在自己的数据帧中,后通过产生线程、触发上层模块的事件函数、调用底层模块的命令函数等方式进行相应处理,因此节点的硬件事件会触发两条可能的执行方向——模块间向上的事件函数调用和模块间向下的命令函数调用。

  配件主要是描述组件不同接口的关系,完成各个组件接口之间的相互连接和调用。相关执行部分主要包含提供给其他组件的接口和配件要使用的接口的组件接口列表和如何将各个组件接口连接在一起的执行连接列表。

  模块和配件的定义格式如下:

  在模块中,关键字“implementation”必须包含实现模块提供和使用接口声明的全部命令和事件。在配件中,关键字“implementation”定义执行部分,连接用“->”、“=”、“”表示位于左边的组件接口要调用位于右边的组件接口。

  不管是模块还是配件,每个组件都包含了定义和实现两部分。被提供者和被使用者都是通过调用接口来实现各个接口的通信和函数的功能,不同的模块也可以实现相同的接口。接口可以是命令和事件,也可以是单独定义的一组命令。在应用程序中存在多个配置文件,并且配件之间存在一个层次关系,最上面的为顶层配件文件(每个应用程序必须有一个顶层配件),定义了Main组件接口与其他组件接口的连接方式以及各个接口间的调用关系。具体框架图可参见文献[6]中的关于nesC的一般结构。

  每一个nesC应用程序都是由一个或多个组件通过接口链接起来,并通过ncc/gcc编译生成一个完整的可执行程序。下面以TinyOS软件中的Blink应用程序为例,具体介绍nesC应用程序结构。

  Blink程序是一个简单的nesC应用程序。它的主要功能是每隔1 s的时间间隔亮一次,关闭系统时红灯亮。其程序主要包括3个子文件Blink.nc、BlinkM.nc和SingleTimer.nc。

  这个文件为整个程序的顶层配件文件,关键字为configuration,通过“->”连接各个对应的接口。文件关键内容如下:

  从上述代码中可看出,该配件使用了Main组件,定义了Main接口和其他组件的调用关系,是整个程序的主文件,每个nesC应用程序都必须包含一个顶层配置文件。

  SingleTimer.nc为一个配件文件,主要通过TimerC和StdControl组件接口实现与其他组件之间的调用关系,配件文件还定义了一个唯一时间参数化的接口Timer。下面给出部分伪代码:

  注:程序中斜体字表示nesC语法中所用到的关键字。

  将nesC编写的配件文件、模块文件通过接口联系起来就形成了图1所示的Blink组件接口的逻辑关系。从图中可清晰地看出在Blink程序中组件之间的调用关系,各配件文件(如SingleTimer和LedsC)以层次的形式连接,体现了nesC组件化/模块化的思想。

  关于nesC应用程序的执行,在TinyOS上提供了一个可视化图形仿真器’Tinyviz,观测TinyOS应用程序具体功能的执行过程。以TinyOS系统自带的app应用文件Blink程序执行过程为例,其他基于TinyOS开发的应用程序软件调试、仿真均可用以下执行方法。

  在PC机上安装TinyOS的运行平台,具体安装过程和安装Windows系统一样。

  为了避免与pc机自身系统的冲突,可将安装包tinyos-1.1.0.exe(软件版本以实际仿真的版本为主,现升级到TinyOS-2.1)安装到指定路径(本仿真软件环境是安装在D:/盘下)。这个安装包已经包含了JAVA、Cygwin,TinyOS相关软件和相关的编译器,同时提供像mica、micaz等硬件驱动,针对不同硬件编译生成可执行文件下载。

  ①打开生成的cygwin图标(Linux建立在Windows下的软件平台),在光标下进入仿真环境路径(安装在D盘下):

  ②输入make,之后将生成一个执行脚本文件Tinyviz.jar。

  ③进入应用程序路径。在相同的路径下进入blink目录下。

  ④输入make pc—在PC机上对Blink程序进行编译、仿真,若有相关硬件,则输入硬件名称,如make micaz,在blink文件下会生成一个pc文件夹,里面包含了在pc机上blink主程序main.exe。

  利用可视化Tinyviz将调用接口使Blink程序执行的仿真结果通过图形显示出来,仿真结果如图2所示。最上面一层显示了整个程序仿真时间长度和仿真终止按键。图中每个节点的位置可以任意布置,仿真间隔时间也能自行设定。Blink程序的主要功能是每经过1 s的时间间隔,每个仿真节点上红灯会闪烁1次,如图中节点0红灯是灭的,节点6红灯是亮的。该图很清晰地将NesC编写的应用程序功能仿真出来,对具体代码的硬件化执行提供了实现方法。

  通过对Blink程序的详细分析可以看出,用nesC编写的程序能很好地将组件化/模块化的思想应用到程序中,对于其他nesC应用程序编写也能调用各组件接口,代码量少,能快速建立程序中模块间的链接,减少执行任务和事件驱动时线程间不必要的资源消耗,其具体功能可通过仿真软件反映出来。掌握nesC的语法,可以大大地降低实现无线传感器网络操作系统和上层的应用程序的复杂度,为深入学习与研究TinyOS系统以及其上应用程序的设计提供了参考方法。

我要回帖

更多关于 无线传感器的定义 的文章

 

随机推荐