În acest tutorial, vom explora cum să folosim un rezistor dependent de lumină (LDR) cu microcontrolerul ESP32 pentru a măsura intensitatea luminii. Citind rezistența LDR-ului, putem declanșa acțiuni, cum ar fi activarea unui buzzer atunci când nivelul de lumină depășește un anumit prag. Acest proiect va demonstra interacțiunea dintre nivelurile de lumină și capacitățile de citire analogică ale ESP32, permițându-ne să creăm aplicații responsive bazate pe lumina ambientală. (în video la 5:30)
Hardware Explicat
Componentele principale pe care le vom folosi în acest proiect includ microcontrolerul ESP32, un LDR și un rezistor de 10 kΩ. LDR-ul își schimbă rezistența pe baza intensității luminii care lovește suprafața sa: mai multă lumină rezultă într-o rezistență mai mică, în timp ce mai puțină lumină rezultă într-o rezistență mai mare. Această proprietate ne permite să măsurăm niveluri variate de lumină prin conectarea LDR-ului într-o configurație de divizor de tensiune cu rezistorul.
Microcontrolerul ESP32 are Wi-Fi și Bluetooth integrate, fiind ideal pentru proiecte IoT. Are mai multe pini analogici care pot citi niveluri variate de tensiune, pe care le vom utiliza pentru a monitoriza tensiunea pe LDR. Această tensiune va fi convertită într-o valoare analogică pe care ESP32 o poate procesa și folosi pentru a declanșa acțiuni precum activarea unui buzzer.
Detalii din Fișa Tehnică
Producător
Espressif Systems
Număr de piesă
ESP32
Tensiune logică/IO
3,3 V
Tensiune de alimentare
3,0 - 3,6 V
Curent de ieșire (per GPIO)
40 mA max
Ghid de frecvență PWM
1 kHz - 40 kHz
Praguri logice de intrare
Ridicat: 2,0 V min, Scăzut: 0,8 V max
Cădere de tensiune / RDS(on) / saturație
0,3 V max
Limite termice
-40 °C până la 125 °C
Pachet
QFN48
Note / variante
Suportă multiple protocoale Wi-Fi și Bluetooth
Folosiți un rezistor de 10 kΩ în serie cu LDR-ul pentru divizarea tensiunii.
Asigurați-vă că ESP32 este alimentat cu 3,3 V pentru a evita deteriorarea.
Conectați LDR-ul și rezistorul corect pentru a măsura intensitatea luminii.
Folosiți un condensator pentru decuplare dacă este necesar pentru a stabiliza sursa de alimentare.
Verificați valorile citirilor analogice pentru a vă asigura că se încadrează în intervalele așteptate.
Instrucțiuni de Cablare
ESP32-22_light_sensor-wiring
Pentru a cabla LDR-ul și rezistorul la ESP32, începeți prin conectarea unui terminal al LDR-ului la pinul de alimentare de 3,3 V de pe ESP32. Celălalt terminal al LDR-ului ar trebui conectat la un terminal al rezistorului de 10 kΩ. Conectați celălalt terminal al rezistorului la masă.
Apoi, conectați un fir de legătură de la punctul de joncțiune dintre LDR și rezistor la pinul 35 de pe ESP32. Această configurare creează un divizor de tensiune, permițând ESP32 să citească tensiunea variabilă pe baza intensității luminii care lovește LDR-ul. Asigurați-vă că toate conexiunile sunt sigure și că LDR-ul este poziționat astfel încât să poată detecta cu precizie schimbările de lumină.
Exemple de Cod și Explicații
În cod, începem prin inițializarea comunicării seriale pentru a monitoriza citirile de la LDR. Identificatorul cheie aici este analogValue, care stochează citirea de pe pinul 35.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100);
}
Acest fragment de cod inițializează monitorul serial la o rată de transmisie de 115200 și citește continuu valoarea analogică de pe pinul 35. Valoarea este afișată pe monitorul serial, permițându-ne să observăm cum se schimbă cu niveluri variate de lumină.
Când intensitatea luminii se schimbă, rezistența LDR-ului variază, iar astfel tensiunea citită de ESP32 se va schimba și ea, reflectând condițiile de lumină (în video la 12:45).
Demonstrație / Ce să Așteptați
Pe măsură ce rulați programul și observați monitorul serial, ar trebui să vedeți valoarea analogică ADC fluctuând pe baza condițiilor de lumină ambientală. Când acoperiți LDR-ul, valoarea ar trebui să crească, indicând o rezistență mai mare, în timp ce expunerea la lumină puternică ar trebui să scadă semnificativ valoarea. Acest comportament poate fi folosit pentru a declanșa un buzzer sau orice altă acțiune pe baza pragurilor predefinite.
Dacă citirile nu se schimbă conform așteptărilor, verificați problemele de cablare, asigurați-vă că LDR-ul nu este în aer liber și confirmați că ESP32 este alimentat corect. Acest lucru va ajuta la prevenirea capcanelor comune și va asigura o funcționare lină (în video la 15:30).
Marcaje Temporale Video
00:00 Start
1:48 Introducere în LDR
8:33 Cablare explicată
11:07 Cod Arduino explicat
13:07 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Limba: C++
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
}
void loop() {
// read the analog value
int analogValue = analogRead(35);
// print out the values you read:
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100); // delay in between reads for clear read from serial
}
Divulgare: Ca asociat Amazon, câștigăm din achizițiile eligibile. Aceasta înseamnă că putem primi un mic comision dacă dai clic pe un link și faci o achiziție fără costuri suplimentare pentru tine.