ESP32 - Lichtsensor

Dieses Tutorial zeigt Ihnen, wie man den ESP32 mit dem Lichtsensor verwendet. Im Detail lernen wir:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Lichtsensor
1×10 kΩ Resistor
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Der LDR-Lichtsensor ist sehr günstig, aber er benötigt einen Widerstand für die Verkabelung, was die Einrichtung komplexer machen kann. Um die Verkabelung zu vereinfachen, können Sie ein LDR-Lichtsensor-Modul als Alternative verwenden.

Über den Lichtsensor

Der am weitesten verbreitete Lichtsensor ist ein Fotowiderstand (auch bekannt als Fotowiderstand, oder lichtabhängiger Widerstand, LDR).

Es kann verwendet werden, die Anwesenheit des Lichts zu erkennen. Es kann auch dazu verwendet werden, die Beleuchtungsstärke bzw. den Helligkeitsgrad des Lichts zu messen.

Lichtsensor Pinbelegung

Ein Lichtsensor hat zwei Pins. Wie bei einem normalen Widerstand müssen wir diese Pins nicht unterscheiden.

Lichtsensor-Pinbelegung

Wie Lichtsensoren funktionieren

Der Widerstand des Fotowiderstands verhält sich umgekehrt proportional zur Lichtintensität. Je weniger Licht dem Fotowiderstand ausgesetzt ist, desto größer ist sein Widerstand. Daher lässt sich aus der Messung des Widerstands des Fotowiderstands ableiten, wie hell das Umgebungslicht ist.

Wie der Lichtsensor funktioniert

WARNING

Der durch den Fotowiderstand gemessene Wert spiegelt die ungefähre Tendenz der Lichtintensität wider. Er repräsentiert jedoch nicht exakt den Lichtstrom. Daher sollte der Fotowiderstand in einer Anwendung, die eine hohe Genauigkeit erfordert, nicht verwendet werden. Eine Kalibrierung ist auch für einige Anwendungen erforderlich.

ESP32 - Lichtsensor

Der Analogeingangspin des ESP32 wandelt die Spannung (zwischen 0 V und ADC_VREF – standardmäßig 3,3 V) in Ganzzahlwerte um (zwischen 0 und 4095), die als Analogwert oder ADC-Wert bezeichnet werden. Durch das Verbinden eines Analogeingangspins des ESP32 mit dem Fotowiderstand lässt sich der Analogwert lesen, indem man die Funktion analogRead() verwendet.

Verdrahtungsdiagramm zwischen Lichtsensor und ESP32

ESP32-Lichtsensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

ESP32-Code

Der folgende ESP32-Code liest den Wert eines Lichtsensors aus und ermittelt das Lichtniveau.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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); }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die ESP32-Entwicklungsumgebung in der Arduino IDE einrichtet an.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren und den Code auf das ESP32-Board hochladen, indem Sie auf die Hochladen-Schaltfläche in der Arduino IDE klicken
  • Öffnen Sie den seriellen Monitor in der Arduino IDE
Wie öffnet man den seriellen Monitor in der Arduino-IDE?
  • Strahlt Licht auf den Sensor.
  • Sehen Sie das Ergebnis im Serial Monitor. Es sieht wie folgt aus:
COM6
Send
Analog Value = 406 => Dim Analog Value = 412 => Dim Analog Value = 465 => Dim Analog Value = 471 => Dim Analog Value = 3511 => Very bright Analog Value = 3521 => Very bright Analog Value = 3618 => Very bright
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Lichtsensor und LED

Verdrahtungsdiagramm

ESP32-Lichtsensor-LED-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

ESP32-Quellcode

Der untenstehende Code schaltet die LED ein, wenn es dunkel ist; andernfalls schaltet er die LED aus.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem an einen Lichtsensor angeschlossenen ADC (Analog-Digital-Wandler) zu lesen. Der ESP32-ADC ist gut geeignet für Projekte, die KEINE hohe Genauigkeit benötigen. Allerdings, für Projekte, die präzise Messungen benötigen, beachten Sie bitte:

  • Der ESP32-ADC ist nicht völlig genau und muss möglicherweise für korrekte Ergebnisse kalibriert werden. Jedes ESP32-Board kann etwas unterschiedlich sein, daher müssen Sie den ADC für jedes einzelne Board kalibrieren.
  • Die Kalibrierung kann schwierig sein, besonders für Anfänger, und liefert möglicherweise nicht immer die gewünschten genauen Ergebnisse.

Für Projekte, die eine hohe Präzision benötigen, ziehen Sie in Betracht, einen externen ADC (z. B. ADS1115) mit dem ESP32 zu verwenden oder einen Arduino zu verwenden, der einen zuverlässigeren ADC hat. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, beziehen Sie sich auf ESP32 ADC Calibration Driver

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!