Прием нескольких ИК-команд одновременно

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Добрый день, камрады

Подкинули тут задачку, не соображу с какой стороны подступиться, возможно кто-то сталкивался с подобным и подкинет идею в кукую сторону ломать мозг. Дано - один ИК приемник и пять ИК передатчиков. Нужно отловить факт того, что все пять ИК передатчиков излучают примерно в одну сторону (а-ля охотники за приведениями - когда "стреляют" по одному, то мощности победить не хватает, а вот когда все пятеро одновременно, то "вы победили"). Радио использовать не представляется возможным, т.к. не отловим направление. А посылаемые одновременно команды с разных ик передатчиков "забивают" друг друга. Как можно выкрутиться?

b707
Offline
Зарегистрирован: 26.05.2017

Никак

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

b707 пишет:
Никак

Ну я не был бы так категоричен - в голове крутится мысль задействовать ESP в терминалах и "сервере", сервером опрашивать терминалы в цикле и при получении подтверждения нажатия кнопки, разрешать передачу ик-команды. Но с таким пока не сталкивался, опасаюсь что время опроса-отклика будет большое, т.к. обмен интенсивный (запрос состояния по радио - ответ (есть событие/нет события/нет ответа) - нет события или нет ответа -> опрос следующего терминала, событие есть -> разрешение на отправку ик посылки... ну и так далее. ESP под рукой нет чтобы проверить, и всегда интересно взглянуть на задачу чужими глазами, часто очевидные решения не приходят на ум.

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Сделать связь между передатчиками по радио. Передавать достаточно 1 бит синхронизации. А далее ИК передают по очереди. Все будет достаточно быстро. Это как бы временное разделение каналов.

sadman41
Offline
Зарегистрирован: 19.10.2016

Или сделать двусторонний ИК канал. Мастер мигнул, слейвы, которые заловили сигнал, начали подмигивать в ответ с задержкой, определяемой их ID.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Я бы разнёс передатчики по частотам, а на принимающей стороне считал бы БПФ и определял бы какие передатчики активны, а какие - нет.

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

sadman41 пишет:
Или сделать двусторонний ИК канал. Мастер мигнул, слейвы, которые заловили сигнал, начали подмигивать в ответ с задержкой, определяемой их ID.

слейвы очень нестационарны, боюсь устойчивой работы добиться при двусторонней связи по ИК не удастся... 

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

anatoli_nik пишет:
Сделать связь между передатчиками по радио. Передавать достаточно 1 бит синхронизации. А далее ИК передают по очереди. Все будет достаточно быстро. Это как бы временное разделение каналов

То есть мастер кидает по радио в эфир бит, и переключается на прием по ИК. Слейвы, что поймали бит, кидают в ответ по ИК посылку (свой код и флаг нажатия кнопки) с задержкой +10 +20 +30 +40 +50 единиц времени. Мастер принимает посылки по ИК в течение ~60 единиц времени, затем кидает опять в эфир бит. Да, думаю это проще, чем устраивать двусторонний радиообмен. На каком железе такое проще всего реализовать не подскажете? ESP?

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

ЕвгенийП пишет:
Я бы разнёс передатчики по частотам, а на принимающей стороне считал бы БПФ и определял бы какие передатчики активны, а какие - нет.

Евгений, спасибо за интересную идею, не подскажете где про это подробнее почитать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Так вопрос же в том, чтобы нацеливать точно, а не данные передавать. Не ответил слейв - значит неточно нацелен.

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

sadman41 пишет:
Так вопрос же в том, чтобы нацеливать точно, а не данные передавать. Не ответил слейв - значит неточно нацелен.

Хм, в принципе для ИК передатчика мастера вообще без разницы точно или не точно нацелен слейв - задача этой посылки просто запустить ответную реакцию слейва, можно несколько передатчиков поставить чтобы гарантировано перекрывалось все помещение со слейвами. А обратной посылкой пусть уже в ИК приемник попадают... То есть смысл получается в том, чтобы мастер мигнул посылкой (чтобы слейвы друг друга не запускали), кто из слейвов поймал, тот разово мигает ответной посылкой с временной задержкой, равной его ID, через время (время посылки умноженное на количество слейвов) мастер мигает снова и запускает эту чехарду вновь. спасибо за идею - это в первом приближении выглядит даже проще, чем с esp. Не подскажете достаточно мощные ик светодиоды под это дело?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Я тут немного подумал, наверное, можно даже не заморачиваться с БПФ, т.к. он изнахратит прямоугольный сигнал и всё усложнит. Нам ведь не нужно восстанавливать форму сигнала, мы и так знаем, что он прямоугольный, значит, можно обойтись двоичным анализом.

Сложность задачи зависит от того (например), нужно ли нам передавать что-то разумное или, как в примере с привидениями, достаточно просто факта того, что передатчик работает. В первом случае придётся строить аналог БПФ, специализированный для ШИМ-сигналов (и передавать информацию ШИМ-ом), а во втором, достаточно иметь вариант БПФ для меандров, что значительно проще. Причём, тем проще, чем больше мы заранее знаем о сигналах. Например, если идти по первому варианту (важен лишь факт работы передатчика), то ещё одним упрощением будет тот факт, что частоты фиксированные, заранее известные, и их немного. Осталось читать с некоторой периодичностью пин и определять какие из интересующих нас частот присутствуют, а какие - нет.

В целом задача видится интересной и, математически, вполне решаемой. 

Про "почитать", я даже не знаю, в готовом виде такой задачи я нигде не видел, решать надо самому (ну или искать, может где и решалась уже, просто я не встречал). Сильно поможет понимание что такое БПФ (со всеми потрохами) ну, и вообще, общая математическая культура.

UPDATE: погуглил. Задача решалась много раз и полно готовых решений. Забейте в гугле слова для поиска "Двоичная БПФ для прямоугольных сигналов" (без кавычек)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ЕвгенийП пишет:

 вообще, общая математическая культура.

В  рамках "математической культур-мультур" преобразования по двоичным ортогональным базисам - обзываются "Преобразование Уолша". Например протокол CDMA - Код Дивижн Малтипл Аксесс - основан на таких шнягах. ;))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:

В  рамках "математической культур-мультур" преобразования по двоичным ортогональным базисам - обзываются "Преобразование Уолша". 

Во-во :-)))

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Евгений, под "разнес передатчики по частотам", я почему то подумал что вы имеете ввиду радиочасть, а скорее всего подразумевалось чтобы каждый ИК-передатчик плевался постоянно шимом с разной скважностью, приемник все это оптом принимал и уже восстанавливал (используя БПФ или другую дьявольскую механику) кто в него плевал по ИК, Вы это имели ввиду? Мне кажется с ИК такое не пройдет - сольется эти сигналы в сплошную засветку приемника.

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

wdrakula пишет:
В  рамках "математической культур-мультур" преобразования по двоичным ортогональным базисам - обзываются "Преобразование Уолша". Например протокол CDMA - Код Дивижн Малтипл Аксесс - основан на таких шнягах. ;))))

Уважаемые профессора, прошу понизить градус научной грамотности :) с математикой за пределами программы средней школы (пройденной 25 лет тому назад) - моя на "Вы" :)

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Для меня достаточно мощным является обычный инфракрасный светодиод из/для пульта ДУ любого телевизора - возможности пробития 5 метров открытого пространства мне хватает.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

С чего сольются-то? А если ещё и разнести частоты так, чтобы каждая отличалась от следующей в 4 раза, то задача вообще упрощается донельзя!

Если включать один светодиод меандром, допустим с периодом Т1 - на принимающей стороне получим такой же меандр.

Далее включаем второй светодиод меандром с периодом Т2, где Т2 = T1/4. В этом случае в низкий полупериод первого сигнала полностью поместится один период  второго, причём независимо от сдвига фаз, будет хотя бы один полупериод не приклеенный в высоким полупериодам первого сигнала.

Также включаем третий светодиод меандром с периодом T3, где T3 = T2/4. Опять же, в низкий полупериод второго сигнала полностью поместится период третьего сигнала.

Тогда для трёх сигналов имеет такое просто решение задачи:

1. Имеются три длительности полупериодов: T1/2, T2/2 и T3/2. Каждый следующий меньше предыдущего более, чем в 2 раза.

2. ведём наблюдение в течение времени T1.

3. За это время фиксируем длительности всех поступающих высоких сигналов.

4. Если поступивший сигнал по длительности равен одному из T1/2, T2/2 и T3/2, то делаем вывод, что эта частота присутствует.

