基于物联网的环境监测实现研究(3)

2018-12-24 12:47

的外围模块,并且有3种不同的版本,他们是根据不同的闪存空间32,64和128kByte来优化复杂度与成本的组合。

图7 SoC系统框图

针对协议栈,网络和应用软件的执行对MCU处理能力的要求,CC2430包含一个增强型工业标准的8位8051微控制器内核,运行时钟32MHz。由于更快的执行时间和通过除去被浪费掉的总线状态的方式,使得使用标准8051指令集的CC2430增强型8051内核,具有8倍的标准8051内核的性能。

CC2430包含一个DMA控制器。8k字节静态RAM,其中的4k字节是超低功耗SRAM。32k,64k或128k字节的片内Flash块提供在电路可编程非易失性

11

存储器。

CC2430集成了4个振荡器用于系统时钟和定时操作:一个32MHz晶体振荡器,一个16MHz RC-振荡器,一个可选的32.768kHz晶体振荡器和一个可选的32.768kHz RC 振荡器。

CC2430也集成了用于用户自定义应用的外设。一个AES协处理器被集成在CC2430,以支持IEEE802.15.4 MAC 安全所需的(128位关键字)AES的运行,以实现尽可能少的占用微控制器。

中断控制器为总共18个中断源提供服务,他们中的每个中断都被赋予4个中断优先级中的某一个。调试接口采用两线串行接口,该接口被用于在电路调试和外部Flash编程。I/O控制器的职责是21个一般I/O口的灵活分配和可靠控制。

CC2430包括四个定时器:一个16位MAC定时器,用以为IEEE802.15.4的CSMA-CA算法提供定时以及为IEEE802.15.4的MAC层提供定时。一个一般的16位和两个8位定时器,支持典型的定时/计数功能,例如,输入捕捉、比较输出和PWM功能。

CC2430内集成的其他外设有:

实时时钟;上电复位;8通道,8-14位ADC;可编程看门狗;两个可编程USART,用于主/从SPI或UART操作。

为了更好的处理网络和应用操作的带宽,CC2430集成了大多数对定时要求严格的一系列IEEE802.15.4 MAC协议,以减轻微控制器的负担。

射频及模拟收发器:

CC2430的接收器是基于低--中频结构之上的,从天线接收的RF信号经低噪声放大器放大并经下变频变为2MHz的中频信号。中频信号经滤波、放大,在通过A/D转换器变为数字信号。自动增益控制,信道过滤,解调在数字域完成以获得高精确度及空间利用率。集成的模拟通道滤波器可以使工作在2.4GHz ISM波段的不同系统良好的共存。 3.2 节点路由协议实现

无线传感器网络是一种能量有限的网络,且能量通常无法得到补充。因此,在无线传感器网络中,有效利用有限的能量资源是任何路由算法首要考虑的因

12

素。无线传感器网络设计的一个主要目标是最大化网络生命期。如果网络中某些节点能量消耗过快,这对网络的生存期有很大的影响。所以,每个节点能耗均衡也是路由算法的重要考虑因素。本项目主要研究基于最小跳数的能量自适应路由算法( minimum hops energy-adapted protocol,MHEP)。该路由算法的关键思想是利用到sink 节点的最小跳数和路径节点最小剩余能量作为路由选择度量来完成信息包的转发。

传感节点发送信息时,首先搜索本节点的下一跳可用节点集,从中选择路径节点最小剩余能量最大的节点进行转发,下跳节点接收到该信息后作同样的处理,直至发送到目的节点为止。下面给出的是单跳路由描述。

单跳路由实现过程 配置文件NodeC

使用的组件:MainC 主组件

NodeP 节点实现组件 LedsC LED组件 HalFlashP Flash读写组件 HplCC2430Timer1P 定时器1组件 HplCC2430Timer3P 定时器3组件 HplCC2430I2CbusP I2C组件 HplCC2430GeneralIOC IO组件 AdcP ADC组件 SimpleMacC RF组件 SmsLcdBasicC LCD驱动组件

使用的接口:Boot 启动接口 Leds LED接口 HalFlash Flash操作接口 HplCC2430Timer16 as Timer1 定时器1接口 Init as Timer1Init 定时器1初始化接口 HplCC2430Timer8 as Timer3 定时器3接口 Init as Timer3Init 定时器3初始化接口

13

HplCC2430I2CBus as I2C I2C接口 Init as AdcInit ADC初始化接口 AdcControl ADC控制接口

Read as AdcRead ADC读接口

SimpleMac RF接口 StdControl as SimpleMacControl RF控制接口 SmsLcdBasic 液晶接口 GeneralIO as PAEnable PA控制脚

提供的接口:Init 软件初始化:读出Flash中存储的节点地址号。 实现文件NodeP

任务:task void delay() 延时10ms

task void delay1() 延时时间由节点号决定,相邻节点号间隔10ms。 事件:event void Boot.booted()

启动上电启动后进入该事件,该事件中完成时钟,定时器寄存器初始化,

无线发送变量的初始化,无线寄存器初始化,功放控制设置。 async event void Timer3.fired()

定时器3中断程序。停止定时器。

如果没找到子节点:本节点作为最后一级节点,向父节点发送自身节点号。

如果找到了子节点:向子节点发送设置消息。

event void AdcRead.readDone(error_t result, int16_t val)

读ADC中断程序。ADC值转换成压力整数和小数位,LCD显示压力值;

每5s采集一次,采集后立即休眠;直到采集12次(也就是一分钟采集结束),不休眠,读出时间值,打开定时器1,定时时间和节点跳数有关(目的是为了叉开各个节点发送数据的时间,避免冲突)。 event packet_t *SimpleMac.receivedPacket(packet_t *packet) 无线接收中断程序。Switch接收数据长度:

(1) length = 10 若packet->data = 0,表明收到的是查询消息,向发送查询消息的节点回应一个消息。若packet->data = 1,表明收到的是应答消息,从有效覆盖范围内的节点回应中,找出RSSI值最大的节点。

14

(2) length = 11 表明是父节点发送到本节点的设置消息,设置父节点为发送设置消息的节点号。跳数MHC为父节点跳数加一,设置定时器1溢出值为391*MHC(每个节点错开200ms),设置地址过滤。启动定时器3,发送查询子节点消息。

(3) length = 9+全部子节点字节数 表明收到的是节点号上传消息,将消息转发到自己的父节点。

(4) length = 21 表明收到的是时间设置消息,将其转化为BCD码格式,写入RTC,启动RTC,设置定时中断时间(5s)。将时间转发至子节点。设置外部中断寄存器。

(5) length = 36 表明是发到本节点的数据消息,转发至父节点。 MCS51_INTERRUPT(SIG_P1INT)

外部中断服务程序。在我们的系统中,外部中断为RTC中断。中断服务程序中,清外部中断标志位,调用读ADC命令。 async event void Timer1.fired()

定时器1中断服务程序。停止定时器,打开无线,发送数据包至父节点。

15


基于物联网的环境监测实现研究(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工程必知之经理责任制

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: