Search Code

Kód Arduina a video pre modul svetelného senzora s relé

Kód Arduina a video pre modul svetelného senzora s relé

V tomto návode sa naučíme, ako použiť modul svetelného senzora na ovládanie AC svetla. Projekt umožní, aby sa svetlo automaticky zapínalo, keď je tma, a vypínalo, keď sa rozvidnie. Toto je užitočné najmä pre aplikácie, ako je vonkajšie osvetlenie alebo garážové svetlá. Na konci tohto návodu budete mať funkčný systém, ktorý dokáže efektívne riadiť svetlo na základe okolitých podmienok. (vo videu o 02:15)

LDR light sensor module

Použijeme modul svetelného senzora, ktorý obsahuje fotorezistor (LDR) na detekciu úrovne svetla, a relé na ovládanie AC svetla. Systém bude tiež obsahovať potenciometer na nastavenie citlivosti detekcie svetla. Toto zapojenie umožňuje digitálne aj analógové ovládanie svetla na základe okolitého svetla detekovaného senzorom. Pre podrobné vysvetlenie si pozrite video o 04:30.

Vysvetlenie hardvéru

Hlavnými komponentmi tohto zapojenia sú modul svetelného senzora, relé a Arduino. Modul svetelného senzora pozostáva z fotorezistora, ktorý mení odpor na základe intenzity svetla a poskytuje digitálny alebo analógový výstup. Relé funguje ako spínač, ktorý môže ovládať vysokonapäťové AC svetlo, pričom je bezpečne ovládané nízkonapäťovým Arduinom. Toto oddelenie je kľúčové pre bezpečnosť a funkčnosť.

Relé má tri hlavné piny: spoločný (COM), normálne otvorený (NO) a normálne zatvorený (NC). Po aktivácii relé spojí spoločný pin s normálne otvoreným pinom, čo umožní prúdenie prúdu cez pripojené svetlo. Tento mechanizmus umožňuje relé ovládať svetlo na základe signálov prijatých z Arduina.

Podrobnosti z datasheetu

Výrobca Generic
Označenie dielu Modul svetelného senzora
Logické/IO napätie 5 V
Napájacie napätie 5 V
Výstupný prúd (na kanál) 10 mA
Špičkový prúd (na kanál) 20 mA
Odporúčaná PWM frekvencia N/A
Logické prahové hodnoty vstupu 2,5 V (vysoká) / 0,8 V (nízka)
Pokles napätia / RDS(on) / saturácia 0,2 V typicky
Tepelné limity 85 °C
Puzdro Modul
Poznámky / varianty Obsahuje potenciometer na nastavenie citlivosti

 

  • Zabezpečte správny odvod tepla pre relé.
  • Použite pull-up rezistor pre vstup svetelného senzora.
  • Pred pripájaním AC zariadení skontrolujte napäťové hodnoty.
  • Vyhnite sa dotyku odkrytých vodičov, keď je systém pod napätím.
  • Nastavte potenciometer pre požadovanú citlivosť na svetlo.

Pokyny na zapojenie

Arduino wiring for LDR light sensor module

Na zapojenie modulu svetelného senzora a relé k Arduinu začnite pripojením pinu VCC modulu svetelného senzora na pin 5V na Arduine. Potom pripojte uzemňovací pin svetelného senzora na pin GND na Arduine. Digitálny výstupný pin svetelného senzora by mal byť pripojený na pin 2 na Arduine, zatiaľ čo analógový výstupný pin sa pripája na A0 pre analógové čítanie.

Teraz pre relé pripojte jeho pin VCC na pin 5V na Arduine a jeho uzemňovací pin na GND. Vstupný pin relé by mal byť pripojený na pin 9 na Arduine. Nakoniec pripojte jeden vodič vášho AC svetla na spoločný pin (COM) relé a druhý vodič na normálne otvorený pin (NO). Toto zapojenie umožní relé ovládať AC svetlo na základe hodnôt zo svetelného senzora.

Príklady kódu a vysvetlenie

V základnom digitálnom kóde pre svetelný senzor definujeme piny pre senzor a relé. Funkcia setup inicializuje sériovú komunikáciu a nastavuje režimy pinov:

#define LIGHT 2 // definuje pin 2 pre senzor
#define RELAY 9 // definuje pin 9 pre relé

void setup() {
  Serial.begin(9600); // nastavenie sériového monitora
  pinMode(LIGHT, INPUT_PULLUP); // definuje pin ako vstupný senzor
  pinMode(RELAY, OUTPUT); // definuje pin ako VÝSTUP pre relé
}

Tento kód nastaví pin 2 ako vstup pre čítanie svetelného senzora a pin 9 ako výstup na ovládanie relé. Sériový monitor je tiež inicializovaný na poskytovanie spätnej väzby o stave svetla.

Vo vnútri funkcie loop nepretržite čítame stav senzora:

int L = digitalRead(LIGHT); // čítanie senzora
if (L == 1) {
  Serial.println(" svetlo je ZAPNUTÉ");
  digitalWrite(RELAY, LOW); // zapnutie relé
} else {
  Serial.println("  === svetlo je VYPNUTÉ");
  digitalWrite(RELAY, HIGH); // vypnutie relé
}

Táto logika kontroluje stav svetelného senzora a podľa toho zapína alebo vypína relé, pričom poskytuje spätnú väzbu cez sériový monitor.

V pokročilom analógovom kóde zahrnieme metódu na čítanie hodnôt z analógového výstupu:

if (digital == true) {
  int L = digitalRead(LIGHT); // čítanie senzora
  if (L == 1) {
    Serial.println(" svetlo je ZAPNUTÉ");
    digitalWrite(RELAY, LOW); // zapnutie relé
  } else {
    Serial.println("  === svetlo je VYPNUTÉ");
    digitalWrite(RELAY, HIGH); // vypnutie relé
  }
} else {
  int a0Value = analogRead(A0); // čítanie hodnoty A0
  if (a0Value >= LightValue) {
    Serial.print(analogRead(A0));
    Serial.println(" Svetlo je ZAPNUTÉ");
    digitalWrite(RELAY, LOW); // zapnutie relé
  } else {
    Serial.print(analogRead(A0));
    Serial.println("  === svetlo VYPNUTÉ");
    digitalWrite(RELAY, HIGH); // vypnutie relé
  }
}

Táto časť umožňuje nastavenie citlivosti na základe analógového údaja zo svetelného senzora, čo poskytuje väčšiu kontrolu nad prahmi aktivácie svetla.

Ukážka / Čo očakávať

Keď je zapojenie dokončené a zariadenie je zapnuté, svetlo by sa malo zapnúť pri slabom osvetlení a vypnúť pri jasných podmienkach. Systém môžete otestovať zakrytím svetelného senzora, aby ste simulovali tmu, a pozorovaním aktivácie relé. Ak je všetko správne nakonfigurované, sériový monitor zobrazí "light is ON" alebo "light is OFF" na základe údajov zo senzora. Buďte opatrní pri prepólovaní pri pripájaní striedavého svetla, pretože to môže spôsobiť poruchy alebo bezpečnostné riziká (vo videu v čase 10:00).

Časové značky videa

  • 00:00 Úvod do projektu
  • 02:15 Prehľad komponentov a zapojenia
  • 04:30 Vysvetlenie kódu
  • 10:00 Ukážka funkčnosti

Images

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)
Language: 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)
Language: 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      
   }
}

Things you might need

Resources & references

No resources yet.

Files📁

Fritzing File