#define BLYNK_TEMPLATE_ID "TMPL67QNUCguB"
#define BLYNK_TEMPLATE_NAME "ESP8266 RFID Door Lock"
#define BLYNK_AUTH_TOKEN "QzXVA1ia_Wh-g8KIlvcR9drmCrGYKXqW"
#define BLYNK_PRINT Serial
// Your WiFi credentials
#define WIFI_SSID "nopal"
#define WIFI_PASS "palpaljak"
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SPI.h>
#include <MFRC522.h>
// Pin Definitions using GPIO numbers
#define SS_PIN 2 // GPIO2 (D4 on NodeMCU)
#define RST_PIN 0 // GPIO0 (D3 on NodeMCU)
#define relay 4 // GPIO4 (D2 on NodeMCU)
#define BUZZER 15 // GPIO15 (D8 on NodeMCU)
MFRC522 mfrc522(SS_PIN, RST_PIN);
BlynkTimer timer;
int button1 = 0;
int button2 = 0;
int button3 = 0;
int manualControl = 0; // Variable for V7 manual control
WidgetTerminal terminal(V2);
void setup()
{
Serial.begin(115200);
delay(100);
WiFi.begin(WIFI_SSID, WIFI_PASS);
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASS);
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH); // Initialize relay to OFF state
pinMode(BUZZER, OUTPUT);
digitalWrite(BUZZER, LOW); // Initialize buzzer to OFF state
SPI.begin();
mfrc522.PCD_Init();
timer.setInterval(1000L, iot_rfid);
}
void loop() {
Blynk.run();
timer.run();
iot_rfid();
}
void iot_rfid()
{
// If manual control is active, skip RFID checking
if (manualControl == 1) {
return;
}
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Look for new cards
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
// Dump UID
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], DEC);
}
Serial.println();
// Dump PICC type
byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
return;
}
// Check authorized cards
if ((mfrc522.uid.uidByte[0] == 131) && (mfrc522.uid.uidByte[1] == 53) &&
(mfrc522.uid.uidByte[2] == 160) && (mfrc522.uid.uidByte[3] == 19) && (button1 == 1))
{
Serial.println("Access Granted to Naufal");
Blynk.virtualWrite(V2, "Access Granted to Naufal");
digitalWrite(relay, HIGH);
delay(5000);
digitalWrite(relay, LOW);
}
else if ((mfrc522.uid.uidByte[0] == 134) && (mfrc522.uid.uidByte[1] == 96) &&
(mfrc522.uid.uidByte[2] == 128) && (mfrc522.uid.uidByte[3] == 248) && (button2 == 1))
{
Serial.println("Access Granted to Mrs. Aashika");
Blynk.virtualWrite(V2, "Access Granted to Mrs. Aashika");
digitalWrite(relay, HIGH);
delay(5000);
digitalWrite(relay, LOW);
}
else if ((mfrc522.uid.uidByte[0] == 57) && (mfrc522.uid.uidByte[1] == 234) &&
(mfrc522.uid.uidByte[2] == 176) && (mfrc522.uid.uidByte[3] == 109) && (button3 == 1))
{
Serial.println("Access Granted to Dr. Smith");
Blynk.virtualWrite(V2, "Access Granted to Dr. Smith");
digitalWrite(relay, HIGH);
delay(5000);
digitalWrite(relay, LOW);
}
else {
Serial.println("Unregistered user");
Blynk.virtualWrite(V2, "Unregistered user Trying to Access your Door Lock");
Serial.println("Access denied");
Blynk.virtualWrite(V2, "Access denied");
digitalWrite(BUZZER, LOW);
delay(2000);
digitalWrite(BUZZER, HIGH);
}
}
BLYNK_WRITE(V3)
{
button1 = param.asInt();
}
BLYNK_WRITE(V4)
{
button2 = param.asInt();
}
BLYNK_WRITE(V5)
{
button3 = param.asInt();
}
// New function for manual control using V7
BLYNK_WRITE(V7)
{
manualControl = param.asInt();
if (manualControl == 1) {
digitalWrite(relay, LOW);
Blynk.virtualWrite(V2, "Door Manually Closed");
} else {
digitalWrite(relay, HIGH);
Blynk.virtualWrite(V2, "Door Manually Opened");
}
}Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1