1 有用
1 下载

基于Arduino的门安全警报系统

文件列表(压缩包大小 214.52K)

免费

概述

需要的元件

  • Arduino UNO

  • 杜邦线

  • 面包板

  • 电阻10kΩ

  • Arduino IDE

  • SIM800L模块

原理及流程

在本示例中,我们将学习如何使用Arduino和SIM800L模块创建警报系统文本SMS。

介绍

在一些地方,需要安全系统来保护房间。为此,我们需要安装保护场所的设备,例如,生成警报以通知有人已进入房间

解决此问题的一种方法是将Arduino与簧片开关传感器配合使用。也就是说,当有人打开门时,一个人将通过手机上的SMS收到警报

该消息将通过SIM800L GSM模块发送。该电路如图所示。

带有SIM800L和簧片开关的电路,用于检测门是否打开。

现在,你将逐步学习如何创建项目。

项目的分步实施

首先,我们将说明该项目的运作方式。你需要在门上安装簧片开关传感器和一块磁铁。之后,你将[Arduino系统中连接传感器。

当门打开时,磁铁将从簧片开关传感器移开,并且将打开。这样,系统将检测到门已打开,并将通过SIM800L向用户发送SMS

面包板上的电路如下所示。

检测面包板中打开的门的电路。

基于此示例,我们将通过下面提供的以下代码来构建项目。

项目源代码

在下面,你可以看到该项目的源代码。此后,我们将逐步介绍此代码。

#include <SoftwareSerial.h>
SoftwareSerial chip(10, 11);

String SeuNumero = "+xxxxxxxxxxxxx";

#define sensor 12

bool ValorAtual = 0, ValorAnterior = 0;

void setup()
{
  Serial.begin(9600);
  Serial.println("Inicializando Sistema...");
  delay(5000);
  chip.begin(9600);
  delay(1000);

  pinMode(sensor, INPUT); //Configura o Pino do Sensor como Entrada
}

void loop()
{
  //Le o valor do pino do sensor
  ValorAtual = digitalRead(sensor);

  if(ValorAtual == 1 && ValorAnterior == 0)
  {
      ClosedDoor();
      ValorAnterior == 1;
  }

  if(ValorAtual == 1 && ValorAnterior == 0)
  {
      OpenedDoor();
      ValorAnterior == 0;
  }

}

void OpenedDoor() //Funcao para enviar mensagem de alerta Umidade Baixa
{
  chip.println("AT+CMGF=1");
  delay(1000);
  chip.println("AT+CMGS=\"" + SeuNumero + "\"\r");
  delay(1000);
  String SMS = "Opened Door!";
  chip.println(SMS);
  delay(100);
  chip.println((char)26);
  delay(1000);
}

void ClosedDoor()//Funcao para enviar mensagem de alerta Umidade Normal
{
  chip.println("AT+CMGF=1");
  delay(1000);
  chip.println("AT+CMGS=\"" + SeuNumero + "\"\r");
  delay(1000);
  String SMS = "Closed Door!";
  chip.println(SMS);
  delay(100);
  chip.println((char)26);
  delay(1000);
}

对于此项目,我们使用库SoftwareSerial。该库将用于通过串行通信与Arduino和SIM800L模块进行通信。

#include <SoftwareSerial.h>

接下来,我们将定义Arduino中将用作RX和TX串行通信的引脚。

SoftwareSerial chip(10, 11);

随后,我们需要创建一个字符串并将手机号码添加到该字符串。你必须输入+国家/地区代码以及国家/地区代码后的手机号码。

String SeuNumero = "+xxxxxxxxxxxxx";

之后,它被定义为传感器引脚和代码变量。

#define sensor 12

bool ValorAtual = 0, ValorAnterior = 0;

最后,在Arduino中执行设置功能。

Arduino中的功能void setup()和void loop()

在串行通信中,将通过带有对象芯片的SoftwareSerial库初始化Arduino引脚(数字引脚0和数字引脚1)的串行和虚拟串行。

void setup()
{
  Serial.begin(9600);
  Serial.println("Inicializando Sistema...");
  delay(5000);
  chip.begin(9600);
  delay(1000);

  pinMode(sensor, INPUT); //Configura o Pino do Sensor como Entrada
}

最后,传感器引脚被定义为数字输入引脚。现在,在空循环功能中,系统将分析传感器状态并为用户发送SMS消息。

在下面显示的代码中,系统将读取簧片开关传感器并将其值存储在变量ValorAtual中。

void loop()
{
  //Le o valor do pino do sensor
  ValorAtual = digitalRead(sensor);

  if(ValorAtual == 1 && ValorAnterior == 0)
  {
      ClosedDoor();
      ValorAnterior == 1;
  }

  if(ValorAtual == 0 && ValorAnterior == 1)
  {
      OpenedDoor();
      ValorAnterior == 0;
  }

}

之后,系统将验证从传感器读取的值是多少。因此,使用了两个条件来验证簧片开关传感器的状态。

在上面显示的这段代码中,你可以看到第一个条件。将在下面介绍。

if(ValorAtual == 1 && ValorAnterior == 0)
  {
      ClosedDoor();
      ValorAnterior == 1;
  }

可以看到,如果传感器的读取值等于1并且变量ValorAnterior等于0,则系统将进入条件。

这样,系统将执行功能ClosedDoor()并发送消息“ Closed Door”,此后将为ValorAnterior变量插入值1。

此变量用于确保代码流仅输入一次条件。这样可以防止系统在门关闭或打开时多次发送消息。

如果与上述条件相比,其他条件具有类似的工作原理。

if(ValorAtual == 0 && ValorAnterior == 1)
  {
      OpenedDoor();
      ValorAnterior == 0;
  }

当传感器的功能返回的值为0时,变量ValorAtual将为0,变量ValorAnterior将为1。这样,系统将进入此状态并执行功能。

可以看到,将执行功能OpenedDoor,以为用户发送“ Opened Door”消息。

最后,用户将收到警报消息,并将与负责人员联系以验证你所在部门中正在发生的事情。

系统收到消息后,用户可以验证谁访问了环境。

用户验证并关闭门后,他将收到新消息“已关闭门”。

因此,从这些警报消息中,用户将知道何时发生入侵以及何时系统不再检测到入侵者。

最后

所有需要的文件在下载区均可找到。

via:Arduino的门安全警报系统-Hackster.io

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250