Cuprins:

Lampă LED fără fir Arduino care se potrivește cu lumină folosind fotorezistor: 4 pași
Lampă LED fără fir Arduino care se potrivește cu lumină folosind fotorezistor: 4 pași
Anonim
Lampă LED Arduino fără fir care se potrivește cu lumina folosind fotorezistor
Lampă LED Arduino fără fir care se potrivește cu lumina folosind fotorezistor
Lampă LED fără fir Arduino, care se potrivește cu lumina, utilizând fotorezistor
Lampă LED fără fir Arduino, care se potrivește cu lumina, utilizând fotorezistor
Lampă LED Arduino fără fir care se potrivește cu lumina folosind fotorezistor
Lampă LED Arduino fără fir care se potrivește cu lumina folosind fotorezistor

Această instrucțiune detaliază pașii necesari pentru a construi o lampă LED fără fir rudimentară cu detectare a luminii folosind Arduino Unos și un fotorezistor. O posibilă aplicație pentru acest dispozitiv ar fi iluminarea unei încăperi care nu are ferestre cu lumină solară artificială, potrivind condițiile reale de iluminare din exterior în timp real. Să începem!

Lista de aprovizionare:

Arduino Uno x2

NRF24L01 Transceiver wireless x2 (Opțional - Rucsac NRF24L01 x2)

TIP120 tranzistor darlington

Fotorezistor

LED-uri de 5 mm x3

Apasa butonul

Rezistor de 100 ohmi x3

Rezistor 10k ohm x3

Diverse fire Jumper

Pasul 1: Cablarea modulelor și circuitului NRF24L01

Cablarea modulelor și circuitului NRF24L01
Cablarea modulelor și circuitului NRF24L01
Cablarea modulelor și circuitului NRF24L01
Cablarea modulelor și circuitului NRF24L01
Cablarea modulelor și circuitului NRF24L01
Cablarea modulelor și circuitului NRF24L01

În acest proiect, un Arduino va acționa ca un transmițător, trimitând date de nivel de lumină de la fotorezistor atunci când butonul este apăsat. Celălalt Arduino va servi ca receptor, luând acele date și transformându-le în semnal către LED-uri. Prima imagine arată schema emițătorului, iar a doua arată receptorul.

Notă: în fotografiile proiectului meu, veți observa că transmițătoarele NRF24L01 sunt atașate la un alt PCB. Acesta este un modul de rucsac pentru transmițătoare, care acționează ca un regulator de putere. Pe lângă simplificarea cablajului, aceste rucsaci reglează puterea de intrare pentru NRF24L01, permițând utilizarea unei surse de alimentare de 5V. Am omis aceste rucsaci în diagrama mea din motive de claritate.

(Dacă decideți să folosiți rucsacurile, vă rugăm să consultați acest link pentru o diagramă a locațiilor pinului cu referire la stocul NRF24L01).

Atașat mai jos este o copie PDF a circuitului, pentru zoom mai ușor / vizualizare detaliată.

Pasul 2: Codificarea transmițătorului

Ultimul pas este codarea. Va trebui să instalați biblioteca RadioHead sau o bibliotecă echivalentă pentru utilizare cu modulele NRF24L01.

Pentru acest proiect, emițătorul și receptorul Arduinos utilizează coduri diferite pe fiecare. Iată codul pentru transmițător:

Am atașat și fișierul.ino (NRF_Send) pentru comoditate.

#include

#include

RH_NRF24 nrf24; // Initializarea unui transceiver ca nrf24

buton int = 5; // Setarea valorilor pinului pentru buton și fotorezistor

int pResistor = A0; valoarea int = 0; // Valoarea luminii de la 0-1023

configurare nulă ()

{Serial.begin (9600); pinMode (buton, INPUT); pinMode (pResistor, INPUT); if (! nrf24.init ()) // Alertă utilizatorul dacă inițializarea modulului eșuează Serial.println ("init a eșuat"); // Valori implicite după inițiere sunt 2.402 GHz (canal 2), 2Mbps, 0dBm dacă (! Nrf24.setChannel (1)) Serial.println ("setChannel a eșuat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF a eșuat"); }

bucla nulă ()

{if (digitalRead (button)) {// Trimiteți un mesaj dacă butonul este apăsat value = analogRead (pResistor); // Citiți valoarea fotorezistorului (0-1023) uint8_t data = {value}; // Setează o matrice numită „date ” care conține valoarea luminii nrf24.send (date, sizeof (data)); // Trimiteți matricea la destinatar nrf24.waitPacketSent (); // Așteptați până când pachetul a fost trimis Serial.println ("Valoare lumină:" + Șir (valoare)); // Imprimați valoarea luminii în monitorul serial}}

Pasul 3: Codificarea receptorului

Pentru receptor, codul folosește și Biblioteca RadioHead.

#include

#include

RH_NRF24 nrf24;

int LEDPin = 3;

valoarea int = 0; // Valoarea luminii de la 0-1023

configurare nulă ()

{Serial.begin (9600); pinMode (LEDPin, OUTPUT); if (! nrf24.init ()) Serial.println ("init a eșuat"); // Valori implicite după inițiere sunt 2.402 GHz (canal 2), 2Mbps, 0dBm dacă (! Nrf24.setChannel (1)) Serial.println ("setChannel a eșuat"); if (! nrf24.setRF (RH_NRF24:: DataRate2Mbps, RH_NRF24:: TransmitPower0dBm)) Serial.println ("setRF a eșuat"); }

bucla nulă ()

{// Așteptați un mesaj uint8_t buf [RH_NRF24_MAX_MESSAGE_LEN]; // Stocați mesajul primit ca o matrice numită "buf " uint8_t len = sizeof (buf); // Stocați dimensiunea buf ca „len” în timp ce (nrf24.waitAvailableTimeout (200) && nrf24.recv (buf, & len)) // Primește mesajul timp de 200 de milisecunde sau până când se primește întregul mesaj {value = buf [0]; // Setează valoarea la primul index al lui buf , care este int-ul din fotorezistor analogWrite (LEDPin, map (valoare, 0, 1023, 0, 255)); // Setează pinul PWM pentru a afișa o valoare scalată între 0-255 pentru luminozitatea LED Serial.println (String (valoare)); } analogWrite (LEDPin, 0); }

Pasul 4: GATA

Bucurați-vă să vă jucați cu diferite niveluri de lumină și să urmăriți cum LED-urile se potrivesc cu ele! Fotorezistorul poate fi uneori finicky și funcționează cel mai bine într-o cameră întunecată cu o sursă de lumină localizată (dar poate funcționa și în afara soarelui).

Recomandat: