D-无线通信综合实验.doc
文本预览下载声明
实验报告内容:
(1) 实验名称: 红外人体检测传感器模块与无线通信结合实验
(2) 实验内容:
装有红外人体检测的传感器模块将检测的数据通过无线通信发送给其他传感器模块,从而实现检测与通信的功能。
1、验证并熟悉红外人体检测的模块的代码,并进行相应实验。
2、验证并熟悉无线通信模块的代码,进行相应的实验。
3、将两个模块的代码结合起来,实现上述功能。
4、调试与改进。
(3) 实验原理:
红外人体检测传感器模块:
人体红外检测开关型模块 HC-SR501。 HC-SR501 是基于红外线技术的自动控制模块, 采用德国原装进口 LHI778 探头设 计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设 备,尤其是干电池供电的自动控制产品。
1、全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延 时关闭高电平,输出低电平。
2、光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不 感应。
3、温度补偿(可选择,出厂时未设):在夏天当环境温度升高至 30~32℃, 探测距离稍变短,温度补偿可作一定的性能补偿。
4、两种触发方式: (可跳线选择) a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出高电平信号:可方便与各类电路实现对接。 在本模块上设计了个高亮 LED 灯作为检测指示,电路设计 如下所示,直接将红外传感器模块检测结果 VOUT 接入三极管来控制 LED 亮,当 红外模块检测到人体输出为高电平,导致如下电路 Q1 三极管导通,从而使 LED 灯 D1 电路导通,LED 此时被点亮。
无线通信:
a)上层通过basicRfPacketIsReady()在basic_rf.cuint8basicRfPacketIsReady(void)
函数功能:检查模块是否已经可以接收下一个数据,如果准备好刚返回TRUE。
BasicRf层实现:读取rxi.isReady的值并返回。
HAL层实现:在接收中断中,检测收到的帧的帧头,如果是正确的,则把rxi.isReady赋值成TRUE.
b)调用basicRfReceive()buffer中。
uint8basicRfReceive(uint8* pRxData, uint8 len, int16* pRssi)
函数功能:接收来自BasicRF层的数据包,并为所接收的数据和RSSI值配缓冲区
Basic?Rf层实现:把rxi.pPayload中的值赋给pRxData并传递给上层函数。从rxi.rssipRssi。并且把rxi.isReadyFALSE.
HAL层实现:rxi.pPayload中的值是在接收中断服务函数中,读取RFD寄存器得到的,读后,RXFIFO会自动把值写入RFD寄存器。
接收中断:在hal_types.h
#define HAL_ISR_FUNC_DECLARATION(f,v) _PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v) _PRAGMA(vector=v##_VECTOR) __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)
HAL_ISR_FUNCTION(?rfIsr,?RF_VECTOR?)为中断服务函数。而其中下列代码中函数指针调用的函数即为在basicRfInit函数中配制的basicRfRxFrmDoneIsr函数。
if(pfISR){
(*pfISR)(); // Execute the custom ISR
}
(4)#include hal_lcd.h
#include hal_led.h
#include hal_joystick.h
#include hal_assert.h
#include hal_board.h
#include hal_int.h
#include hal_mcu.h
#include hal_button.h
#include hal_rf.h
#include util_lcd.h
#include basic_rf.h
#include LCD128_64.h
#include hal_key.h
显示全部