Реализовать связь Visible Light с помощью Arduino

Я хочу реализовать простую систему связи на основе VLC с использованием двух ардуино и отправлять сообщения/данные/файлы между двумя ПК. Для этого у меня есть простая схема передатчика со светодиодом на стороне Tx и фототранзистором на стороне приемника. Коды, которые я использую для передачи и приема, прилагаются ниже, также изображение схемы прилагается ниже, но я не могу обеспечить какую-либо связь между двумя ПК, сторона передатчика работает нормально, так как светодиод мигает, указывая, что данные передаются, но они не принимаются фототранзистором. Я не знаю, что я делаю не так. Любая помощь будет оценена по достоинству, я делаю это как часть своей академической деятельности. Код передатчика :

void setup()
{
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  // Clear Timer on Compare Match (CTC) Mode
  bitWrite(TCCR1A, WGM10, 0);
  bitWrite(TCCR1A, WGM11, 0);
  bitWrite(TCCR1B, WGM12, 1);
  bitWrite(TCCR1B, WGM13, 0);

  // Переключите OC1A и OC1B на Compare Match.
  bitWrite(TCCR1A, COM1A0, 1);
  bitWrite(TCCR1A, COM1A1, 0);
  bitWrite(TCCR1A, COM1B0, 1);
  bitWrite(TCCR1A, COM1B1, 0);

  // Нет предварительной
  bitWrite(TCCR1B, CS10, 1);
  bitWrite(TCCR1B, CS11, 0);
  bitWrite(TCCR1B, CS12, 0);

  OCR1A = 210;
  OCR1B = 210;


  Serial.begin(2400);
}

void loop()
{
  Serial.println("testing testing testing");
  delay(500);
}

Код приемника:

void setup()
{
  Serial.begin(2400);
  pinMode(13, OUTPUT);
}

void loop()
{
  // если входящий последовательный
  if (Serial.available()) {
    readSerial();
    digitalWrite(13, HIGH);
  } 
  else {
    digitalWrite(13, LOW);
  }
  delay(500);
} 
void readSerial() {
  char val = Serial.read();
  Serial.print(val);
}

передатчик работает нормально, но приемник ничего не принимает, я не знаю, что я делаю не так.

, 👍1

Обсуждение

И как именно вы подключаете эти компоненты?, @Majenko

Я думаю, что светодиод может быть слишком слабым для этого. Вы пытались использовать фонарик, чтобы проверить, получил ли вы какой-либо ответ от более мощного источника? Вы проверяли, нет ли помех? Вы передаете его в темной комнате или в освещенной комнате? Я бы посоветовал вам попробовать сделать более простую схему только с фототранзистором и платой arduino, а затем распечатать выход фототранзистора на последовательный, чтобы вы могли знать, как он ведет себя., @rvbarreto

Я сделал простое соединение, Rx к фототранзистору и через резистор к контакту 13. , @D_batmaniac

@D_batmaniac Я тебя не понимаю. Пожалуйста, нарисуйте полную схему *обоих* концов., @Majenko

Вы пробовали использовать RadioHead (преемник VirtualWire)? Это должно сработать из коробки для такого простого случая., @Kwasmich

Я голосую за то, чтобы закрыть этот вопрос, поскольку он был оставлен, так и не представив попытки, которая на самом деле что - то делает-предполагаемый код передачи здесь не передает никакой информации, в лучшем случае он просто мигает светодиодом с постоянной скоростью, и никакой жизнеспособный код приема не был предоставлен. Повторные запросы на проводку не были удовлетворены., @Chris Stratton


3 ответа


1

Амплитуда сигнала на фотоприемнике невелика. Лучше использовать АЦП для чтения.

,

Проблема еще более фундаментальна - не только не используется жизнеспособная схема кодирования, но и вообще не передаются данные., @Chris Stratton


0

Ваш приемник(ldr) может быть недостаточно точным, поэтому попробуйте использовать светодиод в качестве приемника. Затем вам просто нужно будет усилить сигнал чем-то вроде резистора 1 Мом параллельно с принимающим светодиодом.

Вы также можете использовать что-то вроде этого, не пробовали, но похоже, что это сработает: http://www.instructables.com/id/Arduino-Communication/ может быть, просто резистор 1 Мом вместо резистора 1 Ком

,

@LookAlterno не измеряет свет, а обнаруживает свет, как фототранзистор. Например: https://www.sparkfun.com/news/2161, https://makezine.com/projects/make-36-boards/how-to-use-leds-to-detect-light, https://www.edn.com/design/led/4363842/Use-LEDs-as-photodiodes, @Megladon

нет, он использует светодиод в качестве фотодиода, если светодиод получает фотоны, он действует как фотодиод, ссылки описывают, как вы можете использовать светодиод в качестве фотодиода, @Megladon


1

Я думаю, что у вас проблемы с аппаратной стороной. Я хотел бы предложить несколько вещей; может быть, это сработает.

Передатчик

Вместо обычного светодиода используйте ИК-светодиод, потому что он имеет преимущества перед обычным светодиодом для передачи данных, такие как более безопасная, поддержка максимальной скорости передачи, меньшее энергопотребление и многое другое. Для передатчика сигнала используйте следующую схему. Я использовал TSOP1738 для приемника, поэтому нам нужно генерировать модулированный ИК-сигнал 38 кГц. Вы можете использовать любой TSOP, но вам нужно генерировать ИК соответствующей частоты в качестве TSOP. Поэтому используйте таймер 555 в нестабильном режиме для колебания ИК-излучения на частоте 38 кГц. Как известно, частота колебаний таймера 555 определяется резисторами R1, R2 и конденсатором С1. Мы использовали конденсаторы 1k R1, 20K R2 и 1nF для генерации частоты ок. 38 кГц. Его можно рассчитать по следующей формуле: 1.44/((R1+2*R2)*C1)

а вместо кнопки можно использовать транзистор или МОП-транзистор в качестве переключателя, который будет управляться контроллером.

Приемник

Я не знаю, какой фототранзистор вы используете, но я предлагаю использовать TSOP17XX. TSOP17XX принимает модулированные инфракрасные волны и изменяет свой выход. TSOP доступен во многих частотных диапазонах, таких как TSOP1730, TSOP1738, TSOP1740 и т.д. Последние две цифры представляют частоту (в кГц) модулированных ИК - лучей, на которые реагирует TSOP. Как, например, TSOP1738 реагирует, когда получает ИК-излучение, модулированное на частоте 38 кГц. Это означает, что он обнаруживает ИК-излучение, которое включается и выключается со скоростью 38 кГц. Выход TSOP активно низкий, это означает, что его выход остается ВЫСОКИМ, когда нет ИК-излучения, и становится низким, когда он обнаруживает ИК-излучение. TSOP работает на определенной частоте, так что другие IRS в окружающей среде не могут вмешиваться, кроме модулированного IR определенной частоты.

Для получения данных вот несколько простых схем:

Вместо светодиода подключите этот вывод к контроллеру приемника; вы получите сигнал правильно. Надеюсь, это сработает для вас.

Пожалуйста, попробуйте выполнить наш эксперимент в бесшумной (ИК-свободной) среде, чтобы получить правильный результат.

Ссылка: https://circuitdigest.com/electronic-circuits/ir-transmitter-and-receiver-circuit

,