- Būtini komponentai
- Trumpas „Li-Fi“ įvadas
- „Li-Fi“ siųstuvo skyrius naudojant „Arduino“
- „Li-Fi“ imtuvo skyrius naudojant „Arduino“
- „Arduino“ kodavimas „Li-Fi“
„Li-Fi“ („Light Fidelity“) yra pažangi technologija, leidžianti perduoti duomenis naudojant optinį ryšį, pavyzdžiui, matomą šviesą. „Li-Fi“ duomenys gali sklisti per šviesą ir tada interpretuojami imtuvo pusėje naudojant bet kokį šviesai jautrų įrenginį, pvz., LDR ar fotodiodą. „Li-Fi“ ryšys gali būti 100 kartų greitesnis nei „Wi-Fi“.
Šiame projekte mes parodysime „ Li-Fi“ ryšį naudodami du „Arduino“. Čia tekstiniai duomenys perduodami naudojant LED ir 4x4 klaviatūrą. Ir jis dekoduojamas imtuvo pusėje naudojant LDR. Anksčiau mes išsamiai paaiškinome „Li-Fi“ ir naudojome „Li-Fi“ garso signalams perduoti.
Būtini komponentai
- „Arduino UNO“
- LDR jutiklis
- 4 * 4 klaviatūra
- 16 * 2 raidinis skaitmeninis LCD ekranas
- I2C sąsajos modulis LCD
- Bandomoji Lenta
- Džemperių sujungimas
- 5 mm šviesos diodas
Trumpas „Li-Fi“ įvadas
Kaip aptarta aukščiau, „Li-Fi“ yra pažangi ryšio technologija, kuri gali būti 100 kartų greitesnė už „Wi-Fi“ ryšį. Naudojant šią technologiją, duomenis galima perduoti naudojant matomus šviesos šaltinius. Įsivaizduokite, jei galite naudotis sparčiuoju internetu tiesiog naudodamiesi savo šviesos šaltiniu. Argi neatrodo labai įdomu?
„Li-Fi“ naudoja matomą šviesą kaip ryšio priemonę duomenims perduoti. Šviesos diodas gali veikti kaip šviesos šaltinis, o fotodiodas - kaip imtuvas-imtuvas, priimantis šviesos signalus ir juos perduodantis atgal. Kontroliuodami šviesos impulsą siųstuvo pusėje, galime siųsti unikalius duomenų modelius. Šis reiškinys įvyksta itin dideliu greičiu ir jo negalima pamatyti žmogaus akimi. Tada imtuvo pusėje fotodiodas arba nuo šviesos priklausantis rezistorius (LDR) paverčia duomenis naudinga informacija.
„Li-Fi“ siųstuvo skyrius naudojant „Arduino“
Kaip parodyta aukščiau esančiame paveikslėlyje, „Li-Fi“ ryšio siųstuvo dalyje klaviatūra čia naudojama kaip įvestis. Tai reiškia, kad mes pasirinksime tekstą, kuris bus perduotas naudojant klaviatūrą. Tada informaciją apdoroja valdymo blokas, kuris mūsų atveju yra ne kas kita, o „Arduino“. „Arduino“ paverčia informaciją dvejetainiais impulsais, kuriuos galima perduoti į LED šaltinį perduoti. Tada šie duomenys perduodami į LED šviesą, kuri matomos šviesos impulsus siunčia į imtuvo pusę.
Siųstuvo sekcijos schema:
Siųstuvo pusės aparatinės įrangos sąranka:
„Li-Fi“ imtuvo skyrius naudojant „Arduino“
Imtuvo skyriuje LDR jutiklis priima matomos šviesos impulsus iš siųstuvo pusės ir paverčia juos aiškinamais elektriniais impulsais, kurie tiekiami „Arduino“ (valdymo blokas). „Arduino“ gauna šį impulsą ir paverčia jį tikraisiais duomenimis ir pateikia 16x2 LCD ekrane.
Imtuvo skyriaus grandinės schema:
Aparatūros sąranka imtuvo pusėje:
„Arduino“ kodavimas „Li-Fi“
Kaip parodyta aukščiau, mes turime du „Li-Fi“ siųstuvo ir imtuvo skyrius. Pilni kiekvieno skyriaus kodai pateikiami mokymo programos apačioje, o toliau pateikiamas laipsniškas kodų paaiškinimas:
„Arduino Li-Fi“ siųstuvo kodas:
Siųstuvo pusėje „Arduino Nano“ naudojamas su 4x4 klaviatūra ir LED. Pirma, visi priklausomi bibliotekos failai yra atsisiųsti ir įdiegti į „Arduino“ per „Arduino IDE“. Klaviatūros biblioteka naudojama norint naudoti 4 * 4 klaviatūrą, kurią galite atsisiųsti iš šios nuorodos. Sužinokite daugiau apie 4x4 klaviatūros sąsają su „Arduino“ čia.
# įtraukti
Sėkmingai įdiegę bibliotekos failus, nustatykite Nr. eilučių ir stulpelių verčių, kurios yra 4 abiem, nes čia naudojome 4 * 4 klaviatūrą.
konstatavimo baitas ROW = 4; konstatavimo baitas COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Tada nustatomi „Arduino“ kaiščiai, kurie naudojami sąsajai su 4 * 4 klaviatūra. Mūsų atveju mes naudojome A5, A4, A3 ir A2 atitinkamai R1, R2, R3, R4 ir A1, A0, 12, 11 atitinkamai C1, C2, C3 ir C4.
baitų eilutėPin = {A5, A4, A3, A2}; baitas colPin = {A1, A0, 12, 11}; Klaviatūra customKeypad = Klaviatūra (makeKeymap (raktų kodas), rowPin, colPin, ROW, COL);
Sąrankos viduje () yra apibrėžtas išvesties kaištis, kur prijungtas LED šaltinis. Be to, įjungiant įrenginį jis yra išjungtas.
negaliojanti sąranka () { pinMode (8, OUTPUT); „digitalWrite“ (8, LOW); }
„Inside while“ ciklo metu iš klaviatūros gautos vertės nuskaitomos naudojant customKeypad.getKey () ir palyginamos „ if-else“ kilpoje, kad kiekviename paspaudime būtų generuojami unikalūs impulsai. Kode matyti, kad visų pagrindinių reikšmių laikmačio intervalai yra unikalūs.
char charKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); vėlavimas (10); „digitalWrite“ (8, LOW); }
„Arduino Li-Fi“ imtuvo kodas:
„Li-Fi“ imtuvo pusėje „Arduino UNO“ yra susietas su LDR jutikliu, kaip parodyta grandinės schemoje. Čia LDR jutiklis yra nuosekliai sujungtas su rezistoriumi, kad susidarytų įtampos skirstytuvo grandinė, o jutiklio išvesties analoginė įtampa tiekiama į „Arduino“ kaip įvesties signalą. Čia mes naudojame I2C modulį su LCD, kad sumažintume Nr. ryšių su „Arduino“, nes šiam moduliui reikia tik 2 duomenų kaiščių SCL / SDA ir 2 maitinimo kaiščių.
Pradėkite kodą įtraukdami visus reikiamus bibliotekos failus į kodą, pvz., „ Wire.h“, skirtą „I2C“ ryšiui, „ LiquidCrystal_I2C.h“, skirtą LCD, ir pan. Šios bibliotekos būtų iš anksto įdiegtos su „Arduino“, todėl jų atsisiųsti nereikia.
# įtraukti
Norėdami naudoti „I2C“ modulį 16 * 2 raidiniams ir skaitmeniniams LCD, sukonfigūruokite jį naudodami „ LiquidCrystal_I2C“ klasę. Čia mes turime perduoti adreso, eilutės ir stulpelio numerį, kurie mūsų atveju yra atitinkamai 0x3f, 16 ir 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Viduje sąrankoje () deklaruokite impulso įvesties kaištį, kad gautumėte signalą. Tada atspausdinkite pasveikinimo pranešimą LCD, kuris bus rodomas inicijuojant projektą.
negaliojanti sąranka () { pinMode (8, INPUT); Serijos pradžia (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print („SVEIKI ATVYK TO“); lcd.setCursor (0, 1); lcd.print („CIRCUIT DIGEST“); vėlavimas (2000); lcd.clear (); }
Viduje , o kilpa, impulso įvesties trukmė nuo LDR yra apskaičiuojamas naudojant pulseIn funkciją, ir impulso tipas yra apibrėžta, kuri yra mažai mūsų atveju. Vertė išspausdinta serijiniame monitoriuje derinimo tikslais. Siūloma patikrinti trukmę, nes skirtingoms sąrankoms ji gali skirtis.
nepasirašyta ilga trukmė = pulseIn (8, HIGH); Serial.println (trukmė);
Patikrinę visų siųstuvo impulsų trukmę, mes turime 16 impulsų trukmės diapazonų, kurie yra pažymėti kaip nuoroda. Dabar palyginkite juos naudodami IF-ELSE kilpą, kad gautumėte tikslius duomenis, kurie buvo perduoti. Toliau pateikiama viena 1 rakto pavyzdžio kilpa:
if (trukmė> 10000 && trukmė <17000) { lcd.setCursor (0, 0); lcd.print ("Gauta: 1"); }
„Li-Fi“ siųstuvas ir imtuvas, naudojantys „Arduino“
Įkėlę visą kodą į abi „Arduinos“, paspauskite bet kurį mygtuką klaviatūroje imtuvo pusėje, ir tas pats skaitmuo bus rodomas 16x2 LCD ekrane imtuvo pusėje.
Taip „Li-Fi“ galima naudoti duomenims perduoti per šviesą. Tikiuosi, kad jums patiko straipsnis ir sužinojote iš jo kažką naujo, jei turite kokių nors abejonių, galite naudoti komentarų skyrių arba paklausti forumuose.