Pretraži kod

Arduino kod i video za modul svjetlosnog senzora s relejem

Arduino kod i video za modul svjetlosnog senzora s relejem

U ovom tutorijalu naučit ćemo kako koristiti modul senzora svjetla za upravljanje AC svjetlom. Projekat će omogućiti da se svjetlo automatski uključi kada je mrak i isključi kada postane svijetlo. Ovo je posebno korisno za aplikacije poput vanjske rasvjete ili garažnih svjetala. Do kraja ovog tutorijala imat ćete funkcionalan sistem koji može efikasno upravljati svjetlom na osnovu ambijentalnih uslova. (u videu na 02:15)

LDR light sensor module

Koristit ćemo modul senzora svjetla, koji uključuje otpornik ovisan o svjetlu (LDR) za detekciju nivoa svjetla, i relej za upravljanje AC svjetlom. Sistem će također uključivati potenciometar za podešavanje osjetljivosti detekcije svjetla. Ova postavka omogućava i digitalnu i analognu kontrolu svjetla na osnovu ambijentalnog svjetla koje detektuje senzor. Za detaljnija pojašnjenja, pogledajte video na 04:30.

Objašnjenje hardvera

Primarne komponente ove konstrukcije su modul senzora svjetla, relej i Arduino. Modul senzora svjetla sastoji se od LDR-a koji mijenja otpor na osnovu intenziteta svjetla, pružajući ili digitalni ili analogni izlaz. Relej djeluje kao prekidač koji može upravljati visokonaponskim AC svjetlom dok ga sigurno upravlja niskonaponski Arduino. Ovo razdvajanje je ključno za sigurnost i funkcionalnost.

Relej ima tri primarne igle: zajedničku (COM), normalno otvorenu (NO) i normalno zatvorenu (NC). Kada se aktivira, relej povezuje zajedničku iglu s normalno otvorenom iglom, omogućavajući protok struje kroz povezano svjetlo. Ovaj mehanizam omogućava releju da upravlja svjetlom na osnovu signala primljenih od Arduina.

Detalji iz podatkovne tablice

Proizvođač Generički
Broj dijela Modul senzora svjetla
Logički/IO napon 5 V
Napon napajanja 5 V
Izlazna struja (po kanalu) 10 mA
Vršna struja (po kanalu) 20 mA
Smjernice za PWM frekvenciju N/A
Ulazni logički pragovi 2,5 V (visok) / 0,8 V (nizak)
Pad napona / RDS(on) / zasićenje 0,2 V tipično
Toplotna ograničenja 85 °C
Paket Modul
Napomene / varijante Uključuje potenciometar za podešavanje osjetljivosti

 

  • Osigurajte pravilno odvođenje topline za relej.
  • Koristite pull-up otpornik za ulaz senzora svjetla.
  • Provjerite naponske vrijednosti prije povezivanja AC uređaja.
  • Izbjegavajte dodirivanje izloženih žica kada je sistem pod naponom.
  • Podesite potenciometar za željenu osjetljivost na svjetlo.

Upute za povezivanje

Arduino wiring for LDR light sensor module

Za povezivanje modula senzora svjetla i releja na Arduino, počnite spajanjem VCC igle modula senzora svjetla na 5V iglu na Arduinu. Zatim spojite uzemljenu iglu senzora svjetla na GND iglu na Arduinu. Digitalna izlazna igla senzora svjetla treba biti spojena na iglu 2 na Arduinu, dok se analogna izlazna igla spaja na A0 za analogna očitavanja.

Sada, za relej, spojite njegovu VCC iglu na 5V iglu na Arduinu i njegovu uzemljenu iglu na GND. Ulazna igla releja treba biti spojena na iglu 9 na Arduinu. Na kraju, spojite jednu žicu vašeg AC svjetla na zajedničku iglu (COM) releja i drugu žicu na normalno otvorenu iglu (NO). Ova postavka će omogućiti releju da upravlja AC svjetlom na osnovu očitavanja sa senzora svjetla.

Primjeri koda i objašnjenje

U osnovnom digitalnom kodu za senzor svjetla, definiramo igle za senzor i relej. Funkcija setup inicijalizira serijsku komunikaciju i postavlja načine rada igala:

#define LIGHT 2 // definiraj iglu 2 za senzor
#define RELAY 9 // definiraj iglu 9 za relej

void setup() {
  Serial.begin(9600); // postavi Serial Monitor
  pinMode(LIGHT, INPUT_PULLUP); // definiraj iglu kao ulazni senzor
  pinMode(RELAY, OUTPUT); // definiraj iglu kao IZLAZ za relej
}

Ovaj kod postavlja iglu 2 kao ulaz za čitanje senzora svjetla i iglu 9 kao izlaz za upravljanje relejem. Serijski monitor je također inicijaliziran za pružanje povratnih informacija o statusu svjetla.

Unutar funkcije loop, kontinuirano čitamo stanje senzora:

int L = digitalRead(LIGHT); // čitaj senzor
if (L == 1) {
  Serial.println(" svjetlo je UKLJUČENO");
  digitalWrite(RELAY, LOW); // uključi relej
} else {
  Serial.println("  === svjetlo je ISKLJUČENO");
  digitalWrite(RELAY, HIGH); // isključi relej
}

Ova logika provjerava stanje senzora svjetla i uključuje ili isključuje relej u skladu s tim, pružajući povratne informacije putem serijskog monitora.

U naprednom analognom kodu, uključujemo metodu za čitanje vrijednosti s analognog izlaza:

if (digital == true) {
  int L = digitalRead(LIGHT); // čitaj senzor
  if (L == 1) {
    Serial.println(" svjetlo je UKLJUČENO");
    digitalWrite(RELAY, LOW); // uključi relej
  } else {
    Serial.println("  === svjetlo je ISKLJUČENO");
    digitalWrite(RELAY, HIGH); // isključi relej
  }
} else {
  int a0Value = analogRead(A0); // čitaj A0 vrijednost
  if (a0Value >= LightValue) {
    Serial.print(analogRead(A0));
    Serial.println(" Svjetlo je UKLJUČENO");
    digitalWrite(RELAY, LOW); // uključi relej
  } else {
    Serial.print(analogRead(A0));
    Serial.println("  === svjetlo ISKLJUČENO");
    digitalWrite(RELAY, HIGH); // isključi relej
  }
}

Ovaj odjeljak omogućava podešavanje osjetljivosti na osnovu analognog očitanja sa senzora svjetlosti, pružajući veću kontrolu nad pragovima aktivacije svjetla.

Demonstracija / Šta očekivati

Kada je postavka završena i uređaj uključen, svjetlo bi trebalo da se upali u uslovima slabog osvjetljenja i ugasi u uslovima jakog osvjetljenja. Sistem možete testirati prekrivanjem senzora svjetlosti kako biste simulirali mrak i posmatrali aktivaciju releja. Ako je pravilno konfigurisan, serijski monitor će prikazati "svjetlo je UKLJUČENO" ili "svjetlo je ISKLJUČENO" na osnovu očitanja senzora. Budite oprezni prilikom obrnutog povezivanja polariteta kod spajanja AC svjetla, jer to može uzrokovati kvarove ili sigurnosne opasnosti (u videu na 10:00).

Vremenske oznake videa

  • 00:00 Uvod u projekat
  • 02:15 Pregled komponenti i ožičenja
  • 04:30 Objašnjenje koda
  • 10:00 Demonstracija funkcionalnosti

Slike

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

Stvari koje bi vam mogle zatrebati

Resursi i reference

Još nema resursa.

Datoteke📁

Fritzing datoteka