Lysafhængig modstand – LDR-sensor med ESP32 ved hjælp af Arduino IDE

Lysafhaengig Modstand Ldr Sensor Med Esp32 Ved Hjaelp Af Arduino Ide



ESP32 er en kraftfuld mikrocontroller udstyret med funktioner til IoT. ESP32 med LDR kan måle lysintensitet og udløse respons i henhold til det. Ved at bruge ESP32 og en LDR kan vi skabe et fjernlyssensorbaseret projekt og designe en række innovative IoT-løsninger til forskellige industrier og applikationer.

I denne vejledning vil det grundlæggende i LDR og dets applikationer med ESP32 blive dækket.







1: Introduktion til LDR-sensor



2: Anvendelser af LDR med ESP32



3: Grænseflade LDR med ESP32 ved hjælp af Arduino IDE





Konklusion

1: Introduktion til LDR-sensor

EN L rigtigt D afhængig R esistor (LDR) er en type modstand, der ændrer sin modstand baseret på intensiteten af ​​lys, den udsættes for. I mørke er dens modstand meget høj, mens den i stærkt lys er meget lav. Denne ændring i modstand gør den bedst til lysregistreringsprojekter.




De analoge ESP32-ben konverterer de indgående spændinger til et heltal mellem 0 og 4095. Denne heltalsværdi er afbildet mod den analoge indgangsspænding fra 0V til 3,3V, som som standard er ADC-referencespændingen i ESP32. Denne værdi aflæses ved hjælp af Arduino analogRead() funktion fra LDR.

For yderligere detaljeret vejledning og ADC pinout af ESP32 læs artiklen ESP32 ADC – Læs analoge værdier med Arduino IDE .


ESP32 har en indbygget analog-til-digital konverter (ADC), der kan måle spændingen over LDR og konvertere den til et digitalt signal, der kan behandles af mikrocontrolleren. Ved at bruge dette signal bestemmer ESP32 modstanden af ​​LDR, som er proportional med lysintensiteten.

Her vil vi bruge ESP32 ADC kanal 1-benene.


Fotoner eller lyspartikler spiller en afgørende rolle i driften af ​​LDR'er. Når lys falder på overfladen af ​​en LDR, absorberes fotoner af materialet, som så frigør elektroner i materialet. Antallet af frie elektroner er direkte proportionalt med lysets intensitet, og jo flere elektroner der frigøres, jo lavere bliver modstanden af ​​LDR.

2: Anvendelser af LDR med ESP32

Følgende er listen over nogle IoT-baserede applikationer af LDR med ESP32:

    • Lys aktiveret kontakt
    • Lysniveauindikator
    • Nattilstand i enheder
    • Lysbaserede sikkerhedssystemer
    • Smarte lyssystemer
    • Lysfølsomme sikkerhedssystemer
    • Planteovervågning
    • Energieffektiv belysning
    • Automatiserede persienner

3: Grænseflade LDR med ESP32 ved hjælp af Arduino IDE

For at bruge en LDR med ESP32 skal vi forbinde LDR med en ESP32 ADC kanalpin. Derefter er der brug for Arduino-kode, der læser analoge værdier fra LDR-udgangsstiften. For at designe dette kredsløb har vi brug for LDR, en modstand og ESP32-kortet.

LDR'en og modstanden er forbundet i serie, med LDR'en forbundet til analog kanal 1 indgangsben på ESP32. En LED vil blive tilføjet til kredsløbet, der kan teste LDR-funktion.

3.1: Skematisk

Kredsløbsdiagrammet til at forbinde LDR med ESP32 er ret simpelt. Vi skal forbinde LDR og en modstand i en spændingsdelerkonfiguration og forbinde spændingsdelerens udgang til ADC (Analog til Digital Converter)-stiften på ESP32. ADC kanal 1 pin D34 bruges som en analog indgang til ESP32.

Følgende billede er skemaet af ESP32 med LDR-sensor.

3.2: Kode

Når kredsløbet er blevet sat op, er næste trin at skrive koden til ESP32. Koden vil læse den analoge input fra LDR og bruge den til at styre en LED eller anden enhed baseret på forskellige lysniveauer.

int LDR_Val = 0 ; /* Variabel til at gemme fotoresistorværdi */
int sensor = 3. 4 ; /* Analog indgang til fotomodstand */
int led = 25 ; /* LED udgang Pin */
ugyldig opsætning ( ) {
Serial.begin ( 9600 ) ; /* Baud rate til seriel kommunikation */
    pinMode ( led, OUTPUT ) ; /* LED pin sæt som produktion */
}
ugyldig løkke ( ) {
LDR_Val = analogRead ( sensor ) ; /* Analog Læs LDR værdi */
Seriel.print ( 'LDR-outputværdi: ' ) ;
Serial.println ( LDR_Val ) ; /* Vis LDR Output Val på seriel skærm */
hvis ( LDR_Val > 100 ) { /* Hvis lysintensiteten er HØJ */
Serial.println ( ' Høj intensitet ' ) ;
digitalSkriv ( led, LAV ) ; /* LED forbliver slukket */
}
andet {
/* Andet hvis Lysintensiteten er LAV LED vil forblive TÆNDT */
Serial.println ( 'LAV intensitet' ) ;
digitalSkriv ( led, HØJ ) ; /* LED Tænd LDR værdi er mindre end 100 */
}
forsinke ( 1000 ) ; /* Aflæser værdi efter hver 1 sek */
}


I ovenstående kode bruger vi en LDR med ESP32, der vil styre LED ved hjælp af den analoge indgang, der kommer fra LDR.

De første tre linjer kode erklærer variabler til lagring af fotoresistor værdi , det analog pin for fotomodstanden og LED udgangsstift.

I den Opsætning() funktion, initieres den serielle kommunikation med en baudrate på 9600 og LED-pin D25 indstilles som output.

I den loop() funktion, læses fotoresistorværdien ved hjælp af analogRead()-funktionen, som er gemt i LDR_Val variabel. Fotoresistorværdien vises derefter på den serielle monitor ved hjælp af Serial.println()-funktionen.

An hvis ellers statement bruges til at styre LED'en baseret på lysintensiteten detekteret af fotomodstanden. Hvis fotoresistorværdien er større end 100, betyder det, at lysintensiteten er HØJ, og LED'en forbliver OFF. Men hvis fotoresistorværdien er mindre end eller lig med 100, betyder det, at lysintensiteten er LAV, og LED'en tænder.

Til sidst venter programmet i 1 sekund ved hjælp af delay()-funktionen, før det læser fotoresistorværdien igen. Denne cyklus gentages på ubestemt tid, hvilket får LED'en til at tænde og slukke baseret på lysintensiteten registreret af fotomodstanden.

3.3: Output under dæmpet lys

Lysintensiteten er mindre end 100, så LED forbliver tændt.

3.4: Output under stærkt lys

Efterhånden som lysintensiteten stiger, vil LDR-værdien stige, og LDR-modstanden falder, så LED vil slukke.

Konklusion

LDR kan forbindes med ESP32 ved hjælp af ADC-kanal 1-benet. LDR-udgangen kan styre lysregistrering i forskellige applikationer. Med sine lave omkostninger og kompakte størrelse er ESP32 og LDR et attraktivt valg til IoT-projekter, der kræver lysregistreringsfunktioner. Brug af Arduino analogRead() funktion kan vi aflæse værdier fra LDR.