基于CC2530的人体红外模块实验

实验内容

  • 了解人体红外模块的基本原理
  • 通过简单的编程实现通过人体红外模块检测是否有人。

实验目的

实验环境

实验所需硬件

序号 名称 数量 备注
1 电脑 1台 系统Windows7及以上
2 CC2530底座模块 1个 ·
3 人体红外模块 1个 ·
4 CC Debugger 仿真器和连接线 1套 ·
5 USB线 1根 ·
6 人体红外模块实验代码 1份 ·

实验所需软件

CC2530底座:HIVE ZigBee Pro(简称CC2530底座)是一种基于CC2530F256芯片的蜂巢底座。

实验硬件

CC Debugger 仿真器和连接线

实验硬件

人体红外模块

人体红外模块

USB线

USB线

实验原理

人体红外传感器工作原理

普通人体会发射10um左右的特定波长红外线,当人体红外线照射到传感器上后,因热释电效应将向外释放电荷信号,此信号很微弱需后续电路检测处理后变成足于检测的信号。

菲涅尔透镜工作原理

菲涅尔透镜(Fresnel lens),又名螺纹透镜,多是由聚烯烃材料注压而成的薄片,也有玻璃制作的,镜片表面一面为光面,另一面刻录了由小到大的同心圆,它的纹理是根据光的干涉及衍射以及相对灵敏度和接收角度要求来设计的。

菲涅尔透镜

菲涅尔透镜广泛使用于在整个被动红外探测器中,其所起的作用是,当有人进入探测的范围,菲涅尔透镜将人体释放的红外光透过镜片被聚集在远距离A区或中距离B区或近距离C区的的同一焦点。而这个焦点位置就是传感器接收的面区。菲涅尔透镜能使人体红外传感器的工作角度更广,工作距离更远。

人体红外模块电路

人体红外模块电路

实验步骤

① 将人体红外模块安装到CC2530底座上,用CC Debugger连接底座与电脑,如下图所示:

模块组装

② 轻按CCDebugger复位按键,指示灯变绿,表示连接正常。如下图:

模块组装

③ 访问github,进入github界面后点击Code,Clone HTTPS安全链接,如下图所示:

操作步骤

④ 打开电脑终端,进入工作目录workspace (workspace 为工程文件夹所在目录):

$ cd workspace

⑤ 运行clone命令:

$ git clone https://github.com/aiotcom/eps.git 

下载目录至指定文件夹下。
如果提示“command not found”表示电脑没有安装Git,请至Git官网下载。
如果电脑没有安装 Git 软件,也可以进入Github,点击 Code -> DownLoad ZIP 下载所有工程代码。如下图所示:
下载代码
如果电脑没有公网,可以进:D盘\实验教程与代码选择相应的代码。

⑥ 打开 IAR Embedded Workbench 工程软件,点击工具栏: File -> Open -> Workspace,选择工程文件:基于CC2530的模块实验\6.人体红外模块程序\PIR.eww 并打开。

打开工程

选择文件

⑦ 点击Make按钮,重新编译文件,显示没有错误。

文件编译

⑧ 点击Download and Debug按钮,将程序下载到模块中。

下载程序

代码下载成功

⑨ 点击X退出仿真模式。

退出仿真

⑩ 移除CC Debugger仿真器,采用USB线供电。

⑪ 如果有人以动态进入人体红外检测的范围,LED2灯就会如上图发亮,如果检测到没有人,则如下图不会亮灯。
实验结果

代码讲解

① 程序目录结构,源代码文件如下图:
代码目录结构

② main.c代码,对人体红外模块IO口,初始化完成后,探测到人体红外点亮模块上的LED2,未检测到人体红外熄灭LED2。

    void main(void)
    {
        Hal_Init_32M();//初始化32M时钟
        PIR_Init();//初始化人体红外

        while(1)
        {
            if(PIR_Read())
            {//检测到人体红外
                PIR_LED_ON();//人体红外模块上的LED2亮
            }
            else
            {//未检测到人体红外
                PIR_LED_OFF();//人体红外模块上的LED2灭
            }
        }
    }

通过调用PIR_Read()函数,返回1,检测到人体红外信号,反则之。

    if(PIR_Read())
    {//检测到人体红外
        PIR_LED_ON();//人体红外模块上的LED2亮
    }
    else
    {//未检测到人体红外
        PIR_LED_OFF();//人体红外模块上的LED2灭
    }

常见问题

  1. 弹出警告窗口,不能下载程序。

    • 请确认CCDebugger驱动否安装。
    • 轻按CCDebugger仿真器的按键,指示灯不是绿色连接有问题。
    • CCDebugger仿真器是否正常接入到底座,参考实验步骤第一步。
  2. 下载代码后程序没观察到实验现象。

    • 请重新上电,或者按下底座上的复位按键。
    • 模块没有安装稳妥。

实验思考

  1. 实现功能10s内3次检测人体红外,再将人体红外模块上的LED2点亮。