0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino创建停车门禁控制系统?

电子设计 来源:电路城 作者:电路城 2021-04-28 14:53 次阅读

您将学习如何使用Arduino创建自己的停车门禁控制系统

硬件部件:

定制PCB× 1个

Arduino Uno × 1个

SparkFun RFID Qwiic套件 × 1个

SG90微型伺服电机 × 1个

LED(通用) × 2

面包板(通用) × 1个

跳线(通用) × 1个

RGB背光LCD-16x2 × 1个

软件应用程序和在线服务:

Arduino IDE

射频识别或RFID(无线电频率识别)是一种通过无线电信号自动识别,通过RFID标签检索和存储数据的方法。

这些RFID标签可以放置在动物,物体上。

因此,这些标签具有许多应用,例如放置在车辆上的不间断标签,动物识别。

RFID标签有3种类型:无源是对发送器发送的信号做出响应的标签,半无源和会发出信号本身的有源标签。

当前,有几种方法可以控制对位置的访问:使用指纹,带密码的小键盘以及使用RFID系统。

在本文中,我们将学习如何使用RFID技术开发访问控制系统。

该系统将包括MFRC522 RFID模块,用于打开门的伺服电动机,作为系统HMI的显示器以及信号LED。

因此,在本文中,我们将学习如何使用RFID模块开发访问控制。

因此,通过本文您将学到:

在原型板上执行电路组装;

了解RFID模块的功能;

伺服电机启动;

在液晶显示屏上书写。

现在,我们将开始使用RFID模块完整介绍停车门禁系统项目的开发。

使用带有Arduino的RFID模块开发停车门禁控制系统

该项目的核心是RFID模块,该模块由带有MFRC522集成电路的印刷电路板和板上的天线组成。

当电路板通电时,模块会发射射频信号,并且当标签接近模块时,将读取标签,每个标签具有不同的代码。

该模块由3.3 V供电,并使用SPI(串行外设接口通信与所使用的微控制器进行通信。

要开发此项目,第一步是组装图1中的电路。

如何使用Arduino创建停车门禁控制系统?

电路的操作非常简单!伺服电机是用于打开和关闭门的机构。每次RFID模块识别标签时,Arduino都会发送信息以激活或关闭门。

LCD被用作与用户的通信接口

接下来,我们将看到该项目的编程逻辑如何工作。

Arduino的停车系统控制的操作逻辑

要编程Arduino Nano,我们将需要以下库:

SPI-包含执行SPI通信所需功能的库。

MFRC522-包含与RFID模块通信所需功能的库。

伺服-包含启动伺服电动机所需功能的库。

电线-包含与LCD显示器进行I2C通信所需功能的库。

Arduino IDE中未安装liquidCrystal_I2C和MFRC522库,因此我们必须安装它们。

安装库后,关闭Arduino IDE并再次打开它。

完整的代码如下所示。

/*

* Teste Leitor RFID

* tag 1 F1 B103 1F 241 17703 31

F1 B1 03 1F

tag 2 14 45 29 57 20 69 41 87

14 45 29 57

*/

#include 《SPI.h》

#include 《MFRC522.h》

#include 《Servo.h》

#include 《Wire.h》

#include 《LiquidCrystal_I2C.h》

Servo myservo ;

LiquidCrystal_I2C lcd (0x27,2,1,0,4,5,6,7,3,POSITIVE);

#define vermelho 4

#define verde 5

#define SS_PIN 10

#define RST_PIN 9

MFRC522 mfrc522 (SS_PIN, RST_PIN);

void setup()

{

Wire.begin();

lcd.begin(16,2);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Aproxime a sua ”);

lcd.setCursor(0,1);

lcd.print(“tag do leitor ”);

pinMode(verde,OUTPUT);

pinMode(vermelho,OUTPUT);

Serial.begin(9600);

SPI.begin();

Serial.println(“Aproxime a tag do leitor ”);

mfrc522.PCD_Init();

digitalWrite(verde,0);

digitalWrite(vermelho,0);

myservo.attach(6);

}

void loop()

{

if(!mfrc522.PICC_IsNewCardPresent())

{

return;

}

if(!mfrc522.PICC_ReadCardSerial())

{

return;

}

Serial.print(“ UID da tag : ”);

String conteudo = “”;

byte letra;

for (byte i = 0; i《 mfrc522.uid.size; i++)

{

Serial.print(mfrc522.uid.uidByte[i] 《0x10 ? “0”:“ ”);

Serial.print(mfrc522.uid.uidByte[i], HEX);

conteudo.concat(String(mfrc522.uid.uidByte[i] 《 0x10 ? “ 0” : “ ”));

conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));

}

Serial.println();

Serial.print(“Mensagem : ”);

conteudo.toUpperCase();

if(conteudo.substring(1) == “14 45 29 57”)

{

lcd.clear();

Serial.println(“Acesso liberado ”);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Ola !”);

lcd.setCursor(0,1);

lcd.print(“Acesso liberado”);

digitalWrite(verde,1);

digitalWrite(vermelho,0);

myservo.write(95);

delay(800);

myservo.write(10);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

}

if(conteudo.substring(1) == “F1 B1 03 1F”)

{

lcd.clear();

Serial.println(“Acesso negado ”);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Erro ! Tag nao ”);

lcd.setCursor(0,1);

lcd.print(“autorizada ”);

}

delay(1000);

lcd.clear();

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Aproxime a sua ”);

lcd.setCursor(0,1);

lcd.print(“tag do leitor ”);

}

在下面,我们将解释该项目的完整逻辑。

您需要做的第一件事是声明项目中使用的组件的所有库。

#include 《SPI.h》

#include 《MFRC522.h》

#include 《Servo.h》

#include 《Wire.h》

#include 《LiquidCrystal_I2C.h》

然后,声明伺服电机和LCD的对象。对象的创建如下。

Servo myservo;

LiquidCrystal_I2C lcd (0x27,2,1,0,4,5,6,7,3,POSITIVE);

MFRC522 mfrc522 (SS_PIN, RST_PIN);

现在,我们已经在Arduino上连接了引脚。

#define vermelho 4

#define verde 5

#define SS_PIN 10

#define RST_PIN 9

下面是void设置功能。它初始化I2C串行通信,串行通信,将引脚配置为输出,以及连接伺服电机的引脚。

void setup()

{

Wire.begin();

lcd.begin(16,2);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Aproxime a sua ”);

lcd.setCursor(0,1);

lcd.print(“tag do leitor ”);

pinMode(verde,OUTPUT);

pinMode(vermelho,OUTPUT);

Serial.begin(9600);

SPI.begin();

Serial.println(“Aproxime a tag do leitor ”);

mfrc522.PCD_Init();

digitalWrite(verde,0);

digitalWrite(vermelho,0);

myservo.attach(6);

}

现在让我们了解在void循环函数中实现的完整编程逻辑如何工作。请参见下面的空循环代码。

void loop()

{

if(!mfrc522.PICC_IsNewCardPresent())

{

return;

}

if(!mfrc522.PICC_ReadCardSerial())

{

return;

}

Serial.print(“ UID da tag : ”);

String conteudo = “”;

byte letra;

for (byte i = 0; i《 mfrc522.uid.size; i++)

{

Serial.print(mfrc522.uid.uidByte[i] 《0x10 ? “0”:“ ”);

Serial.print(mfrc522.uid.uidByte[i], HEX);

conteudo.concat(String(mfrc522.uid.uidByte[i] 《 0x10 ? “ 0” : “ ”));

conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));

}

Serial.println();

Serial.print(“Mensagem : ”);

conteudo.toUpperCase();

if(conteudo.substring(1) == “14 45 29 57”)

{

lcd.clear();

Serial.println(“Acesso liberado ”);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Ola !”);

lcd.setCursor(0,1);

lcd.print(“Acesso liberado”);

digitalWrite(verde,1);

digitalWrite(vermelho,0);

myservo.write(95);

delay(800);

myservo.write(10);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

}

if(conteudo.substring(1) == “F1 B1 03 1F”)

{

lcd.clear();

Serial.println(“Acesso negado ”);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Erro ! Tag nao ”);

lcd.setCursor(0,1);

lcd.print(“autorizada ”);

}

delay(1000);

