Soluții
Arduino Weather Station guide
The DHT11 and DHT22 measure temperature and humidity. DHT22 offers higher accuracy and a wider range.
| Pin | Description |
|---|---|
| VCC | +5V |
| DATA | Data output (connect to D2) |
| NC | Not connected |
| GND | Ground |
BMP180 / BME280
Measures pressure and temperature using the I2C interface.
| Pin | Description |
|---|---|
| VIN | +3.3V or +5V |
| GND | Ground |
| SCL | I2C Clock (A5) |
| SDA | I2C Data (A4) |
LCD (16×2 I2C)
Displays data using the I2C interface — only two wires are required (SDA, SCL).
The most common I2C addresses are 0x27 or 0x3F.
Wiring Diagram
| Component | Arduino Pin | Notes |
|---|---|---|
| DHT11 Data | D2 | Use 10kΩ pull-up resistor (optional) |
| BMP180 SDA | A4 | I2C Data |
| BMP180 SCL | A5 | I2C Clock |
| LCD SDA | A4 | Shared with BMP180 |
| LCD SCL | A5 | Shared with BMP180 |
| Power (+) | 5V | Common power line |
| Ground (–) | GND | Common ground |
On Arduino Mega, use SDA = 20 and SCL = 21 instead.
Arduino Code Example
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
// Define sensors
#define DHTPIN 2
#define DHTTYPE DHT11 // or DHT22
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085 bmp;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Change address if needed (0x3F or 0x27)
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.backlight();
dht.begin();
if (!bmp.begin()) {
Serial.println("BMP180 not found!");
lcd.print("BMP Error!");
while (1);
}
lcd.clear();
lcd.print("Weather Station");
delay(2000);
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float p = bmp.readPressure() / 100.0; // hPa
if (isnan(h) || isnan(t)) {
Serial.println("DHT read error!");
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(t);
lcd.print((char)223);
lcd.print("C H:");
lcd.print(h);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("P:");
lcd.print(p);
lcd.print(" hPa");
Serial.print("Temp: "); Serial.print(t);
Serial.print(" °C Hum: "); Serial.print(h);
Serial.print("% Pressure: "); Serial.print(p);
Serial.println(" hPa");
delay(2000);
}
Explanation: This program reads data from the DHT and BMP sensors, then prints it to both the Serial Monitor and the LCD screen.
How It Works
- The sensors measure temperature, humidity, and pressure.
- Arduino reads and formats this data.
- The LCD displays readings in real time.
- Every few seconds, the data updates automatically.
Troubleshooting
| Problem | Possible Cause | Solution |
|---|---|---|
| LCD shows random text | Wrong I2C address | Try 0x3F instead of 0x27 |
| “BMP180 not found!” | Wiring issue | Check SDA/SCL and power |
| DHT readings show NaN | Missing library or bad sensor | Install DHT library, recheck wiring |
| LCD blank | Contrast too low or backlight off | Adjust contrast screw or enable backlight |
Install these from Arduino IDE → Sketch → Include Library → Manage Libraries:
DHT sensor libraryby AdafruitAdafruit Unified SensorAdafruit BMP085 LibraryorAdafruit BME280LiquidCrystal_I2C
Optional: IoT Integration
Add an ESP8266 or ESP32 to send data to cloud platforms such as:
- ThingSpeak
- Blynk
- Adafruit IO
Use libraries like ESP8266WiFi.h and HTTPClient.h to upload readings as HTTP requests.
Expansion Ideas
- Add a rain sensor or anemometer (wind speed)
- Store data on an SD card
- Add a real-time clock (RTC) for timestamped data
- Display graphs on a web dashboard.
Arduino Distance Sensor with OLED Display
This project uses an HC-SR04 Ultrasonic Distance Sensor and a 0.96” I2C OLED display to measure and display the distance to an object in real-time.
It’s an excellent beginner-to-intermediate Arduino project that teaches sensor interfacing, I2C communication, and real-time data display.
In this guide, you’ll learn how to:
- Connect and use the HC-SR04 Ultrasonic Sensor
- Display the measured distance on an OLED screen
- Format readings for easy readability
Components Required
| Component | Quantity | Description |
|---|---|---|
| Arduino Uno / Nano / Mega | 1 | Main controller |
| HC-SR04 Ultrasonic Sensor | 1 | Measures distance via sound waves |
| 0.96” OLED Display (SSD1306) | 1 | I2C display for output |
| Breadboard | 1 | For wiring |
| Jumper wires | 6–8 | Male-to-male connections |
| USB cable | 1 | For programming and power |
The HC-SR04 measures distance by sending out an ultrasonic pulse and timing how long it takes to bounce back.
The Arduino calculates the distance based on the time delay and the known speed of sound.
Distance Formula:
Distance (cm) = (Time in microseconds × 0.034) / 2
The division by 2 accounts for the round trip of the sound wave (out and back).
Pin Connections
| Component | Arduino Pin | Notes |
|---|---|---|
| HC-SR04 VCC | 5V | Power supply |
| HC-SR04 GND | GND | Common ground |
| HC-SR04 TRIG | D9 | Trigger pin |
| HC-SR04 ECHO | D10 | Echo pin |
| OLED VCC | 5V | Power |
| OLED GND | GND | Ground |
| OLED SDA | A4 | I2C Data |
| OLED SCL | A5 | I2C Clock |
Note: On Arduino Mega, use SDA = 20 and SCL = 21 instead.
Arduino Code Example
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Initialize OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED not found!");
while (true);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Distance Sensor");
display.display();
delay(1500);
}
void loop() {
long duration;
float distance;
// Send trigger pulse
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure echo time
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration * 0.034) / 2;
// Print to Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Display on OLED
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.println("Distance Sensor");
display.setTextSize(2);
display.setCursor(0, 30);
display.print(distance, 1);
display.println(" cm");
display.display();
delay(500);
}
Explanation: The Arduino sends a pulse from the HC-SR04 and measures the time it takes to return.
It then converts this time into distance and displays it on the OLED screen.
Code Breakdown
pulseIn()measures the length of time the echo pin is HIGH.- Distance is calculated using the speed of sound (0.034 cm/μs).
Adafruit_SSD1306andAdafruit_GFXlibraries drive the OLED.- Display refreshes every 0.5 seconds for updated readings.
Install these via Arduino IDE → Sketch → Include Library → Manage Libraries:
Adafruit SSD1306Adafruit GFX
Search for “Adafruit SSD1306” and “Adafruit GFX” and click Install.
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| OLED blank | Wrong I2C address | Try changing 0x3C to 0x3D |
| Distance always 0 | Echo pin not connected | Check TRIG and ECHO wiring |
| Unstable readings | Object too close or far | HC-SR04 range: 2–400 cm |
| Serial Monitor empty | Wrong baud rate | Ensure 9600 baud in Serial Monitor |
Optional Upgrades
- Add a buzzer that activates when an object is too close.
- Display a bar graph or animation on the OLED.
- Send readings to the cloud using ESP8266 / ESP32.
- Log readings to an SD card.
Applications
- Parking assist system
- Object detection robot
- Smart trash bin (auto open lid)
- Liquid level detector.
Critical Disk Space Depletion on Workstations and Servers
Disk drives (especially smaller 128 GB/256 GB SSDs on workstations or server C: drives) are running out of space, leading to system instability, failed updates, and poor performance. The problem manifests in two ways:
[mai mult...]Variante de a rezolva codul de eroare 80090016 al modulului Trusted Platform Module
Este posibil să întâmpinați această eroare cu aplicații precum Teams, Outlook sau aplicațiile Microsoft 365 pentru întreprinderi(OneDrive for Business, Excel, PowerPoint, Word). atunci când TPM nu reușește să se autentifice în mod securizat. Eroarea TPM 80090016 poate fi cauzată de date TPM corupte, setări de sistem configurate incorect, înlocuirea componentelor hardware sau firmware învechit.
La lansarea aplicațiilor Microsoft 365 pentru întreprinderi poate apărea următorul mesaj de eroare:
”Something went wrong. Your computer’s Trusted Platform Module has malfunctioned. If this error persists, contact your system administrator with the error code 80090016. More information: https://www.microsoft.com/wamerrors”.
TPM este o funcție de securitate bazată pe hardware utilizată pentru stocarea în siguranță a cheilor criptografice. Când TPM funcționează defectuos, aceasta afectează aplicații precum Microsoft Office, Teams sau Outlook, care nu se mai pot autentifica corect și raportează erori.
[mai mult...]Cum verificați hash-ul fișierului cu PowerShell
Se va arăta integritatea fișierelor în Windows folosind PowerShell: calcularea sumelor de control cu Get-FileHash, compararea directoarelor după hash și detectarea fișierelor duplicate sau corupte.
Pentru a verifica dacă fișierele mari, distribuțiile sau imaginile ISO sunt descărcate complet, fără erori și nu au fost modificate în timpul transferului, puteți verifica hash-ul acestora. Spre deosebire de numele sau extensia unui fișier, hash-ul unui fișier(cunoscut și sub numele de sumă de control) este o valoare unică care depinde exclusiv de conținutul fișierului. Hash-ul rezultat poate fi comparat cu cel original pentru a verifica integritatea și autenticitatea fișierului.
În Windows, puteți calcula valoarea hash a oricărui fișier fără a utiliza instrumente terțe. Puteți utiliza fie comanda consolei CertUtil.exe, fie cmdletul Get-FileHash PowerShell.
[mai mult...]