ESP32 - Lichtsensor

Deze handleiding legt uit hoe u de ESP32 gebruikt in combinatie met een lichtsensor. We leren in detail:

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Lichtsensor
1×10 kΩ weerstand
1×Breadboard (experimenteerprint)
1×Jumperdraden (mannelijk-mannelijk)
1×(optioneel) DC Power Jack
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

De LDR-lichsensor is erg betaalbaar, maar vereist een weerstand voor de bedrading, wat de opstelling iets complexer kan maken. Om de bedrading te vereenvoudigen, kunt u als alternatief een LDR light sensor module gebruiken.

Over de Lichtsensor

De meest gebruikte lichtsensor is een fotoweerstand (ook bekend als photocell, of light-dependent resistor, LDR).

Deze kan worden gebruikt om de aanwezigheid van licht te detecteren. Daarnaast kan hij ook worden gebruikt om het verlichtingsniveau (helderheid) van het licht te meten.

Pinout van de Lichtsensor

Een lichtsensor heeft twee pennen/pinnen. Net als bij een normale weerstand hoeft u deze pinnen niet te onderscheiden voor aansluiting.

Lichtsensor Pinout

Hoe Werkt de Lichtsensor

De weerstand van de fotoweerstand is omgekeerd evenredig met de lichtintensiteit. Hoe minder licht er op de fotoweerstand valt, hoe hoger de weerstand van de fotoweerstand. Daarom kunnen we door de weerstand te meten afleiden hoe helder het omgevingslicht is.

Hoe Werkt de Lichtsensor

WARNING

De waarde die door de fotoweerstand wordt gemeten geeft een benaderend beeld van de lichtintensiteit, maar vertegenwoordigt niet exact de lichtstroom (luminous flux). Daarom is de fotoweerstand niet geschikt voor toepassingen die hoge nauwkeurigheid vereisen. Voor bepaalde toepassingen is ook kalibratie noodzakelijk.

ESP32 - Lichtsensor

De analoge ingangspool van de ESP32 zet de spanning (tussen 0 V en ADC_VREF - standaard 3,3 V) om in gehele getallen (tussen 0 en 4095), ook wel analoge waarde of ADC-waarde genoemd. Door een analoge ingang van de ESP32 te verbinden met de fotoweerstand kunnen we de analoge waarde uitlezen met de functie analogRead().

Bedradingsschema tussen Lichtsensor en ESP32

ESP32 Lichtsensor Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code

De onderstaande ESP32-code leest de waarde van een lichtsensor uit en bepaalt op basis daarvan het lichtniveau.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-light-sensor */ #define LIGHT_SENSOR_PIN 36 // ESP32 pin GIOP36 (ADC0) void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { // reads the input on analog pin (value between 0 and 4095) int analogValue = analogRead(LIGHT_SENSOR_PIN); Serial.print("Analog Value = "); Serial.print(analogValue); // the raw analog reading // We'll have a few threshholds, qualitatively determined if (analogValue < 40) { Serial.println(" => Dark"); } else if (analogValue < 800) { Serial.println(" => Dim"); } else if (analogValue < 2000) { Serial.println(" => Light"); } else if (analogValue < 3200) { Serial.println(" => Bright"); } else { Serial.println(" => Very bright"); } delay(500); }

Stapsgewijze Instructies

  • Als u voor het eerst met ESP32 werkt, raadpleeg dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Kopieer bovenstaande code en plak deze in de Arduino IDE.
  • Compileer en upload de code naar het ESP32-bord door op de Upload-knop in de Arduino IDE te klikken.
  • Open de Seriële Monitor in de Arduino IDE.
Hoe u de Seriële Monitor opent in Arduino IDE
  • Schijn licht op de sensor.
  • Bekijk het resultaat in de Seriële Monitor. Het ziet er ongeveer zo uit:
COM6
Send
Analog Value = 406 => Dim Analog Value = 412 => Dim Analog Value = 465 => Dim Analog Value = 471 => Dim Analog Value = 3511 => Zeer helder Analog Value = 3521 => Zeer helder Analog Value = 3618 => Zeer helder
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Lichtsensor en LED

Bedradingsschema

ESP32 Lichtsensor LED Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code

De onderstaande code zet de LED AAN als het donker is, en anders UIT.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-light-sensor */ // constants won't change #define LIGHT_SENSOR_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to light sensor #define LED_PIN 22 // ESP32 pin GPIO22 connected to LED #define ANALOG_THRESHOLD 500 void setup() { // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(LED_PIN, OUTPUT); // set ESP32 pin to output mode } void loop() { int analogValue = analogRead(LIGHT_SENSOR_PIN); // read the value on analog pin if (analogValue < ANALOG_THRESHOLD) digitalWrite(LED_PIN, HIGH); // turn on LED else digitalWrite(LED_PIN, LOW); // turn off LED }

※ Notiz:

Deze handleiding gebruikt de functie analogRead() om waarden van een ADC (Analog-to-Digital Converter) aangesloten op een lichtsensor uit te lezen. De ADC van de ESP32 is prima voor projecten die geen hoge nauwkeurigheid nodig hebben. Voor projecten die precieze metingen vereisen geldt:

  • De ADC van de ESP32 is niet perfect nauwkeurig en kan kalibratie vereisen voor correcte resultaten. Elk ESP32-bord kan iets anders zijn, dus u moet de ADC per bord calibreren.
  • Kalibratie kan lastig zijn, zeker voor beginners, en geeft niet altijd de exacte gewenste resultaten.

Voor projecten die hoge precisie nodig hebben, overweeg het gebruik van een externe ADC (bijv. ADS1115) in combinatie met de ESP32, of gebruik een Arduino, die doorgaans een betrouwbaardere ADC heeft. Wilt u toch de ADC van de ESP32 kalibreren? Raadpleeg dan de ESP32 ADC Calibration Driver.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap.

Reacties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!