- Komponenter krävs
- Kort introduktion till Li-Fi
- Li-Fi-sändarsektion med Arduino
- Li-Fi-mottagarsektion med Arduino
- Arduino-kodning för Li-Fi
Li-Fi (Light Fidelity) är en avancerad teknik som möjliggör överföring av data med optisk kommunikation som synligt ljus. Li-Fi-data kan färdas genom ljuset och tolkas sedan på mottagarsidan med vilken ljuskänslig enhet som helst som LDR eller fotodiod. Li-Fi-kommunikation kan vara 100 gånger snabbare än Wi-Fi.
Här i detta projekt kommer vi att demonstrera Li-Fi-kommunikation med två Arduino. Här överförs textdata med LED och 4x4 knappsats. Och den avkodas på mottagarsidan med hjälp av LDR. Vi har tidigare förklarat Li-Fi i detalj och använt Li-Fi för att överföra ljudsignaler.
Komponenter krävs
- Arduino UNO
- LDR-sensor
- 4 * 4 Knappsats
- 16 * 2 Alfanumerisk LCD
- I2C gränssnittsmodul för LCD
- Bakbord
- Anslutande tröjor
- 5 mm LED
Kort introduktion till Li-Fi
Som diskuterats ovan är Li-Fi en avancerad kommunikationsteknik som kan vara 100 gånger snabbare än Wi-Fi-kommunikation. Med denna teknik kan data överföras med synliga ljuskällor. Tänk dig om du kan komma åt höghastighetsinternet genom att bara använda din ljuskälla. Verkar det inte väldigt intressant?
Li-Fi använder synligt ljus som ett kommunikationsmedium för överföring av data. En LED kan fungera som ljuskälla och fotodioden fungerar som en sändtagare som tar emot ljussignaler och sänder tillbaka dem. Genom att styra ljuspulsen på sändarsidan kan vi skicka unika datamönster. Detta fenomen uppträder i extremt hög hastighet och kan inte ses genom det mänskliga ögat. På mottagarsidan omvandlar fotodioden eller ljusberoende motståndet (LDR) data till användbar information.
Li-Fi-sändarsektion med Arduino
Som visas i figuren ovan används tangentbordet som ingång här i sändardelen av Li-Fi-kommunikation. Det betyder att vi väljer texten som ska överföras med hjälp av knappsatsen. Då bearbetas informationen av styrenheten, vilket är inget annat än Arduino i vårt fall. Arduino omvandlar informationen till binära pulser som kan matas till en LED-källa för överföring. Därefter matas dessa data till LED-ljus som skickar de synliga ljuspulserna till mottagarsidan.
Kretsschema för sändaravsnittet:
Hårdvaruinställning för sändarsidan:
Li-Fi-mottagarsektion med Arduino
I mottagarsektionen tar LDR-sensorn emot de synliga ljuspulserna från sändarsidan och omvandlar den till tolkbara elektriska pulser, som matas till Arduino (styrenhet). Arduino tar emot denna puls och konverterar den till faktiska data och visar den på en 16x2 LCD-skärm.
Kretsschema för mottagarsektionen:
Hårdvaruinställning för mottagarsidan:
Arduino-kodning för Li-Fi
Som visas ovan har vi två avsnitt för Li-Fi-sändare och mottagare. De fullständiga koder för varje avsnitt ges längst ner i handledningen och en stegvis förklaring av koder ges nedan:
Arduino Li-Fi-sändarkod:
På sändarsidan används Arduino Nano med 4x4-knappsats och LED. Först laddas ned alla beroende biblioteksfiler och installeras till Arduino via Arduino IDE. Här används knappsatsbiblioteket för att använda 4 * 4 knappsats som kan laddas ner från den här länken. Lär dig mer om gränssnitt för 4x4-knappsats med Arduino här.
#omfatta
Efter en lyckad installation av biblioteksfiler, definiera nr. av rader och kolumnvärden som är 4 för båda eftersom vi har använt en 4 * 4 knappsats här.
const byte ROW = 4; konst byte COL = 4; char keycode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Därefter definieras Arduino-stiften som används för att ansluta till 4 * 4-knappsatsen. I vårt fall har vi använt A5, A4, A3 och A2 för R1, R2, R3, R4 respektive A1, A0, 12, 11 för C1, C2, C3 respektive C4.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Knappsats customKeypad = Knappsats (makeKeymap (nyckelkod), rowPin, colPin, ROW, COL);
Inuti installationen () definieras utgångsstiftet där LED-källan är ansluten. Dessutom hålls den AV när enheten slås PÅ.
ogiltig installation () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Inuti medan slinga läses värdena som tas emot från knappsatsen med hjälp av customKeypad.getKey () och det jämförs i if-else- slingan för att generera unika pulser i varje tangenttryckning. Det kan ses i koden att timerintervallen hålls unika för alla nyckelvärden.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); fördröjning (10); digitalWrite (8, LOW); }
Arduino Li-Fi-mottagarkod:
På Li-Fi-mottagarsidan är Arduino UNO gränssnitt med en LDR-sensor som visas i kretsschemat. Här är LDR-sensorn ansluten i serie med ett motstånd för att bilda en spänningsdelarkrets och den analoga spänningsutgången från sensorn matas till Arduino som en insignal. Här använder vi en I2C-modul med LCD för att minska antalet. anslutningar med Arduino eftersom den här modulen endast kräver två datapinnar SCL / SDA och 2 strömpinnar.
Starta koden genom att inkludera alla nödvändiga biblioteksfiler i koden som Wire.h för I2C-kommunikation, LiquidCrystal_I2C.h för LCD, etc. Dessa bibliotek skulle vara förinstallerade med Arduino, så det finns inget behov av att ladda ner dem.
#omfatta
För att använda I2C-modulen för 16 * 2 alfanumerisk LCD, konfigurera den med LiquidCrystal_I2C- klassen. Här måste vi skicka adressen, raden och kolumnnumret som är 0x3f, 16 respektive 2 i vårt fall.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Inuti installationen (), deklarera pulsingångsstiftet för mottagning av signalen. Skriv sedan ut ett välkomstmeddelande på LCD-skärmen som kommer att visas under initieringen av projektet.
ogiltig installation () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("VÄLKOMMEN TILL"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); fördröjning (2000); lcd.clear (); }
Inuti while- slingan beräknas pulsingångens varaktighet från LDR med hjälp av pulseIn- funktionen och den typ av puls som definieras som är LÅG i vårt fall. Värdet skrivs ut på den seriella bildskärmen för felsökningsändamål. Det rekommenderas att du kontrollerar varaktigheten, eftersom det kan vara annorlunda för olika inställningar.
osignerad lång varaktighet = pulseIn (8, HIGH); Serial.println (varaktighet);
Efter att ha kontrollerat varaktigheterna för alla sändarpulser har vi nu 16 pulslängdsområden, vilket noteras som referens. Jämför dem nu med en IF-ELSE- slinga för att få exakta data som har överförts. En provslinga för nyckel 1 ges nedan:
if (duration> 10000 && duration <17000) { lcd.setCursor (0, 0); lcd.print ("Mottagen: 1"); }
Li-Fi-sändare och mottagare med Arduino
Efter att ha laddat upp hela koden i båda Arduinos, tryck på valfri knapp på knappsatsen på mottagarsidan och samma siffra visas på 16x2 LCD på mottagarsidan.
Så här kan Li-Fi användas för att överföra data genom ljus. Hoppas att du gillade artikeln och lärde dig något nytt av den, om du är tveksam kan du använda kommentarsektionen eller fråga i forum.