- Súčasti sú povinné
- Stručný úvod do Li-Fi
- Sekcia vysielača Li-Fi pomocou Arduina
- Sekcia prijímača Li-Fi pomocou Arduina
- Arduino kódovanie pre Li-Fi
Li-Fi (Light Fidelity) je pokročilá technológia, ktorá umožňuje prenos dát pomocou optickej komunikácie, ako je viditeľné svetlo. Údaje Li-Fi môžu cestovať cez svetlo a potom sa interpretovať na strane prijímača pomocou ľubovoľného zariadenia citlivého na svetlo, ako je LDR alebo fotodióda. Komunikácia Li-Fi môže byť stokrát rýchlejšia ako Wi-Fi.
Tu v tomto projekte budeme demonštrovať Li-Fi komunikáciu pomocou dvoch Arduino. Tu sa textové údaje prenášajú pomocou LED a klávesnice 4x4. A je dekódovaný na strane prijímača pomocou LDR. Predtým sme podrobne vysvetlili Li-Fi a použili sme Li-Fi na prenos zvukových signálov.
Súčasti sú povinné
- Arduino UNO
- LDR senzor
- 4 * 4 klávesnica
- 16 * 2 alfanumerický LCD
- Modul rozhrania I2C pre LCD
- Nepál
- Prepojovacie prepojky
- 5 mm LED
Stručný úvod do Li-Fi
Ako bolo uvedené vyššie, Li-Fi je pokročilá komunikačná technológia, ktorá môže byť stokrát rýchlejšia ako komunikácia Wi-Fi. Pomocou tejto technológie možno údaje prenášať pomocou zdrojov viditeľného svetla. Predstavte si, že ak máte prístup k vysokorýchlostnému internetu iba pomocou svetelného zdroja. Nezdá sa vám to veľmi zaujímavé?
Li-Fi používa ako komunikačné médium na prenos dát viditeľné svetlo. LED môže slúžiť ako svetelný zdroj a fotodióda funguje ako vysielač-prijímač, ktorý prijíma svetelné signály a prenáša ich späť. Ovládaním svetelného impulzu na strane vysielača môžeme odosielať jedinečné dátové vzory. Tento jav sa vyskytuje pri extrémne vysokej rýchlosti a nemožno ho vidieť ľudským okom. Potom na strane prijímača fotodióda alebo rezistor závislý od svetla (LDR) prevádza údaje na užitočné informácie.
Sekcia vysielača Li-Fi pomocou Arduina
Ako je znázornené na obrázku vyššie, vo vysielacej časti komunikácie Li-Fi sa tu používa klávesnica. To znamená, že pomocou klávesnice vyberieme text, ktorý sa má preniesť. Potom sú informácie spracované riadiacou jednotkou, ktorá v našom prípade nie je nič iné ako Arduino. Arduino prevádza informácie na binárne impulzy, ktoré je možné priviesť do zdroja LED na prenos. Potom sú tieto dáta vedené do LED svetla, ktoré vysiela impulzy viditeľného svetla na stranu prijímača.
Schéma zapojenia sekcie vysielača:
Hardvérové nastavenie pre stranu vysielača:
Sekcia prijímača Li-Fi pomocou Arduina
V časti prijímača snímač LDR prijíma impulzy viditeľného svetla zo strany vysielača a prevádza ho na interpretovateľné elektrické impulzy, ktoré sa privádzajú do Arduina (riadiacej jednotky). Arduino prijíma tento impulz a prevádza ho na skutočné údaje a zobrazuje ho na LCD displeji 16x2.
Schéma zapojenia prijímača:
Hardvérové nastavenie na strane prijímača:
Arduino kódovanie pre Li-Fi
Ako je uvedené vyššie, máme dve časti pre vysielač a prijímač Li-Fi. Kompletné kódy pre každú sekciu sú uvedené v dolnej časti výučby a postupné vysvetlenie kódov je uvedené nižšie:
Vysielač Arduino Li-Fi Kód:
Na strane vysielača sa Arduino Nano používa s klávesnicou a LED diódami 4x4. Najskôr sa všetky závislé súbory knižnice stiahnu a nainštalujú do Arduina cez Arduino IDE. Knižnica klávesníc sa tu používa na používanie klávesnice 4 * 4, ktorú je možné stiahnuť z tohto odkazu. Viac informácií o prepojení klávesnice 4x4 s Arduino sa dozviete tu.
#include
Po úspešnej inštalácii knižničných súborov definujte č. hodnôt riadkov a stĺpcov, čo je pre oba 4, pretože sme tu použili klávesnicu 4 * 4.
konštajtový byte RIADOK = 4; konštajtový bajt COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Potom sú definované piny Arduino, ktoré sa používajú na prepojenie s klávesnicou 4 * 4. V našom prípade sme použili A5, A4, A3 a A2 pre R1, R2, R3, R4, respektíve A1, A0, 12, 11 pre C1, C2, C3 a C4.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Klávesnica customKeypad = Klávesnica (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
Vo vnútri setup () je definovaný výstupný pin, kde je pripojený zdroj LED. Počas zapínania zariadenia je tiež vypnutý.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Vo vnútri while slučky sa hodnoty prijaté z klávesnice čítajú pomocou customKeypad.getKey () a porovnáva sa v slučke if-else , aby sa pri každom stlačení klávesu vygenerovali jedinečné impulzy. Na kóde je vidieť, že intervaly časovača sú pre všetky kľúčové hodnoty zachované jedinečné.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); oneskorenie (10); digitalWrite (8, LOW); }
Kód prijímača Arduino Li-Fi:
Na strane prijímača Li-Fi je Arduino UNO prepojené so snímačom LDR, ako je znázornené na schéme zapojenia. Tu je snímač LDR zapojený do série s rezistorom, aby sa vytvoril obvod deliča napätia a analógový napäťový výstup zo snímača sa privádza do Arduina ako vstupný signál. Tu používame modul I2C s LCD na zníženie č. spojení s Arduinom, pretože tento modul vyžaduje iba 2 dátové piny SCL / SDA a 2 napájacie piny.
Spustite kód zahrnutím všetkých požadovaných súborov knižnice do kódu, napríklad Wire.h pre komunikáciu I2C, LiquidCrystal_I2C.h pre LCD atď. Tieto knižnice by boli predinštalované s programom Arduino, takže nie je potrebné ich sťahovať.
#include
Ak chcete použiť modul I2C pre 16 * 2 alfanumerický LCD, nakonfigurujte ho pomocou triedy LiquidCrystal_I2C . Tu musíme odovzdať adresu, riadok a číslo stĺpca, ktoré sú v našom prípade 0x3f, 16 a 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Vo vnútri setup () deklarujte vstupný pin impulzu na príjem signálu. Potom vytlačte na LCD displeji uvítaciu správu, ktorá sa zobrazí počas inicializácie projektu.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print („VITAJTE V“); lcd.setCursor (0, 1); lcd.print ("OKRUH DIGEST"); meškanie (2000); lcd.clear (); }
Vo vnútri while cyklu sa dĺžka impulzného vstupu z LDR počíta pomocou funkcie pulseIn a definuje sa typ impulzu, ktorý je v našom prípade LOW. Hodnota je pre účely ladenia vytlačená na sériovom monitore. Odporúča sa skontrolovať trvanie, pretože pre rôzne nastavenia sa môže líšiť.
nepodpísané dlhé trvanie = pulseIn (8, HIGH); Serial.println (trvanie);
Po skontrolovaní trvania všetkých impulzov vysielača máme 16 rozsahov trvania impulzu, ktoré sú uvedené pre referenciu. Teraz ich porovnajte pomocou slučky IF-ELSE na získanie presných údajov, ktoré boli prenesené. Jedna vzorkovacia slučka pre kľúč 1 je uvedená nižšie:
if (trvanie> 10 000 && trvanie <17 000) { lcd.setCursor (0, 0); lcd.print ("Prijaté: 1"); }
Vysielač a prijímač Li-Fi pomocou Arduina
Po nahraní kompletného kódu do oboch Arduinos stlačte ľubovoľné tlačidlo na klávesnici na strane prijímača a rovnaká číslica sa zobrazí na 16x2 LCD na strane prijímača.
Takto sa dá Li-Fi použiť na prenos údajov svetlom. Dúfam, že sa vám článok páčil a dozvedeli ste sa z neho niečo nové. Ak máte pochybnosti, môžete použiť sekciu komentárov alebo sa opýtať na fórach.