当前位置:首页 > 技术类 > esp8266 人体感应

esp8266 人体感应

微信用户3年前 (2022-02-16)技术类2719

esp8266 人体感应

最近在淘宝买了一个人体感应模块,用来做人体感应,感应到有人活动的时候,串口输出,更高级的可以发送邮件,微信等。

人体感应模块介绍

淘宝买的是HC-SR312微型人体感应模块,是基于被动式人体红外线技术的数字智能自动控制产品 灵敏度高,可靠性强,广泛应用于各类自动感应电器设备。

esp8266 人体感应

功能特点

可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后延时,才变为低电平(即:感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

看手册这个延迟时间是2s。

esp8266 和人体感应模块连接图

人体感应模块数据口输出连接到GPIO12 D6口

nodemcu IO 电路图

esp8266 人体感应

最简单的代码

int PIR_sensor = 12;    //PIR OUTPUT端口 D6 GPIO12int LED = 2;           //LED端口 D4  GPIO2int val = 0;   void setup(){  pinMode(PIR_sensor  INPUT);   //设置PIR端口为输入模式  pinMode(LED  OUTPUT);         //设置LED端口为输出模式  Serial.begin(9600);          //设置串口波特率为9600} void loop(){  val = digitalRead(PIR_sensor);    //读取PIR端口值,只有0或者1  delay(2000);  //延迟2s  if (val == HIGH)// 如果读取到的高电平值,表示感应到人,  {    digitalWrite(LED HIGH);     Serial.println("detect human!!!!");    }  else  {    digitalWrite(LED LOW);   //等于0 表示没有感应到人  }}

上面的代码虽然能正常工作,但是检测不是非常精确,而且可以看出来是阻塞的,如果想加什么功能,每次都要sleep 2s。那有没更好的办法呢?自然很容易想到定时器和中断来实现。

定时器和中断实现

#define timeSeconds 2// PIR OUTPUT端口 D6 GPIO12 LED端口 D4 GPIO2const int LED = 2;const int PIR_sensor = 12;// 获取当前时间unsigned long now = millis();// 上一次触发中断的时间unsigned long lastTrigger = 0;// 是否开启计时器的标志boolean startTimer = false;//  定时时间周期 2sunsigned long detectDuration = 1000 * timeSeconds;// 检测人体感应的中断触发函数,将LED置为高电平,且给开启计时器的标志startTimer置为true  表示开始计时,给lastTrigger赋值触发中断的时间ICACHE_RAM_ATTR void detectHuman() {  Serial.println("Human Detected!!!");  digitalWrite(LED  HIGH);  startTimer = true;  lastTrigger = millis();}void setup() {  Serial.begin(9600);    // 将人体感应数据口连接的IO口设置为输入上拉模式,使引脚即使在未连接外部组件的时候也能保持确定的逻辑电平。  pinMode(PIR_sensor  INPUT_PULLUP);  // 将人体感应数据口连接的IO口设置为中断模式  赋值中断函数和将中断模式设置为RISING(当引脚由低电平变为高电平时,触发中断)  attachInterrupt(digitalPinToInterrupt(PIR_sensor)  detectHuman  RISING);  pinMode(LED  OUTPUT);  digitalWrite(LED  LOW);}void loop() {  // 获取当前时间  now = millis();  // 如果已经开始了计时,且当前时间减去上一次触发中断时间大于人体感应模块检测的时间周期 2s,将LED电平置为低,且将计时器标志置为false,等待下一次中断  if(startTimer && (now - lastTrigger > detectDuration)) {    Serial.println("Human detected stopped...");    digitalWrite(LED  LOW);    startTimer = false;  }}

上面的代码利用中断,大大地提高了人体检测模块的检测效率和准确性。并用软件实现了2s的软定时器,定时将LED端口置为低电平,好观察效果。

免责声明
    本网站在国家相关法律法规规定的范围内,只按现有状况提供文章发布第三方网络平台服务,本网站及其所有者非交易一方,也非交易任何一方之代理人或代表;同时,本网站及其所有者也未授权任何人代表或代理本网站及其所有者从事任何网络交易行为或做出任何承诺、保证或其他类似行为,除非有明确的书面授权。
    鉴于互联网的特殊性,本网站无法鉴别和判断相关交易各主体之民事权利和行为能力、资质、信用等状况,也无法鉴别和判断虚拟交易或正在交易或已交易之虚拟物品来源、权属、真伪、性能、规格、质量、数量等权利属性、自然属性及其他各种状况。因此,交易各方在交易前应加以仔细辨明,并慎重考虑和评估交易可能产生的各项风险。

扫描二维码推送至手机访问。

版权声明:本文由点度点度金讯时代-BLOG发布,如需转载请注明出处。

本文链接:https://lmwmm.com/post/13.html

分享给朋友:

“esp8266 人体感应” 的相关文章

【树莓派基础系列教程】1、配置和初始化树莓派

【树莓派基础系列教程】1、配置和初始化树莓派

从这周开始,给新手朋友们发布一些树莓派的基础教程~今天是第一课,简单介绍一下什么是树莓派,以及拿到树莓派后第一件要做的事情——配置和初始化树莓派! 什么是树莓派 树莓派的简介,看这里:树莓派是什么?能吃吗 树莓派基础外观图 树莓派外设图树莓...

windows10环境下搭建spark on yarn源码调试环境

windows10环境下搭建spark on yarn源码调试环境

    spark 3.0.0版本刚出炉,官方称相比2.4版本,性能提升了2倍。考虑到生产环境下 spark on yarn的模式居多,本文在Windows10环境下,搭建spark on yarn的源码阅读调...

安卓用户又遭殃?被知名APP偷删手机照片

安卓用户又遭殃?被知名APP偷删手机照片

近日,网友发布视频称,使用小红书 APP 时发现,后台删除自己手机里的相册照片,被手机系统拦截。该网友称:恰好拍到了,下拉菜单栏的时候发现有这个通知。提醒大家要多多注意隐私。该消息在网上引发热议。针对“后台删照片”一事,小红书官方认证的账号...

空气传导还是骨传导?我该怎么选?

空气传导还是骨传导?我该怎么选?

如果说去年是各种国产方案真蓝牙无线耳机爆发之年的话,那么今年可以说是国产方案骨传导耳机爆发的一年。最低的华强北骨传导耳机已经来到了不到20元的价位区间,当然正规品牌的国产方案产品也纷纷涌现。那么,空气传导和骨传导耳机,该怎么选?什么是空气传...

12家国内外AI大模型及申请体验地址汇总

12家国内外AI大模型及申请体验地址汇总

近期,由ChatGPT引发的AI军备竞赛,可谓是百家齐鸣,眼花缭乱,应接不暇。本周,国内外多家大公司像约好了一样,纷纷发布或即将发布自己的AI大模型。这些公司分布在各行各业,可能都是想借助大模型提升自己的核心竞争力,在新一轮的科技竞赛中处于...

科大讯飞再燃大模型“战火”,赶超ChatGPT并非目的,应用端才是关键

科大讯飞再燃大模型“战火”,赶超ChatGPT并非目的,应用端才是关键

日前,科大讯飞发布星火认知大模型,让火热的“大模型”战场再燃战火。对自家产品,科大讯飞董事长刘庆峰称,“三项能力超过ChatGPT”。如今,国内大模型战场,已经汇聚百度、阿里、华为、腾讯等重磅玩家。这些大模型,与ChatGPT有多远的距离?...