- Komponenter, der kræves
- Kort introduktion til Li-Fi
- Li-Fi-sendersektion ved hjælp af Arduino
- Li-Fi modtager sektion ved hjælp af Arduino
- Arduino-kodning til Li-Fi
Li-Fi (Light Fidelity) er en avanceret teknologi, der muliggør overførsel af data ved hjælp af optisk kommunikation, såsom synligt lys. Li-Fi-data kan bevæge sig gennem lyset og derefter fortolkes på modtagersiden ved hjælp af en hvilken som helst lysfølsom enhed som LDR eller fotodiode. Li-Fi-kommunikation kan være 100 gange hurtigere end Wi-Fi.
Her i dette projekt demonstrerer vi Li-Fi-kommunikation ved hjælp af to Arduino. Her overføres tekstdataene ved hjælp af LED og 4x4 tastatur. Og det afkodes på modtagersiden ved hjælp af LDR. Vi har tidligere forklaret Li-Fi detaljeret og brugt Li-Fi til at overføre lydsignaler.
Komponenter, der kræves
- Arduino UNO
- LDR-sensor
- 4 * 4 tastatur
- 16 * 2 Alfanumerisk LCD
- I2C Interface modul til LCD
- Brødbræt
- Tilslutte trøjer
- 5 mm LED
Kort introduktion til Li-Fi
Som diskuteret ovenfor er Li-Fi en avanceret kommunikationsteknologi, som kan være 100 gange hurtigere end Wi-Fi-kommunikation. Ved hjælp af denne teknologi kan dataene overføres ved hjælp af synlige lyskilder. Forestil dig, hvis du kan få adgang til højhastighedsinternet ved bare at bruge din lyskilde. Ser det ikke meget interessant ud?
Li-Fi bruger synligt lys som kommunikationsmedium til transmission af data. En LED kan fungere som en lyskilde, og fotodioden fungerer som en transceiver, der modtager lyssignaler og sender dem tilbage. Ved at kontrollere lyspulsen på sendersiden kan vi sende unikke datamønstre. Dette fænomen forekommer i ekstrem høj hastighed og kan ikke ses gennem det menneskelige øje. På modtagersiden konverterer fotodioden eller den lysafhængige modstand (LDR) dataene til nyttig information.
Li-Fi-sendersektion ved hjælp af Arduino
Som vist i figuren ovenfor bruges tastaturet som input her i transmitterdelen af Li-Fi-kommunikation. Det betyder, at vi vælger den tekst, der skal overføres ved hjælp af tastaturet. Derefter behandles oplysningerne af kontrolenheden, som ikke er andet end Arduino i vores tilfælde. Arduino konverterer informationen til binære impulser, som kan føres til en LED-kilde til transmission. Derefter tilføres disse data til LED-lys, som sender de synlige lysimpulser til modtagersiden.
Kredsløbsdiagram over sendersektionen:
Hardwareopsætning til sendersiden:
Li-Fi modtager sektion ved hjælp af Arduino
I modtagersektionen modtager LDR-sensoren de synlige lysimpulser fra sendersiden og konverterer den til fortolkelige elektriske impulser, der tilføres Arduino (kontrolenhed). Arduino modtager denne puls og konverterer den til faktiske data og viser den på en 16x2 LCD-skærm.
Kredsløbsdiagram over modtagerafsnit:
Hardwareopsætning til modtagersiden:
Arduino-kodning til Li-Fi
Som vist ovenfor har vi to sektioner til Li-Fi-sender og modtager. De komplette koder for hvert afsnit er angivet i bunden af vejledningen, og en trinvis forklaring af koder gives nedenfor:
Arduino Li-Fi-senderkode:
På sendersiden bruges Arduino Nano med 4x4-tastatur og LED. Først downloades alle de afhængige biblioteksfiler og installeres til Arduino via Arduino IDE. Her bruges tastaturbiblioteket til brug af 4 * 4 tastatur, som kan downloades fra dette link. Lær mere om grænseflade mellem 4x4-tastatur og Arduino her.
#omfatte
Efter den vellykkede installation af biblioteksfiler skal du definere nr. af rækker og søjleværdier, som er 4 for begge, da vi har brugt et 4 * 4 tastatur her.
const byte ROW = 4; const byte COL = 4; char keycode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Derefter defineres Arduino-benene, der bruges til at interface til 4 * 4-tastaturet. I vores tilfælde har vi brugt A5, A4, A3 og A2 til henholdsvis R1, R2, R3, R4 og A1, A0, 12, 11 til henholdsvis C1, C2, C3 og C4.
byte rækkePin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Tastatur customKeypad = Tastatur (makeKeymap (nøglekode), rowPin, colPin, ROW, COL);
Inde i opsætning () defineres outputstiften, hvor LED-kilden er tilsluttet. Det holdes også OFF, mens enheden tændes.
ugyldig opsætning () { pinMode (8, OUTPUT); digitalWrite (8, LAV); }
Inde i loop, læses de værdier, der modtages fra tastaturet, ved hjælp af customKeypad.getKey (), og det sammenlignes i if-else- løkken for at generere unikke impulser i hvert tastetryk. Det kan ses i koden, at timerintervallerne holdes unikke for alle nøgleværdierne.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); forsinkelse (10); digitalWrite (8, LAV); }
Arduino Li-Fi modtager kode:
På Li-Fi-modtagersiden er Arduino UNO grænseflade med en LDR-sensor som vist i kredsløbsdiagrammet. Her er LDR-sensoren forbundet i serie med en modstand for at danne et spændingsdelerkredsløb, og den analoge spændingsudgang fra sensoren fødes til Arduino som et indgangssignal. Her bruger vi et I2C-modul med LCD til at reducere nr. af forbindelser med Arduino, da dette modul kun kræver 2 datastifter SCL / SDA og 2 strømstifter.
Start koden ved at inkludere alle de krævede biblioteksfiler i koden som Wire.h til I2C-kommunikation, LiquidCrystal_I2C.h til LCD osv. Disse biblioteker ville være forudinstalleret med Arduino, så der er ikke behov for at downloade dem.
#omfatte
For at bruge I2C-modulet til 16 * 2 alfanumerisk LCD skal du konfigurere det ved hjælp af klassen LiquidCrystal_I2C . Her skal vi videregive adresse-, række- og kolonnetal, der er henholdsvis 0x3f, 16 og 2 i vores tilfælde.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Inde i opsætning (), erklær pulsindgangsstiften til modtagelse af signalet. Udskriv derefter en velkomstmeddelelse på LCD'et, som vises under initialiseringen af projektet.
ugyldig opsætning () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("VELKOMMEN TIL"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); forsinkelse (2000); lcd.clear (); }
Inde i while- løkken beregnes pulsindgangsvarigheden fra LDR ved hjælp af pulseIn- funktionen, og typen af puls defineres, som er lav i vores tilfælde. Værdien er trykt på den serielle skærm til fejlfindingsformål. Det anbefales at kontrollere varigheden, da det kan være forskelligt for forskellige opsætninger.
usigneret lang varighed = pulseIn (8, HIGH); Serial.println (varighed);
Efter at have kontrolleret varigheden for alle senderimpulser har vi nu 16 pulsvarighedsintervaller, som er noteret som reference. Sammenlign dem nu ved hjælp af en IF-ELSE- loop for at få de nøjagtige data, der er blevet transmitteret. En prøvesløjfe til nøgle 1 er angivet nedenfor:
hvis (varighed> 10000 && varighed <17000) { lcd.setCursor (0, 0); lcd.print ("Modtaget: 1"); }
Li-Fi sender og modtager ved hjælp af Arduino
Når du har uploadet den komplette kode i begge Arduinos, skal du trykke på en vilkårlig knap på tastaturet på modtagersiden, og det samme ciffer vises på 16x2 LCD på modtagerens side.
Sådan kan Li-Fi bruges til at overføre data gennem lys. Håber du nød artiklen og lærte noget nyt ud af den, hvis du er i tvivl, kan du bruge kommentarsektionen eller spørge i fora.