基于TinyOS2.x的温湿度传感器的底层驱动与应用

发布者:chwwdch最新更新时间:2013-08-10 来源: 电子设计工程 关键字:操作系统  底层驱动  温湿度 手机看文章 扫描二维码
随时随地手机看文章

引言
    无线传感网络可以用一个简单的数学等式概括:传感器+片上系统+无线通信=宽广应用。传感器将检测到的信号按一定规律变换成为电信号或其他信息形式传输至无线传感网络,以满足信息的传输、处理、存储、显示、记录和控制等要求。本文研究了在TinyOS2.x操作系统上,SHTxx型温湿度传感器底层驱动的应用研究,并且通过硬件平台的设计,验证了应用的可行性。

1 TinyOS系统与nesC语言
1.1 TinyOS系统
    TinyOS是美国加州大学伯克利分校开发的一种基于事件驱动的操作系统,其目标是用最少的硬件支持网络传感器的并发密集型操作。Tin yOS操作系统把底层硬件封装成组件架构,通过组件的层递结构对应用层提供与硬件无关的接口,它的这种分层架构易于操作系统的移植。
    TinyOS构建成一种自下而上的树状结构,如图1所示。最底层的组件直接与硬件交互,同时向上层报告事件的发生,上层组件收到信号向下发送指令。TinyOS是专为低功耗微控制器设计的一种微型操作系统。此外,它还有非常环保的省电制度和机制。

a.JPG


1.2 nesC语言
    nesC(network embeded system C)语言由C语言扩展而来,用来描述TinyOS的执行模型和结构;nesC语言是TinyOS的编程语言,也是Tiny OS应用程序的开发工具。nesC程序主要由配置组件、模块组件和编译文件组成,如图2所示。

b.JPG


1.3 组件与程序
    TinyOS组件分为配置和模块两种组件。一般来说,上层组件可以调用底层组件的命令,下层组件通过触发信号的方式通知上层组件及其事件的发生,最底层的组件直接和硬件交互,从而自上到下形成一种树状结构。接口的提供者必须实现接口中的命令函数,而接口的使用者必须实现接口的事件函数,如图3所示。一个组件可以使用或提供多个接口,以及实现同一个接口的多个命令。

c.JPG


    模块提供应用程序代码,实现一个或多个接口;配置则是通过配线将其他组件装配起来的组件,将各个组件所使用的接口与其他组件提供的接口连接在一起。

2 SHTxx温湿度传感器介绍
    SHTxx系列单芯片传感器是一款含有已校准数字信号输出的温湿度复合传感器。SHTxx传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D转换器以及串行接口电路在同一芯片上实现无缝连接。
2.1 SHTxx温湿度传感器的硬件接口
    SHTxx的串行接口与I2C总线相似,但与I2C总线接口并不兼容,图4为SHTxx温湿度传感器的硬件接口电路图。SCK用于微处理器与SHTxx之间的时钟同步通信。由于SHTxx内部接口包含了完全静态逻辑,因此不存在最小SCK频率。DATA为三态逻辑门,主要用于数据的读取。DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。为避免信号冲突,微处理器应驱动DATA在低电平。需要一个外部的上拉电阻(例如10 kΩ)将信号提拉至高电平。

d.JPG


2.2 SHTxx温湿度传感器的工作时序
    SHTxx温湿度传感器用一组“启动传输”时序来表示数据传输的初始化。当SCK时钟为高电平时,DATA翻转为低电平,紧接着SCK变为低电平,随后在SCK时钟为高电平时,DATA翻转为高电平。

[page]

    SHTxx温湿度传感器通信命令中高3位表示地址位(目前只支持“000”)、低5位表示命令位(如表1所列)。SHTxx温湿度传感器在第8个SCK时钟的下降沿之后,将DATA下拉为低电平(ACK位);在第9个SCK时钟的下降沿之后,释放DATA(恢复高电平)表示已正确地接收到指令。

e.JPG


    SHTxx温湿度传感器的测量输出包括温度湿两种测量值,为了补偿湿度传感器的非线性以获取准确数据,使用式(1)修正SHTxx湿度输出数值,对于高于99%RH的湿度测量值则表示空气已经完全饱和,必须处理为100%RH。

g.JPG


    湿度转换系数具体取值如表2所列,其中C1、C2和C3为修正系数,SORH为相对湿度测量值。
    f.JPG
    SHTxx的温度传感器是由能隙材料PTAT(正比于绝对温度)组成,该材料具有极好的线性度。可将数字输出转换为温度值:
    T=d1+d2×SOT        (2)
    其中,d1、d2为温度转换系数;SOT为温度数字输出。具体取值可参考表3、表4。

h.JPG


2.3 SHTxx温湿度传感器节点硬件设计
   
