W tym samouczku odkryjemy, jak używać fotorezystora (LDR) z mikrokontrolerem ESP32 do pomiaru natężenia światła. Odczytując rezystancję LDR, możemy wyzwalać akcje, takie jak włączanie brzęczyka, gdy poziom światła przekroczy określony próg. Ten projekt zademonstruje interakcję między poziomami światła a możliwościami odczytu analogowego ESP32, pozwalając nam tworzyć responsywne aplikacje oparte na świetle otoczenia. (na filmie o 5:30)
Wyjaśnienie sprzętu
Główne komponenty, których użyjemy w tym projekcie, to mikrokontroler ESP32, fotorezystor (LDR) oraz rezystor 10 kΩ. LDR zmienia swoją rezystancję w zależności od natężenia światła padającego na jego powierzchnię: więcej światła powoduje niższą rezystancję, podczas gdy mniej światła powoduje wyższą rezystancję. Ta właściwość pozwala nam mierzyć zmienne poziomy światła poprzez podłączenie LDR w konfiguracji dzielnika napięcia z rezystorem.
Mikrokontroler ESP32 ma wbudowaną łączność Wi-Fi i Bluetooth, co czyni go idealnym do projektów IoT. Posiada kilka pinów analogowych, które mogą odczytywać zmienne poziomy napięcia, które wykorzystamy do monitorowania napięcia na LDR. To napięcie zostanie przekształcone na wartość analogową, którą ESP32 może przetworzyć i użyć do wyzwalania akcji, takich jak aktywacja brzęczyka.
Szczegóły z karty katalogowej
Producent
Espressif Systems
Numer części
ESP32
Napięcie logiki/IO
3,3 V
Napięcie zasilania
3,0 - 3,6 V
Prąd wyjściowy (na GPIO)
maks. 40 mA
Zalecana częstotliwość PWM
1 kHz - 40 kHz
Progi logiki wejściowej
Wysoki: min. 2,0 V, Niski: maks. 0,8 V
Spadek napięcia / RDS(on) / nasycenie
maks. 0,3 V
Limity termiczne
-40 °C do 125 °C
Obudowa
QFN48
Uwagi / warianty
Obsługuje wiele protokołów Wi-Fi i Bluetooth
Użyj rezystora 10 kΩ połączonego szeregowo z LDR do dzielenia napięcia.
Upewnij się, że ESP32 jest zasilany napięciem 3,3 V, aby uniknąć uszkodzeń.
Podłącz LDR i rezystor prawidłowo, aby zmierzyć natężenie światła.
W razie potrzeby użyj kondensatora do odsprzęgania, aby ustabilizować zasilanie.
Sprawdź wartości odczytu analogowego, aby upewnić się, że mieszczą się w oczekiwanych zakresach.
Instrukcje dotyczące okablowania
ESP32-22_light_sensor-wiring
Aby podłączyć LDR i rezystor do ESP32, zacznij od podłączenia jednego zacisku LDR do pinu zasilania 3,3 V na ESP32. Drugi zacisk LDR należy podłączyć do jednego zacisku rezystora 10 kΩ. Podłącz drugi zacisk rezystora do masy.
Następnie podłącz przewód połączeniowy od punktu połączenia między LDR a rezystorem do pinu 35 na ESP32. Ta konfiguracja tworzy dzielnik napięcia, pozwalając ESP32 odczytywać zmienne napięcie w zależności od natężenia światła padającego na LDR. Upewnij się, że wszystkie połączenia są pewne, a LDR jest umieszczony w miejscu, w którym może dokładnie wykrywać zmiany światła.
Przykłady kodu i omówienie
W kodzie zaczynamy od inicjalizacji komunikacji szeregowej w celu monitorowania odczytów z LDR. Kluczowym identyfikatorem jest tutaj analogValue, który przechowuje odczyt z pinu 35.
void setup() {
Serial.begin(115200);
}
void loop() {
int analogValue = analogRead(35);
Serial.printf("ADC analog value = %d\n",analogValue);
delay(100);
}
Ten fragment kodu inicjalizuje monitor szeregowy z szybkością transmisji 115200 i w sposób ciągły odczytuje wartość analogową z pinu 35. Wartość jest drukowana na monitorze szeregowym, co pozwala nam obserwować, jak zmienia się wraz ze zmiennymi poziomami światła.
Gdy zmienia się natężenie światła, zmienia się rezystancja LDR, a tym samym napięcie odczytywane przez ESP32 również się zmieni, odzwierciedlając warunki oświetleniowe (na filmie o 12:45).
Demonstracja / Czego się spodziewać
Podczas uruchamiania programu i obserwowania monitora szeregowego powinieneś zobaczyć, jak ADC analog value zmienia się w zależności od warunków oświetlenia otoczenia. Gdy zakryjesz LDR, wartość powinna wzrosnąć, wskazując na wyższą rezystancję, podczas gdy wystawienie go na jasne światło powinno znacznie obniżyć wartość. Takie zachowanie można wykorzystać do wyzwalania brzęczyka lub dowolnej innej akcji na podstawie wcześniej zdefiniowanych progów.
Jeśli odczyty nie zmieniają się zgodnie z oczekiwaniami, sprawdź problemy z okablowaniem, upewnij się, że LDR nie jest w stanie pływającym, i potwierdź, że ESP32 jest prawidłowo zasilany. Pomoże to uniknąć typowych pułapek i zapewni płynne działanie (na filmie o 15:30).
Znaczniki czasu wideo
00:00 Start
1:48 Wprowadzenie do LDR
8:33 Wyjaśnienie okablowania
11:07 Wyjaśnienie kodu Arduino
13:07 Wybór płytki ESP32 i portu COM w Arduino IDE
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Język: 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
}
Ujawnienie: Jako partner Amazonu, zarabiamy na kwalifikujących się zakupach. Oznacza to, że możemy otrzymać małą prowizję, jeśli klikniesz w link i dokonasz zakupu bez dodatkowych kosztów dla Ciebie.