Light Dependent Resistor – LDR Sensor na may ESP32 Gamit ang Arduino IDE

Light Dependent Resistor Ldr Sensor Na May Esp32 Gamit Ang Arduino Ide



Ang ESP32 ay isang malakas na microcontroller na nilagyan ng mga feature para sa IoT. Maaaring sukatin ng ESP32 na may LDR ang light intensity at mag-trigger ng tugon ayon dito. Gamit ang ESP32 at isang LDR, makakagawa tayo ng remote light sensing-based na proyekto at magdisenyo ng iba't ibang mga makabagong solusyon sa IoT para sa iba't ibang industriya at application.

Sa gabay na ito, sasaklawin ang mga pangunahing kaalaman ng LDR at ang mga aplikasyon nito sa ESP32.







1: Panimula sa LDR Sensor



2: Mga aplikasyon ng LDR na may ESP32



3: Interfacing LDR sa ESP32 Gamit ang Arduino IDE





Konklusyon

1: Panimula sa LDR Sensor

A L ight D ependente R Ang esistor (LDR) ay isang uri ng risistor na nagbabago ng resistensya nito batay sa tindi ng liwanag na nalantad dito. Sa dilim, ang resistensya nito ay napakataas, habang sa maliwanag na liwanag ay napakababa ng resistensya nito. Ang pagbabago sa paglaban na ito ay ginagawang pinakamahusay para sa mga proyekto ng light sensing.




Kino-convert ng ESP32 analog pin ang mga papasok na boltahe sa isang integer sa pagitan ng 0 at 4095. Ang integer value na ito ay nakamapa laban sa analog input voltage mula 0V hanggang 3.3V na bilang default ay ang ADC reference voltage sa ESP32. Ang halagang ito ay binabasa gamit ang Arduino analogRead() function mula sa LDR.

Para sa karagdagang detalyadong gabay at ADC pinout ng ESP32 basahin ang artikulo ESP32 ADC – Basahin ang Analog Values ​​gamit ang Arduino IDE .


Ang ESP32 ay may built-in na analog-to-digital converter (ADC) na maaaring masukat ang boltahe sa buong LDR at i-convert ito sa isang digital signal na maaaring iproseso ng microcontroller. Ang paggamit ng signal na ito ng ESP32 ay tumutukoy sa paglaban ng LDR, na proporsyonal sa intensity ng liwanag.

Dito gagamitin natin ang ESP32 ADC channel 1 pins.


Ang mga photon o light particle ay may mahalagang papel sa pagpapatakbo ng mga LDR. Kapag ang liwanag ay bumagsak sa ibabaw ng isang LDR, ang mga photon ay nasisipsip ng materyal, na pagkatapos ay nagpapalaya ng mga electron sa materyal. Ang bilang ng mga libreng electron ay direktang proporsyonal sa intensity ng liwanag, at ang mas maraming mga electron na napalaya, mas mababa ang paglaban ng LDR.

2: Mga aplikasyon ng LDR na may ESP32

Ang sumusunod ay ang listahan ng ilang IoT based na application ng LDR na may ESP32:

    • Light activated switch
    • Ilaw na tagapagpahiwatig ng antas
    • Night mode sa mga device
    • Mga sistema ng seguridad na nakabatay sa liwanag
    • Mga sistema ng matalinong pag-iilaw
    • Mga sistema ng seguridad na sensitibo sa liwanag
    • Pagsubaybay sa halaman
    • Ilaw na matipid sa enerhiya
    • Mga automated na window blind

3: Interfacing LDR sa ESP32 Gamit ang Arduino IDE

Para gumamit ng LDR na may ESP32 kailangan naming ikonekta ang LDR gamit ang ESP32 ADC channel pin. Pagkatapos nito ay kailangan ang Arduino code na magbabasa ng mga analog na halaga mula sa LDR output pin. Upang idisenyo ang circuit na ito, kailangan namin ng LDR, isang risistor, at ang ESP32 board.

Ang LDR at ang risistor ay konektado sa serye, kasama ang LDR na konektado sa analog channel 1 input pin ng ESP32. Ang isang LED ay idaragdag sa circuit na maaaring subukan ang LDR na gumagana.

3.1: Eskematiko

Ang circuit diagram para sa interfacing LDR sa ESP32 ay medyo simple. Kailangan nating ikonekta ang LDR at isang risistor sa isang configuration ng divider ng boltahe at ikonekta ang output ng divider ng boltahe sa ADC (Analog to Digital Converter) pin ng ESP32. Ang ADC channel 1 pin D34 ay ginagamit bilang analog input para sa ESP32.