Ну, собственно, если я нигде не ошибся, то вот мы и получили список присутствующих частот.

----

Для пяти сигналов, можно взять например частоты: 100Гц, 400Гц, 1,6кГц, 6,4кГц и 25.6кГц и за время 1/100 = 10мс точно узнавать какие передатчики включены, а какие - нет.

Вот и всё решение задачи. Устраивает?

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Ворота пишет:
Для пяти сигналов, можно взять например частоты: 100Гц, 400Гц, 1,6кГц, 6,4кГц и 25.6кГц и за время 1/100 = 10мс точно узнавать какие передатчики включены, а какие - нет.

Вот и всё решение задачи. Устраивает?

Хм, спасибо. Буду думать и ставить эксперименты в этом направлении.

rkit
Offline
Зарегистрирован: 23.11.2016

Без плотной схемотехники обработать такие вещи не получится. Стандартный приемник уже содержит усилитель и фильтр на свою частоту. Для других частот придется разрабатывать свои приемники со всеми вытекающими.

 

Ворота пишет:

4. Если поступивший сигнал по длительности равен одному из T1/2, T2/2 и T3/2, то делаем вывод, что эта частота присутствует.

И потом солнце выходит из-за тучи и "делаешь вывод", что присутствуют все возможные частоты. Не знаешь как и почему ИК устроен так как он устроен - не советуй ерунды.

Ну и 100Гц это бред для таких задач. Хватит сетки начинающейся, скажем, с 40кГц с шагом 10%.

rkit
Offline
Зарегистрирован: 23.11.2016

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

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

rkit пишет:

И потом солнце выходит из-за тучи 

Где солнце, где туча, не было ничего похожего в постановке задачи. Всё там в комнате делается.

rkit пишет:

Ну и 100Гц это бред для таких задач. Хватит сетки начинающейся, скажем, с 40кГц с шагом 10%.

Причём и зачем тут вообще 40кГц, если речь идёт об обыкновенном мигании светодиодом? И что ты собрался потом делать с этой сеткой в 10%?

Не понял, что написано -

rkit пишет:

не советуй ерунды.

Гриша
Offline
Зарегистрирован: 27.04.2014

господа спецы!!! вы про спектр сигнала и засранность некоторых диапазонов забыли - все написанное выше еще +100500 раз обмазговывать нужно.

1) это только закрытое помещение или есть варианты ?

2) используются для освещения лампы? какие? светодиодные? 

3) насколько освещено помещение? 

4) мах время определения события?

это для начала, чтоб понять помехи где будут, а потом можно продолжить...

 

SLKH
Offline
Зарегистрирован: 17.08.2015

Гриша пишет:

господа спецы!!! вы про спектр сигнала и засранность некоторых диапазонов забыли - все написанное выше еще +100500 раз обмазговывать нужно.

1) это только закрытое помещение или есть варианты ?

2) используются для освещения лампы? какие? светодиодные? 

3) насколько освещено помещение? 

4) мах время определения события?

это для начала, чтоб понять помехи где будут, а потом можно продолжить...

 

5) о направлениях передатчиков - ик-сигнал неплохо от стен отражается. 

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

1) помещение закрытое

2-3) будет фоновое (неяркое) освещение, чтобы ноги не переломали. какие лампочки использовать LED или ильича - некритично. Передатчик-приемник мастера должны быть установлены на стене, на которую будет проектором выводиться изображение "привидения". Соответственно приемники-передатчики слэйвов тоже будут направлены на стену, на которую будет проецироваться картинка (и висеть приемник-передатчик мастера)

4) вот тут нужно не тормозить - нажали на кнопку на слейве - получили событие на мастере (учитывая что слейвов будет 5).

 

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

SLKH пишет:
5) о направлениях передатчиков - ик-сигнал неплохо от стен отражается.

ну тут можно усложнить - приемник убрать поглубже в трубку...

svm
Offline
Зарегистрирован: 06.11.2016

Мне кажется, самый простой вариант, поставить на базе достаточно мощный ИК передатчик, который постоянно опрашивает устройства игроков. И если кнопка игрока в момент опроса нажата, то его устройство посылает подтверждение. Затрат минимум по ИК приемнику игрокам и один ИК светодиод на базе. И никакого геммороя с кашей в эфире.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Dinosaur,

