цифровая электроника
вычислительная техника
встраиваемые системы

 

Связь двух Arduino с помощью интерфейса Li-Fi

Автор: Mike(admin) от 23-10-2020, 23:55

Li-Fi (Light Fidelity) – это перспективная технология, которая позволяет передавать данные с помощью оптической связи, такой как видимый свет. Данные Li-Fi могут проходить через свет, а затем интерпретироваться на стороне приемника с помощью любого светочувствительного устройства, такого как LDR или фотодиод. Связь по Li-Fi может быть в 100 раз быстрее, чем по Wi-Fi.


Связь двух Arduino с помощью интерфейса Li-Fi

В этом проекте мы продемонстрируем действие связи Li-Fi с использованием двух плат Arduino. В данном случае текстовые данные будут передаваться с помощью светодиода и клавиатуры 4x4. И они декодируются на стороне приемника с помощью LDR


Как было сказано выше, Li-Fi – это передовая технология связи, которая может быть в 100 раз быстрее, чем связь Wi-Fi. Используя эту технологию, данные можно передавать с помощью источников видимого света. Представьте, если вы можете получить доступ к высокоскоростному Интернету, просто используя свой источник света. Разве это не кажется очень интересным?


Li-Fi использует видимый свет в качестве средства связи для передачи данных. Светодиод может действовать как источник света, а фотодиод действует как приемопередатчик, который принимает световые сигналы. Управляя световым импульсом на стороне передатчика, мы можем отправлять уникальные шаблоны данных. Это явление происходит с чрезвычайно высокой скоростью и не может быть замечено человеческим глазом. Затем на стороне приемника фотодиод или светозависимый резистор (LDR) преобразует данные в полезную информацию.


Связь двух Arduino с помощью интерфейса Li-Fi

Как показано на рисунке выше, в части передатчика связи Li-Fi в качестве входа здесь используется клавиатура. Это означает, что мы будем выбирать текст для передачи с помощью клавиатуры. Затем информация обрабатывается блоком управления, который в нашем случае не что иное, как Arduino. Arduino преобразует информацию в двоичные импульсы, которые можно подавать на светодиодный источник для передачи. Затем эти данные передаются на светодиод, который посылает импульсы видимого света на приемную сторону.


Связь двух Arduino с помощью интерфейса Li-Fi

Связь двух Arduino с помощью интерфейса Li-Fi

В секции приемника датчик LDR принимает импульсы видимого света со стороны передатчика и преобразует их в интерпретируемые электрические импульсы, которые подаются на Arduino (блок управления).


Связь двух Arduino с помощью интерфейса Li-Fi

Arduino принимает этот импульс, преобразует его в фактические данные и отображает на ЖК-дисплее 16x2.


Связь двух Arduino с помощью интерфейса Li-Fi

Связь двух Arduino с помощью интерфейса Li-Fi

Итак, как было сказано выше, у нас есть две секции для передатчика и приемника Li-Fi, поэтому код также будет состоять из двух частей – для передатчика и приемника. Код Arduino для передатчика Li-Fi:


