一、功能介绍
主要功能: 一款使用ESP32做主控器与HMI进行数据交互实现密码开锁、密码修改、密码存储、密码删除、指纹录入、指纹删除、IC卡录入、IC卡删除、指纹开锁、IC卡开锁、微信小程序报警提示、语音提示的功能。
采用MQTT协议连接blinker实现与手机APP应用程序无线通信,实现手机控制安防设备的开锁、录指纹、删除指纹、录入IC卡、删除IC卡。(可选)
采用MQTT协议连接阿里云,进行云端的数据存储。(可选,也可以根据自己的需求来设置存储)
1.使用ESP32_wroom_32单片机做主控制器。
2.使用串口屏HMI与主控进行界面交互,实现密码开锁、密码修改、密码存储、密码删除、指纹录入、指纹删除、IC卡录入、IC卡删除的功能。
3.使用指纹模块,实现指纹录入、指纹删除、指纹开锁的功能。
4.使用IC卡模块,实现IC卡录入、IC卡删除、IC卡开锁的功能。
5.使用磁锁,来实现开锁关锁的功能。
6.使用三色灯来实现开锁成功是否、录入指纹成功是否、IC卡录入成功是否、指纹删除成功是否,IC卡删除成功是否的提示。
二、图片展示
三、核心代码
if (ubuffer[3] == 0xff && ubuffer[4] == 0xff && ubuffer[5] == 0xff)
{
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x00) //开锁成功
{
digitalWrite(relay, HIGH);
digitalWrite(green, HIGH);
Blinker.notify("开锁成功");
delay(2000);
digitalWrite(green, LOW);
digitalWrite(relay, LOW);
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x01) //开锁失败一次
{
wechat++;
digitalWrite(relay, LOW);
digitalWrite(red, HIGH);
Blinker.notify("开锁失败一次");
delay(500);
digitalWrite(red, LOW);
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x02) //开锁失败两次
{
wechat++;
digitalWrite(relay, LOW);
digitalWrite(red, HIGH);
Blinker.notify("开锁失败两次");
delay(500);
digitalWrite(red, LOW);
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x03) //开锁失败三次,报警
{
wechat++;
//wechat=1;
digitalWrite(relay, LOW);
digitalWrite(red, HIGH);
// Blinker.notify("开锁失败三次,报警");
delay(500);
digitalWrite(red, LOW);
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x04) //录卡
{
Blinker.notify("录卡");
digitalWrite(yellow, HIGH);
RC522_new_card_id = 1;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x05) //停止录卡
{
digitalWrite(yellow, LOW);
Blinker.notify("停止录卡");
RC522_new_card_id = 0;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x06) //删卡
{
digitalWrite(yellow, HIGH);
Blinker.notify("删卡");
RC522_detele_card_id = 1;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x07) //停止删卡
{
digitalWrite(yellow, LOW);
Blinker.notify("停止删卡");
RC522_detele_card_id = 0;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x08) //录指纹
{
Blinker.notify("录入指纹");
digitalWrite(yellow, HIGH);
id++;
AS608_new_id = 1;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x09) //停止录指纹
{
Blinker.notify("停止录入指纹");
digitalWrite(yellow, LOW);
AS608_new_id = 0;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x10) //删指纹
{
digitalWrite(yellow, HIGH);
Blinker.notify("删指纹");
AS608_detele_id = 1;
}
if (ubuffer[1] == 0x00 && ubuffer[2] == 0x11) //停止删指纹
{
digitalWrite(yellow, LOW);
Blinker.notify("停止删指纹");
AS608_detele_id = 0;
}
}
}
else
{
TJC.read(); //从串口缓冲读取1个字节并删除
}
}
}
void setup()
{
//这个继电器有问题 高电平控制NO导通 低电平控制NC导通
pinMode(relay, OUTPUT);
digitalWrite(relay, LOW);
//三色RGB
pinMode(red, OUTPUT);
digitalWrite(red, LOW);
pinMode(yellow, OUTPUT);
digitalWrite(yellow, LOW);
pinMode(green, OUTPUT);
digitalWrite(green, LOW);
TJC.begin(115200);//串口屏
//串口
// Serial.begin(115200);
//指纹使用57600波特率 3.3v供电
finger.begin(57600);
}
四、视频演示
安防控制系统
PS:要源码和成品可以联系