Li-Fi приёмник на Arduino и усилителе TBA2800 (Диплом)

Hpcharry

✩✩✩✩✩✩✩
23 Мар 2023
2
0
Народ, всем привет! В общем отчаялся я и решил задать вопрос на форуме (похоже все совсем плохо...). Делаю я в общем проект по передачи данных через Li-Fi (передача данных через видимый свет), но встала очень серьезная проблема в приеме данных. Какой сейчас принцип. Передатчик сделан на Arduino UNO, транзисторе и простом светодиоде, на который поступают данные через цифровой пин. Решил особо не запариваться в алгоритмах и т.д. и взял самое простое что было под рукой. Данные, которые поступают из сериал монитора кодируются через библиотеку гайвера "Hamming.h" и дальше идут на software serial, где данные упаковываются в уарт и идут на светодиод. Скорости пробовал разные от 300 до 75880 бод. Приемник же, это фотодиод BPW21 который подключен в усилок TBA2800, а с его выхода информация идет на цифровой пин уже другой Arduino UNO (схему подключения приложил ниже). Сам код, фотодиод и усилок рабочие, так как код проверялся в идеальной среде через провод и также инфа передавалась через фотодиод, который был подключен напрямую в ардуину (конечно же он был впритык к фотодиоду). Но как только я хочу подколючить фотодиод к усилителю, начинаются страшные вещи. Зайду из далека. Если на фотодиод подавать простой меандр частотой 10 кГц, усилок усиляет и ардуино тоже его видет через плоттер, но если начать передавать данные через уарт, все начинает ломаться. Появляется большая битовая ошибка, единицы и нули приобретают форму импульса, а некоторые либо ослабляются, либо вовсе пропадают после усилителя. Ну и собственно вопрос. В чем конкретно может быть ошибка? Ибо все же усилитель специально для усиления фотодиодов, правда в ИК диапазоне, но по сути это не должно как то особо сильно влиять на сам сигнал. В данный момент я наверное грешу на сам код, а точнее на формирование импульсов на передатчике, ну или же на сам усилитель.
1679597877903.png
На фотке красный - сигнал исходный из пина ардуины передатчика, синий - на выходе усилителя приёмника, расстояние почти впритык, скорость 9600 бод
1679597891557.png
Это пример подачи простого меандра, синий сигнал на выходе из усилителя, на красный не смотрите на него ничего не идет
1679597908149.png
Ну и сравнение на осциллографе битов, тут вообще все идеально, вот и из-за этого я и не понимаю почему так сильно искажаются биты
1679597941759.png
Сама схема, беру сигнал из 8 пина, который подписан как "Положительный импульс".

Код передатчика:
C++:
#include <Hamming.h>
#include <SoftwareSerial.h>
SoftwareSerial Uart(0, 4, HIGH);
Hamming<5> Hamm;
#define Size 100

void setup()
{
Uart.begin(300);
Serial.begin(115200);
Serial.setTimeout(100);
}

void loop()
{
  while(!Serial.available());
  String Data = Serial.readString();
  Serial.print(Data);
  char Bytes[Size] = {' '};
  for (int i = 0; i < Data.length(); i++)
    Bytes[i] = Data[i];
  Hamm.pack(Bytes);
  for(int i=0;i<Hamm.length();i++)
    Uart.write(Hamm.buffer[i]);
}
Код приёмника:
C++:
#include <Hamming.h>
#include <SoftwareSerial.h>
SoftwareSerial Uart(3, 0, LOW);
Hamming<5> Hamm;
#define Size 124

void setup()
{
Uart.begin(300);
Serial.begin(115200);
Uart.setTimeout(100);
}

void loop()
{
  while(!Uart.available());
  String Data = Uart.readString();
  byte Bytes[Data.length()];
  for (int i = 0; i < Data.length(); i++)
    Bytes[i] = Data[i];
  Hamm.unpack(Bytes,Size);
  Serial.print((char*)Hamm.buffer);
}
Заранее благодарю за любую помощь в вопросе.
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,723
481
Первое, что бросается в глаза: в этот проект заложена фундаментальная ошибка. Данные из UART по оптическому каналу передаются без какой-либо модуляции(несущей), что в корне ошибочно. Это как пытаться сделать ФМ радио без модулятора/демодулятора аудиосигнала. В данном случае, как пример, можно порекомендовать способы, какими передают команды от ИК пульта к ИК приёмнику. Для этого уже есть готовые библиотеки. Возможно, потребуется некоторая их модификация под задачу. Вторая ошибка - отсутствие обратной связи. Без неё не узнать, приняты были данные, или нет.

P.S. А вообще, это похоже на очередное изобретение велосипеда. Подобные вопросы передачи данных давно уже решены.
 
Изменено:

te238s

★★✩✩✩✩✩
14 Ноя 2021
375
94
Сдаётся мне мне,нет модуляции,как упамянул @PiratFox, а так же очучение что на усилителе присутствует ФВЧ. Банально не пропускает постоянку,только высокие частоты.
Дайте схему приёмника в студию.
все же усилитель специально для усиления фотодиодов
Именно,в пультах,например порядка 30-40кГц модуляция. Точно не помню.
 

Hpcharry

✩✩✩✩✩✩✩
23 Мар 2023
2
0
@te238s, в моем посте выше была схема под спойлером, но там вроде как всего два усилителя на 50 и 100 Гц, чтобы убирать шумы от обычных ламп

Именно,в пультах,например порядка 30-40кГц модуляция. Точно не помню.
Я пытался вообще подключить втупую библиотеку IRremote и хоть какие нибудь импульсы покидать, так как в теории эта библиотека и должна формировать смодулированный сигнал на передатчике, но на приемнике ловится какая то туфта в виде одного импульса, а не пачек, как должно быть в нормальных ИК приемниках, если верить статьям в интернете
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
435
В чем конкретно может быть ошибка?
Ошибка в отсутствии помехоустойчивости тракта передачи данных. Возьмите пример с АрВид (Архиватор на Видео) — запоминающее устройство на магнитной ленте (стример), в котором использовался бытовой видеомагнитофон и видеокассеты формата VHS. Имело распространение в середине 1990-х годов в странах бывшего СССР. Коррекция ошибок с использованием кода Рида-Соломона в моделях с 1020 до 1052. Код Рида — Соломона исправляющий t ошибок, требует 2t проверочных символов и с его помощью исправляются произвольные пакеты ошибок длиной t и меньше. Согласно теореме о границе Рейгера, коды Рида — Соломона являются оптимальными с точки зрения соотношения длины пакета и возможности исправления ошибок — используя 2t дополнительных проверочных символов, исправляется t ошибок (и менее).
Ищите и читайте как в АрВид боролись с тем, что часть информации терялась (записывалась с ошибками) и при этом без использования обратной связи за счет предварительного кодирования, при чтении информация восстанавливается полностью.

Запись с кодированием повышающим помехоустойчивость выполняется во всех устройствах хранения информации CD, DVD, HDD, SSD. Тут ничего нового нет. Вам нужно повысить помехоустойчивость передачи данных. И не надо думать, что это другое. Просто у Вас отсутствует этап хранения информации. У Вас передача данных, искажение данных в тракте передачи и прием искаженных данных.
 

Грин

✩✩✩✩✩✩✩
30 Апр 2023
1
5
Что то я встречал в оптике с использованием квадратурного детектора. на передатчике сигнал модулируется некой частотой. А на приемной стороне детектируется квадратурным детектором с такой же частотой. Он выделяет очень слабые сигналы на фоне сильных шумов.
Такое используется в металлоискателях для поиска монет. Делал такое на Ардуино, но сделать лучше фирменных не получилось :).
 

te238s

★★✩✩✩✩✩
14 Ноя 2021
375
94
@ТехнарьКто,это конечно всё хорошо,но тут до подобных алгоритмов ещё далеко. Не думаю что в обычных условиях есть вообще помехи в оптическом диапазоне. Неоткуда им взяться. По сути это и является главным преимуществом Li-Fi. Те же ДУ от любой бытовой техники прекрасно это доказали. Всё просто и топорно. Протоколы просты и известны. Там косяк в чем-то другом.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,837
592
44
Те же ДУ от любой бытовой техники прекрасно это доказали. Всё просто и топорно.
Там не "просто и топорно".
Во-первых, сигнал с пульта передается с несущей частотой, обычно 38кГц. Это уже отсеивает большинство помех.
Во-вторых, он передается с "манчестеровским" кодированием на довольно низкой скорости, 500-800 бит/сек.
В-третьих, сигнал передается с примитивной защитой от потерянных битов. Сначала передается обычный сигнал, а затем с инверсными битами.
 
  • Лойс +1
Реакции: ТехнарьКто

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
435
Не думаю что в обычных условиях есть вообще помехи в оптическом диапазоне. Неоткуда им взяться.
Вот первое пришедшее в голову откуда в видимом диапазоне возникают помехи.
1) Соединение Li-Fi прерывается, когда взрослые, дети, животные птицы, крупные насекомые перекрывают луч видимого света.
2) Яркий солнечный свет создает помехи и даже прерывает сигнал, туча пробежала, огромный перепад уровня яркости и li fi сходит с ума.
3) Работающая техника, панель телевизора, дисплей компьютера, комнатное освещение создают перепады освещенности в видимом диапазоне света.

К огромным недостаткам относится требуемая для Li Fi инфраструктура. Либо один роутер Wi Fi в квартире, либо куча дорогих умных лампочек умеющих Li Fi. Мало того, что требуется размещение Li Fi в каждой комнате, так еще и не в одном месте одного помещения. И для обмена между сетью Li Fi лам, требуется проводная инфраструктура, что дорого и не удобно.

