Lesson5---传感检测.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lesson5 传感检测 介绍在TinyOS中如何获得传感器的数据 ; 例子1:Sense,周期性地读取传感器(sensor)的数据并显示数值在LED上; 例子2:Oscilloscope,稍微复杂点,节点周期性地播报各自传感器的数值到基站节点,再由其转发到电脑上并用图形界面显示出来。 一、介绍 通常,检测工作可以分成两个任务:配置传感器(以及连接的硬件模块,如ADC或SPI 总线)和读取传感器数据。 第1个任务非常复杂,Sense应用需要运行在所有的TinyOS平台上。那它如何才能知道相连接传感器配置的详情?它不能,因为配置的详情在每个平台都是不一样的。除非 Sense应用知道所有平台上的所有传感器,否则它将不能很好的完成配置任务。 但第2个任务,读取传感器数据,可以较为容易的解决。 在TinyOS2.0,检测应用程序具有平台独立性。那到底是谁在负责配置传感器? 二、实例1 Sense 应用程序 简单的Sense应用(位于/opt/tinyos-2.x/apps/Sense),周期性地采样默认传感器,并显示读取数值的低位到LED灯上。 先看看SenseAppC.nc配件: SenseC实现部分的顺序如下:使用Boot接口在系统初始化后启动周期性定时器, 然后定时器触发事件调用Readuint16_t 接口来读取数据。 读取数据是一个分阶段的过程,它分成调用Read.read()命令和等待Read.readDone()事件。 Read接口(/opt/tinyos-2.x/tos/interfaces)可以用来读取传感数据。 2.2 DemoSensorC DemoSensorC组件提供了Readuint16_t接口给SenseC模块,而DemoSensorC组件在每个平台都是不一样的。 所以,每一个想要采样的平台都要提供自己相对应的DemoSensorC。此外,传感器板可能会附带了自己的DemoSensorC组件。 然而在实现部分,DemoSensorC可能从一个平台到另一个平台是不同的。 三、Oscilloscope 应用程序 Oscilloscope是一个可以让程序员在电脑上形象看到检测数据的应用程序。 每一个Oscilloscope应用的节点采样传感器,并累积10个数值后发送一条消息给无线电。 一个运行有BaseStation应用的节点将通过串口转发这些消息到PC。 Running the Java GUI在电脑上更形象地显示从传感器获得的数值 : 启动SerialForwarder, 然后在tinyos-2.x/apps/Oscillscope/java输入命令./run 启动GUI * configuration SenseAppC{} implementation { components SenseC, MainC, LedsC; components new TimerMilliC(); components new DemoSensorC() as Sensor; SenseC.Boot - MainC; SenseC.Leds - LedsC; SenseC.Timer - TimerMilliC; SenseC.Read - Sensor; } module SenseC{ uses { interface Boot; interface Leds; interface TimerTMilli; interface Readuint16_t; } } implementation {… …} interface Readval_t { command error_t read(); event void readDone( error_t result, val_t val ); } SensC.nc为什么使用uint16_t而不是val_t? 通用接口必须带有一个类型参数,并且只有当提供和使用的接口的类型参数一样时,两个组件才可以连接起来。 2.1 Read接口 generic configuration DemoSensorC(){ provides interface Readuint16_t; } implementation { components new VoltageC() as DemoChannel; Read = DemoChannel; } 也就是说,DemoSensorC间接地从特定平台的传感器组件(如 VoltageC)那里获得传感器数据,并提供给平台独立性的应用程序。 zjutwsn@126.com/123456zj 浙江工业大学浙江省嵌入式系统联合重点实验室

文档评论(0)

海川电子书城 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档