Aplicații
E-mail 1002 Solutii
There’s a hidden app store built into the Windows Terminal
[mai mult...]How to disable Now Playing on a Google Pixel phone
[mai mult...]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.
Cum se instalează PHP 5.6 și 7.0 – 8.4 cu PHP-FPM și modul FastCGI pentru ISPConfig 3.2 cu apt pe Debian 11 până la 12
1 Notă preliminară
În acest ghid, veți adăuga depozitul suplimentar SURY pentru a instala pachetele PHP cu apt. Deoarece și alte pachete, precum OpenSSL, sunt actualizate, pachetele instalate de pe sury.org nu pot fi pur și simplu eliminate după instalare. Așadar, nu eliminați SURY ca sursă de depozit ulterior.
Vă rugăm să rețineți că PHP-FPM poate fi utilizat pe serverele Apache și Nginx, în timp ce FastCGI este disponibil numai pentru serverele Apache.
2 Add SURY repository
Mai întâi instalați aceste pachete necesare:
apt-get install -y apt-transport-https lsb-release ca-certificates
Acum adăugați cheia depozitului rulând această comandă:
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg >/dev/null 2>&1
și depozitul în sine:
echo "deb https://packages.sury.org/php/ $(lsb_release -c -s) main" > /etc/apt/sources.list.d/php.list
Acum actualizați lista de pachete:
apt-get update
Pentru a actualiza pachetele deja instalate din noul depozit, utilizați această comandă:
apt-get upgrade
3 Install additional PHP versions
Nu trebuie să instalați toate versiunile listate aici, instalați-le pe cele de care aveți nevoie..
3.1 Install PHP 5.6
Pentru a instala PHP, folosiți această comandă:
apt-get install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common php5.6-json php5.6-readline php5.6-xml
3.2 Install PHP 7.0
Pentru a instala PHP, folosiți această comandă:
apt-get install php7.0 php7.0-cli php7.0-cgi php7.0-fpm php7.0-gd php7.0-mysql php7.0-imap php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-zip php7.0-mbstring php7.0-soap php7.0-opcache php7.0-common php7.0-json php7.0-readline php7.0-xml
3.3 Install PHP 7.1
Pentru a instala PHP, folosiți această comandă:
apt-get install php7.1 php7.1-cli php7.1-cgi php7.1-fpm php7.1-gd php7.1-mysql php7.1-imap php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc php7.1-xsl php7.1-zip php7.1-mbstring php7.1-soap php7.1-opcache php7.1-common php7.1-json php7.1-readline php7.1-xml
3.4 Install PHP 7.2
Pentru a instala PHP, folosiți această comandă:
apt-get install php7.2 php7.2-cli php7.2-cgi php7.2-fpm php7.2-gd php7.2-mysql php7.2-imap php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap php7.2-opcache php7.2-common php7.2-json php7.2-readline php7.2-xml
3.5 Install PHP 7.3
Pentru a instala PHP, folosiți această comandă:
apt-get install php7.3 php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-imap php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl php7.3-zip php7.3-mbstring php7.3-soap php7.3-opcache php7.3-common php7.3-json php7.3-readline php7.3-xml
3.6 Install PHP 7.4
Pentru a instala PHP, folosiți această comandă:
apt-get install php7.4 php7.4-cli php7.4-cgi php7.4-fpm php7.4-gd php7.4-mysql php7.4-imap php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl php7.4-zip php7.4-mbstring php7.4-soap php7.4-opcache libonig5 php7.4-common php7.4-json php7.4-readline php7.4-xml
3.7 Install PHP 8.0
Pentru a instala PHP, folosiți această comandă:
apt-get install php8.0 php8.0-cli php8.0-cgi php8.0-fpm php8.0-gd php8.0-mysql php8.0-imap php8.0-curl php8.0-intl php8.0-pspell php8.0-sqlite3 php8.0-tidy php8.0-xsl php8.0-zip php8.0-mbstring php8.0-soap php8.0-opcache libonig5 php8.0-common php8.0-readline php8.0-xml
3.8 Install PHP 8.1
Pentru a instala PHP, folosiți această comandă:
apt-get install php8.1 php8.1-cli php8.1-cgi php8.1-fpm php8.1-gd php8.1-mysql php8.1-imap php8.1-curl php8.1-intl php8.1-pspell php8.1-sqlite3 php8.1-tidy php8.1-xsl php8.1-zip php8.1-mbstring php8.1-soap php8.1-opcache libonig5 php8.1-common php8.1-readline php8.1-xml
3.9 Install PHP 8.2
Pentru a instala PHP, folosiți această comandă:
apt-get install php8.2 php8.2-cli php8.2-cgi php8.2-fpm php8.2-gd php8.2-mysql php8.2-imap php8.2-curl php8.2-intl php8.2-pspell php8.2-sqlite3 php8.2-tidy php8.2-xsl php8.2-zip php8.2-mbstring php8.2-soap php8.2-opcache libonig5 php8.2-common php8.2-readline php8.2-xml
3.10 Install PHP 8.3
Pentru a instala PHP, folosiți această comandă:
apt-get install php8.3 php8.3-cli php8.3-cgi php8.3-fpm php8.3-gd php8.3-mysql php8.3-imap php8.3-curl php8.3-intl php8.3-pspell php8.3-sqlite3 php8.3-tidy php8.3-xsl php8.3-zip php8.3-mbstring php8.3-soap php8.3-opcache libonig5 php8.3-common php8.3-readline php8.3-xml
3.11 Install PHP 8.4
Pentru a instala PHP, folosiți această comandă:
apt-get install php8.4 php8.4-cli php8.4-cgi php8.4-fpm php8.4-gd php8.4-mysql php8.4-imap php8.4-curl php8.4-intl php8.4-pspell php8.4-sqlite3 php8.4-tidy php8.4-xsl php8.4-zip php8.4-mbstring php8.4-soap php8.4-opcache libonig5 php8.4-common php8.4-readline php8.4-xml
4 Resetați PHP-ul implicit al sistemului de operare la versiunea corectă
PHP-ul implicit al sistemului de operare trebuie să rămână la versiunea originală. Pentru a remedia acest lucru, executați aceste comenzi una câte una.:
update-alternatives --config php update-alternatives --config php-cgi update-alternatives --config php-fpm.sock
On Debian 12, choose 8.2; on Debian 11, choose 7.4; on Debian 10, choose 7.3.
5 Add PHP versions to ISPConfig
În ISPConfig 3, puteți configura noile versiuni PHP în Sistem > Versiuni PHP suplimentare > Adăugați o nouă versiune PHP.
Add the distribution’s default PHP version
Mai întâi, trebuie să adăugați o nouă versiune pentru versiunea PHP deja instalată. Versiunea implicită depinde de versiunea pe care o utilizați.:
Debian 10: PHP 7.3
Debian 11: PHP 7.4
Debian 12: PHP 8.2
Vedeți mai jos configurația pentru versiunea dvs..
Configurarea pentru versiunile suplimentare de PHP
PHP 5.6
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi5.6 Path to the php.ini directory: /etc/php/5.6/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php5.6-fpm Path to the php.ini directory: /etc/php/5.6/fpm/ Path to the PHP-FPM pool directory: /etc/php/5.6/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php5.6
PHP 7.0
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi7.0 Path to the php.ini directory: /etc/php/7.0/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php7.0-fpm Path to the php.ini directory: /etc/php/7.0/fpm/ Path to the PHP-FPM pool directory: /etc/php/7.0/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.0
PHP 7.1
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi7.1 Path to the php.ini directory: /etc/php/7.1/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php7.1-fpm Path to the php.ini directory: /etc/php/7.1/fpm/ Path to the PHP-FPM pool directory: /etc/php/7.1/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.1
PHP 7.2
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi7.2 Path to the php.ini directory: /etc/php/7.2/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php7.2-fpm Path to the php.ini directory: /etc/php/7.2/fpm/ Path to the PHP-FPM pool directory: /etc/php/7.2/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.2
PHP 7.3
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi7.3 Path to the php.ini directory: /etc/php/7.3/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php7.3-fpm Path to the php.ini directory: /etc/php/7.3/fpm/ Path to the PHP-FPM pool directory: /etc/php/7.3/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.3
PHP 7.4
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi7.4 Path to the php.ini directory: /etc/php/7.4/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php7.4-fpm Path to the php.ini directory: /etc/php/7.4/fpm/ Path to the PHP-FPM pool directory: /etc/php/7.4/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php7.4
PHP 8.0
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi8.0 Path to the php.ini directory: /etc/php/8.0/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php8.0-fpm Path to the php.ini directory: /etc/php/8.0/fpm/ Path to the PHP-FPM pool directory: /etc/php/8.0/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.0
PHP 8.1
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi8.1 Path to the php.ini directory: /etc/php/8.1/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php8.1-fpm Path to the php.ini directory: /etc/php/8.1/fpm/ Path to the PHP-FPM pool directory: /etc/php/8.1/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.1
PHP 8.2
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi8.2 Path to the php.ini directory: /etc/php/8.2/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php8.2-fpm Path to the php.ini directory: /etc/php/8.2/fpm/ Path to the PHP-FPM pool directory: /etc/php/8.2/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.2
PHP 8.3
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi8.3 Path to the php.ini directory: /etc/php/8.3/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php8.3-fpm Path to the php.ini directory: /etc/php/8.3/fpm/ Path to the PHP-FPM pool directory: /etc/php/8.3/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.3
PHP 8.4
Fast-CGI settings:
Path to the PHP FastCGI binary: /usr/bin/php-cgi8.4 Path to the php.ini directory: /etc/php/8.4/cgi/
PHP-FPM settings:
Path to the PHP-FPM init script: php8.4-fpm Path to the php.ini directory: /etc/php/8.4/fpm/ Path to the PHP-FPM pool directory: /etc/php/8.4/fpm/pool.d/
Versiunea CLI, de exemplu, pentru cron jobs, are numele php8.4.
[mai mult...]