Code zoeken

ESP32 Tutorial 22/55 - Het licht voelen met LED Arduino | SunFounder's ESP32 IoT-leerset

ESP32 Tutorial 22/55 - Het licht voelen met LED Arduino | SunFounder's ESP32 IoT-leerset

In deze tutorial verkennen we hoe we een lichtafhankelijke weerstand (LDR) met de ESP32-microcontroller kunnen gebruiken om lichtintensiteit te meten. Door de weerstand van de LDR te lezen, kunnen we acties activeren, zoals het inschakelen van een zoemer wanneer het lichtniveau een bepaalde drempel overschrijdt. Dit project demonstreert de interactie tussen lichtniveaus en de analoge leesmogelijkheden van de ESP32, waardoor we responsieve toepassingen kunnen creëren op basis van omgevingslicht. (in video op 5:30)

Hardware uitgelegd

De belangrijkste componenten die we in dit project gebruiken, zijn de ESP32-microcontroller, een LDR en een 10 kΩ-weerstand. De LDR verandert zijn weerstand op basis van de intensiteit van het licht dat op het oppervlak valt: meer licht resulteert in een lagere weerstand, terwijl minder licht resulteert in een hogere weerstand. Deze eigenschap stelt ons in staat om variërende lichtniveaus te meten door de LDR in een spanningsdelerconfiguratie met de weerstand aan te sluiten.

De ESP32-microcontroller beschikt over ingebouwde Wi-Fi en Bluetooth, waardoor deze ideaal is voor IoT-projecten. Het heeft verschillende analoge pinnen die variërende spanningsniveaus kunnen lezen, die we zullen gebruiken om de spanning over de LDR te bewaken. Deze spanning wordt omgezet in een analoge waarde die de ESP32 kan verwerken en gebruiken om acties te activeren, zoals het inschakelen van een zoemer.

Datasheetdetails

FabrikantEspressif Systems
OnderdeelnummerESP32
Logica/IO-spanning3,3 V
Voedingsspanning3,0 - 3,6 V
Uitgangsstroom (per GPIO)40 mA max
PWM-frequentierichtlijn1 kHz - 40 kHz
Ingangslogische drempelsHoog: 2,0 V min, Laag: 0,8 V max
Spanningsval / RDS(on) / verzadiging0,3 V max
Thermische limieten-40 °C tot 125 °C
BehuizingQFN48
Opmerkingen / variantenOndersteunt meerdere Wi-Fi- en Bluetooth-protocollen

  • Gebruik een 10 kΩ-weerstand in serie met de LDR voor spanningsdeling.
  • Zorg ervoor dat de ESP32 wordt gevoed met 3,3 V om schade te voorkomen.
  • Sluit de LDR en weerstand correct aan om lichtintensiteit te meten.
  • Gebruik indien nodig een condensator voor ontkoppeling om de voeding te stabiliseren.
  • Controleer analoge leeswaarden om ervoor te zorgen dat ze binnen de verwachte bereiken vallen.

Bedradingsinstructies

ESP32-22_light_sensor-wiring

Om de LDR en weerstand op de ESP32 aan te sluiten, begin je met het verbinden van één aansluiting van de LDR met de 3,3 V-voedingspin op de ESP32. De andere aansluiting van de LDR moet worden verbonden met één aansluiting van de 10 kΩ-weerstand. Verbind de andere aansluiting van de weerstand met de grond.

Verbind vervolgens een jumperdraad van het knooppunt tussen de LDR en de weerstand met pin 35 op de ESP32. Deze opstelling creëert een spanningsdeler, waardoor de ESP32 de variërende spanning kan lezen op basis van de lichtintensiteit die op de LDR valt. Zorg ervoor dat alle verbindingen stevig zijn en dat de LDR op een positie is geplaatst waar deze lichtveranderingen nauwkeurig kan waarnemen.

Codevoorbeelden en uitleg

In de code beginnen we met het initialiseren van seriële communicatie om de metingen van de LDR te bewaken. De belangrijkste identifier hier is analogValue, die de meting van pin 35 opslaat.

void setup() {
  Serial.begin(115200);
}

void loop() {
  int analogValue = analogRead(35);
  Serial.printf("ADC analoge waarde = %d\n",analogValue);
  delay(100);
}

Dit codefragment initialiseert de seriële monitor met een baudrate van 115200 en leest continu de analoge waarde van pin 35. De waarde wordt naar de seriële monitor geprint, waardoor we kunnen observeren hoe deze verandert met variërende lichtniveaus.

Wanneer de lichtintensiteit verandert, varieert de weerstand van de LDR, en dus zal ook de spanning die door de ESP32 wordt gelezen veranderen, wat de lichtomstandigheden weerspiegelt (in video op 12:45).

Demonstratie / Wat te verwachten

Wanneer je het programma uitvoert en de seriële monitor observeert, zou je de ADC analoge waarde moeten zien fluctueren op basis van de omgevingslichtomstandigheden. Wanneer je de LDR bedekt, zou de waarde moeten toenemen, wat duidt op een hogere weerstand, terwijl blootstelling aan fel licht de waarde aanzienlijk zou moeten verlagen. Dit gedrag kan worden gebruikt om een zoemer of een andere actie te activeren op basis van vooraf gedefinieerde drempels.

Als de metingen niet veranderen zoals verwacht, controleer dan op bedradingsproblemen, zorg ervoor dat de LDR niet zweeft en bevestig dat de ESP32 correct wordt gevoed. Dit helpt veelvoorkomende valkuilen te voorkomen en zorgt voor een soepele werking (in video op 15:30).

Videotijdstempels

  • 00:00 Start
  • 1:48 Introductie tot LDR
  • 8:33 Bedrading uitgelegd
  • 11:07 Arduino-code uitgelegd
  • 13:07 ESP32-board en COM-poort selecteren in Arduino IDE
  • 14:49 Demonstratie van het lezen van de waarde
  • 17:24 Dag- en nachtwaarde begrijpen
  • 18:47 DAC-waarde en spanning lezen

Afbeeldingen

ESP32-22_light_sensor
ESP32-22_light_sensor
ESP32-22_light_sensor-wiring
ESP32-22_light_sensor-wiring
821-ESP32 Tutorial 22/55- Arduino code for Light dependant resistor
Taal: 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
}

Hulpmiddelen en referenties

Bestanden📁

Geen bestanden beschikbaar.