Arduino-Code und Video für ein Lichtsensor-Modul mit Relais
In diesem Tutorial lernen wir, wie man ein Lichtsensor-Modul verwendet, um eine Wechselstromleuchte zu steuern. Das Projekt ermöglicht, dass das Licht automatisch eingeschaltet wird, wenn es dunkel ist, und ausgeschaltet wird, wenn es hell wird. Das ist besonders nützlich für Anwendungen wie Außenbeleuchtung oder Garagenbeleuchtung. Am Ende dieses Tutorials haben Sie ein funktionierendes System, das das Licht effektiv anhand der Umgebungsbedingungen steuern kann. (im Video bei 02:15)

Wir werden ein Lichtsensormodul verwenden, das einen lichtabhängigen Widerstand (LDR) zur Erfassung der Lichtstärke und ein Relais zur Steuerung der Wechselstromleuchte enthält. Das System wird außerdem ein Potentiometer enthalten, um die Empfindlichkeit der Lichterfassung einzustellen. Diese Konfiguration ermöglicht sowohl digitale als auch analoge Steuerung der Beleuchtung anhand des vom Sensor erfassten Umgebungslichts. Zur ausführlichen Erläuterung siehe das Video bei 04:30.
Hardware erklärt
Die Hauptkomponenten dieses Aufbaus sind das Lichtsensormodul, das Relais und das Arduino-Board. Das Lichtsensormodul besteht aus einem LDR, dessen Widerstand sich je nach Lichtintensität ändert und der entweder einen digitalen oder analogen Ausgang liefert. Das Relais fungiert als Schalter, der eine Hochspannungs-Wechselstromlampe steuern kann, während es sicher vom Niederspannungs-Arduino betätigt wird. Diese Trennung ist entscheidend für Sicherheit und Funktionalität.
Das Relais hat drei Hauptpins: common (COM), normally open (NO) und normally closed (NC). Wenn es aktiviert wird, verbindet das Relais den gemeinsamen Pin mit dem normalerweise offenen Pin, wodurch Strom durch die angeschlossene Lampe fließen kann. Dieser Mechanismus ermöglicht es dem Relais, die Lampe basierend auf den vom Arduino empfangenen Signalen zu steuern.
Details des Datenblatts
| Hersteller | Generisch |
|---|---|
| Teilenummer | Lichtsensormodul |
| Logik-/I/O-Spannung | 5 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | 10 mA |
| Spitzenstrom (pro Kanal) | 20 mA |
| Leitfaden zur PWM-Frequenz | nicht zutreffend |
| Schwellenwerte der Eingangslogik | 2.5 V (hoch) / 0.8 V (niedrig) |
| Spannungsabfall / RDS(on)/ Sättigung | 0.2 V typisch |
| Thermische Grenzwerte | 85 °C |
| Paket | Modul |
| Notizen / Varianten | Enthält ein Potentiometer zur Einstellung der Empfindlichkeit. |
- Stellen Sie eine ausreichende Wärmeabfuhr für das Relais sicher.
- Verwenden Sie einen Pull-up-Widerstand für den Eingang des Lichtsensors.
- Prüfen Sie die Spannungsangaben, bevor Sie Wechselstromgeräte anschließen.
- Berühren Sie keine freiliegenden Drähte, wenn das System unter Spannung steht.
- Stellen Sie das Potentiometer auf die gewünschte Lichtempfindlichkeit ein.
Verdrahtungsanleitung

Um das Lichtsensormodul und das Relais mit dem Arduino zu verdrahten, beginnen Sie damit, den VCC-Pin des Lichtsensormoduls mit dem 5V-Pin am Arduino zu verbinden. Verbinden Sie anschließend den Ground-Pin (GND) des Lichtsensors mit einem GND-Pin am Arduino. Der digitale Ausgangspin des Lichtsensors sollte mit Pin 2 am Arduino verbunden werden, während der analoge Ausgangspin für analoge Messwerte mit A0 verbunden wird.
Nun verbindest du den VCC-Pin des Relais mit dem 5V-Pin des Arduino und den GND-Pin mit GND. Der Eingangspin des Relais sollte mit Pin 9 am Arduino verbunden werden. Schließlich verbindest du einen Draht deiner Wechselstromlampe mit dem gemeinsamen Anschluss (COM) des Relais und den anderen Draht mit dem normalerweise offenen Anschluss (NO). Diese Anordnung ermöglicht es dem Relais, die Wechselstromlampe anhand der Messwerte des Lichtsensors zu steuern.
Codebeispiele & Schritt-für-Schritt-Anleitung
Im grundlegenden digitalen Code für den Lichtsensor definieren wir die Pins für den Sensor und das Relais. Die Setup-Funktion initialisiert die serielle Kommunikation und setzt die Pin-Modi:

#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
void setup() {
Serial.begin(9600); // setup Serial Monitor
pinMode(LIGHT, INPUT_PULLUP); // define pin as Input sensor
pinMode(RELAY, OUTPUT); // define pin as OUTPUT for relay
}
Dieser Code richtet Pin 2 als Eingang zum Auslesen des Lichtsensors und Pin 9 als Ausgang zur Steuerung des Relais ein. Der serielle Monitor wird ebenfalls initialisiert, um Rückmeldung über den Lichtstatus zu geben.
Innerhalb der loop()-Funktion lesen wir kontinuierlich den Zustand des Sensors aus:
int L = digitalRead(LIGHT); // read the sensor
if (L == 1) {
Serial.println(" light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.println(" === light is OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
Diese Logik prüft den Zustand des Lichtsensors und schaltet das Relais entsprechend ein oder aus, wobei sie über den seriellen Monitor Rückmeldung gibt.
Im fortgeschrittenen Analogcode integrieren wir eine Methode, um Werte vom Analogausgang zu lesen:
if (digital == true) {
int L = digitalRead(LIGHT); // read the sensor
if (L == 1) {
Serial.println(" light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.println(" === light is OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
} else {
int a0Value = analogRead(A0); // read A0 value
if (a0Value >= LightValue) {
Serial.print(analogRead(A0));
Serial.println(" Light is ON");
digitalWrite(RELAY, LOW); // turn the relay ON
} else {
Serial.print(analogRead(A0));
Serial.println(" === light OFF");
digitalWrite(RELAY, HIGH); // turn the relay OFF
}
}
Dieser Abschnitt ermöglicht die Anpassung der Empfindlichkeit basierend auf dem analogen Messwert des Lichtsensors und bietet so mehr Kontrolle über die Aktivierungsschwellen des Lichts.
Demonstration / Was Sie erwartet
Wenn die Einrichtung abgeschlossen und das Gerät eingeschaltet ist, sollte das Licht bei schlechten Lichtverhältnissen angehen und bei hellem Licht ausgehen. Sie können das System testen, indem Sie den Lichtsensor abdecken, um Dunkelheit zu simulieren, und die Aktivierung des Relais beobachten. Bei richtiger Konfiguration zeigt der serielle Monitor "Licht ist AN" oder "Licht ist AUS" basierend auf den Sensormesswerten an. Achten Sie darauf, beim Anschluss der Wechselstromlampe die Polarität nicht zu vertauschen, da dies Fehlfunktionen oder Sicherheitsrisiken verursachen kann (im Video bei 10:00).
Video-Zeitstempel
- 00:00Einführung in das Projekt
- 02:15Überblick über Komponenten und Verkabelung
- 04:30Erklärung des Codes
- 10:00Demonstration der Funktionalität
++
/*
* This is the Arduino code for the Light module for Arduino (basic).
This video shows you how to turn an AC light ON during the night using a light sensor
and turn it OFF during the day. This code is a basic version where
the digital output of the module is used.
// Written for Robojax.com video
* Watch the HC-SR505 Motion Sensor video for details https://youtu.be/qhThpxiXubI
* Code is available at http://robojax.com/learn/arduino
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// Light LDR Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(LIGHT, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
// Light LDR Sensor Code by Robojax.com 20180210
int L =digitalRead(LIGHT);// read the sensor
if(L == 1){
Serial.println(" light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println(" === light is OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
delay(500);
// Light LDR Sensor Code by Robojax.com 20180210
}
/*
Light Sensor module for Arduino (Advanced: analog)
This video shows you how to turn an AC light ON during the night using
a light sensor and turn it OFF during the day.
This code is to control a light either digitally and control
the sensitivity with the potentiometer on the module.
You can control the light using an analog value from pin A0
and set your own sensitivity. Make sure you turn the
potentiometer to the maximum value and set digital=false.
// Written for Robojax.com video
* Watch Light Sensor video https://youtu.be/CyDAWcY8_5w
* Code is available at http://robojax.com/learn/arduino
*
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay
/*
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
// LDR, Light Dependant Resistor
boolean digital = false;// set true to use digital and control the sensitivity with potentiometer on the module
// set to false to control with A0 value on Arduino
unsigned int LightValue = 350;// LightValue to determine
// at what value the relay should be ON
void setup() {
// Light LDR Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(LIGHT, INPUT_PULLUP);// define pin as Input sensor
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
delay(500);
relay();// call the relay() method
// Light LDR Sensor Code by Robojax.com 20180210
}
void relay()
{
if(digital == true)
{
// Light LDR Sensor Code by Robojax.com 20180210
int L =digitalRead(LIGHT);// read the sensor
if(L == 1){
Serial.println(" light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println(" === light is OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
} // if
}// if digital end
else
{
int a0Value = analogRead(A0);// read A0 value
if( a0Value >= LightValue){
Serial.print(analogRead(A0));
Serial.println(" Light is ON");
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.print(analogRead(A0));
Serial.println(" === light OFF");
digitalWrite(RELAY,HIGH);// turn the relay OFF
} // if
}
}
Dinge, die Sie vielleicht brauchen
-
Amazon
Ressourcen & Referenzen
Noch keine Ressourcen vorhanden.
Dateien📁
Fritzing-Datei
-
LDR-Lichtsensor-Modul schwarz
LDR_module_black.fzpz0.01 MB