- Componenti richiesti
- Breve introduzione al Li-Fi
- Sezione Trasmettitore Li-Fi utilizzando Arduino
- Sezione Ricevitori Li-Fi utilizzando Arduino
- Codifica Arduino per Li-Fi
Li-Fi (Light Fidelity) è una tecnologia avanzata che consente il trasferimento di dati utilizzando la comunicazione ottica come la luce visibile. I dati Li-Fi possono viaggiare attraverso la luce e quindi interpretati sul lato del ricevitore utilizzando qualsiasi dispositivo sensibile alla luce come LDR o fotodiodo. La comunicazione Li-Fi può essere 100 volte più veloce del Wi-Fi.
Qui in questo progetto, dimostreremo la comunicazione Li-Fi utilizzando due Arduino. Qui i dati di testo vengono trasmessi tramite LED e tastiera 4x4. Ed è decodificato sul lato del ricevitore usando LDR. In precedenza abbiamo spiegato in dettaglio Li-Fi e utilizzato Li-Fi per trasferire i segnali audio.
Componenti richiesti
- Arduino UNO
- Sensore LDR
- Tastiera 4 * 4
- LCD alfanumerico 16 * 2
- Modulo interfaccia I2C per LCD
- Breadboard
- Collegamento dei ponticelli
- LED da 5 mm
Breve introduzione al Li-Fi
Come discusso in precedenza, Li-Fi è una tecnologia di comunicazione avanzata che può essere 100 volte più veloce della comunicazione Wi-Fi. Utilizzando questa tecnologia, i dati possono essere trasferiti utilizzando sorgenti di luce visibile. Immagina, se puoi accedere a Internet ad alta velocità semplicemente utilizzando la tua fonte di luce. Non ti sembra molto interessante?
Li-Fi utilizza la luce visibile come mezzo di comunicazione per la trasmissione dei dati. Un LED può fungere da sorgente luminosa e il fotodiodo funge da ricetrasmettitore che riceve i segnali luminosi e li ritrasmette. Controllando l'impulso luminoso sul lato trasmettitore, possiamo inviare modelli di dati unici. Questo fenomeno si verifica a velocità estremamente elevate e non può essere visto attraverso l'occhio umano. Quindi sul lato del ricevitore, il fotodiodo o il resistore dipendente dalla luce (LDR) converte i dati in informazioni utili.
Sezione Trasmettitore Li-Fi utilizzando Arduino
Come mostrato nella figura sopra, nella parte trasmettitore della comunicazione Li-Fi, la tastiera viene utilizzata come input qui. Ciò significa che selezioneremo il testo da trasmettere utilizzando la tastiera. Quindi le informazioni vengono elaborate dalla centralina che nel nostro caso non è altro che Arduino. Arduino converte le informazioni in impulsi binari che possono essere inviati a una sorgente LED per la trasmissione. Quindi questi dati vengono inviati alla luce LED che invia gli impulsi di luce visibile al lato del ricevitore.
Schema del circuito della sezione del trasmettitore:
Configurazione hardware per il lato trasmettitore:
Sezione Ricevitori Li-Fi utilizzando Arduino
Nella sezione ricevente, il sensore LDR riceve gli impulsi di luce visibile dal lato trasmettitore e li converte in impulsi elettrici interpretabili, che vengono inviati ad Arduino (unità di controllo). Arduino riceve questo impulso e lo converte in dati effettivi e lo visualizza su un display LCD 16x2.
Schema del circuito della sezione del ricevitore:
Configurazione hardware per il lato ricevitore:
Codifica Arduino per Li-Fi
Come mostrato sopra, abbiamo due sezioni per il trasmettitore e il ricevitore Li-Fi. I codici completi per ciascuna sezione sono forniti in fondo al tutorial e di seguito viene fornita una spiegazione graduale dei codici:
Codice trasmettitore Li-Fi Arduino:
Sul lato del trasmettitore, Arduino Nano viene utilizzato con tastiera 4x4 e LED. Innanzitutto, tutti i file della libreria dipendente vengono scaricati e installati su Arduino tramite l'IDE di Arduino. Qui, la libreria Keypad viene utilizzata per utilizzare la tastiera 4 * 4 che può essere scaricata da questo collegamento. Scopri di più sull'interfacciamento della tastiera 4x4 con Arduino qui.
#includere
Dopo la corretta installazione dei file di libreria, definire il n. di righe e valori di colonna che è 4 per entrambi, poiché qui abbiamo utilizzato un tastierino 4 * 4.
const byte ROW = 4; const byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Quindi, vengono definiti i pin Arduino che vengono utilizzati per interfacciarsi con la tastiera 4 * 4. Nel nostro caso, abbiamo utilizzato A5, A4, A3 e A2 per R1, R2, R3, R4 rispettivamente e A1, A0, 12, 11 per C1, C2, C3 e C4 rispettivamente.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Tastiera customKeypad = Tastiera (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
All'interno di setup (), è definito il pin di uscita, dove è collegata la sorgente LED. Inoltre, viene tenuto spento durante l'accensione del dispositivo.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
All'interno del ciclo while , i valori ricevuti dalla tastiera vengono letti utilizzando customKeypad.getKey () e vengono confrontati nel ciclo if-else , per generare impulsi univoci a ogni pressione dei tasti. Si può vedere nel codice che gli intervalli del timer sono mantenuti univoci per tutti i valori chiave.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); ritardo (10); digitalWrite (8, LOW); }
Codice ricevitore Arduino Li-Fi:
Sul lato del ricevitore Li-Fi, Arduino UNO è interfacciato con un sensore LDR come mostrato nello schema elettrico. Qui il sensore LDR è collegato in serie con un resistore per formare un circuito divisore di tensione e l'uscita di tensione analogica dal sensore viene inviata ad Arduino come segnale di ingresso. Qui stiamo usando un modulo I2C con LCD per ridurre no. di connessioni con Arduino poiché questo modulo richiede solo 2 pin dati SCL / SDA e 2 pin di alimentazione.
Avvia il codice includendo tutti i file di libreria richiesti nel codice come Wire.h per la comunicazione I2C, LiquidCrystal_I2C.h per LCD, ecc. Queste librerie sarebbero preinstallate con Arduino, quindi non è necessario scaricarle.
#includere
Per utilizzare il modulo I2C per LCD alfanumerico 16 * 2, configurarlo utilizzando la classe LiquidCrystal_I2C . Qui dobbiamo passare l'indirizzo, la riga e il numero di colonna che sono rispettivamente 0x3f, 16 e 2 nel nostro caso.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
All'interno di setup (), dichiarare il pin di ingresso a impulsi per ricevere il segnale. Quindi stampare un messaggio di benvenuto sul display LCD che verrà visualizzato durante l'inizializzazione del progetto.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("BENVENUTO"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); ritardo (2000); lcd.clear (); }
All'interno del ciclo while , la durata dell'input dell'impulso da LDR viene calcolata utilizzando la funzione pulseIn e viene definito il tipo di impulso che è LOW nel nostro caso. Il valore viene stampato sul monitor seriale a scopo di debug. Si consiglia di controllare la durata, poiché potrebbe essere diversa per le diverse configurazioni.
durata lunga senza segno = pulseIn (8, HIGH); Serial.println (durata);
Dopo aver verificato la durata di tutti gli impulsi del trasmettitore, ora abbiamo 16 intervalli di durata degli impulsi, annotati per riferimento. Ora confrontali usando un ciclo IF-ELSE per ottenere i dati esatti che sono stati trasmessi. Di seguito viene fornito un loop di esempio per la chiave 1:
if (duration> 10000 && duration <17000) { lcd.setCursor (0, 0); lcd.print ("Ricevuto: 1"); }
Trasmettitore e ricevitore Li-Fi con Arduino
Dopo aver caricato il codice completo in entrambi gli Arduino, premere un pulsante qualsiasi sulla tastiera sul lato del ricevitore e la stessa cifra verrà visualizzata sul display LCD 16x2 sul lato del ricevitore.
Questo è il modo in cui Li-Fi può essere utilizzato per trasmettere dati attraverso la luce. Spero che l'articolo ti sia piaciuto e che abbia imparato qualcosa di nuovo, se hai qualche dubbio puoi usare la sezione commenti o chiedere nei forum.