基于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中执行设置功能。
在串行通信中,将通过带有对象芯片的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”消息。
最后,用户将收到警报消息,并将与负责人员联系以验证你所在部门中正在发生的事情。
系统收到消息后,用户可以验证谁访问了环境。
用户验证并关闭门后,他将收到新消息“已关闭门”。
因此,从这些警报消息中,用户将知道何时发生入侵以及何时系统不再检测到入侵者。
所有需要的文件在下载区均可找到。
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)