lcd.clear();

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Aproxime a sua ”);

lcd.setCursor(0,1);

lcd.print(“tag do leitor ”);

}

您应该做的第一件事是检查没有检测到标签并且没有读取标签。代码如下所示。

if(!mfrc522.PICC_IsNewCardPresent())

{

return;

}

if(!mfrc522.PICC_ReadCardSerial())

{

return;

}

之后,系统读取标签并在IDE Arduino串行监视器上显示其值。请参阅下面的代码部分。

Serial.print(“ UID da tag : ”);

String conteudo = “”;

byte letra;

for (byte i = 0; i《 mfrc522.uid.size; i++)

{

Serial.print(mfrc522.uid.uidByte[i] 《0x10 ? “0”:“ ”);

Serial.print(mfrc522.uid.uidByte[i], HEX);

conteudo.concat(String(mfrc522.uid.uidByte[i] 《 0x10 ? “ 0” : “ ”));

conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));

}

Serial.println();

Serial.print(“Mensagem : ”);

conteudo.toUpperCase();

不能在sistema上使用apresentaçãodocódigo标签,请在val上使用十六进制cadastrado no sistema。

if(conteudo.substring(1) == “14 45 29 57”)

{

lcd.clear();

Serial.println(“Acesso liberado ”);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Ola !”);

lcd.setCursor(0,1);

lcd.print(“Acesso liberado”);

digitalWrite(verde,1);

digitalWrite(vermelho,0);

myservo.write(95);

delay(800);

myservo.write(10);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

}

如果标签值等于14 45 29 57,则将执行上述条件的命令。在这些命令中,LCD将打印访问消息并激活伺服电机以打开入口门。

如果标签值等于F1 B1 03 1F值,则代码流输入条件并显示消息“标签未授权!”。并且不会触发伺服电机释放访问权限。

代码部分如下所示。

if(conteudo.substring(1) == “F1 B1 03 1F”)

{

lcd.clear();

Serial.println(“Acesso negado ”);

digitalWrite(verde,0);

digitalWrite(vermelho,1);

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Erro ! Tag nao ”);

lcd.setCursor(0,1);

lcd.print(“autorizada ”);

}

最后,系统清洁LCD屏幕并显示消息,以使用户将标签靠近RFID阅读器。代码区域如下所示。

delay(1000);

lcd.clear();

lcd.setBacklight(HIGH);

lcd.setCursor(0,0);

lcd.print(“Aproxime a sua ”);

lcd.setCursor(0,1);

lcd.print(“tag do leitor ”);

现在,我们将在平台上的电路上看到代码的结果。

对Arduino Uno进行编程后,我们将使系统正常工作。

在图2中,我们收到系统的初始消息,要求用户接近标签以释放访问权限。

如何使用Arduino创建停车门禁控制系统?

在图3中,我们让用户使用正确的标签进行访问,然后绿色LED亮起并激活伺服电机,并且访问显示在显示屏上。

800毫秒后,伺服电动机返回初始位置,绿色指示灯熄灭,红色指示灯亮起。

如何使用Arduino创建停车门禁控制系统?

在图4中,用户使用了未注册的标签,因此系统出现错误,并且不释放访问权限。

如何使用Arduino创建停车门禁控制系统?

之后,系统重新启动编程逻辑操作周期。

结论和未来项目改进

使用RFID技术的系统已应用于多种类型的项目。它们不仅限于控制和访问系统。例如,一种非常常见的应用是使用它来识别成批的服装和其他商品

利用您的创造力,您将通过带有Arduino的RFID模块为您的项目找到不同类型的应用程序。

将来,我们将使用Arduino创建门系统的原型,供您在实际中使用激光切割机或3D打印机设置停车场。
责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22418

    浏览量

    645781
  • 控制系统
    +关注

    关注

    41

    文章

    5949

    浏览量

    108580
  • 应用程序
    +关注

    关注

    37

    文章

    3126

    浏览量

    56315
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184768
收藏 人收藏

    评论

    相关推荐

    基于MCU CC2541-Q1汽车门禁开关参考设计包括物料清单和实验结果

    描述本汽车门禁控制开关参考设计展示了一套面向汽车门禁开关面板的概念验证解决方案,在这套解决方案中,控制面板可以无线方式与侧视镜、车窗升降器以及车门
    发表于 08-13 08:01

    射频识别技术怎么用于门禁系统应用?

    “信号处理模块”重发数据;若校验正确,则提取车辆标签信息中的车牌号,与数据库中的车辆信息进行对比。若提取的车牌号在数据库中存在,则传送信息给“控制系统”,由控制系统负责对闸门(门禁系统
    发表于 07-31 07:54

    请问怎样去设计一种车门分布式控制系统

    一种介绍基于CAN/LIN总线的车门分布式控制系统设计
    发表于 05-14 06:44

    请问怎样去设计一种基于Arduino Nano的智能门禁控制系统

    基于Arduino Nano的智能门禁控制系统的硬件是怎样构成的?基于Arduino Nano的智能门禁
    发表于 08-23 07:15

    停车门禁管理系统应该如何选购 精选资料分享

    民用道闸和工业级道闸,普通道闸和变频道闸,价格也是几千到上万不等,今天我们就来讨论一下停车门禁管理系统中的道闸如何选择。一、电机控制器需要采用变频技术吗?变频技术可以
    发表于 09-06 06:37

    基于Arduino的家电控制系统该怎样去设计呢

    Arduino是什么?Arduino是怎样驱动舵机的呢?基于Arduino的家电控制系统该怎样去设计呢?
    发表于 12-20 08:07

    基于RT-Thread和N32G457的门禁控制系统设计方案

    1、基于RT-Thread和N32G457的门禁控制系统设计应用背景1.应用场景可以作为家庭的安全门锁控制系统;2.同样可以作为企业的门禁考勤系统
    发表于 08-05 11:27

    车门禁和胎压监测系统解决方案

    车门禁和胎压监测系统解决方案
    发表于 10-10 16:08 90次下载
    汽<b class='flag-5'>车门禁</b>和胎压监测<b class='flag-5'>系统</b>解决方案

    基于nRF24L01的无线门禁控制系统的设计与实现

    本文基于nRF24L01的无线门禁控制系统的设计与实现,硬件系统由PC端软件系统,发送端,无线数据传送模块和接收端组成。试验证明该无线门禁
    发表于 12-15 15:15 3021次阅读
    基于nRF24L01的无线<b class='flag-5'>门禁</b><b class='flag-5'>控制系统</b>的设计与实现

    基于新唐MCU门禁控制系统,其基本构架是怎样的

    基于新唐MCU门禁控制系统 门禁系统是在智能建筑领域,意为Access Control System,简称ACS。指“门”的禁止权限,是对“门“的戒备防范。这里的“门”,广义来说,包括
    发表于 05-04 10:21 700次阅读

    基于DSP的门禁控制系统设计与实现

    门禁控制系统得到日益广泛的应用 不断提高门禁系统的安全性成为研究的重要课题本课题在对现在门禁系统
    发表于 04-27 09:47 13次下载
    基于DSP的<b class='flag-5'>门禁</b><b class='flag-5'>控制系统</b>设计与实现

    如何为汽车门禁系统的发展打开机遇大门

    如何为汽车门禁系统的发展打开机遇大门
    发表于 10-31 08:24 2次下载
    如何为汽<b class='flag-5'>车门禁</b><b class='flag-5'>系统</b>的发展打开机遇大门

    Arduino球和光束控制系统

    电子发烧友网站提供《Arduino球和光束控制系统.zip》资料免费下载
    发表于 07-10 11:28 0次下载
    <b class='flag-5'>Arduino</b>球和光束<b class='flag-5'>控制系统</b>

    新唐参考应用|智能门禁控制系统

    新唐参考应用|智能门禁控制系统
    的头像 发表于 08-11 15:20 342次阅读
    新唐参考应用|智能<b class='flag-5'>门禁</b><b class='flag-5'>控制系统</b>

    基于NFC技术的门禁控制系统设计

    电子发烧友网站提供《基于NFC技术的门禁控制系统设计.pdf》资料免费下载
    发表于 11-10 15:44 0次下载
    基于NFC技术的<b class='flag-5'>门禁</b><b class='flag-5'>控制系统</b>设计