Soluții

Arduino Fingerprint Sensor

Required Components

Component Quantity Description
Arduino Uno / Nano / Mega 1 Main controller
Fingerprint Sensor (R307 / ZFM-20 / Adafruit) 1 Biometric identification
16×2 LCD with I2C Module 1 Display user messages
12V Solenoid Lock 1 Door/box locking mechanism
5V Relay Module 1 Controls solenoid lock
12V Power Supply 1 Powers solenoid
Jumper Wires Connections

The fingerprint sensor scans the user’s finger. Arduino checks if the fingerprint matches a stored ID. If it matches, the relay is activated and unlocks the solenoid lock. The LCD shows:

  • Scanning
  • Access Granted
  • Access Denied

Fingerprint Sensor → Arduino

VCC → 5V
GND → GND
TX  → D2
RX  → D3

I2C LCD → Arduino

VCC → 5V
GND → GND
SDA → A4
SCL → A5

Relay Module → Arduino

IN  → D8
VCC → 5V
GND → GND

Solenoid Lock Power Wiring

12V+ → COM on Relay
NO   → Solenoid +
Solenoid - → 12V -

IMPORTANT: Use a diode (1N4007) across solenoid terminals to prevent voltage spikes.

Arduino Code (Copy & Paste)

This code controls the fingerprint module, LCD display, and solenoid lock.


#include <Adafruit_Fingerprint.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>

SoftwareSerial fingerSerial(2, 3); // RX, TX
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&fingerSerial);
LiquidCrystal_I2C lcd(0x27, 16, 2);

int relayPin = 8;

void setup() {
lcd.init();
lcd.backlight();

pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // lock OFF at start

lcd.setCursor(0, 0);
lcd.print("Fingerprint");
lcd.setCursor(0, 1);
lcd.print("Access System");

delay(2000);
lcd.clear();

finger.begin(57600);
if (finger.verifyPassword()) {
lcd.print("Sensor Ready");
} else {
lcd.print("Sensor Error");
while (1);
}
delay(2000);
lcd.clear();
}

void loop() {
lcd.setCursor(0, 0);
lcd.print("Place Finger...");
lcd.setCursor(0, 1);
lcd.print(" ");

int result = getFingerprintID();

if (result >= 0) {
lcd.clear();
lcd.print("Access Granted");
unlockDoor();
} else if (result == -1) {
lcd.clear();
lcd.print("Access Denied");
delay(1500);
}

lcd.clear();
}

int getFingerprintID() {
finger.getImage();
if (finger.image2Tz() != FINGERPRINT_OK) return -1;
if (finger.fingerSearch() != FINGERPRINT_OK) return -1;

return finger.fingerID; // valid ID returned
}

void unlockDoor() {
digitalWrite(relayPin, HIGH); // open lock
delay(3000); // unlock duration
digitalWrite(relayPin, LOW); // lock again
}

You must add fingerprints before using the system.

  1. In Arduino IDE, go to File → Examples → Adafruit Fingerprint Sensor Library → Enroll
  2. Upload the sketch
  3. Open Serial Monitor
  4. Type the fingerprint ID number (1–127)
  5. Place finger twice when instructed

Fingerprint is now stored.

LCD Display Messages

Event Message
Startup Fingerprint Access System
Ready Sensor Ready
Waiting Place Finger…
Match Access Granted
No Match Access Denied

Troubleshooting

  • Fingerprint not detected: TX/RX wiring reversed
  • LCD not showing text: Wrong I2C address (try 0x3F)
  • Solenoid not activating: Check relay NO/COM wiring
  • Machine resets: Solenoid drawing current — use separate 12V supply.
[mai mult...]

Arduino Air Quality Monitoring System

Build your own Arduino-based Air Quality Monitor using sensors like the MQ-135, MQ-7, and DHT11/DHT22. This guide explains how the sensors work, how to wire them, and includes a fully commented Arduino code example.

Components Needed

Component Qty Description
Arduino Uno / Nano / Mega 1 Main microcontroller
MQ-135 Gas Sensor 1 Detects VOCs, NH₃, CO₂, smoke, pollution
DHT11 or DHT22 1 Temperature & Humidity
MQ-7 (optional) 1 Carbon Monoxide sensor
0.96″ OLED (optional) 1 Displays readings
Breadboard & Jumper Wires Wiring
USB Cable 1 Power + programming

How the Sensors Work

MQ-135 (Air Quality Sensor)

Detects harmful gases such as CO₂, NH₃, NOx, benzene, and VOCs. The analog output value increases when the air becomes more polluted. Requires a short preheat time for accuracy.

MQ-7 (Carbon Monoxide)

Detects CO gas. Optional component for advanced monitoring.

DHT11 / DHT22

Reads temperature and humidity. These values help interpret gas sensor readings more accurately.

MQ-135 Wiring

MQ135 → Arduino
VCC   → 5V
GND   → GND
A0    → A0

DHT11 / DHT22

DHT Sensor → Arduino
VCC        → 5V
GND        → GND
DATA       → D2

OLED (I2C)

OLED → Arduino
VCC  → 5V
GND  → GND
SDA  → A4
SCL  → A5

Arduino Code (Copy & Paste)


#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT22 // change to DHT11 if needed
DHT dht(DHTPIN, DHTTYPE);

int mq135Pin = A0;

void setup() {
Serial.begin(9600);
dht.begin();
}

void loop() {

// --- Read MQ135 Sensor ---
int mqValue = analogRead(mq135Pin);
float airQuality = map(mqValue, 0, 1023, 0, 500);
// 0 = clean air, 500 = very polluted

// --- Read Temperature & Humidity ---
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();

// --- Output Data ---
Serial.println("----------- AIR QUALITY MONITOR -----------");
Serial.print("MQ135 Raw Value: ");
Serial.println(mqValue);

Serial.print("Air Quality Index (approx): ");
Serial.print(airQuality);
Serial.println(" / 500");

Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");

Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");

Serial.println("-------------------------------------------\\n");

delay(1000);
}

Understanding the Readings

MQ135 Reading Air Quality Description
0–80 Excellent Very clean air
80–150 Good Normal indoor air
150–250 Moderate Needs ventilation
250–350 Poor Polluted environment
350–500+ Hazardous High VOCs or smoke detected

Troubleshooting

  • Sensor always reads high: MQ-135 needs 1–5 minutes warm-up time.
  • No DHT readings: Check DATA pin and DHT type in code.
  • Unstable values: Add a 100nF decoupling capacitor to MQ sensor.
  • OLED not showing: Wrong I2C address — run an I2C scanner.
[mai mult...]

Cum decupezi imagini in forme creative direct in Figma

Designul cere ca o fotografie sa apara intr-un cerc, intr-o stea sau intr-un poligon, fotografia fiind in forma de cerc. Putem sa prelucram imaginea direct in Figma, fara a folosi vreun program extern (cum ar fi Photoshop).

Figma ofera doua metode extrem de rapide si eficiente pentru a incadra o imagine in orice forma geometrica dorita, dar noi o vom folosi pe cea cu “Mask”.

[mai mult...]

Prototipare rapida cu ajutorul componentelor in Figma

Avem unsidebar cu 5 optiuni (Home, Products, Mail, Calendar, Contacts) respectiv cele 5 pagini aferente lor. Fara componente, fiecare pagina trebuie sa fie legata individual la toate celelalte 4 pagini. In plus, designerul trebuie sa modifice manual starea activa a sidebar-ului pe fiecare frame de destinatie (ex: daca treci de pe Home pe Products, trebuie sa creezi un frame nou unde Products este activ). Astfel, rezulta un prototip lent, peste 20 de linkuri doar pentru navigarea primara si modificari de design greoaie.

Am atasat mai jos un exemplu. Am facut pentru 2 screen-uri, dar trebuie facut manual pentru toate cele 6. Este foarte laborios.

[mai mult...]