微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Dragonboard 410c使用红外探测人体运动情况

基于Dragonboard 410c使用红外探测人体运动情况

时间:02-23 来源:互联网 点击:

红外监测是安防设计中常用的一种传感器,通过该传感器可以快速的探测到移动的物体,目前许多摄像头上都集成了红外移动侦测开关,可以在有移动物体入侵的时候快速的启动摄像设备观察和拍照记录,这样就可以有效的避免了摄像头长期工作中浪费电能和影响其使用寿命,本节博客将基于DragonBoard410c开发板来实现通过红外移动侦测传感器来探测人体的运动,具体的设计如下:

一、硬件设备的准备

这里大家首先要准备的硬件设备包括一个Dragonboard 410c开发板、给开发板供电的电源、面包板和杜板线等,如下图1所示:

图1 DragonBoard 410c开发板及相关套件

Dragonboard 410c开发板是由高通推出的一块面向创客群体的开发套件,体积小但是功能非常强大,具体的资料和相关的学习内容可以在http://qualcomm.csdn.NET/上有详细介绍。

然后还需要,准备一个红外感应模块,本文使用的是常用的HC-SR501红外模块,如下图2所示,该模块的技术参数如下:

1)工作电压:DC5V至20V

2)静态功耗:65微安

3)电平输出:高3.3V,低0V

4)延时时间:可调(0.3秒~18秒)

5)封锁时间:0.2秒

6)触发方式:L不可重复,H可重复,默认值为H

7)感应范围:小于120度锥角,7米以内

8)工作温度:-15~+70度

9)PCB外形尺寸:32*24mm,螺丝孔距28mm,螺丝孔径2mm,感应透镜尺寸:(直径):23mm(默认)

图2 HC-SR501人体红外感应模块

以上就是所使用的硬件,开发软件工具的准备大家可以参考基于Linux系统实现DragonBoard 410c GPIO的控制一文中的软硬件环境的搭建过程,因为我们最终要完成对红外感应开关的控制主要还是需要通过GPIO控制来实现。

二、软件环境的搭建

本文在设计程序过程中,使用的是Linux操作系统,Dragonboard 410c开发板linux系统的安装和环境搭建参考https://developer.qualcomm.com/hardware/dragonboard-410c/tools上的资源和工具,下载linux镜像和使用手册根据使用手册进行安装,完成linux环境的搭建。

完成linux环境的搭建后还需要在linux环境下安装一个QT库,该库的移植可以参考博客QT+Opencv粒子滤波算法实现视频目标跟踪——(三)QT环境安装及配置,这个库主要是为后续我们设计和开发红外人体传感器模块提供相应的显示功能,以上就是整个开发过程中的软件环境的搭建。

三、硬件连接

准备好硬件后,我们各个硬件模块用杜邦线进行连接,如下图3所示。这里连接过程需要注意,供电直接从Dragoboard 410c开发板提供的5v电源给红外感应模块进行供电,完成连线后,如果大家手中有万用表最好先测量一下,看是否有出现短路现象,还有一点就是在I/O口连接的过程中,不能直接将红外模块的输出I/O口接到Dragoboard410c开发板上,应为开发板的I/O电压为1.8v,而红外模块的输出电压为3.3v,直接接会导致系统工作不问题,I/O口被烧坏。

图3 硬件连接示意图

四、软件设计

完成硬件连接后,接着就可以进行软件设计了,软件设计中主要是采用QT作为界面,然后通过调用系统函数来访问和控制相关的GPIO口来监测和读取红外感应模块输出端的电平变化,对其输出进行监测,具体的软件设计与基于Linux系统实现DragonBoard 410c GPIO的控制一文中的GPIO程序设计一样,只是在上层增加了QT来进行处理,在QT环境下通过一个定时器来控制GPIO访问的频率,然后将获取的结果显示到界面上,核心程序设计如下:

        int get_Infrared _status(int Key){

        int tmp=1;

       int TIme=0;

       Write_GPIO(Infrared_stat, 1) ;

       do{

       delay_ms(10);

       if(Read_GPIO(infrared_stat, &tmp)==0){

       TIme++;

       }

      else return -1;

       if(TIme>=100){

       break; //输出的电平维持时间超过1s,表示探测到人体,退出检测。

       }

       }while(!tmp)

       if(TIme

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top