- Componente necesare
- Scurtă introducere în Li-Fi
- Secțiunea emițător Li-Fi folosind Arduino
- Secțiunea receptor Li-Fi folosind Arduino
- Codificare Arduino pentru Li-Fi
Li-Fi (Light Fidelity) este o tehnologie avansată care permite transferul de date folosind comunicații optice, cum ar fi lumina vizibilă. Datele Li-Fi pot călători prin lumină și apoi pot fi interpretate pe partea receptorului folosind orice dispozitiv sensibil la lumină, cum ar fi LDR sau fotodiodă. Comunicarea Li-Fi poate fi de 100 de ori mai rapidă decât Wi-Fi.
Aici, în acest proiect, vom demonstra comunicarea Li-Fi folosind două Arduino. Aici datele textului sunt transmise cu ajutorul tastaturii LED și 4x4. Și este decodat pe partea receptorului folosind LDR. Am explicat anterior Li-Fi în detaliu și am folosit Li-Fi pentru a transfera semnale audio.
Componente necesare
- Arduino UNO
- Senzor LDR
- Tastatură 4 * 4
- 16 * 2 LCD alfanumeric
- Modul de interfață I2C pentru LCD
- Breadboard
- Conectarea jumperilor
- LED de 5 mm
Scurtă introducere în Li-Fi
După cum sa discutat mai sus, Li-Fi este o tehnologie avansată de comunicații care poate fi de 100 de ori mai rapidă decât comunicația Wi-Fi. Folosind această tehnologie, datele pot fi transferate folosind surse de lumină vizibile. Imaginați-vă, dacă puteți accesa internetul de mare viteză doar folosind sursa de lumină. Nu pare foarte interesant?
Li-Fi folosește lumina vizibilă ca mediu de comunicare pentru transmiterea datelor. Un LED poate acționa ca o sursă de lumină, iar fotodioda acționează ca un transceiver care primește semnale luminoase și le transmite înapoi. Prin controlul impulsului de lumină de pe partea transmițătorului, putem trimite modele de date unice. Acest fenomen apare cu o viteză extrem de mare și nu poate fi văzut prin ochiul uman. Apoi, pe partea receptorului, fotodioda sau rezistorul dependent de lumină (LDR) transformă datele în informații utile.
Secțiunea emițător Li-Fi folosind Arduino
Așa cum se arată în figura de mai sus, în partea transmițătoare a comunicației Li-Fi, tastatura este utilizată ca intrare aici. Asta înseamnă că vom selecta textul care va fi transmis folosind tastatura. Apoi, informațiile sunt procesate de unitatea de control care nu este altceva decât Arduino în cazul nostru. Arduino convertește informația în impulsuri binare care pot fi alimentate către o sursă LED pentru transmisie. Apoi aceste date sunt alimentate cu lumină LED care trimite impulsurile de lumină vizibilă către partea receptorului.
Diagrama circuitului secțiunii emițătorului:
Configurare hardware pentru partea transmițătorului:
Secțiunea receptor Li-Fi folosind Arduino
În secțiunea receptorului, senzorul LDR primește impulsurile de lumină vizibilă din partea transmițătorului și îl transformă în impulsuri electrice interpretabile, care sunt alimentate către Arduino (unitatea de control). Arduino primește acest impuls și îl convertește în date reale și îl afișează pe un ecran LCD de 16x2.
Diagrama circuitului secțiunii receptorului:
Configurare hardware pentru partea receptorului:
Codificare Arduino pentru Li-Fi
După cum se arată mai sus, avem două secțiuni pentru emițător și receptor Li-Fi. Codurile complete pentru fiecare secțiune sunt date în partea de jos a tutorialului și o explicație pas cu pas a codurilor este dată mai jos:
Codul emițătorului Li-Fi Arduino:
În partea transmițătorului, Arduino Nano este utilizat cu tastatură 4x4 și LED. În primul rând, toate fișierele dependente ale bibliotecii sunt descărcate și instalate pe Arduino prin Arduino IDE. Aici, biblioteca tastaturii este utilizată pentru utilizarea tastaturii 4 * 4 care poate fi descărcată de pe acest link. Aflați mai multe despre interfața tastaturii 4x4 cu Arduino aici.
#include
După instalarea cu succes a fișierelor de bibliotecă, definiți nr. de rânduri și valori de coloană, care este 4 pentru ambele, deoarece am folosit o tastatură 4 * 4 aici.
octet const ROW = 4; octet const COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Apoi, sunt definite pinii Arduino care sunt folosiți pentru interfața cu tastatura 4 * 4. În cazul nostru, am folosit A5, A4, A3 și A2 pentru R1, R2, R3, R4, respectiv A1, A0, 12, 11 pentru C1, C2, C3 și respectiv C4.
octet rândPin = {A5, A4, A3, A2}; octet colPin = {A1, A0, 12, 11}; Tastatură personalizatăTastatură = Tastatură (makeKeymap (keyscode), rowPin, colPin, ROW, COL);
În interiorul setării (), pinul de ieșire este definit, unde este conectată sursa LED. De asemenea, este menținut OFF în timp ce porniți dispozitivul.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
În bucla while , valorile primite de la tastatură sunt citite folosind customKeypad.getKey () și este comparată în bucla if-else , pentru a genera impulsuri unice în fiecare apăsare a tastei. Se poate vedea în cod că intervalele temporizatorului sunt păstrate unice pentru toate valorile cheie.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); întârziere (10); digitalWrite (8, LOW); }
Codul receptorului Arduino Li-Fi:
În partea receptorului Li-Fi, Arduino UNO este interfațat cu un senzor LDR așa cum se arată în diagrama circuitului. Aici senzorul LDR este conectat în serie cu un rezistor pentru a forma un circuit divizor de tensiune, iar ieșirea analogică de tensiune de la senzor este alimentată către Arduino ca semnal de intrare. Aici folosim un modul I2C cu LCD pentru a reduce nr. de conexiuni cu Arduino deoarece acest modul necesită doar 2 pini de date SCL / SDA și 2 pini de alimentare.
Porniți codul prin includerea tuturor fișierelor bibliotecii necesare în cod, cum ar fi Wire.h pentru comunicații I2C, LiquidCrystal_I2C.h pentru LCD etc. Aceste biblioteci ar fi preinstalate cu Arduino, deci nu este nevoie să le descărcați.
#include
Pentru utilizarea modulului I2C pentru 16 * 2 LCD alfanumeric, configurați-l utilizând clasa LiquidCrystal_I2C . Aici trebuie să trecem adresa, rândul și numărul coloanei care sunt 0x3f, 16 și respectiv 2 în cazul nostru.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
În interiorul setării (), declarați pinul de intrare a impulsului pentru primirea semnalului. Apoi tipăriți un mesaj de întâmpinare pe ecranul LCD care va fi afișat în timpul inițializării proiectului.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("BINE AȚI VENIT LA"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); întârziere (2000); lcd.clear (); }
În interiorul buclei while , durata de intrare a impulsului de la LDR este calculată utilizând funcția pulseIn , iar tipul de impuls este definit, care este scăzut în cazul nostru. Valoarea este tipărită pe monitorul serial în scopuri de depanare. Este sugerat să verificați durata, deoarece ar putea fi diferit pentru diferite configurări.
durată lungă nesemnată = pulseIn (8, HIGH); Serial.println (durata);
După verificarea duratelor pentru toate impulsurile emițătorului, avem acum 16 intervale de durată a impulsurilor, care sunt notate pentru referință. Acum comparați-le folosind o buclă IF-ELSE pentru a obține datele exacte care au fost transmise. Un exemplu de buclă pentru cheia 1 este prezentat mai jos:
if (durata> 10000 && durata <17000) { lcd.setCursor (0, 0); lcd.print („Primit: 1”); }
Transmițător și receptor Li-Fi folosind Arduino
După încărcarea codului complet în ambele Arduinos, apăsați orice buton de pe tastatură în partea receptorului și aceeași cifră va fi afișată pe ecranul LCD 16x2 din partea receptorului.
Acesta este modul în care Li-Fi poate fi utilizat pentru a transmite date prin lumină. Sper că ți-a plăcut articolul și ai învățat ceva nou din el, dacă ai vreo îndoială, poți folosi secțiunea de comentarii sau întreba pe forumuri.