西电无线传感器与信息感知实验报告Word格式.docx
- 文档编号:6634499
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:24
- 大小:34.20KB
西电无线传感器与信息感知实验报告Word格式.docx
《西电无线传感器与信息感知实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《西电无线传感器与信息感知实验报告Word格式.docx(24页珍藏版)》请在冰点文库上搜索。
温湿度传感器的接口电路如下图所示。
通过CC2530的I/O口仿真SHT10要求的串行接口时序,以读出SHT10温湿度传感器采集的当前的温度和湿度值。
此案选择SHT10型号,SHT10的接口定义如下表所示:
SHT10的供电电压范围为2.4-5.5V,建议供电电压为3.3V。
在电源引脚(VDD,GND)之间须加一个100nF的电容,用以去耦滤波。
SHT10的串行接口,在传感器信号的读取及电源损耗方面,都做了优化处理;
传感器不能按照I2C协议编址,但是,如果I2C总线上没有挂接别的元件,传感器可以连接到I2C总线上,但单片机必须按照传感器的协议工作。
综上所述,进行了如下图示的电路设计。
其中用CC2530的P14引脚作为数据引脚,P15作为时钟引脚。
【实验步骤】
1.连接好仿真器,及带传感器的通用调试母板;
2.新建一个工程SHT10,添加相应的文件,并修改SHT10的工程设置;
3.创建SHT10.c并加入到工程SHT10中;
4.编写SHT10相关函数,在设置的间隔时间循环显示温度和湿度的值,在液晶屏上显示并通过串口发送出来;
5.编译SHT10,成功后,下载并运行,通过串口调试助手观察温湿度值,如下图所示。
【仿真及软件设计】
关键代码
voidmain(void)
{
uint16sht;
floatsht11;
intClock();
InitIO();
P2DIR|=0x01;
//打开电源
P2|=0x01;
SHT1X_INT();
ugOled9616int();
//初始化OLed配置
delay(10);
initUARTtest();
while
(1)
{
chartempBuf[4];
sht=Read_SHT1X(3);
sht&
=0x3fff;
sht11=(float)(sht*0.01)-39.60;
sprintf((void*)tempBuf,"
%f"
sht11);
LcdPutString16_8(0,0,(uint8*)tempBuf,5,1);
UartTX_Send_String(tempBuf,5);
UartTX_Send_String("
"
1);
charhumBuf[6];
sht=Read_SHT1X(5);
=0x0fff;
sht11=(float)(sht*0.0405)-4-(sht*sht*0.000028);
sprintf((void*)humBuf,"
humBuf[5]=37;
//%
LcdPutString16_8(48,0,(uint8*)humBuf,6,1);
UartTX_Send_String(humBuf,6);
\n"
}
}
实验名称红外人体检测传感器实验
实验二、红外人体检测传感器实验
1.掌握人体感应传感器的操作方法;
2.掌握人体感应传感器采集程序的编程方法。
1.在IAR集成开发环境中编写人体感应传感器采集程序。
2.实现如下功能:
当有人靠近时,指示灯点亮,离开时指示灯熄灭。
设置计数显示器,每检测到一次显示数字加1。
PC机操作系统WindowsXP+IAR开发环境。
1.人体感应传感器介绍
采用基于人体热释传感原理的人体感应传感器模块。
开关信号输出,当有人靠近时,输出高电平,无人靠近时输出低电平。
2.人体感应传感器的接口电路
人体感应传感器的接口电路如下图所示。
通过CC2530的IO口,采集人体感应传感器的开关输出状态,从而感知是否有人靠近。
人体感应传感器接口电路R12和R15组成分压电路,将人体感应传感器输出的5V高电平信号分压到CC2530可接受的3.3V电平标准。
【器件介绍】
为了降低设计难度,本案直接采用人体红外检测开关型模块HC-SR501。
HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电
池供电的自动控制产品。
1、全自动感应:
人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。
2、光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。
3、温度补偿(可选择,出厂时未设):
在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。
4、两种触发方式:
(可跳线选择)
a、不可重复触发方式:
即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
b、可重复触发方式:
即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。
5(默认设置:
2.5S封锁时间):
感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。
此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;
同时此功能可有效抑制负载切换过程中产生的各种干扰。
(此时间可设置在零点几秒—几十秒钟)。
6、工作电压范围宽:
默认工作电压DC4.5V-20V。
7、微功耗:
静态电流<
50微安,特别适合干电池供电的自动控制产品。
8、输出高电平信号:
可方便与各类电路实现对接。
【原理图设计】
根据厂家提供的模块外接示意图
本案进行如下电路设计。
这里任然通过P00作为传感器模块输出,单片机输入引脚接口。
为了更加直观体现红外检测结果,在本模块上设计了个高亮LED灯作为检测指示,电路设计如下所示,直接将红外传感器模块检测结果VOUT接入三极管来控制LED亮,当红外模块检测到人体输出为高电平,导致如下电路Q1三极管导通,从而使LED灯D1电路导通,LED此时被点亮。
2.新建一个工程ManSensor,添加相应的文件,并修改ManSensor的工程设
置;
3.创建ManSensor.c并加入到工程ManSensor中;
4.编写ManSensor.c程序,并进行编译,成功后,下载并运行.
5.观察实验结果并进行关键代码分析。
{
char*buf;
intcount=0;
//①初始化时钟
P1DIR|=0x04;
P1&
=~0x04;
IO_DIR_PORT_PIN1(0,0,IO_IN);
//Infrared
if(P0_0==1)
{
count++;
sprintf((void*)buf,"
<
ALARM>
:
%d"
count);
LcdPutString16_8(0,0,(void*)buf,12,1);
else
LcdPutString16_8(0,0,(void*)"
NOALARM>
12,1);
P0_0==0;
delay(200);
}
实验名称ZigBee组网实验
实验日期201年月日
实验三、ZigBee组网实验
学会配置ZigBee网络参数,入网络PANID、网络通道、路由深度、网络结构(星状、串状、网状)等,同时学会如何判断设备是否成功建立或者加入网络。
1.学会配置网络参数
2.学会配置网络模式
3.学会监测网络状态
仿真器2台
感知节点3套或以上
网关1套
1.ZigBee网络结构
ZigBee网络层(NWK)支持星型、树型和网状网络拓扑,如下图。
星状网络
星型拓扑中网络由ZigBee协调器的设备控制。
ZigBee协调器负责发起和维护网络中的设备,其它设备,称为终端设备直接与ZigBee协调器通信。
网状网络
在网状和树型拓扑中,ZigBee协调器负责启动网络,选择某些关键的网络参数,但是网络可以通过使用ZigBee路由器进行范围扩展,该网络还具备自动路由功能。
树状网络
在树型网络中,路由器使用一个分级路由策略在网络中传送数据和控制信息。
树型网络可以使用IEEE规范中描述的以信标为导向的通信。
网状网络允许完全的点对点通信。
ZigBee设备种类
在ZigBee中有三类设备:
协调器、路由器和终端节点设备。
设备功能及在网络中的角色如下图所示。
上述的三种设备根据功能完整性可分为全功能(FFD)和半功能(RFD)设备。
其中全功能设备可作为协调器、路由器和终端设备,而半功能设备只能用于终端设备。
一个全功能设备可与多个RFD设备或多个其它FFD设备通信,而一个半功能设备只能与一个FFD通信。
ZigBee网络地址
网络地址
在一个新设备加入网络之后协调器会主动为他分配一个16位的网络地址,以方便在网络中的身分确认。
理论地址范围:
0-65535
物理地址
按照国际标准每一个ZigBee设备必需有全球唯一的64位物理地址,由于这些地址都获得ZigBee联盟认证,因此通过每一个物理地址可以追朔到相应的生产厂商。
PANID
为了识别不同网络而派生的标志。
每一个网络拥有唯一的网络号;
在同一通道上允许存在多个网络但必需通过网络号进行区分。
ZigBee频率,通道
网络通道范围:
(0-26)
频率
868MHZ
(1)
902-928MHZ(10)
2405MHZ–2480MHZ(16)
ZigBee几个重要过程
扫描通道进行通道能量评估
协调器设备在初始化一个网络之前,在用户给定的通道列表中进行能量评估,选择适合的信道或者PanId生成一个网络
路由器设务备在初始化一个网络之前,在用户给定的通道列表中进行能量评估,选择适合的信道或者PanId加入一个网络
初始化一个网络或者加入一个网络
ZigBee路由器节点加入一个网络
ZigBee数据收发过程
1.网络参数配置
第一步:
首先看看工程中有哪些配置文件,如下图所示。
第二步:
配置通道
如上图文件看到这里有11~26通道可以进行选择,上述配置的为11通道。
可以根据实验需要进行修改。
第三步:
配置PANID
PANID配置规则如下:
如果PAN_ID=0xFFFF设备类型是协调者
设备将使用物理地址最后两个字节为PAN_ID
如果PAN_ID=0xFFFF设备类型是路由器或者终端节点设备
该设备将加入到任意可用到的PAN中
如果PAN_ID!
=0xFFFF设备类型是协调者
设备将使用该PAN_ID生成一个网络
=0xFFFF设备类型是路由器或者终端节点设备
设备将只能加入该PAN_ID指定的网络
根据实验需要对的PANID进行修改。
2.配置网络模式
这里配置的网络模式为STACK_PROFILE_ID。
查询下STACK_PROFILE_ID。
这里将根据工程的选择确定,这里我们工程编译选择PRO模式。
即使网络模式为ZIGBEEPRO_RPOFILE模式。
可以查询ZIGBEEPRO_RPOFILE参数。
MAX_NODE_DEPTH:
为路由深度,这里为20。
NWK_MODE:
网络拓扑模式,这里为网状结构。
3.学会使用几个关键函数
任务初始化函数。
建立或加入网络成功反馈函数:
可以看出在该函数中会通过液晶打印出设备类型。
【实验结果】
1、打开路径“\ZIGBEE无线传感网络实验\5-Z-STACK进阶实验\prj4_ZigBeeBasic\Projects\zstack\SamplesCC2530\GenericApp\SX2530MB”下的工程,如下图所示,
2、选择工程文件,不同工程文件下载至不同设备上,如下图所示。
CoordinatorEB或CoordinatorEB-Pro:
协调器,RouterEB或RouterEB-Pro:
路由器,EndDeviceEB或EndDeviceEB-Pro:
终端设备。
3、打开f8wConfig.cfg文件,在此文件内我们可以修改ZigBee无线网络的PANID(网络号),及通信信道,如下图所示。
4、分别编译后把协调器,路由器与终端设备的程序下载至三个节点,并为每个节点标记不同标志,如下载协调器程序的节点标记为协调器。
5、打开协调器节点的电源开关,液晶显示如下图所示。
显示“-COORD-”表示协调器建立网络成功。
6、打开路由器节点的电源开关,液晶依次显示如下图所示:
显示“-ROUT-”表示路由节点加入网络成功。
7、打开终端设备节点的电源开关,液晶依次显示如下图所示:
显示“-ENDDEV-”表示终端节点加入网络成功。
实验名称传感器数据采集和收发实验
实验四、传感器数据采集和收发实验
1.学习在ZigBee网络中添加继电器传感器
2.学习如何读取传感器数据并将其通过无线发送到网关
3.学习如何修改Z-Stack协议栈程序以实现传感器数据读取及发送功能。
1.在IAR集成开发环境中编写程序,以实现远程对特定传感器数据的采集和发送(温度传感器,显示发送数据)。
2.在IAR集成开发环境中编写程序,以实现对特定传感器的控制(显示接收到的数据并在超过一定值后报警)。
2.了解IAR中编写和调试程序的方法;
3.了解Z-Stack协议栈结构、工作原理及程序修改方法。
仿真器1台,网关/节点底板2块,CC2530无线
PC机操作系统Windows98(2000、XP)+IAR开发环境。
1.基本原理
1)ZIGBEE物联网实验系统应用层交互协议
ZIGBEE网关和ARM服务器,ZIGBEE网关和PC服务器,采用RS232全双工、无流控的全双工通信方式;
每字符采用1比特起始、8比特信息、无校验和1比特停止位;
通信速率为115200bps。
无线通信采用超时定时发送的方式。
当端节点或路由节点在上电有连接状态改变时或路由节点超时时发送路由信息。
当端节点或路由节点超时时发送传感器采集数据。
2)路由命令格式说明:
路由命令由20个字节组成,每个字节说明如下:
Byte0:
0x2(帧头)
Byte1:
0x11(包长度,Byte2~18)
Byte2、3:
0x46B9(cmd,控制命令,低字节在前)
Byte4:
0xF1(cmdEndPoint,命令端节点号)
Byte5、6:
SrcShortAddr(两个字节短地址,低字节在前,网关上电时为0x0000)
Byte7:
0xF0(endPoint,任务号240,表示管理任务)
Byte8:
0x2(指示为路由帧)
Byte9~16:
SrcIEEEAddr(8个字节的IEEE源地址)
Byte17、18:
ParentShortAddr(父短地址,网关上电时为0xFFFF)
Byte19:
FCS(帧校验和,Byte1~Byte18的字节异或值)
3)传感器发送命令格式:
传感器板0的传感器数据发送命令,每个字节说明如下:
len(包长度,Byte2到FCS前的字节数。
即n-2+1,或有效数据长度+6)
SrcShortAddr(两个字节源短地址,低字节在前,网关上电时为0x0000)
任务号(一般为1)
Byte8、9:
ParentShortAddr(两个字节父短地址,低字节在前,网关为0x0000)
Byte10:
节点及传感器板类型号
D7D6为节点类型(00:
网关节点;
01:
路由节点;
10:
端节点)
D5D4D3D2D1D0为传感器板类型代码(从0x0~0x9)
Byte11:
调试母板上A/D采集值。
0为0V;
0x7F为3.3V。
Byte12:
CC2530温度,单位为℃。
Byte13:
传感器板温度,1个字节。
单位为℃
Byte14:
温湿度传感器温度,单位为℃
Byte15:
温湿度传感器湿度,单位为%
Byte16:
光照度。
0~0xFF
Byte17:
振动,1:
有振动;
0:
无振动
Byte18:
人体感应,1:
人体接近;
无人体接近
Byten19:
FCS(Byte1~18的字节异或值)
3.关键代码分析
1)传感器采集函数
要添加传感器采集函数到Z-STACK工程文件,首先要编写好传感器初始化和传感器数据采集函数功能。
这里采用的SENSOR-04扩展板上的温度传感器(TC77),TC77的驱动程序可以查看3.4节对应部分。
/****************************************************
函数名:
INT8UReadTc77(void)
功能:
度温度传感器
输入:
无
返回:
温度值
****************************************************/
int8ReadTc77(void)
INT16Utemp=0;
INT8Ui;
MISO=1;
SCK=0;
CS_TC77=0;
for(i=0;
i<
16;
i++)
temp<
<
=1;
SCK=1;
asm("
nop"
);
if(MISO)temp++;
SCK=0;
CS_TC77=1;
i=temp>
>
7;
returni;
这里我们将对传感器采集功能函数新建一个源文件TC77.C,并添加进Z-STACK工程文件中。
另外编写了一个传感器初始化源文件SENCOR.c,也添加进工程,详见下图所示。
更多传感器驱动代码可查看源文件。
以下程序都在SampleApp.c文件内
SamppleApp.c位置
2)ZigBee无线发送数据函数
将传感器采集后就需要通过无线发送发送到指定节点。
这里编写了一个SendData()函数专门用来通过ZigBee发送数据,详细代码如下。
/**************************************************************************
uint8SendData(uint16addr,uint8*buf,uint8Leng)
发送一组数据.
**************************************************************************/
uint8SendData(uint16addr,uint8*buf,uint8Leng)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无线 传感器 信息 感知 实验 报告