- Komponente potrebne
- Kratki uvod u Li-Fi
- Odjeljak Li-Fi odašiljača koji koristi Arduino
- Odjeljak Li-Fi prijemnika koji koristi Arduino
- Arduino kodiranje za Li-Fi
Li-Fi (Light Fidelity) je napredna tehnologija koja omogućuje prijenos podataka pomoću optičke komunikacije poput vidljive svjetlosti. Li-Fi podaci mogu putovati kroz svjetlost, a zatim ih interpretirati na strani prijemnika pomoću bilo kojeg uređaja osjetljivog na svjetlo, poput LDR-a ili fotodiode. Li-Fi komunikacija može biti 100 puta brža od Wi-Fi-ja.
Ovdje ćemo u ovom projektu demonstrirati Li-Fi komunikaciju pomoću dva Arduina. Ovdje se tekstualni podaci prenose pomoću LED i 4x4 tipkovnice. A dekodira se na strani prijemnika pomoću LDR-a. Prethodno smo detaljno objasnili Li-Fi i koristili Li-Fi za prijenos audio signala.
Komponente potrebne
- Arduino UNO
- LDR senzor
- 4 * 4 tipkovnica
- 16 * 2 alfanumerički LCD
- I2C modul sučelja za LCD
- Breadboard
- Spajanje skakača
- 5 mm LED
Kratki uvod u Li-Fi

Kao što je gore spomenuto, Li-Fi je napredna komunikacijska tehnologija koja može biti 100 puta brža od Wi-Fi komunikacije. Korištenjem ove tehnologije podaci se mogu prenositi pomoću vidljivih izvora svjetlosti. Zamislite, ako brzom internetu možete pristupiti samo pomoću izvora svjetlosti. Ne čini li se vrlo zanimljivim?
Li-Fi koristi vidljivu svjetlost kao komunikacijski medij za prijenos podataka. LED može djelovati kao izvor svjetlosti, a fotodioda kao primopredajnik koji prima svjetlosne signale i prenosi ih natrag. Kontrolom svjetlosnog impulsa na strani odašiljača možemo poslati jedinstvene uzorke podataka. Ova se pojava događa izuzetno velikom brzinom i ne može se vidjeti ljudskim okom. Zatim na strani prijemnika fotodioda ili otpor ovisan o svjetlu (LDR) pretvara podatke u korisne informacije.
Odjeljak Li-Fi odašiljača koji koristi Arduino
Kao što je prikazano na gornjoj slici, u dijelu odašiljača Li-Fi komunikacije tipkovnica se ovdje koristi kao ulaz. To znači da ćemo odabrati tipku za prijenos pomoću tipkovnice. Tada informacije obrađuje upravljačka jedinica koja u našem slučaju nije ništa drugo do Arduino. Arduino pretvara informacije u binarne impulse koji se mogu predati LED izvoru za prijenos. Zatim se ti podaci dostavljaju LED svjetlu koje šalje vidljive svjetlosne impulse na stranu prijamnika.
Kružni dijagram odjeljka odašiljača:

Postavljanje hardvera na strani odašiljača:

Odjeljak Li-Fi prijemnika koji koristi Arduino
U odjeljku prijamnika, LDR senzor prima impulse vidljive svjetlosti sa strane odašiljača i pretvara ih u električne impulse koji se mogu razumjeti, a koji se dovode u Arduino (upravljačku jedinicu). Arduino prima ovaj impuls i pretvara ga u stvarne podatke i prikazuje na LCD zaslonu 16x2.
Kružni dijagram odjeljka prijemnika:

Postavljanje hardvera za prijemnik:

Arduino kodiranje za Li-Fi
Kao što je gore prikazano, imamo dva odjeljka za Li-Fi odašiljač i prijemnik. Kompletni kodovi za svaki odjeljak dati su na dnu vodiča, a dolje je dato detaljno objašnjenje kodova:
Šifra Arduino Li-Fi odašiljača:
Na strani odašiljača, Arduino Nano koristi se s 4x4 tipkovnicom i LED diodom. Prvo se sve datoteke ovisne knjižnice preuzimaju i instaliraju u Arduino putem Arduino IDE-a. Ovdje se knjižnica tipkovnice koristi za upotrebu tipkovnice 4 * 4 koju možete preuzeti s ove poveznice. Ovdje saznajte više o povezivanju 4x4 tipkovnice s Arduinom.
#include
Nakon uspješne instalacije datoteka knjižnice, definirajte br. redaka i vrijednosti stupaca što je 4 za obje, jer smo ovdje koristili tipkovnicu 4 * 4.
const byte ROW = 4; const bajt COL = 4; char tipkovni kod = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Zatim se definiraju Arduino igle koje se koriste za povezivanje s tipkovnicom 4 * 4. U našem slučaju koristili smo A5, A4, A3 i A2 za R1, R2, R3, R4, odnosno A1, A0, 12, 11 za C1, C2, C3 i C4.
bajt rowPin = {A5, A4, A3, A2}; bajt colPin = {A1, A0, 12, 11}; Tipkovnica customKeypad = Tipkovnica (makeKeymap (kod tipke), rowPin, colPin, ROW, COL);
Unutar postavki () definiran je izlazni zatik, gdje je povezan LED izvor. Također se isključuje dok uključujete uređaj.
void setup () { pinMode (8, IZLAZ); digitalWrite (8, LOW); }
Unutar while petlje vrijednosti primljene s tipkovnice očitavaju se pomoću customKeypad.getKey () i uspoređuje se u petlji if-else kako bi se generirali jedinstveni impulsi u svakom pritisku tipke. U kodu se vidi da se intervali s timer-om čuvaju jedinstveno za sve ključne vrijednosti.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); kašnjenje (10); digitalWrite (8, LOW); }

Šifra Arduino Li-Fi prijemnika:
Na strani Li-Fi prijemnika, Arduino UNO povezan je s LDR senzorom kao što je prikazano na shemi sklopa. Ovdje je LDR senzor serijski povezan s otpornikom kako bi oblikovao krug djelitelja napona, a analogni izlazni napon senzora dovodi se na Arduino kao ulazni signal. Ovdje koristimo I2C modul s LCD-om za smanjenje br. veza s Arduinom jer ovaj modul zahtijeva samo 2 podatkovne pinove SCL / SDA i 2 naponske pinove.
Započnite kod uključivanjem svih potrebnih datoteka knjižnice u kôd, poput Wire.h za I2C komunikaciju, LiquidCrystal_I2C.h za LCD itd. Te bi knjižnice bile unaprijed instalirane s Arduinom, pa ih nema potrebe za preuzimanjem.
#include
Za upotrebu I2C modula za alfanumerički LCD 16 * 2, konfigurirajte ga pomoću klase LiquidCrystal_I2C . Ovdje moramo proslijediti broj adrese, retka i stupca koji su u našem slučaju 0x3f, 16 i 2.
LCD LiquidCrystal_I2C (0x3f, 16, 2);
Unutar postavki () prijavite impulsni ulazni pin za primanje signala. Zatim ispišite poruku dobrodošlice na LCD koja će se prikazati tijekom inicijalizacije projekta.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.pozadinsko svjetlo (); lcd.setCursor (0, 0); lcd.print ("DOBRO DOŠLI U"); lcd.setCursor (0,1); lcd.print ("DIGEST CIRCUIT"); kašnjenje (2000); lcd.clear (); }
Unutar while petlje, trajanje ulaza impulsa iz LDR izračunava se pomoću funkcije pulseIn i definira se vrsta pulsa koji je u našem slučaju LOW. Vrijednost se ispisuje na serijskom monitoru u svrhu uklanjanja pogrešaka. Predlaže se provjeriti trajanje, jer bi moglo biti različito za različite postavke.
nepotpisano dugo trajanje = pulseIn (8, HIGH); Serial.println (trajanje);
Nakon provjere trajanja svih impulsa odašiljača, sada imamo 16 raspona trajanja impulsa, što je zapisano za referencu. Sada ih usporedite pomoću petlje IF-ELSE za dobivanje točnih podataka koji su poslani. U nastavku je navedena jedna ogledna petlja za ključ 1:
if (trajanje> 10000 && trajanje <17000) { lcd.setCursor (0, 0); lcd.print ("Primljeno: 1"); }
Li-Fi odašiljač i prijemnik koji koriste Arduino
Nakon prijenosa kompletnog koda u oba Arduinosa, pritisnite bilo koju tipku na tipkovnici na strani prijemnika i ista će se znamenka prikazati na LCD-u 16x2 na strani prijemnika.


Na ovaj se način Li-Fi može koristiti za prijenos podataka kroz svjetlost. Nadam se da ste uživali u članku i naučili nešto novo iz njega, ako sumnjate, možete koristiti odjeljak za komentare ili pitati na forumima.
