所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
教室门防撞报警器
云天 云天 2019-07-13 21:08:43
1
1
简单

    “初中男生因急着上课,急着推开教室门,没看到门后有女同学,将女同学撞伤……”。网络上、生活中经常听到类似这样的“事故”。百度搜索“教室门 撞人”,得到500000条相关信息。

projectImage

 # 创作灵感

    在我们班里虽未出现这样严重的撞人事件,但平时也免不了开门时碰到在门后的同学。因为一般教室门上的可观察门后情况的玻璃都比较小,有时因为着急,也未看清楚就急着开门,这样就撞到同学了。

   为此我二人团队,决定开发一个“教室门防撞报警器”,来解决这个问题。

# 设计思路

   如果能在教室门外放置一灯光提醒器,当门后有人时,灯光亮起。提醒开门人要注意门后可能有人,可以在推门前,先敲一下,当灯光熄灭后再开门进入。

    门内传感器使用三个“超声波”,构成三角形,检测位于门后的人,尤其是蹲在门后的人。门前提醒器使用彩色灯带,亮起时比较醒目,并在中间用文字说明进行提醒。门前、门后两个Arduino控制器采用2.4G无线传输nRF24L01进行通信。

材料清单 材料清单
2x
Arduino
3x
超声波传感器
2x
2.4G无线nRF24L01
1x
DFRobot彩色LED灯带+驱动板
2x
旧充电宝
projectImage

# 电路设计

为了方便编写程序,先设计“防撞报警器”的电路连接关系,电路原理图如下图所示。

projectImage
projectImage

# 程序设计

    在写程序之前,先梳理一下思路,设计一下程序流程图,如下图所示。当三个超声波传感器中只要有一个检测到与障碍物距离在50cm以内,就通过nRF24L01发送信息,通知接收端“报警器”点亮彩灯带,提醒门外同学注意。

projectImage

图:门后检测器程序流程图

projectImage

图:门前报警器程序流程图

    理清思路后,打开Arduino IDE正式开始编写程序。

代码 代码
	                    					//发射端程序
 //加载nRF24L01库
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
int value;//发送标识(有人1,无人0)
float dis;
float dis2;
float dis3;
float checkdistance_3_4() {//传感器1
  digitalWrite(3, LOW);
  delayMicroseconds(2);
  digitalWrite(3, HIGH);
  delayMicroseconds(10);
  digitalWrite(3, LOW);
  float distance = pulseIn(4, HIGH) / 58.00;
  delay(10);
  return distance;
}
float checkdistance_5_6() {//传感器2
  digitalWrite(5, LOW);
  delayMicroseconds(2);
  digitalWrite(5, HIGH);
  delayMicroseconds(10);
  digitalWrite(5, LOW);
  float distance = pulseIn(6, HIGH) / 58.00;
  delay(10);
  return distance;
} 
float checkdistance_9_1() {//传感器3
  digitalWrite(9, LOW);
  delayMicroseconds(2);
  digitalWrite(9, HIGH);
  delayMicroseconds(10);
  digitalWrite(9, LOW);
  float distance = pulseIn(10, HIGH) / 58.00;
  delay(10);
  return distance;
} 
void setup()
{
//初始化
  pinMode(3, OUTPUT);
  pinMode(4, INPUT);
  pinMode(5, OUTPUT);
  pinMode(6, INPUT);
  pinMode(9, OUTPUT);
  pinMode(10, INPUT);
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte *)"ABCDE"); //设置自己的地址(发送端地址),使用5个字符
  Mirf.payload = sizeof(value);
  Mirf.channel = 90;              //设置所用信道
  Mirf.config();
}
 
void loop()
{
  Mirf.setTADDR((byte *)"FGHIJ");           //设置接收端地址
  value = 1;                      //0-255的随机数
  //获取三个传感器的值
  dis=checkdistance_3_4();
  dis2=checkdistance_5_6();
  dis3=checkdistance_9_1();
  
  if(dis<50 || dis2<50 || dis3<50){//判断是否有人
    Mirf.send((byte *)&value);                //发送指令,发送value

    while(Mirf.isSending()) delay(1);         //直到发送成功,退出循环
  }
  else{
    value = 0;      
    Mirf.send((byte *)&value);                //发送指令,发送value
    while(Mirf.isSending()) delay(1);         //直到发送成功,退出循环
  }
}
 
	                    				

代码:门后检测器程序

代码 代码
	                    					//接收端程序
 
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
int value;
 
void setup()
{

  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
 pinMode(5,OUTPUT);//彩灯连接在引脚5
  Mirf.setRADDR((byte *)"FGHIJ"); //设置自己的地址(接收端地址),使用5个字符
  Mirf.payload = sizeof(value);   
  Mirf.channel = 90;   //设置使用的信道
  Mirf.config(); 
  Serial.println("Listening...");  //开始监听接收到的数据
}
 
void loop()
{
  if(Mirf.dataReady()) {  //接收到程序
    Mirf.getData((byte *) &value);

    if(value==1){//为1,说明有人,点亮彩灯
    digitalWrite(5,HIGH);
    }
    else{//为0,说明无人,熄灭彩灯
    digitalWrite(5,LOW);
    }
    }
  } 
	                    				

代码:门前报警器程序

# 制作过程

步骤1 步骤1
安装报警器彩灯带

用热熔胶来固定彩灯带

projectImage
projectImage
projectImage
步骤2 步骤2
安装报警器无线发射模块
projectImage

图:针脚说明

接线方式 Arduino uno --- nRF24L01

                            3.3V --- VCC

                           GND --- GND

                                 7 --- CSN

                                 8 --- CE

                               11 --- MOSI

                               13 --- SCK

                               12 --- MISO

*IRQ示例没有用上,则不用接线了

projectImage
步骤3 步骤3
安装门后超声波传感器
projectImage

图:在Arduino上对应引脚连接三个超声波传感器


因门后检测器中的无线模块安装与门前报警器一致,故不再重复说明。

步骤4 步骤4
应用场景安装
projectImage
projectImage

图:安装门前报警器

因学校所有的教室门均为铁制,所以装置采用强磁石固定。

projectImage
projectImage

图:安装门后检测器

# 效果演示

# 后续完善

1、准备把在门前利用“敲门”来提醒门后同学的方法,改为按一下“按钮”,然后门后有语音来进行提醒。

2、门前报警除了彩灯,再加一个显示屏进行门后有人或无人提醒。

Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]