- Потрібні компоненти
- Короткий вступ до 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. Тут текстові дані передаються за допомогою світлодіодів та клавіатури 4x4. І він декодується на стороні приймача за допомогою LDR. Раніше ми детально пояснили Li-Fi і використовували Li-Fi для передачі звукових сигналів.
Потрібні компоненти
- Arduino UNO
- Датчик LDR
- Клавіатура 4 * 4
- 16 * 2 буквено-цифровий РК-дисплей
- Модуль інтерфейсу I2C для РК-дисплея
- Макет
- Підключення перемичок
- 5 мм світлодіод
Короткий вступ до Li-Fi
Як обговорювалося вище, Li-Fi - це вдосконалена технологія зв'язку, яка може бути в 100 разів швидшою, ніж Wi-Fi. Використовуючи цю технологію, дані можна передавати за допомогою видимих джерел світла. Уявіть, якщо ви можете отримати доступ до високошвидкісного Інтернету, просто використовуючи своє джерело світла. Хіба це не здається дуже цікавим?
Li-Fi використовує видиме світло як носій зв'язку для передачі даних. Світлодіод може діяти як джерело світла, а фотодіод - як трансивер, який приймає світлові сигнали і передає їх назад. Керуючи світловим імпульсом на стороні передавача, ми можемо надсилати унікальні шаблони даних. Це явище відбувається на надзвичайно високій швидкості, і його неможливо побачити людським оком. Потім на стороні приймача фотодіод або світлозалежний резистор (LDR) перетворює дані в корисну інформацію.
Розділ Li-Fi-передавача з використанням Arduino
Як показано на малюнку вище, в передавальній частині зв'язку Li-Fi тут використовується клавіатура. Це означає, що ми будемо обирати текст для передачі за допомогою клавіатури. Потім інформація обробляється блоком управління, який у нашому випадку є не чим іншим, як Arduino. Arduino перетворює інформацію в двійкові імпульси, які можуть подаватися до джерела світлодіодів для передачі. Потім ці дані надходять на світлодіодне світло, яке посилає видимі імпульси світла на сторону приймача.
Принципова схема секції передавача:
Налаштування обладнання на стороні передавача:
Розділ приймача Li-Fi з використанням Arduino
У секції приймача датчик LDR приймає видимі імпульси світла зі сторони передавача і перетворює їх в інтерпретовані електричні імпульси, які подаються на Arduino (блок управління). Arduino приймає цей імпульс, перетворює його у фактичні дані та відображає на РК-дисплеї 16x2.
Схема ланцюга приймача:
Налаштування обладнання на стороні приймача:
Кодування Arduino для Li-Fi
Як показано вище, у нас є два розділи для передавача та приймача Li-Fi. Повні коди для кожного розділу наведені внизу підручника, а нижче - поетапне пояснення кодів:
Код передавача Li-Fi Arduino:
На стороні передавача Arduino Nano використовується з клавіатурою 4x4 та світлодіодом. По-перше, усі залежні файли бібліотеки завантажуються та встановлюються в Arduino через Arduino IDE. Тут бібліотека клавіатури використовується для використання клавіатури 4 * 4, яку можна завантажити за цим посиланням. Дізнайтеся більше про взаємодію клавіатури 4x4 з Arduino тут.
#включати
Після успішної інсталяції бібліотечних файлів визначте номер. рядків і значень стовпців, що дорівнює 4 для обох, оскільки ми використовували тут клавіатуру 4 * 4.
const байт РЯД = 4; const байт COL = 4; char keycode = { {'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}; Клавіатура customKeypad = Клавіатура (makeKeymap (код клавіші), rowPin, colPin, ROW, COL);
Усередині установки () визначається вихідний штифт, де підключено джерело світлодіодів. Крім того, він залишається вимкненим під час увімкнення пристрою.
void setup () { pinMode (8, OUTPUT); digitalWrite (8, LOW); }
Всередині під час циклу, значення, отримані з клавіатури, зчитуються з допомогою customKeypad.getKey () , і його порівнюють в IF-то цикл, для створення унікальних імпульсів в кожному натискань клавіш. У коді видно, що інтервали таймера зберігаються унікальними для всіх значень ключа.
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 з РК-дисплеєм, щоб зменшити кількість. з'єднань з Arduino, оскільки для цього модуля потрібні лише 2 виводи даних SCL / SDA та 2 висновки живлення.
Запустіть код, включивши всі необхідні файли бібліотек у код, наприклад Wire.h для зв'язку I2C, LiquidCrystal_I2C.h для LCD тощо. Ці бібліотеки будуть попередньо встановлені з Arduino, тому немає необхідності їх завантажувати.
#включати
Для використання модуля I2C для буквено-цифрового РК-дисплея 16 * 2 налаштуйте його за допомогою класу LiquidCrystal_I2C . Тут ми повинні передати адресу, рядок та номер стовпця, які в нашому випадку становлять 0x3f, 16 та 2 відповідно.
Рідкий кристал_I2C рідкокристалічний (0x3f, 16, 2);
Усередині установки () оголосіть імпульсний вхідний штифт для прийому сигналу. Потім роздрукуйте привітальне повідомлення на РК-дисплеї, яке відображатиметься під час ініціалізації проекту.
void setup () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ДОБРО ВІТАЄМО В"); lcd.setCursor (0, 1); lcd.print ("СХЕМ ДАЙДЖЕСТУ"); затримка (2000); lcd.clear (); }
Усередині в той час циклу, тривалість вхідного імпульсу від LDR обчислюються з використанням pulseIn функції, і типу імпульсу визначаються, який є найнижчим в нашому випадку. Значення друкується на послідовному моніторі для налагодження. Рекомендується перевірити тривалість, оскільки вона може бути різною для різних налаштувань.
беззнакова довга тривалість = pulseIn (8, HIGH); Serial.println (тривалість);
Після перевірки тривалості всіх імпульсів передавача, ми маємо 16 діапазонів тривалості імпульсів, що записано для довідки. Тепер порівняйте їх, використовуючи цикл IF-ELSE для отримання точних даних, які були передані. Один зразок циклу для ключа 1 наведено нижче:
якщо (тривалість> 10000 && тривалість <17000) { lcd.setCursor (0, 0); lcd.print ("Отримано: 1"); }
Передавач і приймач Li-Fi за допомогою Arduino
Після завантаження повного коду в обидва Arduinos натисніть будь-яку кнопку на клавіатурі на стороні приймача, і така ж цифра буде відображатися на РК-дисплеї 16x2 на стороні приймача.
Ось як Li-Fi можна використовувати для передачі даних через світло. Сподіваюся, вам сподобалась стаття і ви дізналися з неї щось нове. Якщо у вас є якісь сумніви, ви можете скористатися розділом коментарів або запитати на форумах.