давай так, меня задача заинтересовала, поэтому я готов немного поучаствовать.

Моя идея такова:

1.
источник сигнала - ИК-светодиоды или ИК-лазеры (что лучше - они стоят ненамного дороже светодиодов, зато избирательность и дальность - не сравнить).
2.
приёмник сигнала - любой ИК-чувствительный фотоэлемент (например, фототранзистор) на туже длину волны, что и источники.
3.
Приёмник помещаешь под линзу или ещё как, чтобы не нужно было совсем уж точно в него попадать. Иначе в этот транзистор хрен попадёшь (это особо актуально, если лазеры используются);
4.
Источники выдают меандры (загораются и гаснут), каждый на своей частоте. Если в качестве управлялки будет что-то типа Uno на 16МГц, то оптимальные частоты для пяти источников -  125, 500, 2 000, 8 000 и 32 000 герц потому, что при таких частотах все пять полупериодов - есть целое количество тактов МК (Q1. скетч для источника нужен?)
5.
приёмник настраивается (подстроечным резистором) так, чтобы при отсутствии сигнала он надёжно не срабатывал, а при наличии хотя бы одного сигнала - надёжно срабатывал и выдавал HIGH на пин (Q2. надо показывать как подключить фототранзистор и куда там пихать подстроечный резистор?)

Если это то, что тебе, то я готов написать скетч для определения сколько (и какие именно) источники в данный момент светят на приёмник. Q3. Надо? Или сам напишешь?

Проверить скетч могу в проетусе (просто загнать сигналы на пин по ИЛИ) и, если уж очень нужно - могу собрать на макетке и проверить "в железе" (Q4).

Для проверки в протеусе предлагаю вот такую схему (источники сигналов - меандры по 5В заведены на пин по ИЛИ). Можно щёлкать выключатели и смотреть в "мониторе порта", что там скетч наопределял.

Ответь на вопросы Q1-Q4, если тебе это интересно.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Передаччик сделай на мишени, и смотри сколько приемников на него направлено

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Дида, где всеми любимый белый кот? Всклокоченный и лохматый, как подобает настоящему пацану? Что тут делает этот гладко причёсанный отличник?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Срецтво кончилось, вот кот и галстук адел.

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Ворота пишет:
Ответь на вопросы Q1-Q4, если тебе это интересно.

признателен за внимание. Думаю лазеры смысла использовать нет - сильно узкий луч, а тут задача не тир сделать, чтобы белке в глаз палить, а чтобы слэйвы передавали сигнал примерно в нужном направлении - изображение "приведения" будет занимать 2/3 площади стены, вот в нее родимую и нужно светить. За замечание про линзу спасибо на приемнике, сразу в голову не пришло. Излучатель видимо что то типа TSAL5100 использовать, а приемник BPV11F

Q1 - сперва попытаюсь сделать сам, если где непреодолимый затык возникнет - спрошу совета.

Q2 - я так понимаю нужно будет усилитель сигнала от фототранзистора делать на ОУ, там же и регулировку усиления сделать можно будет, тоже посильная задача.

Q3, Q4 - идею из Вашего предыдущего ответа я уловил, буду пыхтеть. За схемку спасибо, как то так я и собирался ставить опыты на "кошках", но про диоды слёту бы и не придумал. Я так понимаю начинать измерять длительность импульса лучше по аппаратному прерыванию?

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

DetSimen пишет:
Передаччик сделай на мишени, и смотри сколько приемников на него направлено

Тогда точно придется мутить связь слэйвов с мастером по радиоканалу. Спасибо за инверсию задачи - в обратном направлении (не светить слэйвами и принимать ими сигнал я не подумал - хотя по же этому принципу, насколько я помню, были сделаны в СССР игровые автоматы типа "охота на уток", да и световые пистолеты dendy и sega по тому же принципу работали).

 

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Спасибо всем за участие, ушел думать над реализацией.

rkit
Offline
Зарегистрирован: 23.11.2016

Dinosaur пишет:

Q2 - я так понимаю нужно будет усилитель сигнала от фототранзистора делать на ОУ, там же и регулировку усиления сделать можно будет, тоже посильная задача.

Нет. Ты не будешь крутить ручку каждый раз когда излучатель приблизился или удалился к приемнику. Это бред. Нужна авторегулировка усиления. Нужен фильтр. Нужен детектор. Не нужно слушать советчиков, воображающих, что всё очень просто, когда сами в жизни ничего подобного не делали.

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

rkit пишет:
Нет. Ты не будешь крутить ручку каждый раз когда излучатель приблизился или удалился к приемнику. Это бред. Нужна авторегулировка усиления. Нужен фильтр. Нужен детектор. Не нужно слушать советчиков, воображающих, что всё очень просто, когда сами в жизни ничего подобного не делали.

Ручкой я так понимаю уровень нуля выставить нужно, а дальше например триггер шмитта... не?

rkit
Offline
Зарегистрирован: 23.11.2016

Какой уровень нуля? Посмотри на приемник ик-пульта. Где там ручка и "уровень нуля", что бы это ни значило?

Dinosaur
Dinosaur аватар
Offline
Зарегистрирован: 01.01.2018

Ну как бы цель не стоит повторить TSOP, регулятор усиления будет топорной реализацией AGC - то есть все фоновое освещение включаем и выставляем логический ноль. ну а дальше триггер... Частотный фильтр (ввиду ширины диапазана смысла нет ваять)

svm
Offline
Зарегистрирован: 06.11.2016

Dinosaur пишет:

Ну как бы цель не стоит повторить TSOP, регулятор усиления будет топорной реализацией AGC - то есть все фоновое освещение включаем и выставляем логический ноль. ну а дальше триггер... Частотный фильтр (ввиду ширины диапазана смысла нет ваять)

Зачем все-так усложнять. Стандартный ИК приемник имеет очень хороший селективный усилитель, систему АРУ и компаратор. Как следствие - практически не реагирует на различные мешающие факторы и четко выделяет посылки передатчика. Я все-таки советую "обратный " вариант. Минимальная цена, стандартное схемотехническое решение и скетч, практически из примеров библиотеки. При этом все Ваши требования удовлетворит, а наличие обратного канала, позволит ввести еще кучу плюшек.

Гриша
Offline
Зарегистрирован: 27.04.2014

DetSimen пишет:

Передаччик сделай на мишени, и смотри сколько приемников на него направлено

ДИДЫ спасайте проект!!! кто помнит денди? и охоту на уток :)))))))))))))) там утка мигала, а в руже приемник был, сигналы собираем и отправляем по Радио.

лампочки подобрать, чтоб 50 Гц не фонили - это принципиально

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

svm
Offline
Зарегистрирован: 06.11.2016

Гриша пишет:

DetSimen пишет:

Передаччик сделай на мишени, и смотри сколько приемников на него направлено

ДИДЫ спасайте проект!!! кто помнит денди? и охоту на уток :)))))))))))))) там утка мигала, а в руже приемник был, сигналы собираем и отправляем по Радио.

лампочки подобрать, чтоб 50 Гц не фонили - это принципиально

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

Почти то-же я предложил в #26. Только без радио.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Dinosaur пишет:
Я так понимаю начинать измерять длительность импульса лучше по аппаратному прерыванию?
По событию захвата (capture event).

А с приёмником, не мудрите. Фототранзистор сам достаточно усилит (он же не фотодиод), триггер Шмитта тоже незачем - он уже есть на пине. Заводите сигнал на пин и регулируете ток фототранзистора, посылая на него сигнал из самого дальнего угла. Больше там ничего не надо. Отрегулировал и всё. От того, что кто-то подойдёт поближе ничего не изменится. Хотя, я бы лазер взял. Они мощнее, там вообще никаких проблем. Тут кто-то писал на форуме, как ИК-лазером звук на 10 метров передавали (на тот же фототранзистор) и играло почти без искажений.

Другое дело, что транзистор усилит всё, что увидит. Но тут надо просто подобрать транзистор с правильной длиной волны, чтобы ему видимый свет поменьше мешал. Ну и видимый свет в комнате - чтобы поменьше красного было.

Нормально всё будет работать. А со скетчем распознавания я помогу, если скажешь.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ЕвгенийП пишет:

Дида, где всеми любимый белый кот? Всклокоченный и лохматый, как подобает настоящему пацану? Что тут делает этот гладко причёсанный отличник?

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

!!!