Ang sumusunod na larawan ay ang eskematiko ng ESP32 na may LDR sensor.

3.2: Code

Kapag na-set up na ang circuit, ang susunod na hakbang ay isulat ang code para sa ESP32. Babasahin ng code ang analog input mula sa LDR at gagamitin ito para kontrolin ang isang LED o iba pang device batay sa iba't ibang antas ng liwanag.

int LDR_Val = 0 ; /* Variable upang mag-imbak ng halaga ng photoresistor */
int sensor = 3. 4 ; /* Analogue Input para sa photoresistor */
int pinangunahan = 25 ; /* LED output Pin */
walang bisang setup ( ) {
Serial.magsimula ( 9600 ) ; /* Baud rate para sa serial na komunikasyon */
    pinMode ( pinangunahan, OUTPUT ) ; /* LED Pin itakda bilang output */
}
walang laman na loop ( ) {
LDR_Val = analogRead ( sensor ) ; /* Analog basahin halaga ng LDR */
Serial.print ( 'Halaga ng Output ng LDR: ' ) ;
Serial.println ( LDR_Val ) ; /* Ipakita ang LDR Output Val sa serial monitor */
kung ( LDR_Val > 100 ) { /* Kung HIGH ang intensity ng liwanag */
Serial.println ( ' Mataas na intensidad ' ) ;
digitalWrite ( humantong, LOW ) ; /* Nananatiling OFF ang LED */
}
iba pa {
/* Iba pa kung Ang intensity ng liwanag ay LOW LED ay Mananatiling ON */
Serial.println ( 'Mababang intensidad ' ) ;
digitalWrite ( pinangunahan, MATAAS ) ; /* Ang halaga ng LED Turn ON LDR ay mas mababa kaysa sa 100 */
}
pagkaantala ( 1000 ) ; /* Binabasa ang halaga pagkatapos ng bawat 1 sec */
}


Sa code sa itaas ay gumagamit kami ng LDR na may ESP32 na kumokontrol sa LED gamit ang analog input na nagmumula sa LDR.

Ang unang tatlong linya ng code ay nagdedeklara ng mga variable upang iimbak ang halaga ng photoresistor , ang analog na pin para sa photoresistor, at ang LED output pin.

Nasa setup() function, ang serial communication ay sinisimulan na may baud rate na 9600 at ang LED pin D25 ay nakatakda bilang output.

Nasa loop() function, ang halaga ng photoresistor ay binabasa gamit ang analogRead() function, na nakaimbak sa LDR_Val variable. Ang halaga ng photoresistor ay ipapakita sa serial monitor gamit ang Serial.println() function.

An kung hindi Ang pahayag ay ginagamit upang kontrolin ang LED batay sa intensity ng liwanag na nakita ng photoresistor. Kung ang halaga ng photoresistor ay higit sa 100, nangangahulugan ito na ang intensity ng liwanag ay HIGH, at ang LED ay nananatiling OFF. Gayunpaman, kung ang halaga ng photoresistor ay mas mababa sa o katumbas ng 100, nangangahulugan ito na ang intensity ng ilaw ay LOW, at ang LED ay naka-ON.

Sa wakas, ang programa ay naghihintay ng 1 segundo gamit ang delay() function bago basahin muli ang photoresistor value. Ang cycle na ito ay umuulit nang walang katapusan, na ginagawang ang LED ay naka-ON at naka-OFF batay sa intensity ng liwanag na nakita ng photoresistor.

3.3: Output sa ilalim ng Dim Light

Mas mababa sa 100 ang intensity ng liwanag kaya mananatiling NAKA-ON ang LED.

3.4: Output sa ilalim ng Maliwanag na Liwanag

Habang tumataas ang intensity ng liwanag, tataas ang halaga ng LDR at bababa ang resistensya ng LDR kaya OFF ang LED.

Konklusyon

Maaaring ma-interface ang LDR sa ESP32 gamit ang ADC channel 1 pin. Maaaring kontrolin ng LDR output ang light sensing sa iba't ibang mga application. Sa mababang gastos at compact na laki nito, ang ESP32 at LDR ay gumagawa ng isang kaakit-akit na pagpipilian para sa mga proyekto ng IoT na nangangailangan ng mga kakayahan sa light sensing. Gamit ang Arduino analogRead() function na maaari naming basahin ang mga halaga mula sa LDR.