Sommario:

Lampada LED Wireless Arduino con abbinamento di luce con fotoresistenza: 4 passaggi
Lampada LED Wireless Arduino con abbinamento di luce con fotoresistenza: 4 passaggi

Video: Lampada LED Wireless Arduino con abbinamento di luce con fotoresistenza: 4 passaggi

Video: Lampada LED Wireless Arduino con abbinamento di luce con fotoresistenza: 4 passaggi
Video: Controllare le luci del Presepe con Arduino: Sole, Luci e Fuoco - Video 612 2024, Dicembre
Anonim
Lampada LED wireless per l'abbinamento della luce Arduino con fotoresistenza
Lampada LED wireless per l'abbinamento della luce Arduino con fotoresistenza
Lampada LED wireless con abbinamento della luce Arduino con fotoresistenza
Lampada LED wireless con abbinamento della luce Arduino con fotoresistenza
Lampada LED wireless con abbinamento della luce Arduino con fotoresistenza
Lampada LED wireless con abbinamento della luce Arduino con fotoresistenza

Questa istruzione descrive in dettaglio i passaggi necessari per costruire una rudimentale lampada a LED wireless con rilevamento della luce utilizzando Arduino Unos e una fotoresistenza. Una possibile applicazione per questo dispositivo sarebbe l'illuminazione di una stanza che non ha finestre con luce solare artificiale, adattando le effettive condizioni di illuminazione all'esterno in tempo reale. Iniziamo!

Elenco forniture:

Arduino Uno x2

NRF24L01 Ricetrasmettitore wireless x2 (Opzionale - Zaino NRF24L01 x2)

TIP120 transistor Darlington

Fotoresistenza

LED 5mm x3

Premi il bottone

Resistenza da 100 ohm x3

Resistenza da 10k ohm x3

Vari cavi jumper

Passaggio 1: cablaggio dei moduli e del circuito NRF24L01

Cablaggio dei moduli e del circuito NRF24L01
Cablaggio dei moduli e del circuito NRF24L01
Cablaggio dei moduli e del circuito NRF24L01
Cablaggio dei moduli e del circuito NRF24L01
Cablaggio dei moduli e del circuito NRF24L01
Cablaggio dei moduli e del circuito NRF24L01

In questo progetto, un Arduino fungerà da trasmettitore, inviando dati sul livello di luce dalla fotoresistenza quando viene premuto il pulsante. L'altro Arduino fungerà da ricevitore, prendendo quei dati e trasformandoli nel segnale ai LED. La prima immagine mostra il diagramma del trasmettitore e la seconda mostra il ricevitore.

Nota: nelle foto del mio progetto noterete che i ricetrasmettitori NRF24L01 sono collegati a un altro PCB. Questo è un modulo zaino per i ricetrasmettitori, che funge da regolatore di potenza. Oltre a facilitare il cablaggio, questi zaini regolano l'ingresso di alimentazione per l'NRF24L01, consentendo l'utilizzo di un alimentatore a 5V. Ho omesso questi zaini nel mio diagramma per motivi di chiarezza.

(Se decidi di utilizzare gli zaini, fai riferimento a questo link per uno schema delle posizioni dei pin in riferimento allo stock NRF24L01).

Di seguito è allegata una copia PDF del circuito, per facilitare lo zoom/visualizzazione dettagliata.

Passaggio 2: codifica del trasmettitore

L'ultimo passaggio è la codifica. Dovrai installare la libreria RadioHead o una libreria equivalente da utilizzare con i moduli NRF24L01.

Per questo progetto, il trasmettitore e il ricevitore Arduino utilizzano codici diversi su ciascuno. Ecco il codice del trasmettitore:

Ho anche allegato il file.ino (NRF_Send) per comodità.

#includere

#includere

RH_NRF24 nrf24; //Inizializzazione di un ricetrasmettitore come nrf24

pulsante int = 5; //Impostazione dei valori dei pin per il pulsante e la fotoresistenza

int pResistore = A0; int valore = 0; //Valore della luce da 0-1023

configurazione nulla()

{ Serial.begin(9600); pinMode(pulsante, INGRESSO); pinMode(pResistor, INPUT); if (!nrf24.init()) //Avvisa l'utente se l'inizializzazione del modulo fallisce Serial.println("init failed"); // I valori predefiniti dopo init sono 2,402 GHz (canale 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); }

ciclo vuoto()

{ if (digitalRead(button)) { //Invia un messaggio se il pulsante viene premuto value = analogRead(pResistor); //Leggi il valore della fotoresistenza (0-1023) uint8_t data = {value}; //Imposta un array chiamato "data" contenente il valore light nrf24.send(data, sizeof(data)); //Invia l'array al destinatario nrf24.waitPacketSent(); //Attendi l'invio del pacchetto Serial.println("Light Value: " +String(value)); //Stampa il valore della luce nel monitor seriale } }

Passaggio 3: codifica del ricevitore

Per il ricevitore, il codice utilizza anche la libreria RadioHead.

#includere

#includere

RH_NRF24 nrf24;

int LEDPin = 3;

int valore = 0; //Valore della luce da 0-1023

configurazione nulla()

{ Serial.begin(9600); pinMode(LEDPin, OUTPUT); if (!nrf24.init()) Serial.println("init fallito"); // I valori predefiniti dopo init sono 2,402 GHz (canale 2), 2Mbps, 0dBm if (!nrf24.setChannel(1)) Serial.println("setChannel failed"); if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) Serial.println("setRF failed"); }

ciclo vuoto()

{ // Attendi un messaggio uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; //Salva il messaggio ricevuto come un array chiamato "buf" uint8_t len = sizeof(buf); //Memorizza la dimensione di buf come "len" while (nrf24.waitAvailableTimeout(200) && nrf24.recv(buf, &len)) //Riceve il messaggio per 200 millisecondi o finché non viene ricevuto l'intero messaggio { value = buf[0]; //Imposta il valore al primo indice di buf, che è l'int della fotoresistenza analogWrite(LEDPin, map(value, 0, 1023, 0, 255)); //Imposta il pin PWM per emettere un valore scalato tra 0-255 per la luminosità del LED Serial.println(String(value)); } analogWrite(LEDPin, 0); }

Passaggio 4: FATTO

Divertiti a giocare con diversi livelli di luce e guardare i LED abbinarli! La fotoresistenza può essere pignolo a volte e funziona meglio in una stanza buia con una fonte di luce localizzata (ma può funzionare anche all'aperto con il sole).

Consigliato: