Suchcode

Arduino-Code und Video für ein Lichtsensor-Modul mit Relais

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)

LDR light sensor module

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

HerstellerGenerisch
TeilenummerLichtsensormodul
Logik-/I/O-Spannung5 V
Versorgungsspannung5 V
Ausgangsstrom (pro Kanal)10 mA
Spitzenstrom (pro Kanal)20 mA
Leitfaden zur PWM-Frequenznicht zutreffend
Schwellenwerte der Eingangslogik2.5 V (hoch) / 0.8 V (niedrig)
Spannungsabfall / RDS(on)/ Sättigung0.2 V typisch
Thermische Grenzwerte85 °C
PaketModul
Notizen / VariantenEnthä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

Arduino wiring for LDR light sensor module

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

Bilder

LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
Light_LDR_sensor-4
Light_LDR_sensor-4
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
Light LDR sensor module schematic
Light LDR sensor module schematic
Arduino wiring for LDR light sensor module
Arduino wiring for LDR light sensor module
LDR light sensor module
LDR light sensor module
75-Light sensor module for Arduino (basic digital)
Sprache: C++
++
/*
 * 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
}
76-Light sensor module for Arduino (Advanced: analog)
Sprache: C++
/*
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

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Fritzing-Datei