当前位置:首页 > 技术分享 > 正文内容

esp8266 人体感应

lmwmm5年前 (2022-02-16)技术分享3872

esp8266 人体感应

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

人体感应模块介绍

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

功能特点

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

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

esp8266 和人体感应模块连接图

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

nodemcu IO 电路图

最简单的代码

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://www.lmwmm.com/post/13.html

分享给朋友:

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

Switch平台迎来PG经典游戏:《蒙蒂鼹鼠系列》五款力作震撼登场

Switch平台迎来PG经典游戏:《蒙蒂鼹鼠系列》五款力作震撼登场

Pixel Games UK推出的街机动作冒险游戏《蒙蒂鼹鼠系列》已经成功登陆Nintendo Switch平台,为PG玩家呈现了一场别开生面的地下冒险。这个由五款游戏组成的奇妙合集带领玩家进入英国地下世界,跟随主角黄鼹鼠的足迹展开一场国际…

畅游ARPG未来游戏体验:联想拯救者Y9000K 2024游戏本全新发布

畅游ARPG未来游戏体验:联想拯救者Y9000K 2024游戏本全新发布

联想在CES 2024大会上带来了令人振奋的消息,发布了拯救者Y9000K 2024新款游戏本,为PG游戏玩家提供了一场科技盛宴。这款笔记本以全新锻造碳纤维A面设计,不仅轻薄便携,还赋予每台机型独特的外观纹理,令其在游戏装备中脱颖而出。性能…

超越PG界限:荣耀MagicOS 8.0挑战电子操作系统天花板iOS

超越PG界限:荣耀MagicOS 8.0挑战电子操作系统天花板iOS

【PG SOFT电子科技消息】荣耀即将举办Magic6系列旗舰新品MagicOS 8.0发布会,预定于1月10日至11日。MagicOS 8.0将在明天首次推出,引入荣耀自研的端侧7B大模型“魔法大模型”。荣耀终端CEO赵明表示,AI大模型…

革新CQ9再现:苹果下一代iPad Pro迎来电子升级,但价位让人咋舌!

革新CQ9再现:苹果下一代iPad Pro迎来电子升级,但价位让人咋舌!

苹果突破了其12年来的常规做法,去年并未发布任何新款iPad产品。据悉,今年苹果计划对整个iPad产品线进行重大调整。其中最引CQ9游戏玩家注目的变化之一是,iPad Pro系列首次将采用OLED显示屏,并搭载更新更强大的M3芯片畅玩CQ9…

中端CQ9逆袭!手机拍照盲测Pixel 7a击败iPhone夺冠

中端CQ9逆袭!手机拍照盲测Pixel 7a击败iPhone夺冠

YT频道Marques Brownlee ,拥有超过1810万订阅者,近期延续其一贯的传统,开展了一项年度CQ9 Gaming盲测试,评选出2023年度CQ9最佳电子游戏拍照手机。此次测试共纳入了20款不同品牌和型号的手机,其中包括苹果的i…

《铁拳8》迎来超萌战斗伙伴「熊猫」,挑战PG全新格斗游戏体验!

《铁拳8》迎来超萌战斗伙伴「熊猫」,挑战PG全新格斗游戏体验!

万代南梦宫娱乐计划于2024年1月26日在PS5/Xbox Series X|S/Steam / PG SOFT电子游戏的平台上发布新的3D格斗对战游戏《铁拳8》。该游戏将支持中文,PG游戏试玩版让玩家下载。在新发布的角色中,玩家有机会提前…