- Požadované komponenty
- Stručný úvod do Li-Fi
- Sekce vysílače Li-Fi pomocí Arduina
- Sekce přijímače Li-Fi pomocí Arduina
- Arduino kódování pro Li-Fi
Li-Fi (Light Fidelity) je pokročilá technologie, která umožňuje přenos dat pomocí optické komunikace, jako je viditelné světlo. Data Li-Fi mohou cestovat světlem a poté interpretována na straně přijímače pomocí jakéhokoli zařízení citlivého na světlo, jako je LDR nebo fotodioda. Komunikace Li-Fi může být stokrát rychlejší než Wi-Fi.
Tady v tomto projektu budeme demonstrovat Li-Fi komunikaci pomocí dvou Arduino. Zde se textová data přenášejí pomocí LED a 4x4 klávesnice. A je dekódováno na straně přijímače pomocí LDR. Předtím jsme podrobně vysvětlili Li-Fi a použili jsme Li-Fi k přenosu zvukových signálů.
Požadované komponenty
- Arduino UNO
- Senzor LDR
- 4 * 4 klávesnice
- 16 * 2 alfanumerický LCD
- Modul rozhraní I2C pro LCD
- Nepájivá deska
- Připojení propojek
- 5 mm LED
Stručný úvod do Li-Fi
Jak již bylo uvedeno výše, Li-Fi je pokročilá komunikační technologie, která může být stokrát rychlejší než komunikace Wi-Fi. Pomocí této technologie lze data přenášet pomocí zdrojů viditelného světla. Představte si, že máte přístup k vysokorychlostnímu internetu pouze pomocí světelného zdroje. Není to velmi zajímavé?
Li-Fi používá viditelné světlo jako komunikační médium pro přenos dat. LED může fungovat jako zdroj světla a fotodioda funguje jako transceiver, který přijímá světelné signály a přenáší je zpět. Ovládáním světelného impulsu na straně vysílače můžeme odesílat jedinečné datové vzory. K tomuto jevu dochází extrémně vysokou rychlostí a nelze jej vidět lidským okem. Poté na straně přijímače fotodioda nebo rezistor závislý na světle (LDR) převádí data na užitečné informace.
Sekce vysílače Li-Fi pomocí Arduina
Jak je znázorněno na obrázku výše, ve vysílací části komunikace Li-Fi se zde používá klávesnice. To znamená, že pomocí klávesnice vybereme text, který má být přenesen. Poté jsou informace zpracovány řídicí jednotkou, což v našem případě není nic jiného než Arduino. Arduino převádí informace na binární impulsy, které lze přenést do zdroje LED pro přenos. Poté jsou tato data přivedena na LED světlo, které vysílá impulsy viditelného světla na stranu přijímače.
Schéma zapojení sekce vysílače:
Nastavení hardwaru pro stranu vysílače:
Sekce přijímače Li-Fi pomocí Arduina
V sekci přijímače snímač LDR přijímá impulsy viditelného světla ze strany vysílače a převádí jej na interpretovatelné elektrické impulsy, které jsou přiváděny do Arduina (řídicí jednotky). Arduino přijímá tento puls a převádí jej na skutečná data a zobrazuje jej na 16x2 LCD displeji.
Schéma zapojení sekce přijímače:
Nastavení hardwaru na straně přijímače:
Arduino kódování pro Li-Fi
Jak je uvedeno výše, máme dvě sekce pro vysílač a přijímač Li-Fi. Kompletní kódy pro každou sekci jsou uvedeny ve spodní části tutoriálu a postupné vysvětlení kódů je uvedeno níže:
Kód vysílače Arduino Li-Fi:
Na straně vysílače je Arduino Nano používáno s klávesnicí a LED 4x4. Nejprve se všechny závislé soubory knihovny stáhnou a nainstalují do Arduina přes Arduino IDE. Zde se knihovna klávesnic používá pro použití klávesnice 4 * 4, kterou lze stáhnout z tohoto odkazu. Další informace o propojení klávesnic 4x4 s Arduino naleznete zde.
#zahrnout
Po úspěšné instalaci knihovních souborů definujte č. hodnot řádků a sloupců, což je pro oba 4, protože jsme zde použili klávesnici 4 * 4.
const byte ROW = 4; const byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Poté jsou definovány piny Arduino, které se používají k propojení s klávesnicí 4 * 4. V našem případě jsme použili A5, A4, A3 a A2 pro R1, R2, R3, R4, respektive A1, A0, 12, 11 pro C1, C2, C3 a C4.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Keypad customKeypad = Keypad (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
Uvnitř setup () je definován výstupní pin, kde je připojen zdroj LED. Při zapnutí zařízení je také udržován VYPNUTÝ.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Uvnitř smyčky while jsou hodnoty přijímané z klávesnice čteny pomocí customKeypad.getKey () a jsou porovnávány ve smyčce if-else , aby se generovaly jedinečné pulsy při každém stisknutí klávesy. V kódu je vidět, že intervaly časovače jsou udržovány jedinečné pro všechny klíčové hodnoty.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); zpoždění (10); digitalWrite (8, LOW); }
Kód přijímače Arduino Li-Fi:
Na straně přijímače Li-Fi je Arduino UNO propojeno se snímačem LDR, jak je znázorněno na schématu zapojení. Zde je snímač LDR zapojen do série s odporem, aby vytvořil obvod děliče napětí, a analogový napěťový výstup ze snímače je přiváděn do Arduina jako vstupní signál. Zde používáme modul I2C s LCD, abychom snížili počet. připojení s Arduino, protože tento modul vyžaduje pouze 2 datové piny SCL / SDA a 2 napájecí piny.
Začněte kód zahrnutím všech požadovaných souborů knihovny do kódu, jako je Wire.h pro komunikaci I2C, LiquidCrystal_I2C.h pro LCD atd. Tyto knihovny by byly předinstalovány s Arduino, takže není nutné je stahovat.
#zahrnout
Pro použití modulu I2C pro 16 * 2 alfanumerický LCD jej nakonfigurujte pomocí třídy LiquidCrystal_I2C . Zde musíme předat adresu, řádek a číslo sloupce, které jsou v našem případě 0x3f, 16 a 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Uvnitř setup () deklarujte pulzní vstupní kolík pro příjem signálu. Poté si na LCD vytiskněte uvítací zprávu, která se zobrazí během inicializace projektu.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("VÍTEJTE V"); lcd.setCursor (0, 1); lcd.print ("OKRUH DIGEST"); zpoždění (2000); lcd.clear (); }
Uvnitř smyčky while se doba trvání pulzního vstupu z LDR počítá pomocí funkce pulseIn a definuje se typ pulzu, který je v našem případě LOW. Hodnota je vytištěna na sériovém monitoru pro účely ladění. Doporučuje se zkontrolovat dobu trvání, protože u různých nastavení se může lišit.
nepodepsané dlouhé trvání = pulseIn (8, HIGH); Serial.println (doba trvání);
Po kontrole trvání všech pulzů vysílače máme nyní 16 rozsahů trvání pulzu, které jsou uvedeny pro referenci. Nyní je porovnejte pomocí smyčky IF-ELSE pro získání přesných dat, která byla přenesena. Jedna vzorkovací smyčka pro klíč 1 je uvedena níže:
pokud (doba trvání> 10 000 && doba trvání <17 000) { lcd.setCursor (0, 0); lcd.print ("Přijato: 1"); }
Vysílač a přijímač Li-Fi pomocí Arduina
Po nahrání celého kódu do obou Arduinos stiskněte libovolné tlačítko na klávesnici na straně přijímače a stejná číslice se zobrazí na 16x2 LCD na straně přijímače.
Takto lze Li-Fi použít k přenosu dat prostřednictvím světla. Doufám, že se vám článek líbil a dozvěděli jste se z něj něco nového, pokud máte pochybnosti, můžete použít sekci komentářů nebo se zeptat ve fórech.