清采NOTE

理解他人 善待自己

用户工具

站点工具


courses:embedded_system:ex4_2

实验四、红外感应模块报警实验

一、实验目的

1. 掌握蜂鸣器工作的基本原理;
2. 掌握红外模块工作的基本原理;
3. 熟练电路原理图的分析和芯片手册的使用;
4. 掌握Linux用户空间编程和调试方法;
5. 了解多模块综合设计的基本思路。

二、实验工具

1. 硬件:A9教学实验箱、PC机、RJ45网线或串口线。
2. 软件:PC机Linux操作系统(可在Windows中虚拟机实现)、arm-linux-gcc开发环境、gedit编辑器、tftp或超级终端。

三、实验内容及步骤

1. 检查硬件连接

(1) 检查实验箱配件是否齐全,包括主板、核心板、LCD及各种线材等。
(2) 将PC机的RJ45网线接口或第1个串口与实验箱对应接口连接,S2拨码开关拨到NAND一边(向上)。
(3) 接好电源,实验箱上电。

2. 原理分析与数据准备

(1) 分析蜂鸣器的电路原理图,得出蜂鸣器振动和关闭所需要的电平信号;
(2) 分析红外模块的电路原理图,得出红外模块感应生效所需要的电平信号 (2) 分析控制蜂鸣器和红外模块的对应GPIO端口,查找芯片数据手册,获取控制这些引脚的寄存器;
(3) 记录对应控制寄存器的地址和设置条件,包括端口的输入输出模式、电平状态等。

3. 蜂鸣器功能编程实现

(1) Linux用户空间进行系统调用和虚拟内存地址映射,用open()、mmap()、munmap()、close()。 (2) 映射前蜂鸣器控制寄存器地址(含基地址和偏移地址)的封装,用#define;
(2) 映射后蜂鸣器控制寄存器地址的封装,用新基址+偏移地址,强制类型转换为指针;
(3) 控制蜂鸣器的DAT寄存器设置,可设置特定引脚,也可以经延迟后循环设置。

4. 红外感应报警功能的编程实现

(1) 由于红外模块和蜂鸣器所在的寄存器组的基地址不同,可以选择对这两个基地址分别用mmap()做映射。 (2) 映射前红外模块控制寄存器地址(含基地址和偏移地址)的封装,用#define;
(2) 映射后红外模块控制寄存器地址的封装,用新基址+偏移地址,强制类型转换为指针;
(3) 控制红外模块的DAT寄存器设置,可设置特定引脚,也可以经延迟后循环设置;
(4) 将打开蜂鸣器的语句放置在红外感应的读取语句之后,实现红外模块感应到人靠近,即蜂鸣器响起,人离开后蜂鸣器延迟关闭。

5. 进阶修改

(1) 编写延迟函数delay()(可用for循环);
(2) 利用延迟函数控制蜂鸣器响起的频率,比如人靠近时,蜂鸣器连响3声,然后关闭,人不开时过一会又连响3声。

6. 根据实验内容和结果,撰写实验报告。


实验步骤可以部分地参考这里
还有这里m(
——仅参考,要按照我最后一个视频的思路去分析和编写。