#include <Keypad.h>
const byte ROW = 4;
const byte COL = 4;
char keyscode[ROW][COL] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPin[ROW] = {A5, A4, A3, A2};
byte colPin[COL] = {A1, A0, 12, 11};
Keypad customKeypad = Keypad( makeKeymap(keyscode), rowPin, colPin, ROW, COL);
char keycount = 0;
char code[5];
void setup() 
{
  Serial.begin(9600);
  pinMode(8,OUTPUT);
  digitalWrite(8,LOW);
}
void loop()
{
  char customKey = customKeypad.getKey();
  if (customKey) {
    Serial.println(customKey);
   if (customKey == '1')
  {
    digitalWrite(8,HIGH);
    delay(10);
    digitalWrite(8,LOW);
  }
  else if (customKey == '2')
  {
    digitalWrite(8,HIGH);
    delay(20);
    digitalWrite(8,LOW);
  }
  else if (customKey == '3')
  {
    digitalWrite(8,HIGH);
    delay(30);
    digitalWrite(8,LOW);
  }
  else if (customKey == '4')
  {
    digitalWrite(8,HIGH);
    delay(40);
    digitalWrite(8,LOW);
  }
  else if (customKey == '5')
  {
    digitalWrite(8,HIGH);
    delay(50);
    digitalWrite(8,LOW);
  }
  else if (customKey == '6')
  {
    digitalWrite(8,HIGH);
    delay(60);
    digitalWrite(8,LOW);
  }
  else if (customKey == '7')
  {
    digitalWrite(8,HIGH);
    delay(70);
    digitalWrite(8,LOW);
  }
  else if (customKey == '8')
  {
    digitalWrite(8,HIGH);
    delay(80);
    digitalWrite(8,LOW);
  }
  else if (customKey == '9')
  {
    digitalWrite(8,HIGH);
    delay(90);
    digitalWrite(8,LOW);
  }
  else if (customKey == '*')
  {
    digitalWrite(8,HIGH);
    delay(100);
    digitalWrite(8,LOW);
  }
  else if (customKey == '0')
  {
    digitalWrite(8,HIGH);
    delay(110);
    digitalWrite(8,LOW);
  }
  else if (customKey == '#')
  {
    digitalWrite(8,HIGH);
    delay(120);
    digitalWrite(8,LOW);
  }
  else if (customKey == 'A')
  {
    digitalWrite(8,HIGH);
    delay(130);
    digitalWrite(8,LOW);
  }
  else if (customKey == 'B')
  {
    digitalWrite(8,HIGH);
    delay(140);
    digitalWrite(8,LOW);
  }
  else if (customKey == 'C')
  {
    digitalWrite(8,HIGH);
    delay(150);
    digitalWrite(8,LOW);
  }
  else if (customKey == 'D')
  {
    digitalWrite(8,HIGH);
    delay(160);
    digitalWrite(8,LOW);
  }
  else;
  } 
}

Код Arduino для приемника Li-Fi:



#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <SoftwareSerial.h>
#include <Keypad.h>
void setup()
{
  pinMode(8, INPUT);
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  //lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("   WELCOME TO    ");
  lcd.setCursor(0, 1);
  lcd.print(" CIRCUIT DIGEST    ");
  delay(2000);
  lcd.clear();
}
void loop()
{
  unsigned long duration = pulseIn(8, HIGH);
  Serial.println(duration);
  if (duration > 10000 && duration < 17000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 1          ");
  }
  else if (duration > 20000 && duration < 27000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 2          ");
  }
  else if (duration > 30000 && duration < 37000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 3          ");
  }
  else if (duration > 40000 && duration < 47000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 4          ");
  }
  else if (duration > 50000 && duration < 57000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 5          ");
  }
  else if (duration > 60000 && duration < 67000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 6          ");
  }
  else if (duration > 70000 && duration < 77000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 7          ");
  }
  else if (duration > 80000 && duration < 87000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 8          ");
  }
  else if (duration > 90000 && duration < 97000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 9          ");
  }
  else if (duration > 100000 && duration < 107000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: *          ");
  }
  else if (duration > 110000 && duration < 117000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: 0          ");
  }
  else if (duration > 120000 && duration < 127000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: #          ");
  }
  else if (duration > 130000 && duration < 137000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: A          ");
  }
  else if (duration > 140000 && duration < 147000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: B          ");
  }
  else if (duration > 150000 && duration < 157000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: C          ");
  }
  else if (duration > 160000 && duration < 167000)
  {
    lcd.setCursor(0, 0);
    lcd.print("Received: D          ");
  }
}

После загрузки кода в оба Arduino и размещения плат друг напротив друга нажмите любую кнопку на клавиатуре на стороне передатчика, и та же цифра отобразится на ЖК-дисплее 16x2 на стороне приемника.


Связь двух Arduino с помощью интерфейса Li-Fi

Связь двух Arduino с помощью интерфейса Li-Fi



© digitrode.ru


Теги: Arduino, Li-Fi




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий