- Необходимые компоненты
- Краткое введение в 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. Полные коды для каждого раздела приведены в нижней части руководства, а пошаговое объяснение кодов приведено ниже:
Код передатчика Arduino Li-Fi:
На стороне передатчика Arduino Nano используется с клавиатурой 4x4 и светодиодом. Сначала все зависимые файлы библиотеки загружаются и устанавливаются в Arduino через Arduino IDE. Здесь библиотека клавиатуры используется для использования клавиатуры 4 * 4, которую можно загрузить по этой ссылке. Узнайте больше о взаимодействии клавиатуры 4x4 с Arduino здесь.
#включают
После успешной установки файлов библиотеки определите номер. значений строк и столбцов, которое равно 4 для обоих, поскольку здесь мы использовали клавиатуру 4 * 4.
const byte ROW = 4; константный байт COL = 4; char keyscode = { {'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 соответственно.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; CustomKeypad клавиатуры = Клавиатура (makeKeymap (keycode), rowPin, colPin, ROW, COL);
Внутри setup () определяется выходной контакт, к которому подключен светодиодный источник. Кроме того, он остается выключенным при включении устройства.
void setup () { pinMode (8, ВЫХОД); digitalWrite (8, LOW); }
Внутри во время цикла, значения, полученные с клавиатуры, считываются с помощью customKeypad.getKey () , и его сравнивают в IF-то цикл, для создания уникальных импульсов в каждом нажатий клавиш. Из кода видно, что интервалы таймера сохраняются уникальными для всех значений ключа.
char customKey = customKeypad.getKey (); если (customKey) { если (customKey == '1') { digitalWrite (8, HIGH); задержка (10); digitalWrite (8, LOW); }
Код ресивера Arduino Li-Fi:
На стороне приемника Li-Fi Arduino UNO сопрягается с датчиком LDR, как показано на принципиальной схеме. Здесь датчик LDR соединен последовательно с резистором, чтобы сформировать схему делителя напряжения, и аналоговое выходное напряжение с датчика подается на Arduino в качестве входного сигнала. Здесь мы используем модуль I2C с ЖК-дисплеем, чтобы уменьшить количество соединений с Arduino, так как для этого модуля требуется только 2 вывода данных SCL / SDA и 2 вывода питания.
Начните код, включив в код все необходимые файлы библиотеки, такие как Wire.h для связи I2C, LiquidCrystal_I2C.h для ЖК-дисплея и т. Д. Эти библиотеки будут предварительно установлены с Arduino, поэтому их не нужно загружать.
#включают
Для использования модуля I2C для буквенно-цифрового ЖК-дисплея 16 * 2 настройте его с помощью класса LiquidCrystal_I2C . Здесь мы должны передать адрес, строку и номер столбца, которые в нашем случае равны 0x3f, 16 и 2 соответственно.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Внутри setup () объявите контакт импульсного входа для приема сигнала. Затем распечатайте приветственное сообщение на ЖК-дисплее, которое будет отображаться во время инициализации проекта.
void setup () { pinMode (8, ВХОД); 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 для передачи данных через свет. Надеюсь, вам понравилась статья и вы узнали из нее что-то новое, если у вас есть сомнения, вы можете использовать раздел комментариев или задать вопрос на форумах.