- Components necessaris
- Breu introducció al Li-Fi
- Secció de transmissors Li-Fi que utilitza Arduino
- Secció de receptors Li-Fi mitjançant Arduino
- Codificació Arduino per a Li-Fi
Li-Fi (Light Fidelity) és una tecnologia avançada que permet transferir dades mitjançant comunicacions òptiques com ara la llum visible. Les dades Li-Fi poden viatjar a través de la llum i després interpretar-les al costat del receptor mitjançant qualsevol dispositiu sensible a la llum com LDR o fotodiode. La comunicació Li-Fi pot ser 100 vegades més ràpida que la Wi-Fi.
Aquí, en aquest projecte, demostrarem la comunicació Li-Fi mitjançant dos Arduino. Aquí les dades de text es transmeten mitjançant teclat LED i 4x4. I es descodifica al costat del receptor mitjançant LDR. Anteriorment hem explicat detalladament el Li-Fi i hem utilitzat el Li-Fi per transferir senyals d’àudio.
Components necessaris
- Arduino UNO
- Sensor LDR
- Teclat 4 * 4
- 16 * 2 LCD alfanumèric
- Mòdul d’interfície I2C per a LCD
- Taula de pa
- Connectant Jumpers
- LED de 5 mm
Breu introducció al Li-Fi

Com s’ha comentat anteriorment, Li-Fi és una tecnologia de comunicació avançada que pot ser 100 vegades més ràpida que la comunicació Wi-Fi. Mitjançant aquesta tecnologia, les dades es poden transferir mitjançant fonts de llum visibles. Imagineu-vos, si podeu accedir a Internet d'alta velocitat només utilitzant la vostra font de llum. No sembla molt interessant?
Li-Fi utilitza la llum visible com a mitjà de comunicació per a la transmissió de dades. Un LED pot actuar com a font de llum i el fotodiode actua com un transceptor que rep senyals de llum i els transmet de nou. Mitjançant el control del pols de llum al costat del transmissor, podem enviar patrons de dades únics. Aquest fenomen es produeix a una velocitat extremadament alta i no es pot veure a través de l’ull humà. Aleshores, al costat del receptor, el fotodiode o resistència dependent de la llum (LDR) converteix les dades en informació útil.
Secció de transmissors Li-Fi que utilitza Arduino
Com es mostra a la figura anterior, a la part transmissora de la comunicació Li-Fi, el teclat s’utilitza aquí com a entrada. Això vol dir que seleccionarem el text que es vol transmetre mitjançant el teclat. A continuació, la informació la processa la unitat de control, que no és res més que Arduino en el nostre cas. Arduino converteix la informació en polsos binaris que es poden alimentar a una font LED per a la seva transmissió. A continuació, aquestes dades s’alimenten a la llum LED que envia els impulsos de llum visible al costat del receptor.
Diagrama de circuits de la secció del transmissor:

Configuració del maquinari per al costat del transmissor:

Secció de receptors Li-Fi mitjançant Arduino
A la secció del receptor, el sensor LDR rep els polsos de llum visible des del costat del transmissor i el converteix en polsos elèctrics interpretables, que s’alimenten a l’Arduino (unitat de control). Arduino rep aquest pols i el converteix en dades reals i el mostra en una pantalla LCD de 16x2.
Diagrama de circuits de la secció del receptor:

Configuració del maquinari per al costat del receptor:

Codificació Arduino per a Li-Fi
Com es mostra més amunt, tenim dues seccions per a transmissor i receptor Li-Fi. Els codis complets de cada secció es donen a la part inferior del tutorial i a continuació s’explica pas a pas els codis:
Codi del transmissor Li-Fi Arduino:
Al costat del transmissor, Arduino Nano s’utilitza amb teclat 4x4 i LED. En primer lloc, tots els fitxers de biblioteca dependents es descarreguen i s’instal·len a Arduino mitjançant Arduino IDE. Aquí, la biblioteca del teclat s’utilitza per utilitzar el teclat 4 * 4 que es pot descarregar des d’aquest enllaç. Obteniu més informació sobre la interfície del teclat 4x4 amb Arduino aquí.
#incloure
Després de la instal·lació correcta dels fitxers de biblioteca, definiu el núm. de files i valors de columna, que és 4 per a tots dos, ja que hem utilitzat un teclat 4 * 4 aquí.
byte const ROW = 4; byte const COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
A continuació, es defineixen els pins Arduino que s’utilitzen per a la interfície amb el teclat 4 * 4. En el nostre cas, hem utilitzat A5, A4, A3 i A2 per a R1, R2, R3, R4 respectivament i A1, A0, 12, 11 per a C1, C2, C3 i C4 respectivament.
byte fila Pin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Teclat customKeypad = Teclat (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
Dins de setup (), es defineix el pin de sortida, on es connecta la font LED. A més, es manté APAGAT mentre s’engega el dispositiu.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, BAIX); }
A l'interior , mentre que bucle, els valors rebuts des del teclat es llegeixen utilitzant customKeypad.getKey () i es van comparar en el if-else bucle, per a generar polsos únics en cada un pulsacions de tecles. Es pot veure al codi que els intervals del temporitzador es mantenen únics per a tots els valors clau.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); retard (10); digitalWrite (8, BAIX); }

Codi del receptor Li-Fi Arduino:
Al costat del receptor Li-Fi, Arduino UNO té una interfície amb un sensor LDR, tal com es mostra al diagrama del circuit. Aquí el sensor LDR es connecta en sèrie amb una resistència per formar un circuit divisor de tensió i la sortida de tensió analògica del sensor s’alimenta a Arduino com a senyal d’entrada. Aquí estem utilitzant un mòdul I2C amb LCD per reduir el nombre. de connexions amb Arduino ja que aquest mòdul només requereix 2 pins de dades SCL / SDA i 2 pins de potència.
Inicieu el codi incloent tots els fitxers de biblioteca necessaris al codi, com ara Wire.h per a la comunicació I2C, LiquidCrystal_I2C.h per a LCD, etc. Aquestes biblioteques es preinstal·larien amb Arduino, de manera que no cal descarregar-les.
#incloure
Per utilitzar el mòdul I2C per a pantalles LCD alfanumèriques de 16 * 2, configureu-lo mitjançant la classe LiquidCrystal_I2C . Aquí hem de passar l'adreça, la fila i el número de columna que són 0x3f, 16 i 2 respectivament en el nostre cas.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
A l’interior setup (), declareu el pin d’entrada de pols per rebre el senyal. A continuació, imprimiu un missatge de benvinguda a la pantalla LCD que es mostrarà durant la inicialització del projecte.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("BENVINGUTS A"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); endarreriment (2000); lcd.clear (); }
Dins el temps de bucle, la durada d'entrada de polsos de LDR es calcula utilitzant pulseIn funció, i el tipus d'impuls es defineix que és baixa en el nostre cas. El valor s’imprimeix al monitor sèrie per a finalitats de depuració. Es recomana comprovar la durada, ja que pot ser diferent per a diferents configuracions.
llarga durada sense signar = pulseIn (8, HIGH); Serial.println (durada);
Després de comprovar la durada de tots els polsos del transmissor, ara tenim 16 intervals de durada de pols, que s’anota com a referència. Ara compareu-los mitjançant un bucle IF-ELSE per obtenir les dades exactes que s’han transmès. A continuació es mostra un bucle de mostra per a la clau 1:
if (durada> 10000 && durada <17000) { lcd.setCursor (0, 0); lcd.print ("Rebut: 1"); }
Emissor i receptor Li-Fi mitjançant Arduino
Després de penjar el codi complet als dos Arduinos, premeu qualsevol botó del teclat al costat del receptor i es mostrarà el mateix dígit a la pantalla LCD de 16x2 al costat del receptor.


Així es pot utilitzar Li-Fi per transmetre dades a través de la llum. Espero que us hagi agradat l’article i n’hagueu après alguna cosa nova, si teniu algun dubte, podeu fer servir la secció de comentaris o demanar-ho als fòrums.
