- Komponenter kreves
- Kort introduksjon til Li-Fi
- Li-Fi-senderseksjon ved hjelp av Arduino
- Li-Fi mottakerseksjon ved hjelp av Arduino
- Arduino-koding for Li-Fi
Li-Fi (Light Fidelity) er en avansert teknologi som gjør det mulig å overføre data ved hjelp av optisk kommunikasjon som synlig lys. Li-Fi-data kan bevege seg gjennom lyset og tolkes på mottakersiden ved hjelp av en hvilken som helst lysfølsom enhet som LDR eller fotodiode. Li-Fi-kommunikasjon kan være 100 ganger raskere enn Wi-Fi.
Her i dette prosjektet vil vi demonstrere Li-Fi-kommunikasjon ved hjelp av to Arduino. Her overføres tekstdataene ved hjelp av LED og 4x4 tastatur. Og den blir dekodet på mottakersiden ved hjelp av LDR. Vi har tidligere forklart Li-Fi i detalj og brukt Li-Fi til å overføre lydsignaler.
Komponenter kreves
- Arduino UNO
- LDR-sensor
- 4 * 4 Tastatur
- 16 * 2 Alfanumerisk LCD
- I2C grensesnittmodul for LCD
- Brettbrett
- Kobler gensere
- 5 mm LED
Kort introduksjon til Li-Fi
Som diskutert ovenfor er Li-Fi en avansert kommunikasjonsteknologi som kan være 100 ganger raskere enn Wi-Fi-kommunikasjon. Ved hjelp av denne teknologien kan dataene overføres ved hjelp av synlige lyskilder. Tenk, hvis du har tilgang til høyhastighetsinternett ved å bare bruke lyskilden din. Virker det ikke veldig interessant?
Li-Fi bruker synlig lys som kommunikasjonsmedium for overføring av data. En LED kan fungere som en lyskilde, og fotodioden fungerer som en mottaker som mottar lyssignaler og sender dem tilbake. Ved å kontrollere lyspulsen på sendersiden kan vi sende unike datamønstre. Dette fenomenet oppstår i ekstremt høy hastighet og kan ikke sees gjennom det menneskelige øye. Så på mottakersiden konverterer fotodioden eller den lysavhengige motstanden (LDR) dataene til nyttig informasjon.
Li-Fi-senderseksjon ved hjelp av Arduino
Som vist i figuren over, brukes tastaturet som inngang her i senderdelen av Li-Fi-kommunikasjon. Det betyr at vi velger teksten som skal overføres ved hjelp av tastaturet. Deretter blir informasjonen behandlet av kontrollenheten som ikke er noe annet enn Arduino i vårt tilfelle. Arduino konverterer informasjonen til binære pulser som kan mates til en LED-kilde for overføring. Deretter mates disse dataene til LED-lys som sender de synlige lyspulsene til mottakersiden.
Kretsdiagram over senderseksjonen:
Maskinvareoppsett for sendersiden:
Li-Fi mottakerseksjon ved hjelp av Arduino
I mottakerseksjonen mottar LDR-sensoren de synlige lyspulsene fra sendersiden og konverterer den til tolkbare elektriske pulser, som mates til Arduino (kontrollenhet). Arduino mottar denne pulsen og konverterer den til faktiske data og viser den på en 16x2 LCD-skjerm.
Kretsdiagram over mottakerseksjonen:
Maskinvareoppsett for mottakersiden:
Arduino-koding for Li-Fi
Som vist ovenfor har vi to seksjoner for Li-Fi-sender og mottaker. De komplette kodene for hver seksjon er gitt nederst i opplæringen, og en trinnvis forklaring av kodene er gitt nedenfor:
Arduino Li-Fi-senderkode:
På sendersiden brukes Arduino Nano med 4x4-tastatur og LED. Først lastes alle avhengige bibliotekfilene ned og installeres til Arduino via Arduino IDE. Her brukes tastaturbiblioteket til bruk av 4 * 4-tastatur som kan lastes ned fra denne lenken. Lær mer om grensesnitt 4x4 tastatur med Arduino her.
#inkludere
Etter vellykket installasjon av biblioteksfiler, definer nr. av rader og kolonneverdier som er 4 for begge da vi har brukt 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 '} };
Deretter defineres Arduino-pinnene som brukes til å grensesnitt med 4 * 4-tastaturet. I vårt tilfelle har vi brukt A5, A4, A3 og A2 for henholdsvis R1, R2, R3, R4 og A1, A0, 12, 11 for henholdsvis C1, C2, C3 og C4.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Tastatur customKeypad = Tastatur (makeKeymap (nøkkelkode), rowPin, colPin, ROW, COL);
Inne i oppsett () er utgangspinnen definert, hvor LED-kilden er koblet til. Det holdes også AV mens du slår PÅ enheten.
ugyldig oppsett () { pinMode (8, OUTPUT); digitalWrite (8, LAV); }
Inne mens sløyfen, blir verdiene mottatt fra tastaturet leses ved hjelp av customKeypad.getKey () , og det sammenlignes i if-else sløyfe, for å frembringe unike pulser i hvert tastetrykk. Det kan sees i koden at tidsintervallene holdes unike for alle nøkkelverdiene.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); forsinkelse (10); digitalWrite (8, LAV); }
Arduino Li-Fi mottakerkode:
På Li-Fi-mottakersiden er Arduino UNO grensesnittet med en LDR-sensor som vist i kretsskjemaet. Her er LDR-sensoren koblet i serie med en motstand for å danne en spenningsdelerkrets, og den analoge spenningsutgangen fra sensoren mates til Arduino som et inngangssignal. Her bruker vi en I2C-modul med LCD for å redusere nei. av forbindelser med Arduino da denne modulen bare krever 2 datapinner SCL / SDA og 2 strømpinner.
Start koden ved å inkludere alle nødvendige bibliotekfiler i koden som Wire.h for I2C-kommunikasjon, LiquidCrystal_I2C.h for LCD osv. Disse bibliotekene vil være forhåndsinstallert med Arduino, så det er ikke nødvendig å laste dem ned.
#inkludere
For å bruke I2C-modulen for 16 * 2 alfanumerisk LCD, konfigurer den med LiquidCrystal_I2C- klassen. Her må vi passere adresse, rad og kolonnenummer som er henholdsvis 0x3f, 16 og 2 i vårt tilfelle.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Inne i oppsettet (), erklær pulsinngangspinnen for mottak av signalet. Skriv deretter ut en velkomstmelding på LCD-skjermen som vises under initialiseringen av prosjektet.
ugyldig oppsett () { 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 (); }
Inne i mens sløyfen beregnes pulsinngangsvarigheten fra LDR ved hjelp av pulseIn- funksjonen, og typen puls er definert som er lav i vårt tilfelle. Verdien skrives ut på den serielle skjermen for feilsøking. Det anbefales å sjekke varigheten, da det kan være forskjellig for forskjellige oppsett.
usignert lang varighet = pulseIn (8, HIGH); Serial.println (varighet);
Etter å ha sjekket varighetene for alle senderpulsene, har vi nå 16 pulsvarighetsområder, som er notert som referanse. Sammenlign dem nå ved hjelp av en IF-ELSE- løkke for å få de nøyaktige dataene som er overført. En prøvesløyfe for nøkkel 1 er gitt nedenfor:
hvis (varighet> 10000 && varighet <17000) { lcd.setCursor (0, 0); lcd.print ("Mottatt: 1"); }
Li-Fi sender og mottaker ved hjelp av Arduino
Etter at du har lastet opp hele koden i begge Arduinos, trykker du på hvilken som helst knapp på tastaturet på mottakersiden, og det samme sifferet vises på 16x2 LCD på mottakersiden.
Slik kan Li-Fi brukes til å overføre data gjennom lys. Håper du likte artikkelen og lærte noe nytt ut av den, hvis du er i tvil, kan du bruke kommentarseksjonen eller spørre i forumet.