- Szükséges alkatrészek
- Rövid bemutatás a Li-Fi-ben
- Li-Fi adó szakasz Arduino használatával
- Li-Fi vevő szakasz Arduino használatával
- Arduino kódolás a Li-Fi számára
A Li-Fi (Light Fidelity) egy fejlett technológia, amely lehetővé teszi az adatok átadását optikai kommunikáció, például látható fény segítségével. A Li-Fi adatok áthaladhatnak a fényben, majd a vevő oldalán értelmezhetők bármilyen fényérzékeny eszközzel, például LDR vagy fotodióda segítségével. A Li-Fi kommunikáció százszor gyorsabb lehet, mint a Wi-Fi.
Itt, ebben a projektben két Li-Fi kommunikációt fogunk bemutatni két Arduino segítségével. Itt a szöveges adatokat LED és 4x4 billentyűzettel továbbítják. És a vevő oldalán dekódolják az LDR segítségével. Korábban részletesen ismertettük a Li-Fi-t, és a Li-Fi-t használtuk audiojelek továbbítására.
Szükséges alkatrészek
- Arduino UNO
- LDR érzékelő
- 4 * 4 kezelő
- 16 * 2 alfanumerikus LCD
- I2C interfész modul LCD-hez
- Kenyérlemez
- Ugrók csatlakoztatása
- 5 mm-es LED
Rövid bemutatás a Li-Fi-ben
Mint a fentiekben említettük, a Li-Fi egy fejlett kommunikációs technológia, amely 100-szor gyorsabb lehet, mint a Wi-Fi kommunikáció. Ezzel a technológiával az adatok látható fényforrások segítségével továbbíthatók. Képzeld el, ha csak a fényforrásoddal tudsz hozzáférni a nagy sebességű internethez. Nem tűnik érdekesnek?
A Li-Fi a látható fényt használja kommunikációs eszközként az adatok továbbításához. A LED fényforrásként, a fotodióda pedig adó-vevőként működik, amely fényjeleket fogad és visszavezet. A fényimpulzus vezérlésével az adó oldalán egyedi adatmintákat küldhetünk. Ez a jelenség rendkívül nagy sebességgel fordul elő, és emberi szemen keresztül nem látható. Ezután a vevő oldalán a fotodióda vagy a fénytől függő ellenállás (LDR) átalakítja az adatokat hasznos információkká.
Li-Fi adó szakasz Arduino használatával
Amint a fenti ábra mutatja, a Li-Fi kommunikáció adó részében itt a kezelőt használják bemenetként. Ez azt jelenti, hogy a továbbítandó szöveget kiválasztjuk a billentyűzet segítségével. Ezután az információt a vezérlő egység dolgozza fel, amely esetünkben nem más, mint Arduino. Az Arduino az információt bináris impulzusokká konvertálja, amelyeket továbbíthat egy LED-forrásba. Ezután ezeket az adatokat LED fénybe juttatjuk, amely a látható fény impulzusait elküldi a vevő oldalára.
Az adóegység áramköri rajza:
Hardver beállítása az adó oldalán:
Li-Fi vevő szakasz Arduino használatával
A vevő részben az LDR szenzor veszi a látható fényimpulzusokat az adó oldaláról, és értelmezhető elektromos impulzusokká alakítja, amelyet az Arduino (vezérlőegység) táplál. Az Arduino megkapja ezt az impulzust, tényleges adatokká alakítja, és megjeleníti egy 16x2 LCD-kijelzőn.
A vevő szakasz áramköri rajza:
Hardver beállítása a vevő oldalához:
Arduino kódolás a Li-Fi számára
Amint a fentiekből látható, két szakaszunk van a Li-Fi adó és vevő számára. Az egyes szakaszok teljes kódjai az oktatóanyag alján találhatók, és a kódok lépésenkénti magyarázata az alábbiakban található:
Arduino Li-Fi adó kód:
Az adó oldalán az Arduino Nano 4x4 kezelővel és LED-del van felszerelve. Először az összes függő könyvtárfájlt letölti és telepíti az Arduino-ba az Arduino IDE-n keresztül. Itt a Kezelő könyvtár 4 * 4 billentyűzet használatára használható, amely erről a linkről tölthető le. Itt többet megtudhat a 4x4 kezelő és az Arduino összekapcsolásáról.
#include
A könyvtári fájlok sikeres telepítése után határozza meg a nem. sorok és oszlopok értéke, amely mindkettő esetében 4, mivel itt egy 4 * 4 billentyűzetet használtunk.
konst byte ROW = 4; konst byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Ezután meghatározzuk az Arduino csapokat, amelyek a 4 * 4 kezelővel való interfészhez kapcsolódnak. Esetünkben az A5-et, az A4-et, az A3-at és az A2-t használtuk R1, R2, R3, R4, illetve A1, A0, 12, 11-et a C1, C2, C3 és C4 esetében.
bájtosorPin = {A5, A4, A3, A2}; bájt colPin = {A1, A0, 12, 11}; Kezelő customKeypad = Kezelő (makeKeymap (kulcskód), rowPin, colPin, ROW, COL);
A setup () belsejében a kimeneti tű meghatározva van, ahol a LED forrás csatlakozik. A készülék bekapcsolása közben KI állapotban van.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
A while cikluson belül a kezelőtől kapott értékeket a customKeypad.getKey () használatával olvassuk le, és összehasonlítjuk az if-else ciklusban, hogy egyedi impulzusokat generáljunk az egyes gombnyomások során. A kódban látható, hogy az időzítési intervallumok egyediek maradnak az összes kulcsértéknél.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); késés (10); digitalWrite (8, LOW); }
Arduino Li-Fi vevő kód:
A Li-Fi vevő oldalán az Arduino UNO egy LDR érzékelővel van összekötve, ahogy azt a kapcsolási rajz mutatja. Itt az LDR szenzort sorba kötik egy ellenállással, hogy feszültségosztó áramkört képezzenek, és az érzékelő analóg feszültségét az Arduino táplálja bemeneti jelként. Itt egy I2C modult használunk LCD-vel a sz. az Arduinóval való kapcsolatokhoz, mivel ehhez a modulhoz csak 2 adatcsapra van szükség SCL / SDA és 2 tápra.
Indítsa el a kódot úgy, hogy belefoglalja az összes szükséges könyvtárfájlt a kódba, például a Wire.h az I2C kommunikációhoz, a LiquidCrystal_I2C.h az LCD-hez stb.
#include
Ha az I2C modult 16 * 2 alfanumerikus LCD-hez szeretné használni, konfigurálja azt a LiquidCrystal_I2C osztály használatával. Itt kell megadnunk a cím, a sor és az oszlop számát, amelyek esetünkben 0x3f, 16 és 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
A telepítésen belül () deklarálja az impulzus bemeneti tűt a jel vételéhez. Ezután nyomtasson egy üdvözlő üzenetet az LCD-re, amely megjelenik a projekt inicializálása során.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ÜDVÖZÖLJÜK"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); késés (2000); lcd.clear (); }
A while hurok belsejében az impulzus bemeneti időtartamát az LDR-ből kiszámítják a pulseIn függvény segítségével, és meghatározzák az impulzus típusát, amely esetünkben LOW. Az értéket hibakeresés céljából a soros monitorra nyomtatják. Javasoljuk, hogy ellenőrizze az időtartamot, mivel az eltérő lehet a különböző beállításoknál.
előjel nélküli hosszú idő = pulseIn (8, HIGH); Soros.println (időtartam);
Miután ellenőrizte az adó összes impulzusának időtartamát, mostantól 16 impulzus időtartományunk van, amelyet referenciaként jegyezünk fel. Most hasonlítsa össze őket egy IF-ELSE hurok segítségével a pontos adatok megszerzéséhez. Az alábbiakban egy minta hurok található az 1. kulcshoz:
if (időtartam> 10000 && időtartam <17000) { lcd.setCursor (0, 0); lcd.print ("Beérkezett: 1"); }
Li-Fi adó és vevő Arduino segítségével
Miután feltöltötted a teljes kódot mindkét Arduinos-ba, nyomj meg egy gombot a kezelőn a vevő oldalán, és ugyanaz a szám jelenik meg a 16x2 LCD-n a vevő oldalán.
Így lehet a Li-Fi-t felhasználni az adatok továbbításához a fényen keresztül. Remélem, hogy tetszett a cikk, és valami újat tanult belőle, ha kétségei merülnek fel, használhatja a megjegyzések részt vagy fórumokban kérdezhet.