1、物联网课程设计 副本物联网应用综合设计课程设计题 目: 周界环境监测系统 院 别: 电子工程学院 专 业: 应用电子技术 班 级: B1321 姓 名: 高文阳 学 号: 21311100109 时 间:2015年11月16号2015年11月27号 指导老师:毛莉莉 第一章系统设计分析1.1设计要求 这个设计综合了传感器采集、点对点通讯、串口通讯这三个实验。这个设计分为两个部分,一个是基站部分,另外一个是节点部分。其中基站部分主要负责处理串口数据和发送采集命令给基本节点,节点部分主要是完成接收基站下达的采集命令和采集传感器数据并且发送给基站 熟练掌握 CC2530 基础实验中的串口通讯实验和
2、ATOS 点对点通讯。同时要了解 TCP/IP 协议中广播是如何实现的。1.2系统组成 1. 带有 CC2530 芯片的基站;2. 光传感器模块;3. 温湿度传感器模块;4. 天线三个;5. 烧录线一根;6. 平行串口线一根;第二章 硬件实现2.1 光传感器模块 光敏电阻是一种光电效应半导体器件,它能提供很经济实用的解决方案,应用于光存在与否的感应(数字量)以及光强度的测量(模拟良)等领域。光电效应半导体探测器可以分为两大类:结和体效应装置。结装置工作于光电传导模式,它利用 PN 结的反向特征。在反向偏转时,PN 结产生一个受光控制的电流信号。输出量与触发照明成正比,而不受供应电源的影响。硅光
3、电管就是这类的产品。而体效应光电半导体没有结,它的体电阻系数随照明强度的增强而减小,容许更多的光电流流过。这种阻性特征使得体效应光电半导体具有很好的品质:通过调节供应电源就可以从探测器上获得信号流,且有着很宽的范围。为了区别,珀金埃尔默光电子将体效应光电半导体称作为光电半导体单元,简单的说就叫光敏电阻。光敏电阻是薄膜元件,它是由在陶瓷底衬上覆一层光电半导体材料。金属接触点盖在光电半导体面下部。这种光电半导体材料薄膜元件有很高的电阻。所以在两个接触点之间,做的狭小、交叉,使得在适度的光线时产生较低的阻值。2.2 温湿度传感器模块 传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个
4、14 位的 A/D 转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 SHTxx 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要 调用这些校准系数。两线制串行接口和内部基准电压,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。1.接口说明2. 电源引脚SHTxx 的供电电压为 2.45.5V。传感器上电后,要等待 11ms 以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(VDD,GND)之间可
5、增加一个 100nF的电容,用以去耦滤波。3.串行接口 (两线双向)SHTxx的串行接口,在传感器信号的读取及电源功耗方面,都做了优化处理;但与I 2 C接口并不兼容。第三章 软件设计3.1 系统软件流程 1.基站流程图 3.2 主要实现代码3.2.1. 节点参考程序 interface Boot; interface AMPacket; interface Packet; interface PacketEx; interface AtosControl as AtosNetControl; interface Intercept; interface AtpCmdComm; interfa
6、ce StdControl as SystemHeartControl; event void Boot.booted() ADBG(100,#Boot.booted myaddr=%d#n, (int)call AMPacket.address(); call SystemHeartControl.start(); /call UartDebugControl.setLevelInput(TRUE); post initTask(); uint16_t prepareReport(message_t * msg, uint8_t *report, atosroute_data_header_
7、t *data_header, void *_payload, uint16_t len) cmd_packet.len = prepareReport(msg, cmd_packet.data, data_header, payload, len); call AtpCmdComm.sendCmdPacket(&cmd_packet); LED_BLUE_TOGGLE; return FALSE; event void AtpCmdComm.sendCmdPacketDone(atp_cmd_packet_t *packet, error_t error) event void AtpCmd
8、Comm.receivedCmdPacket(atp_cmd_packet_t *packet, error_t error) 3.2.2. 基站参考程序 interface Boot; interface AtosControl as AtosNetControl; interface AMPacket; interface Packet; interface PacketEx; interface AtoSensorCollection; interface AMSend; interface Timer as SensorTimer; interface StdControl as Sy
9、stemHeartControl; call AtosNetControl.start(); post enableSensor(); event void SensorTimer.fired() ADBG(DBG_LEV, nn= SensorTimer fired %d=rn, (int)m_sensoring); atomic uint8_t i; LED_BLUE_TOGGLE; ADBG1(DBG_LEV, nsensor payload:); for (i=0; i m_sensor_length; +i) ADBG(DBG_LEV, %02x , (int)p_sensor_pa
10、yloadi); / add sesor type if (call AMSend.send(0x0001, &m_sensor_msg, m_sensor_length + 1) != SUCCESS) atomic m_sensoring = FALSE; event void AtoSensorCollection.sensorDone(uint8_t* data, uint8_t len, error_t result) ADBG(DBG_LEV, Sensor data done, data len = %d, result=%d, (int)len, (int)result); i
11、f(result = SUCCESS) m_sensor_length = len; post sendMsgTask(); else atomic m_sensoring = FALSE; m_sensoring = FALSE; event void AMSend.sendDone(message_t* msg, error_t err) atomic m_sensoring = FALSE; 第四章 设计结果及分析4.1 设计结果分析4.1.1. 动态路由简介 动态路由是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不
12、断变化的网络,以随时获得最优的寻路效果。4.1.2. ATOS动态路由 与传统的无线传感器网络路由中Sink节点(汇聚节点)向下广播路由信息的机制不同,本系统的路由的基本思想是:当有数据需要发送的时候首先会去查找路由表,如果路由表中不存在任何的路由信息,那么该节点会发送一个广播路由请求。其它节点在收到该节点路由请求的时候,如果自身有合适的路由信息则会将路由信息回复给请求节点。请求节点在收到应答的时候会去更新路由表的信息,以保证路由表的信息是最新的。如果路由表不是空的,那么当前节点会在自己的路由表中找跳数最少质量最好的路由表项将数据发送出去。 其中,更新路由表是路由协议最关键的部分。当接收到一个
13、新的路由信息的时候首先会遍历路由表,看在路由表中是否存在新路由信息中包含的节点号相同的表项。如果存在这样的表项,说明这条表项已经是比较旧的了,所以用接收到的新的路由信息覆盖这条比较旧的表项。遍历完路由表后如果发现不存在节点号相同的表项,说明之前不存在这样的路由信息,那么这条路由信息一定要加入到路由表中。将这条信息加入到路由表中会出现路由表已经满的情况,此时该系统的做法是用新的路由信息覆盖最没有价值的路由表项。在这个系统中相同的跳数,信号质量越差那么价值就越小。4.1.3. 实验现象截图4.2 心得体会 该实训将传感器采集和点对点通讯进行整合。从这个实训中就可以看到传感网的雏形了。这个实训可以让
14、学生增加对传感网的感性认识,也为接下来的路由实验打下坚实的基础。参考文献1.ATOS实验平台使用指南;2.光传感器使用指南;3.DS18B20(温度传感器)使用指南;4.SHT10(温湿度传感器)使用指南;附录:节点参考程序 #include message.h #include AtosRoute.h #include AtpCmdPacket.h #define DBG_LEV 20 module ANTQuickRouteBaseP uses interface Boot; interface AMPacket; interface Packet; interface PacketEx;
15、 interface AtosControl as AtosNetControl; interface Intercept; interface AtpCmdComm; interface StdControl as SystemHeartControl; implementation message_t m_msg; message_t cmd_msg; task void initTask() call AtosNetControl.start(); task void sendTask() event void Boot.booted() ADBG(100,#Boot.booted myaddr=%d#n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1