Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

ESP8266-Based Smart Access Control with Fingerprint Verification and Voice Recognition

View and Edit Project In Cirkit DesignerImage of ESP8266-Based Smart Access Control with Fingerprint Verification and Voice Recognition

Circuit Documentation

Summary

This circuit is designed around the ESP-8266 microcontroller, which serves as the central processing unit. The circuit includes a variety of peripherals including an OLED display, a piezo buzzer, an RGB LED, a fingerprint scanner, a solenoid, and a voice recognition module. The ESP-8266 manages sensor data, controls actuators, and communicates with external devices. The circuit is likely intended for a security or access control system, where user authentication via fingerprint triggers a solenoid lock and provides visual and audible feedback.

Component List

ESP-8266 Controller

Solenoid

Piezo Buzzer

RGB LED (Wokwi compatible)

Fingerprint Scanner

OLED Display 2.42"

DF Robot Gravity Voice Recognition Module

Wiring Details

ESP-8266 Controller

Solenoid

Piezo Buzzer

RGB LED (Wokwi compatible)

Fingerprint Scanner

OLED Display 2.42"

DF Robot Gravity Voice Recognition Module

Documented Code

#include <DHT.h>
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <FirebaseESP8266.h>

// WiFi Configuration
#define WIFI_SSID "your_SSID"
#define WIFI_PASSWORD "your_PASSWORD"

// Firebase Configuration
#define FIREBASE_HOST "your_firebase_database.firebaseio.com"
#define FIREBASE_AUTH "your_firebase_database_secret"

#define DHTPIN D8        // Pin for DHT sensor
#define DHTTYPE DHT11    // DHT sensor type
DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial mySerial(D2, D3); // RX, TX for fingerprint
FirebaseData firebaseData;

// Pins for components
const int solenoidPin = D5;
const int fingerprintTxPin = D2;
const int fingerprintRxPin = D3;
const int buzzerPin = D7;
const int pushButtonPin = D4;
const int ledRedPin = D9;
const int ledGreenPin = D10;
const int ledBluePin = D11;

// Variables for control
bool isRewardGranted = false;

// Setup function
void setup() {
  Serial.begin(115200);
  mySerial.begin(57600); // Communication speed for fingerprint
  pinMode(solenoidPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(pushButtonPin, INPUT_PULLUP);
  pinMode(ledRedPin, OUTPUT);
  pinMode(ledGreenPin, OUTPUT);
  pinMode(ledBluePin, OUTPUT);

  dht.begin();

  // Connect to WiFi
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected to WiFi");

  // Connect to Firebase
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

// Loop function
void loop() {
  // Check temperature and humidity
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Send data to Firebase
  Firebase.setFloat(firebaseData, "/temperature", temperature);
  Firebase.setFloat(firebaseData, "/humidity", humidity);

  // Check push button status
  if (digitalRead(pushButtonPin) == LOW) {
    // If button is pressed, perform fingerprint verification
    if (verifyFingerprint()) {
      if (!isRewardGranted) {
        grantReward();
      }
    }
    delay(500); // Debounce delay
  }

  // Check reward condition
  if (isRewardGranted) {
    // Turn off solenoid after 10 seconds
    delay(10000);
    digitalWrite(solenoidPin, LOW);
    isRewardGranted = false;
  }
}

// Function to verify fingerprint
bool verifyFingerprint() {
  // Implement code for fingerprint verification
  return true; // Replace with fingerprint verification logic
}

// Function to grant reward
void grantReward() {
  digitalWrite(solenoidPin, HIGH);
  tone(buzzerPin, 1000, 500); // Sound buzzer
  isRewardGranted = true;

  // Light up RGB LED as an indicator
  digitalWrite(ledRedPin, HIGH);
  delay(500);
  digitalWrite(ledRedPin, LOW);
  digitalWrite(ledGreenPin, HIGH);
  delay(500);
  digitalWrite(ledGreenPin, LOW);
  digitalWrite(ledBluePin, HIGH);
  delay(500);
  digitalWrite(ledBluePin, LOW);
}

Note: The code provided is a basic template and requires further implementation for the fingerprint verification process. Additionally, the pin definitions for the RGB LED in the code do not match the wiring details provided. The correct pin assignments should be used in the final implementation.