How to move Taskbar to top or side on Windows 11
To move the Taskbar to the top of the screen with ExplorerPatcher, use these steps:
[mai mult...]Soluții pentru problemele tale IT
To move the Taskbar to the top of the screen with ExplorerPatcher, use these steps:
[mai mult...]How the Soil Moisture Sensor Works
Resistive Sensor
Uses two metal probes to measure electrical resistance. Wet soil has lower resistance, while dry soil has higher resistance.
Capacitive Sensor
Measures changes in soil capacitance and has no exposed metal parts. It provides more stable and long-lasting performance.
Both sensors provide an analog output that Arduino reads.
Wiring the Soil Moisture Sensor
Soil Sensor → Arduino VCC → 5V GND → GND AO → A0
The digital output (DO) pin is optional and can be used with a preset threshold.
Arduino Code (Basic Reading)
int soilPin = A0;
int soilValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
soilValue = analogRead(soilPin);
Serial.print("Soil Moisture Value: ");
Serial.println(soilValue);
delay(1000);
}
Understanding Soil Moisture Values
| Sensor Value | Soil Condition |
|---|---|
| 0 – 300 | Very Wet |
| 300 – 600 | Moist |
| 600 – 900 | Dry |
| 900 – 1023 | Very Dry |
Values may vary depending on soil type. Always calibrate with dry and wet soil.
Improved Code with Moisture Status
int soilPin = A0;
int soilValue = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
soilValue = analogRead(soilPin);
Serial.print("Soil Moisture: ");
Serial.print(soilValue);
if (soilValue < 300) {
Serial.println(" - WET");
}
else if (soilValue < 600) {
Serial.println(" - MOIST");
}
else {
Serial.println(" - DRY");
}
delay(1000);
}
Testing the Sensor
Wet soil produces lower values, while dry soil produces higher values.
Troubleshooting
Optional Upgrades
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:
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.
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
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
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...]