Только в русскоязычной рекламе все просто и аналоговнетно. В реальном мире Li-Fi принадлежит к технологиям VLC (Visible Light Communications). Вопросом занимаются с 1931 года. Историческая справка: "В 1931 году в компании Bell Telephone Laboratories был рассмотрен вопрос о возможности использования видимого света для беспроводной передачи данных. В 2003 году фирмами Casio, NEC, Panasonic Electric Works, Samsung, Sharp и Toshiba, а также операторами телекоммуникационных систем, такими как NTT Docomo был образован консорциум VLCC по системам связи через световые волны видимого спектра (Visible Light Communications Сonsortium, VLCС). Консорциум VLCC в 2008 году предложил комитету по стандартизации беспроводных персональных сетей IEEE 802.15 добавить в стандарт пункт 7, с тем чтобы сравнять статусы средств коммуникации через световые волны видимого спектра и беспроводных ВЧ-/ИК-систем связи. К середине 2010 года проект стандарта 802.15.7 был одобрен рабочей группой комитета Института инженеров по электротехнике и электронике. 2008 году консорциум VLCC заключил соглашение с IrDA на проведение совместных работ по объединению VLC-технологии с используемыми в мобильных телефонах ИК-средствах связи. В 2009 году консорциум VLCC выпустил первый стандарт, который на основе заданного IrDA спектра допускает использование световых волн видимого спектра. Предлагалось путем незначительной модификации существующие оптические модули стандарта IrDA применять в светодиодных VLC-системах и тем самым снизить их стоимость по мере расширения применения IrDA-устройств в портативной аппаратеуре." Но даже с продвижением через IrDA, видимо что-то пошло не так.

Было бы так просто и однозначно как Вы себе придумали, то использовалось бы уже везде. Только "бы" мешает.
Читайте стандарт IEEE 802.15.7 если сами думать отказываетесь.
 

te238s

★★✩✩✩✩✩
14 Ноя 2021
375
94
@ТехнарьКто,сейчас речь про лабораторные условия. Один передатчик,один приёмник.
Помехи от облаков,людей,затмений как бы технически может и помехи,но по факту же спектры этих помех на несколько порядков отличаются от спектра сигнала,можно сказать что их частота околонулевая. Никто же при проектировании радиоприёмника не учитывает изменения магнитного поля Земли.
В реальном применении,конечно,куча перекрестных сигналов возможна если из разных комнат сигнал в прямой видимости.
А не используют пока хз почему. Возможно оптоэлектроника не так сильно развита,либо нет необходимости.
 
Изменено:

ТехнарьКто

★★★★★✩✩
13 Янв 2020
273
435
по факту же спектры этих помех на несколько порядков отличаются от спектра сигнала
Сигнал передается через видимый свет, от 780 нм (385 ТГц) до 380 нм (790 ТГц). Все что Ваш глаз видит и есть помехи для сигнала Li-Fi.
Как пример, попробуйте разговаривать с собеседником стоя рядом с работающим отбойным молотком. По Вашему мнению в этом случае тоже спектры разные. И по Вашему мнению собеседника будет идеально слышно. Все, что ранее говорил, относится к помехам в спектре несущей частоты, а не о спектре передаваемого сигнала. Освещенность в определенной точке на поверхности, перпендикулярной к направлению распространения света, определяется как отношение силы света к квадрату расстояния от этой точки до источника света. Если данное расстояние мы примем за d, то это отношение можно выразить следующей формулой:
Безымянный.jpg Ep - освещенность приемника. I - сила света передатчика. d - расстояние между передатчиком и приемником.
В Li-Fi даже при изменении расстояния между передатчиком и приемником в идеально темном помещении будет возникать помеха в виде изменения силы сигнала, которая зависит от освещенности. Когда на сигнал в реальных условиях будет наложено внешнее излучение, тогда передаваемая информация будет полностью утеряна.

В одном частотном диапазоне, сигналы могут иметь разную основу. Например сигнал частотой 3 кГц можно передать через колебания массы воздуха и человек это услышит. Например усилитель звука на вход которого поступает сигнал. Выход усилителя подключен к динамику. Сигнал 3 кГц Вы услышите.
Можно 3 кГц передать через электромагнитную волну. Как пример, две катушки в тысячу витков диаметром метр, на расстоянии друг от друга пол метра, одна катушка включена взамен динамика на выходе усилителя, другая взамен микрофона. Сигнал будет передан электромагнитной волной и Вы его услышите в наушниках на выходе усилителя у которого взамен микрофона большая катушка. Отключаете наушники, затем стоя между катушками, сигнал 3кГц передаваемый электромагнитной волной Вы не услышите. У радиоприемника электромагнитная волна, а не магнитная. В Li-Fi потоку фотонов конечно же не мешают электромагнитные волны, но еще как мешают другие потоки фотонов из окна, от ламп освещения, от экранов и дисплеев.

PS Li-Fi конечно может работать, но совсем не так, как написано в рекламных плакатах русскоязычного сегмента интернета.