- Nepieciešamās sastāvdaļas
- Īss ieskats Li-Fi
- Li-Fi raidītāju sadaļa, izmantojot Arduino
- Li-Fi uztvērēja sadaļa, izmantojot Arduino
- Arduino kodēšana li-Fi
Li-Fi (Light Fidelity) ir progresīva tehnoloģija, kas ļauj pārsūtīt datus, izmantojot optisko komunikāciju, piemēram, redzamo gaismu. Li-Fi dati var pārvietoties pa gaismu un pēc tam interpretēt uztvērēja pusē, izmantojot jebkuru gaismjutīgu ierīci, piemēram, LDR vai fotodiodu. Li-Fi sakari var būt 100 reizes ātrāki nekā Wi-Fi.
Šajā projektā mēs demonstrēsim Li-Fi sakarus, izmantojot divus Arduino. Šeit teksta dati tiek pārsūtīti, izmantojot LED un 4x4 tastatūru. Un tas tiek dekodēts uztvērēja pusē, izmantojot LDR. Iepriekš mēs sīki izskaidrojām Li-Fi un izmantojām Li-Fi audio signālu pārsūtīšanai.
Nepieciešamās sastāvdaļas
- Arduino UNO
- LDR sensors
- 4 * 4 tastatūra
- 16 * 2 burtciparu LCD
- I2C saskarnes modulis LCD
- Maizes dēlis
- Džemperu savienošana
- 5 mm LED
Īss ieskats Li-Fi
Kā jau tika apspriests iepriekš, Li-Fi ir uzlabota sakaru tehnoloģija, kas var būt 100 reizes ātrāka nekā Wi-Fi sakari. Izmantojot šo tehnoloģiju, datus var pārsūtīt, izmantojot redzamus gaismas avotus. Iedomājieties, ja jūs varat piekļūt ātrgaitas internetam, vienkārši izmantojot savu gaismas avotu. Vai tas nešķiet ļoti interesanti?
Li-Fi datu pārraidei redzamo gaismu izmanto kā saziņas līdzekli. LED var darboties kā gaismas avots, un fotodiods darbojas kā uztvērējs, kas uztver gaismas signālus un pārraida tos atpakaļ. Kontrolējot gaismas impulsu raidītāja pusē, mēs varam nosūtīt unikālus datu modeļus. Šī parādība notiek ārkārtīgi lielā ātrumā, un to nevar redzēt caur cilvēka aci. Tad uztvērēja pusē fotodiods vai no gaismas atkarīgs rezistors (LDR) pārveido datus noderīgā informācijā.
Li-Fi raidītāju sadaļa, izmantojot Arduino
Kā parādīts iepriekš redzamajā attēlā, Li-Fi sakaru raidītāja daļā šeit kā ievadi tiek izmantota tastatūra. Tas nozīmē, ka mēs atlasīsim pārsūtāmo tekstu, izmantojot tastatūru. Tad informāciju apstrādā vadības bloks, kas mūsu gadījumā ir nekas cits kā Arduino. Arduino pārveido informāciju bināros impulsos, kurus var pārraidīt LED avotā. Tad šie dati tiek ievadīti LED gaismā, kas nosūta redzamās gaismas impulsus uz uztvērēja pusi.
Raidītāja sekcijas shēma:
Aparatūras iestatīšana raidītāja pusē:
Li-Fi uztvērēja sadaļa, izmantojot Arduino
Uztvērēja sadaļā LDR sensors uztver redzamās gaismas impulsus no raidītāja puses un pārveido to par interpretējamiem elektriskiem impulsiem, kas tiek padoti uz Arduino (vadības bloks). Arduino saņem šo impulsu un pārvērš to faktiskajos datos un parāda 16x2 LCD displejā.
Uztvērēja sekcijas shēma:
Aparatūras iestatīšana uztvērēja pusē:
Arduino kodēšana li-Fi
Kā parādīts iepriekš, mums ir divas sadaļas Li-Fi raidītājam un uztvērējam. Katras sadaļas pilni kodi ir norādīti apmācības apakšdaļā, un pakāpenisks kodu skaidrojums ir norādīts zemāk:
Arduino Li-Fi raidītāja kods:
Raidītāja pusē Arduino Nano tiek izmantots ar 4x4 tastatūru un LED. Pirmkārt, visi atkarīgie bibliotēkas faili tiek lejupielādēti un instalēti Arduino, izmantojot Arduino IDE. Šeit tastatūras bibliotēka tiek izmantota 4 * 4 tastatūras izmantošanai, ko var lejupielādēt no šīs saites. Uzziniet vairāk par 4x4 tastatūras saskarni ar Arduino šeit.
# iekļaut
Pēc veiksmīgas bibliotēkas failu instalēšanas definējiet Nr. no rindām un kolonnu vērtībām, kas ir 4 abiem, jo šeit mēs izmantojām 4 * 4 tastatūru.
konst baits ROW = 4; konst baits COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Pēc tam tiek definēti Arduino tapas, kas tiek izmantotas, lai saskarētos ar 4 * 4 tastatūru. Mūsu gadījumā mēs izmantojām A5, A4, A3 un A2 attiecīgi R1, R2, R3, R4 un A1, A0, 12, 11 attiecīgi C1, C2, C3 un C4.
baitu rindaPin = {A5, A4, A3, A2}; baits colPin = {A1, A0, 12, 11}; Tastatūra customKeypad = Tastatūra (makeKeymap (atslēgu kods), rowPin, colPin, ROW, COL);
Iestatīšanas iekšpusē () tiek definēta izejas tapa, kur ir pievienots LED avots. Ieslēdzot ierīci, tas tiek izslēgts.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Inside while ciklā no tastatūras saņemtās vērtības tiek nolasītas, izmantojot customKeypad.getKey (), un tās tiek salīdzinātas cilnē if-else , lai katrā taustiņa nospiešanā ģenerētu unikālus impulsus. Kodā var redzēt, ka taimera intervāli tiek saglabāti unikāli visām galvenajām vērtībām.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); kavēšanās (10); digitalWrite (8, LOW); }
Arduino Li-Fi uztvērēja kods:
Li-Fi uztvērēja pusē Arduino UNO ir saskarne ar LDR sensoru, kā parādīts shēmas shēmā. Šeit LDR sensors ir savienots virknē ar rezistoru, lai izveidotu sprieguma dalītāja ķēdi, un analogā sprieguma izeja no sensora tiek ievadīta Arduino kā ieejas signāls. Šeit mēs izmantojam I2C moduli ar LCD, lai samazinātu Nr. savienojumu ar Arduino, jo šim modulim nepieciešami tikai 2 datu kontakti SCL / SDA un 2 strāvas kontakti.
Sāciet kodu, iekļaujot tajā visus nepieciešamos bibliotēkas failus, piemēram, Wire.h I2C sakariem, LiquidCrystal_I2C.h LCD ekrāniem utt. Šīs bibliotēkas būtu iepriekš instalētas ar Arduino, tāpēc nav nepieciešams tās lejupielādēt.
# iekļaut
Lai izmantotu I2C moduli 16 * 2 burtciparu LCD, konfigurējiet to, izmantojot LiquidCrystal_I2C klasi. Šeit mums jānorāda adreses, rindas un kolonnas numurs, kas mūsu gadījumā ir attiecīgi 0x3f, 16 un 2.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Iestatījuma iekšpusē () paziņojiet impulsa ievades tapu signāla saņemšanai. Pēc tam LCD ekrānā izdrukājiet sveiciena ziņojumu, kas tiks parādīts projekta inicializācijas laikā.
void setup () { pinMode (8, INPUT); Sērijas sākums (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("Laipni lūdzam"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); kavēšanās (2000); lcd.clear (); }
Inside kamēr cilpa, tad impulsa ieejas ilgumu no LDR tiek aprēķināts, izmantojot pulseIn funkciju, un impulsa tips ir definēts, kas ir zems mūsu gadījumā. Atkļūdošanas nolūkos vērtība tiek drukāta uz sērijveida monitora. Ir ieteicams pārbaudīt ilgumu, jo tas var atšķirties dažādiem iestatījumiem.
neparakstīts ilgs laiks = pulseIn (8, HIGH); Serial.println (ilgums);
Pēc visu raidītāja impulsu ilguma pārbaudes mums tagad ir 16 impulsu ilguma diapazoni, kas ir atzīmēti atsaucei. Tagad salīdziniet tos, izmantojot IF-ELSE cilpu, lai iegūtu precīzus pārsūtītos datus. Zemāk ir dota viena 1. atslēgas parauga cilpa:
if (ilgums> 10000 && ilgums <17000) { lcd.setCursor (0, 0); lcd.print ("Saņemts: 1"); }
Li-Fi raidītājs un uztvērējs, izmantojot Arduino
Pēc pilnīga koda augšupielādes abos Arduinos, uztvērēja pusē nospiediet jebkuru pogu uz tastatūras, un tas pats cipars tiks parādīts 16x2 LCD ekrānā uztvērēja pusē.
Šādi Li-Fi var izmantot, lai pārraidītu datus caur gaismu. Ceru, ka jums patika raksts un uzzinājāt no tā kaut ko jaunu, ja jums ir kādas šaubas, varat izmantot komentāru sadaļu vai uzdot jautājumus forumos.