- Wymagane składniki
- Krótkie wprowadzenie do Li-Fi
- Sekcja nadajnika Li-Fi wykorzystująca Arduino
- Odbiornik Li-Fi wykorzystujący Arduino
- Kodowanie Arduino dla Li-Fi
Li-Fi (Light Fidelity) to zaawansowana technologia umożliwiająca przesyłanie danych za pomocą komunikacji optycznej, takiej jak światło widzialne. Dane Li-Fi mogą przechodzić przez światło, a następnie interpretować je po stronie odbiornika za pomocą dowolnego urządzenia światłoczułego, takiego jak LDR lub fotodioda. Komunikacja Li-Fi może być 100 razy szybsza niż Wi-Fi.
Tutaj, w tym projekcie, będziemy demonstrować komunikację Li-Fi za pomocą dwóch Arduino. Tutaj dane tekstowe są przesyłane za pomocą klawiatury LED i klawiatury 4x4. I jest dekodowany po stronie odbiornika za pomocą LDR. Wcześniej wyjaśniliśmy szczegółowo Li-Fi i używaliśmy Li-Fi do przesyłania sygnałów audio.
Wymagane składniki
- Arduino UNO
- Czujnik LDR
- Klawiatura 4 * 4
- 16 * 2 alfanumeryczny wyświetlacz LCD
- Moduł interfejsu I2C dla LCD
- Płytka prototypowa
- Podłączanie zworek
- 5 mm dioda LED
Krótkie wprowadzenie do Li-Fi
Jak wspomniano powyżej, Li-Fi to zaawansowana technologia komunikacyjna, która może być 100 razy szybsza niż komunikacja Wi-Fi. Dzięki tej technologii dane można przesyłać za pomocą widzialnych źródeł światła. Wyobraź sobie, że możesz uzyskać dostęp do szybkiego Internetu za pomocą samego źródła światła. Czy nie wydaje się to bardzo interesujące?
Li-Fi wykorzystuje widzialne światło jako medium komunikacyjne do transmisji danych. Dioda LED może działać jako źródło światła, a fotodioda działa jako nadajnik-odbiornik, który odbiera sygnały świetlne i przesyła je z powrotem. Kontrolując impuls świetlny po stronie nadajnika, możemy wysyłać unikalne wzory danych. Zjawisko to występuje z bardzo dużą prędkością i nie można go zobaczyć ludzkim okiem. Następnie po stronie odbiornika fotodioda lub rezystor zależny od światła (LDR) przekształca dane w użyteczne informacje.
Sekcja nadajnika Li-Fi wykorzystująca Arduino
Jak pokazano na powyższym rysunku, w części nadawczej komunikacji Li-Fi jako wejście służy tutaj klawiatura. Oznacza to, że będziemy wybierać tekst do przesłania za pomocą klawiatury. Następnie informacja jest przetwarzana przez jednostkę sterującą, która w naszym przypadku jest niczym innym jak Arduino. Arduino konwertuje informacje na binarne impulsy, które mogą być podawane do źródła LED w celu transmisji. Następnie dane te są przekazywane do światła LED, które wysyła widzialne impulsy świetlne po stronie odbiornika.
Schemat obwodu sekcji nadajnika:
Konfiguracja sprzętu po stronie nadajnika:
Odbiornik Li-Fi wykorzystujący Arduino
W sekcji odbiornika czujnik LDR odbiera widzialne impulsy świetlne od strony nadajnika i przetwarza je na interpretowalne impulsy elektryczne, które są podawane do Arduino (jednostki sterującej). Arduino odbiera ten impuls i konwertuje go na rzeczywiste dane i wyświetla na wyświetlaczu LCD 16x2.
Schemat obwodu sekcji odbiornika:
Konfiguracja sprzętu po stronie odbiornika:
Kodowanie Arduino dla Li-Fi
Jak pokazano powyżej, mamy dwie sekcje dla nadajnika i odbiornika Li-Fi. Pełne kody dla każdej sekcji podano na dole samouczka, a krokowe objaśnienie kodów podano poniżej:
Kod nadajnika Arduino Li-Fi:
Po stronie nadajnika Arduino Nano jest używany z klawiaturą 4x4 i diodą LED. Najpierw wszystkie zależne pliki bibliotek są pobierane i instalowane do Arduino za pośrednictwem Arduino IDE. W tym przypadku biblioteka klawiatury jest używana do korzystania z klawiatury 4 * 4, którą można pobrać z tego łącza. Dowiedz się więcej o łączeniu klawiatury 4x4 z Arduino tutaj.
#zawierać
Po pomyślnej instalacji plików biblioteki zdefiniuj nie. wartości wierszy i kolumn, czyli 4 dla obu, ponieważ użyliśmy tutaj klawiatury 4 * 4.
stały bajt ROW = 4; bajt stały COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Następnie definiowane są piny Arduino, które służą do współpracy z klawiaturą 4 * 4. W naszym przypadku użyliśmy odpowiednio A5, A4, A3 i A2 dla R1, R2, R3, R4 i A1, A0, 12, 11 odpowiednio dla C1, C2, C3 i C4.
bajt rowPin = {A5, A4, A3, A2}; bajt colPin = {A1, A0, 12, 11}; Keypad customKeypad = Keypad (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
W konfiguracji () zdefiniowany jest pin wyjściowy, do którego podłączone jest źródło LED. Ponadto pozostaje WYŁĄCZONY podczas włączania urządzenia.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, NISKI); }
Wewnątrz podczas pętli, wartości otrzymane z klawiatury są odczytywane za pomocą customKeypad.getKey () i jest porównywana w if-else pętli do generowania unikalnych impulsy w każdym naciśnięć klawiszy. W kodzie widać, że interwały timera są unikalne dla wszystkich wartości kluczowych.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); opóźnienie (10); digitalWrite (8, NISKI); }
Kod odbiornika Arduino Li-Fi:
Po stronie odbiornika Li-Fi Arduino UNO jest połączony z czujnikiem LDR, jak pokazano na schemacie obwodu. Tutaj czujnik LDR jest połączony szeregowo z rezystorem, tworząc obwód dzielnika napięcia, a analogowe napięcie wyjściowe z czujnika jest podawane do Arduino jako sygnał wejściowy. Tutaj używamy modułu I2C z wyświetlaczem LCD, aby zmniejszyć nie. połączeń z Arduino, ponieważ ten moduł wymaga tylko 2 pinów danych SCL / SDA i 2 pinów zasilania.
Uruchom kod, dołączając do kodu wszystkie wymagane pliki bibliotek, takie jak Wire.h do komunikacji I2C, LiquidCrystal_I2C.h do LCD itp. Te biblioteki byłyby wstępnie zainstalowane z Arduino, więc nie ma potrzeby ich pobierania.
#zawierać
Aby używać modułu I2C dla 16 * 2 alfanumerycznych LCD, skonfiguruj go za pomocą klasy LiquidCrystal_I2C . Tutaj musimy podać adres, numer wiersza i kolumny, które w naszym przypadku wynoszą odpowiednio 0x3f, 16 i 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Wewnątrz setup (), zadeklaruj pin wejścia impulsu do odbioru sygnału. Następnie wydrukuj wiadomość powitalną na wyświetlaczu LCD, która zostanie wyświetlona podczas inicjalizacji projektu.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); podświetlenie LCD(); lcd.setCursor (0, 0); lcd.print ("WITAMY W"); lcd.setCursor (0, 1); lcd.print ("PRZEGLĄD OBWODU"); opóźnienie (2000); lcd.clear (); }
Wewnątrz while pętli trwania impulsu wejściowego obliczana jest z użyciem LDR pulseIn funkcję, a typ impulsu jest zdefiniowany, który jest niski w naszym przypadku. Wartość jest drukowana na monitorze szeregowym w celu debugowania. Zaleca się sprawdzenie czasu trwania, ponieważ może on być inny dla różnych konfiguracji.
unsigned long duration = pulseIn (8, HIGH); Serial.println (czas trwania);
Po sprawdzeniu czasu trwania wszystkich impulsów nadajnika mamy teraz 16 zakresów czasu trwania impulsów, które są zanotowane w celach informacyjnych. Teraz porównaj je za pomocą pętli IF-ELSE , aby uzyskać dokładne dane, które zostały przesłane. Poniżej przedstawiono przykładową pętlę dla klucza 1:
if (czas trwania> 10000 && czas trwania <17000) { lcd.setCursor (0, 0); lcd.print ("Otrzymano: 1"); }
Nadajnik i odbiornik Li-Fi wykorzystujący Arduino
Po wgraniu całego kodu do obu Arduino należy nacisnąć dowolny przycisk na klawiaturze po stronie odbiornika, a ta sama cyfra zostanie wyświetlona na wyświetlaczu LCD 16x2 po stronie odbiornika.
W ten sposób można wykorzystać Li-Fi do przesyłania danych przez światło. Mam nadzieję, że podobał Ci się artykuł i nauczyłeś się z niego czegoś nowego. Jeśli masz jakiekolwiek wątpliwości, możesz skorzystać z sekcji komentarzy lub zapytać na forach.