图5为温湿度传感器节点的电路图,其中SHTxx的DATA和SCK引脚分别与CC2530的P0.1和P1.7脚相连,供电电压为3.3 V。

i.JPG

[page]

3 SHTxx的TinyOS底层驱动设计
3.1 SHTxx温湿度传感器底层接口驱动设计
   
由SHTxx温湿度传感器测量时序可知,SHTxx温湿度传感器测量时序包括启动传输、发送命令、2字节数据传输以及CRC校验传输等时序部分。SHTxx温湿度传感器的TinyOS驱动代码包括SHT接口的定义SHT.nc、SHT配置组件SHTC.nc和模块组件SHTP.nc三部分。
    (1)SHT温湿度传感器接口定义
    在SHT温湿度传感器接口中,定义了read命令函数和ReadDone事件函数。read命令函数负责启动SHTxx温湿度传感器的测量过程,ReadDo ne事件函数则是当SHTxx温湿度传感器测量完成后触发该事件。具体代码如下:
    j.JPG
    (2)SHT温湿度传感器配置组件
    在SHT温湿度传感器配置组件中,利用MainC组件的初始化命令完成对SHT温湿度传感器的初始化操作。HplCC2530GenerallOC组件对SHT温湿度传感器端口进行配置,定时器组件定义两次测量的时间间隔,部分代码如下:
    k.JPG
    (3)SHT温湿度传感器模块组件
    SHT温湿度传感器模块组件完成SHT温湿度传感器数据读取的底层驱动,完成对SHT温湿度传感器的时序模拟以及实现SHT接口函数。在数据读取完成后,触发ReadDone事件函数,下面主要介绍SHT温湿度传感器驱动模块中的几个与时序相关的函数。
    复位时序模拟函数如下:
    l.JPG
    数据读取时序模拟函数如下:
    recvByte(uint8_t ack)函数模拟读取数据时的时序。微处理器在读取SHTxx温湿度传感器的数据时,有两种不同的应答信号。在读取转换数据时,由微处理器将DATA线拉为低电平作为应答信号;而在读取CRC数据时,需要将DATA线拉为高电平应答信号,所以在recvByte(uint8 _t ack)函数中,ack作为两种应答信息参数进行传递。该函数返回读取的数据。
    m.JPG
    SHTxx温湿度传感器写数据主要为写命令字和SHTxx温湿度传感器的状态寄存器,在写命令字完成后,SHTxx温湿度传感器将控制DATA数据线,并将数据线上拉为高电平作为应答信号。写数据时序模拟函数略——编者注。
3.2 SHTxx温湿度传感器TinyOS驱动程序设计
    SHTxx温湿度传感器驱动测试程序通过SHTxx温湿度底层驱动将采集SHTxx的温湿度值,显示在开发平台中的LCD屏上,程序文件包括模块组件TestSHTM.nc、配置组件TestSHTC.nc以及编译文件makefile。
    TestSHTC.nc的配置文件部分代码略——编者注。SHTxx温湿度传感器驱动测试程序的组件关联图略——编者注。

4 系统测试及结论
   
通过Cygwin平台对应用程序进行编译和链接,生成hex文件,下载程序到目标硬件平台运行。LCD显示温湿度采集结果,通过测试发现,该系统能完成预期的数据采集功能。根据SHTxx温湿度传感器驱动的设计方法完成其他传感器的驱动设计。当然也可以利用该驱动程序,通过网络实时监控周围环境的温湿度参数。

关键字:操作系统  底层驱动  温湿度 引用地址:基于TinyOS2.x的温湿度传感器的底层驱动与应用

上一篇:Windows CE 嵌入式网络监控系统的设计
下一篇:WinCE内核动态加载GPIO端口驱动的设计方法

推荐阅读最新更新时间:2024-03-16 13:26

51单片机基础之DHT11温湿度传感器
接线: 代码: main.c文件 /* 使用DHT11模块,检测温湿度,在lcd1602上面显示,因为1602显示不是每次都能出来,所以加了串口打印,会更加直观。 */ #include reg51.h #include lcd.h #include intrins.h #include stdio.h sbit Temp_data=P3^6; //信号引脚 unsigned int rec_dat ; unsigned char rec_dat_lcd0 ; unsigned char rec_dat_lcd1 ; unsigned char rec_dat_lcd2 ; unsigned ch
[单片机]
51单片机基础之DHT11<font color='red'>温湿度</font>传感器
风河推出全球首个通过Wurldtech Achilles认证的实时操作系统
      Intel全资子公司风河系统公司(Wind River)和网络安全测试与认证解决方案供应商Wurldtech Security Technologies日前联合宣布,风河VxWorks成为全球首个通过Wurldtech's Achilles认证计划的实时操作系统。Wurldtech's Achilles认证计划是一项国际认可的行业网络安全标准,通过其认证将会帮助风河公司在汽车、能源、石油天然气、交通运输和医疗设备等领域的客户拥有更高级安全认证的VxWorks,从而有效地防御网络安全攻击。   实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过
[工业控制]
恩智浦推出Java Card全新操作系统
恩智浦半导体(NXP)日前针对安全识别应用推出最新Java卡操作系统(Java Card Open Platform, JCOP3)。此款多方案平台可为客户带来更高的安全性与灵活性,帮助客户不仅能够整合自有的小型应用程序和个人化解决方案,同时还能缩短产品上市的时间。 恰逢Java卡论坛(Java Card Forum)二十周年纪念,恩智浦全面推出各类产品,其中JCOP3平台不仅将身份认证市场的便利性提升至全新层次,同时亦突显Java卡技术持续创新。 恩智浦资深副总裁暨安全交易与识别业务总经理Rafael Sotomayor表示,恩智浦本次推出JCOP3平台,对于促进Java卡(Java Card)技术的发展贡献良多。目前电子政务、
[半导体设计/制造]
从嵌入式系统到嵌入式操作系统
  嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的;适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。   嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结台在一起,它的升级换代也是和具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性;一般都固化在只读存储器中或间存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。   嵌入式操作系统是嵌入式系统的操作系统。它们通常被设计非常紧凑有效,抛弃了运行在它们之上的特定的应用程序
[嵌入式]
STM32F103试用体验:OLED显示及DHT11温湿度测量实验
1.实验简述 之前做了在GD32开发板上的温湿度测量实验,现在在精英STM32开发板上调整代码重新实现. 用到的材料工具如下: (1)精英STM32开发板 (2)0.96寸OLED模块 (3)DHT11模块 (4)Keil项目程序 2.连接方式 利用开发板的OLED/Camera接口,直接将模块插入到此接口内,从原理图中得出接口对应的单片机引脚后,在程序中修改相应引脚,如图: 3.实验过程 单片机通电后,先显示基本信息至OLED屏,然后每1秒通过DHT11获取温湿度数据,并实时在OLED屏上显示. 开始时测得温度26.6度,湿度91%,如图: 对DHT11模块吹口仙气(效果不明显可以多吹几口^_^),可看到温度
[单片机]
STM32F103试用体验:OLED显示及DHT11<font color='red'>温湿度</font>测量实验
linux操作系统交叉编译环境的建立方法
基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主PC机所构成。目标硬件开发板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主PC机来完成(所以称为交叉编译)。双方之间一般通过串口,并口或以太网接口建立连接关系。   但在此我建议构建如下的交叉编译环境,适合个人或研发小组使用:单独拿出一台PC机(PII以上即可,就用以前淘汰的旧机器就可以),在该PC上安装桌面的Linux操作系统(如Red Hat Linux 8.0及以上),可以采用默认的安装选项(注意要包含ftp服务),这台PC作为Linux服务器,除管理员以外,一般不直接让其他人去操作。
[电源管理]
更适合机械宝宝体质的操作系统,竟然内置LLM!
们一直在试图搭建更、可靠的,比如之前火爆全网、来自波士顿动力公司的机器狗Spot。它可以轻松上下楼梯、搬运重物、巡查街道,等等。 波士顿动力公司机器狗Spot按下把手开门通过 机器狗由一个运行着系统的遥控手柄控制,人们可以通过摄像头随时查看它的状态,并提供指引爬上爬下、行走翻身。这当然很棒,但当我们想给机器人传达更复杂的动作指令时,在手柄上相应的操作就繁琐了很多。能不能开发出一种更易用、直观的人机交互方法,能让我们更轻松地发送指令给机器人呢?与其在一个小屏幕上戳来戳去控制不同的参数,能不能直接告诉机器人具体的指令,让它去做什么呢? 近日,由李飞飞教授及来自斯坦福大学、加州理工、清华大学和的几位学者组成的
[机器人]
微软应弃WindowsMobile退出手机操作系统
8月10日消息,据《商业周刊》9日报道,早在上世纪90年代智能手机市场刚开始出现的时候,微软公司就是这一领域的佼佼者。但该公司试图从这一领域获得更多收入的想法却难以实现。事实上,在整个智能手机市场有轻微上涨的时候微软手机操作系统却在市场份额中却有所下降。Windows Mobile已经成为微软的一个潜在问题。8月9日,J.Gold Associates分析师杰克·高德(Jack Gold)撰文表示,目前Windows Mobile已经成为微软公司失败产品,微软应该在两年内退出手机操作系统市场。以下是他的分析: 过去两年里,微软在手机操作系统的市场占有率一直在下滑,主要原因在于该公司未能跟上智能手机市场的发展潮流,比如
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved