- Potrebne komponente
- Kratek uvod v Li-Fi
- Odsek Li-Fi oddajnika z uporabo Arduina
- Odsek sprejemnika Li-Fi z uporabo Arduina
- Kodiranje Arduino za Li-Fi
Li-Fi (Light Fidelity) je napredna tehnologija, ki omogoča prenos podatkov z uporabo optične komunikacije, kot je vidna svetloba. Podatki Li-Fi lahko potujejo skozi svetlobo in jih nato razlagajo na strani sprejemnika s katero koli svetlobno občutljivo napravo, kot sta LDR ali fotodioda. Li-Fi komunikacija je lahko 100-krat hitrejša od Wi-Fi.
V tem projektu bomo prikazali komunikacijo Li-Fi z dvema Arduino. Tu se besedilni podatki prenašajo z LED in 4x4 tipkovnico. In se dekodira na strani sprejemnika z uporabo LDR. Pred tem smo podrobno razložili Li-Fi in uporabili Li-Fi za prenos zvočnih signalov.
Potrebne komponente
- Arduino UNO
- LDR senzor
- Tipkovnica 4 * 4
- 16 * 2 alfanumerični LCD
- I2C vmesniški modul za LCD
- Breadboard
- Povezovanje skakalcev
- 5 mm LED
Kratek uvod v Li-Fi
Kot smo že omenili, je Li-Fi napredna komunikacijska tehnologija, ki je lahko 100-krat hitrejša od komunikacije Wi-Fi. S to tehnologijo lahko podatke prenesemo z viri vidne svetlobe. Predstavljajte si, če lahko dostopate do hitrega interneta z uporabo svetlobnega vira. Se ne zdi zelo zanimivo?
Li-Fi uporablja vidno svetlobo kot komunikacijski medij za prenos podatkov. LED lahko deluje kot vir svetlobe, fotodioda pa kot oddajnik, ki sprejema svetlobne signale in jih oddaja nazaj. Z nadzorom svetlobnega impulza na strani oddajnika lahko pošljemo unikatne vzorce podatkov. Ta pojav se pojavi pri izjemno visoki hitrosti in ga ni mogoče videti skozi človeško oko. Nato na strani sprejemnika fotodioda ali od svetlobe odvisni upor (LDR) pretvori podatke v koristne informacije.
Odsek Li-Fi oddajnika z uporabo Arduina
Kot je prikazano na zgornji sliki, je v oddajnem delu komunikacije Li-Fi tu uporabljena tipkovnica. To pomeni, da bomo s tipkovnico izbirali besedilo za prenos. Nato informacije obdeluje nadzorna enota, ki v našem primeru ni nič drugega kot Arduino. Arduino podatke pretvori v binarne impulze, ki jih lahko za prenos odda v vir LED. Nato se ti podatki prenesejo na LED svetlobo, ki pošlje vidne svetlobne impulze na sprejemno stran.
Shema vezja odseka oddajnika:
Nastavitev strojne opreme na strani oddajnika:
Odsek sprejemnika Li-Fi z uporabo Arduina
V odseku sprejemnika senzor LDR sprejema vidne svetlobne impulze s strani oddajnika in jih pretvori v razložljive električne impulze, ki se napajajo v Arduino (krmilna enota). Arduino prejme ta impulz, ga pretvori v dejanske podatke in prikaže na 16x2 LCD zaslonu.
Shema vezja sprejemnika:
Nastavitev strojne opreme na strani sprejemnika:
Kodiranje Arduino za Li-Fi
Kot je prikazano zgoraj, imamo dva odseka za Li-Fi oddajnik in sprejemnik. Popolne kode za vsak odsek so podane na dnu vadnice, postopna razlaga kod pa spodaj:
Koda oddajnika Li-Fi Arduino:
Na strani oddajnika je Arduino Nano uporabljen s 4x4 tipkovnico in LED. Najprej se vse datoteke odvisne knjižnice prenesejo in namestijo v Arduino prek Arduino IDE. Tu se knjižnica tipkovnice uporablja za uporabo tipkovnice 4 * 4, ki jo lahko prenesete s te povezave. Več o povezovanju tipkovnice 4x4 z Arduinom preberite tukaj.
#include
Po uspešni namestitvi knjižničnih datotek določite št. vrstic in vrednosti stolpcev, kar je 4 za obe, saj smo tukaj uporabili tipkovnico 4 * 4.
const byte ROW = 4; const bajt COL = 4; char tipkovna koda = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Nato so definirani zatiči Arduino, ki se uporabljajo za povezavo s tipkovnico 4 * 4. V našem primeru smo uporabili A5, A4, A3 in A2 za R1, R2, R3, R4 oziroma A1, A0, 12, 11 za C1, C2, C3 in C4.
bajtna vrsticaPin = {A5, A4, A3, A2}; bajt colPin = {A1, A0, 12, 11}; Tipkovnica customKeypad = Tipkovnica (makeKeymap (koda tipke), rowPin, colPin, ROW, COL);
Znotraj nastavitve () je definiran izhodni zatič, kamor je priključen vir LED. Prav tako je med vklopom naprave izključen.
void setup () { pinMode (8, IZHOD); digitalWrite (8, LOW); }
V notranjosti pa zanko, se vrednosti prejete od tipkovnice prebral uporabo customKeypad.getKey () in je v primerjavi v če-ostalo zanke, za ustvarjanje edinstvene impulze v vsaki ključnih stiskalnice. V kodi je razvidno, da so časovni intervali edinstveni za vse ključne vrednosti.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); zamuda (10); digitalWrite (8, LOW); }
Koda sprejemnika Li-Fi Arduino:
Na strani sprejemnika Li-Fi je Arduino UNO povezan s senzorjem LDR, kot je prikazano na vezju. Tu je senzor LDR serijsko povezan z uporom, da tvori vezje delilnika napetosti, analogna izhodna napetost senzorja pa se kot vhodni signal napaja v Arduino. Tu uporabljamo modul I2C z LCD-jem, da zmanjšamo št. povezav z Arduino, saj ta modul zahteva le 2 podatkovna zatiča SCL / SDA in 2 napajalna zatiča.
Zaženite kodo tako, da v kodo vključite vse potrebne knjižnične datoteke, kot so Wire.h za komunikacijo I2C, LiquidCrystal_I2C.h za LCD itd. Te knjižnice bi bile vnaprej nameščene z Arduinom, zato jih ni treba prenesti.
#include
Za uporabo modula I2C za 16 * 2 alfanumerični LCD ga konfigurirajte z uporabo razreda LiquidCrystal_I2C . Tu moramo predati naslov, vrstico in številko stolpca, ki so v našem primeru 0x3f, 16 in 2.
LCD LiquidCrystal_I2C (0x3f, 16, 2);
V nastavitvah () navedite impulzni vhodni zatič za sprejem signala. Nato na LCD-zaslon natisnite pozdravno sporočilo, ki bo prikazano med inicializacijo projekta.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd. backlight (); lcd.setCursor (0, 0); lcd.print ("DOBRODOŠLI NA"); lcd.setCursor (0, 1); lcd.print ("DIGEST CIRCUIT"); zamuda (2000); lcd.clear (); }
V zanki while se trajanje vnosa impulza iz LDR izračuna s pomočjo funkcije pulseIn in določi se vrsta impulza, ki je v našem primeru LOW. Vrednost je za odpravljanje napak natisnjena na serijskem monitorju. Priporočamo, da preverite trajanje, saj se lahko pri različnih nastavitvah razlikuje.
nepodpisano dolgo trajanje = pulseIn (8, HIGH); Serial.println (trajanje);
Po preverjanju trajanja vseh impulzov oddajnika imamo zdaj 16 razponov trajanja impulzov, kar je zapisano za referenco. Zdaj jih primerjajte z uporabo zanke IF-ELSE za pridobivanje natančnih podatkov, ki so bili poslani. Spodaj je navedena ena vzorčna zanka za ključ 1:
if (trajanje> 10000 && trajanje <17000) { lcd.setCursor (0, 0); lcd.print ("Prejeto: 1"); }
Li-Fi oddajnik in sprejemnik z uporabo Arduina
Po nalaganju celotne kode v oba Arduinosa pritisnite kateri koli gumb na tipkovnici na strani sprejemnika in ista številka bo prikazana na LCD-u 16x2 na strani sprejemnika.
Tako lahko Li-Fi uporabljamo za prenos podatkov skozi svetlobo. Upam, da vam je bil članek všeč in ste se iz njega naučili kaj novega. Če dvomite, lahko uporabite odsek za komentarje ali vprašate na forumih.