ESP32 er en kraftig mikrokontroller utstyrt med funksjoner for IoT. ESP32 med LDR kan måle lysintensitet og utløse respons i henhold til den. Ved å bruke ESP32 og en LDR kan vi lage et fjernlyssensorbasert prosjekt og designe en rekke innovative IoT-løsninger for ulike bransjer og applikasjoner.
I denne veiledningen vil det grunnleggende om LDR og dets applikasjoner med ESP32 bli dekket.
1: Introduksjon til LDR-sensor
2: Applikasjoner av LDR med ESP32
3: Grensesnitt LDR med ESP32 ved hjelp av Arduino IDE
1: Introduksjon til LDR-sensor
EN L rett D avhengig R esistor (LDR) er en type motstand som endrer motstanden basert på lysintensiteten den utsettes for. I mørke er motstanden svært høy, mens motstanden i sterkt lys er svært lav. Denne endringen i motstand gjør den best for lysregistreringsprosjekter.
De analoge ESP32-pinnene konverterer de innkommende spenningene til et heltall mellom 0 og 4095. Denne heltallsverdien er kartlagt mot den analoge inngangsspenningen fra 0V til 3,3V som som standard er ADC-referansespenningen i ESP32. Denne verdien leses ved hjelp av Arduino analogRead() funksjon fra LDR.
For ytterligere detaljert veiledning og ADC pinout av ESP32 les artikkelen ESP32 ADC – Les analoge verdier med Arduino IDE .
ESP32 har en innebygd analog-til-digital omformer (ADC) som kan måle spenningen over LDR og konvertere den til et digitalt signal som kan behandles av mikrokontrolleren. Ved å bruke dette signalet bestemmer ESP32 motstanden til LDR, som er proporsjonal med lysintensiteten.
Her skal vi bruke ESP32 ADC kanal 1 pinnene.
Fotoner eller lyspartikler spiller en avgjørende rolle i driften av LDR-er. Når lys faller på overflaten av en LDR, absorberes fotoner av materialet, som deretter frigjør elektroner i materialet. Antallet frie elektroner er direkte proporsjonalt med lysintensiteten, og jo flere elektroner som frigjøres, jo lavere blir motstanden til LDR.
2: Applikasjoner av LDR med ESP32
Følgende er listen over noen IoT-baserte applikasjoner av LDR med ESP32:
-
- Lysaktivert bryter
- Lysnivåindikator
- Nattmodus i enheter
- Lysbaserte sikkerhetssystemer
- Smarte lyssystemer
- Lysfølsomme sikkerhetssystemer
- Anleggsovervåking
- Energieffektiv belysning
- Automatiserte persienner
3: Grensesnitt LDR med ESP32 ved hjelp av Arduino IDE
For å bruke en LDR med ESP32 må vi koble LDR med en ESP32 ADC kanalpinne. Etter det trengs Arduino-kode som vil lese analoge verdier fra LDR-utgangspinnen. For å designe denne kretsen trenger vi LDR, en motstand og ESP32-kortet.
LDR og motstand er koblet i serie, med LDR koblet til analog kanal 1 inngangspinne til ESP32. En LED vil bli lagt til kretsen som kan teste at LDR fungerer.
3.1: Skjematisk
Kretsskjemaet for grensesnitt mellom LDR og ESP32 er ganske enkelt. Vi må koble LDR og en motstand i en spenningsdelerkonfigurasjon og koble utgangen fra spenningsdeleren til ADC (Analog to Digital Converter) pinne på ESP32. ADC kanal 1 pin D34 brukes som en analog inngang for ESP32.
Følgende bilde er skjemaet av ESP32 med LDR-sensor.
3.2: Kode
Når kretsen er satt opp, er neste trinn å skrive koden for ESP32. Koden vil lese den analoge inngangen fra LDR og bruke den til å kontrollere en LED eller annen enhet basert på forskjellige lysnivåer.
int LDR_Val = 0 ; /* Variabel for å lagre fotoresistorverdi */int sensor = 3. 4 ; /* Analog inngang til fotomotstand */
int ledet = 25 ; /* LED-utgang Pin */
ugyldig oppsett ( ) {
Serial.begin ( 9600 ) ; /* Baud rate til seriell kommunikasjon */
pinMode ( ledet, OUTPUT ) ; /* LED-pinne sett som produksjon */
}
ugyldig sløyfe ( ) {
LDR_Val = analogLes ( sensor ) ; /* Analog lese LDR-verdi */
Serial.print ( 'LDR utgangsverdi: ' ) ;
Serial.println ( LDR_Val ) ; /* Vis LDR Output Val på seriell monitor */
hvis ( LDR_Val > 100 ) { /* Hvis lysintensiteten er HØY */
Serial.println ( ' Høy intensitet ' ) ;
digitalWrite ( ledet, LAVT ) ; /* LED forblir AV */
}
ellers {
/* Ellers hvis Lysintensiteten er LAV LED vil forbli PÅ */
Serial.println ( 'LAV intensitet' ) ;
digitalWrite ( ledet, HØY ) ; /* LED Slå PÅ LDR-verdien er mindre enn 100 */
}
forsinkelse ( 1000 ) ; /* Leser verdi etter hver 1 sek */
}
I koden ovenfor bruker vi en LDR med ESP32 som vil kontrollere LED ved å bruke den analoge inngangen som kommer fra LDR.
De tre første linjene med kode erklærer variabler som skal lagres fotoresistor verdi , den analog pinne for fotomotstanden, og LED utgangspinne.
I oppsett() funksjon, initieres den serielle kommunikasjonen med en overføringshastighet på 9600 og LED-pin D25 settes som utgang.
I Løkke() funksjon, leses fotomotstandsverdien ved å bruke analogRead()-funksjonen, som er lagret i LDR_Val variabel. Fotoresistorverdien vises deretter på den serielle monitoren ved hjelp av Serial.println()-funksjonen.
An hvis-annet statement brukes til å kontrollere lysdioden basert på lysintensiteten detektert av fotomotstanden. Hvis fotoresistorverdien er større enn 100, betyr det at lysintensiteten er HØY, og LED-en forblir AV. Imidlertid, hvis fotoresistorverdien er mindre enn eller lik 100, betyr det at lysintensiteten er LAV, og LED-en slås PÅ.
Til slutt venter programmet i 1 sekund ved å bruke delay()-funksjonen før du leser fotoresistorverdien igjen. Denne syklusen gjentas på ubestemt tid, noe som gjør at LED-en slås PÅ og AV basert på lysintensiteten detektert av fotomotstanden.
3.3: Utgang under svakt lys
Lysintensiteten er mindre enn 100, så LED vil forbli PÅ.
3.4: Utgang under sterkt lys
Etter hvert som lysintensiteten øker, vil LDR-verdien øke og LDR-motstanden reduseres slik at LED vil slå seg AV.
Konklusjon
LDR kan kobles til ESP32 ved å bruke ADC kanal 1 pin. LDR-utgangen kan kontrollere lysføling i ulike applikasjoner. Med sine lave kostnader og kompakte størrelse gjør ESP32 og LDR et attraktivt valg for IoT-prosjekter som krever lyssensorfunksjoner. Bruker Arduino analogRead() funksjon kan vi lese verdier fra LDR.