- Необходими компоненти
- Кратко въведение в Li-Fi
- Секция за Li-Fi предавател, използваща Arduino
- Раздел за Li-Fi приемник, използващ Arduino
- Кодиране на Arduino за Li-Fi
Li-Fi (Light Fidelity) е усъвършенствана технология, която позволява прехвърляне на данни чрез оптична комуникация като видима светлина. Li-Fi данните могат да пътуват през светлината и след това да се интерпретират от страната на приемника, използвайки всяко чувствително на светлина устройство като LDR или фотодиод. Li-Fi комуникацията може да бъде 100 пъти по-бърза от Wi-Fi.
Тук в този проект ще демонстрираме Li-Fi комуникация с помощта на два Arduino. Тук текстовите данни се предават с помощта на LED и 4x4 клавиатура. И се декодира от страната на приемника с помощта на LDR. По-рано обяснихме подробно Li-Fi и използвахме Li-Fi за прехвърляне на аудио сигнали.
Необходими компоненти
- Arduino UNO
- LDR сензор
- Клавиатура 4 * 4
- 16 * 2 буквено-цифров LCD
- I2C интерфейсен модул за LCD
- Макет
- Свързване на джъмпери
- 5 мм светодиод
Кратко въведение в Li-Fi
Както беше обсъдено по-горе, Li-Fi е усъвършенствана комуникационна технология, която може да бъде 100 пъти по-бърза от Wi-Fi комуникацията. Използвайки тази технология, данните могат да се прехвърлят с помощта на видими източници на светлина. Представете си, ако можете да получите достъп до високоскоростен интернет, като използвате само своя източник на светлина. Не изглежда ли много интересно?
Li-Fi използва видимата светлина като комуникационен носител за предаване на данни. LED може да действа като източник на светлина, а фотодиодът действа като приемо-предавател, който приема светлинни сигнали и ги предава обратно. Чрез управление на светлинния импулс от страната на предавателя, ние можем да изпращаме уникални модели на данни. Това явление се случва с изключително висока скорост и не може да се види през човешкото око. След това от страна на приемника фотодиодът или резисторът, зависим от светлината (LDR), преобразува данните в полезна информация.
Секция за Li-Fi предавател, използваща Arduino
Както е показано на фигурата по-горе, в предавателната част на Li-Fi комуникацията тук се използва клавиатурата като вход. Това означава, че ще избираме текста, който да се предава с помощта на клавиатурата. След това информацията се обработва от контролния блок, който в нашия случай е нищо друго освен Arduino. Arduino преобразува информацията в двоични импулси, които могат да бъдат подадени към LED източник за предаване. След това тези данни се подават към LED светлина, която изпраща импулсите на видимата светлина към страната на приемника.
Електрическа схема на предавателната секция:
Хардуерна настройка за страната на предавателя:
Раздел за Li-Fi приемник, използващ Arduino
В секцията на приемника LDR сензорът получава видимите светлинни импулси от страната на предавателя и ги преобразува в интерпретируеми електрически импулси, които се подават към Arduino (контролен блок). Arduino получава този импулс и го преобразува в реални данни и го показва на 16x2 LCD дисплей.
Електрическа схема на приемника:
Хардуерна настройка за страната на приемника:
Кодиране на Arduino за Li-Fi
Както е показано по-горе, имаме два раздела за Li-Fi предавател и приемник. Пълните кодове за всеки раздел са дадени в дъното на урока, а по-долу е дадено поетапно обяснение на кодовете:
Код на Li-Fi предавател на Arduino:
От страна на предавателя, Arduino Nano се използва с 4x4 клавиатура и LED. Първо, всички зависими библиотечни файлове се изтеглят и инсталират в Arduino чрез Arduino IDE. Тук библиотеката на клавиатурата се използва за използване на клавиатура 4 * 4, която може да бъде изтеглена от тази връзка. Научете повече за свързването на клавиатурата 4x4 с Arduino тук.
#include
След успешната инсталация на библиотечни файлове, дефинирайте no. на стойности на редове и колони, което е 4 и за двете, тъй като тук използвахме клавиатура 4 * 4.
const байт ROW = 4; const байт COL = 4; char ключов код = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
След това се дефинират пиновете Arduino, които се използват за взаимодействие с клавиатурата 4 * 4. В нашия случай сме използвали A5, A4, A3 и A2 за R1, R2, R3, R4 съответно и A1, A0, 12, 11 за C1, C2, C3 и C4 съответно.
байт rowPin = {A5, A4, A3, A2}; байт colPin = {A1, A0, 12, 11}; Keypad customKeypad = Клавиатура (makeKeymap (код на клавиша), rowPin, colPin, ROW, COL);
Вътре в настройката () е дефиниран изходният щифт, където е свързан LED източникът. Освен това той се изключва, докато включва устройството.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Вътре в цикъл while стойностите, получени от клавиатурата, се четат с помощта на customKeypad.getKey () и се сравнява в цикъла if-else , за да се генерират уникални импулси при всяко натискане на клавиш. В кода може да се види, че таймерните интервали се поддържат уникални за всички ключови стойности.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, HIGH); забавяне (10); digitalWrite (8, LOW); }
Код на Li-Fi приемник на Arduino:
В страната на Li-Fi приемника Arduino UNO е свързан с LDR сензор, както е показано на схемата. Тук LDR сензорът е свързан последователно с резистор, за да образува верига на делител на напрежение и аналоговото изходно напрежение от сензора се подава към Arduino като входен сигнал. Тук използваме I2C модул с LCD, за да намалим не. връзки с Arduino, тъй като този модул изисква само 2 пина за данни SCL / SDA и 2 захранващи щифта.
Стартирайте кода, като включите всички необходими библиотечни файлове в кода, като Wire.h за I2C комуникация, LiquidCrystal_I2C.h за LCD и др. Тези библиотеки ще бъдат предварително инсталирани с Arduino, така че няма нужда да ги изтегляте.
#include
За използване на модула I2C за буквено-цифров LCD 16 * 2 го конфигурирайте с помощта на класа LiquidCrystal_I2C . Тук трябва да предадем номера на адреса, реда и колоната, които са съответно 0x3f, 16 и 2 в нашия случай.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Вътре в настройката () декларирайте импулсния входен щифт за приемане на сигнала. След това отпечатайте приветствено съобщение на LCD дисплея, което ще се покаже по време на инициализацията на проекта.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd. backlight (); lcd.setCursor (0, 0); lcd.print ("ДОБРЕ ДОШЛИ В"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); забавяне (2000); lcd.clear (); }
Вътре в цикъл while , продължителността на импулсния вход от LDR се изчислява с помощта на функцията pulseIn и се определя вида на импулса, който в нашия случай е LOW. Стойността се отпечатва на серийния монитор за целите на отстраняване на грешки. Препоръчва се да проверите продължителността, тъй като тя може да е различна за различните настройки.
неподписана дълга продължителност = pulseIn (8, HIGH); Serial.println (продължителност);
След проверка на продължителността на всички импулси на предавателя, сега имаме 16 диапазона на продължителността на импулса, което е отбелязано за справка. Сега ги сравнете с помощта на IF-ELSE цикъл за получаване на точните данни, които са били предадени. Един примерен цикъл за Ключ 1 е даден по-долу:
ако (продължителност> 10000 && продължителност <17000) { lcd.setCursor (0, 0); lcd.print ("Получено: 1"); }
Li-Fi предавател и приемник с помощта на Arduino
След като качите пълния код и в двата Arduinos, натиснете произволен бутон на клавиатурата от страната на приемника и същата цифра ще се покаже на 16x2 LCD от страната на приемника.
Ето как Li-Fi може да се използва за предаване на данни чрез светлина. Надявам се, че сте харесали статията и сте научили нещо ново от нея, ако имате някакви съмнения, можете да използвате раздела за коментари или да попитате във форуми.