Прием нескольких ИК-команд одновременно
- Войдите на сайт для отправки комментариев
Вс, 15/03/2020 - 09:25
Добрый день, камрады
Подкинули тут задачку, не соображу с какой стороны подступиться, возможно кто-то сталкивался с подобным и подкинет идею в кукую сторону ломать мозг. Дано - один ИК приемник и пять ИК передатчиков. Нужно отловить факт того, что все пять ИК передатчиков излучают примерно в одну сторону (а-ля охотники за приведениями - когда "стреляют" по одному, то мощности победить не хватает, а вот когда все пятеро одновременно, то "вы победили"). Радио использовать не представляется возможным, т.к. не отловим направление. А посылаемые одновременно команды с разных ик передатчиков "забивают" друг друга. Как можно выкрутиться?
Никак
Ну я не был бы так категоричен - в голове крутится мысль задействовать ESP в терминалах и "сервере", сервером опрашивать терминалы в цикле и при получении подтверждения нажатия кнопки, разрешать передачу ик-команды. Но с таким пока не сталкивался, опасаюсь что время опроса-отклика будет большое, т.к. обмен интенсивный (запрос состояния по радио - ответ (есть событие/нет события/нет ответа) - нет события или нет ответа -> опрос следующего терминала, событие есть -> разрешение на отправку ик посылки... ну и так далее. ESP под рукой нет чтобы проверить, и всегда интересно взглянуть на задачу чужими глазами, часто очевидные решения не приходят на ум.
Сделать связь между передатчиками по радио. Передавать достаточно 1 бит синхронизации. А далее ИК передают по очереди. Все будет достаточно быстро. Это как бы временное разделение каналов.
Или сделать двусторонний ИК канал. Мастер мигнул, слейвы, которые заловили сигнал, начали подмигивать в ответ с задержкой, определяемой их ID.
Я бы разнёс передатчики по частотам, а на принимающей стороне считал бы БПФ и определял бы какие передатчики активны, а какие - нет.
слейвы очень нестационарны, боюсь устойчивой работы добиться при двусторонней связи по ИК не удастся...
То есть мастер кидает по радио в эфир бит, и переключается на прием по ИК. Слейвы, что поймали бит, кидают в ответ по ИК посылку (свой код и флаг нажатия кнопки) с задержкой +10 +20 +30 +40 +50 единиц времени. Мастер принимает посылки по ИК в течение ~60 единиц времени, затем кидает опять в эфир бит. Да, думаю это проще, чем устраивать двусторонний радиообмен. На каком железе такое проще всего реализовать не подскажете? ESP?
Евгений, спасибо за интересную идею, не подскажете где про это подробнее почитать?
Так вопрос же в том, чтобы нацеливать точно, а не данные передавать. Не ответил слейв - значит неточно нацелен.
Хм, в принципе для ИК передатчика мастера вообще без разницы точно или не точно нацелен слейв - задача этой посылки просто запустить ответную реакцию слейва, можно несколько передатчиков поставить чтобы гарантировано перекрывалось все помещение со слейвами. А обратной посылкой пусть уже в ИК приемник попадают... То есть смысл получается в том, чтобы мастер мигнул посылкой (чтобы слейвы друг друга не запускали), кто из слейвов поймал, тот разово мигает ответной посылкой с временной задержкой, равной его ID, через время (время посылки умноженное на количество слейвов) мастер мигает снова и запускает эту чехарду вновь. спасибо за идею - это в первом приближении выглядит даже проще, чем с esp. Не подскажете достаточно мощные ик светодиоды под это дело?
Я тут немного подумал, наверное, можно даже не заморачиваться с БПФ, т.к. он изнахратит прямоугольный сигнал и всё усложнит. Нам ведь не нужно восстанавливать форму сигнала, мы и так знаем, что он прямоугольный, значит, можно обойтись двоичным анализом.
Сложность задачи зависит от того (например), нужно ли нам передавать что-то разумное или, как в примере с привидениями, достаточно просто факта того, что передатчик работает. В первом случае придётся строить аналог БПФ, специализированный для ШИМ-сигналов (и передавать информацию ШИМ-ом), а во втором, достаточно иметь вариант БПФ для меандров, что значительно проще. Причём, тем проще, чем больше мы заранее знаем о сигналах. Например, если идти по первому варианту (важен лишь факт работы передатчика), то ещё одним упрощением будет тот факт, что частоты фиксированные, заранее известные, и их немного. Осталось читать с некоторой периодичностью пин и определять какие из интересующих нас частот присутствуют, а какие - нет.
В целом задача видится интересной и, математически, вполне решаемой.
Про "почитать", я даже не знаю, в готовом виде такой задачи я нигде не видел, решать надо самому (ну или искать, может где и решалась уже, просто я не встречал). Сильно поможет понимание что такое БПФ (со всеми потрохами) ну, и вообще, общая математическая культура.
UPDATE: погуглил. Задача решалась много раз и полно готовых решений. Забейте в гугле слова для поиска "Двоичная БПФ для прямоугольных сигналов" (без кавычек)
вообще, общая математическая культура.
В рамках "математической культур-мультур" преобразования по двоичным ортогональным базисам - обзываются "Преобразование Уолша". Например протокол CDMA - Код Дивижн Малтипл Аксесс - основан на таких шнягах. ;))))
В рамках "математической культур-мультур" преобразования по двоичным ортогональным базисам - обзываются "Преобразование Уолша".
Во-во :-)))
Евгений, под "разнес передатчики по частотам", я почему то подумал что вы имеете ввиду радиочасть, а скорее всего подразумевалось чтобы каждый ИК-передатчик плевался постоянно шимом с разной скважностью, приемник все это оптом принимал и уже восстанавливал (используя БПФ или другую дьявольскую механику) кто в него плевал по ИК, Вы это имели ввиду? Мне кажется с ИК такое не пройдет - сольется эти сигналы в сплошную засветку приемника.
Уважаемые профессора, прошу понизить градус научной грамотности :) с математикой за пределами программы средней школы (пройденной 25 лет тому назад) - моя на "Вы" :)
Для меня достаточно мощным является обычный инфракрасный светодиод из/для пульта ДУ любого телевизора - возможности пробития 5 метров открытого пространства мне хватает.
С чего сольются-то? А если ещё и разнести частоты так, чтобы каждая отличалась от следующей в 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мс точно узнавать какие передатчики включены, а какие - нет.
Вот и всё решение задачи. Устраивает?
Вот и всё решение задачи. Устраивает?
Хм, спасибо. Буду думать и ставить эксперименты в этом направлении.
Без плотной схемотехники обработать такие вещи не получится. Стандартный приемник уже содержит усилитель и фильтр на свою частоту. Для других частот придется разрабатывать свои приемники со всеми вытекающими.
4. Если поступивший сигнал по длительности равен одному из T1/2, T2/2 и T3/2, то делаем вывод, что эта частота присутствует.
И потом солнце выходит из-за тучи и "делаешь вывод", что присутствуют все возможные частоты. Не знаешь как и почему ИК устроен так как он устроен - не советуй ерунды.
Ну и 100Гц это бред для таких задач. Хватит сетки начинающейся, скажем, с 40кГц с шагом 10%.
Прямо подключить - сразу нет. Всегда нужен фильтр. Всегда нужны считать, способен ли твой источник в принципе дать сигнал, который ацп сможет зарегистрировать. Ну и дальше цифровая обработка сигнала не сильно проще аналоговой, и сожрет большую часть ресурсов.
И потом солнце выходит из-за тучи
Где солнце, где туча, не было ничего похожего в постановке задачи. Всё там в комнате делается.
Ну и 100Гц это бред для таких задач. Хватит сетки начинающейся, скажем, с 40кГц с шагом 10%.
Причём и зачем тут вообще 40кГц, если речь идёт об обыкновенном мигании светодиодом? И что ты собрался потом делать с этой сеткой в 10%?
Не понял, что написано -
не советуй ерунды.
господа спецы!!! вы про спектр сигнала и засранность некоторых диапазонов забыли - все написанное выше еще +100500 раз обмазговывать нужно.
1) это только закрытое помещение или есть варианты ?
2) используются для освещения лампы? какие? светодиодные?
3) насколько освещено помещение?
4) мах время определения события?
это для начала, чтоб понять помехи где будут, а потом можно продолжить...
господа спецы!!! вы про спектр сигнала и засранность некоторых диапазонов забыли - все написанное выше еще +100500 раз обмазговывать нужно.
1) это только закрытое помещение или есть варианты ?
2) используются для освещения лампы? какие? светодиодные?
3) насколько освещено помещение?
4) мах время определения события?
это для начала, чтоб понять помехи где будут, а потом можно продолжить...
1) помещение закрытое
2-3) будет фоновое (неяркое) освещение, чтобы ноги не переломали. какие лампочки использовать LED или ильича - некритично. Передатчик-приемник мастера должны быть установлены на стене, на которую будет проектором выводиться изображение "привидения". Соответственно приемники-передатчики слэйвов тоже будут направлены на стену, на которую будет проецироваться картинка (и висеть приемник-передатчик мастера)
4) вот тут нужно не тормозить - нажали на кнопку на слейве - получили событие на мастере (учитывая что слейвов будет 5).
ну тут можно усложнить - приемник убрать поглубже в трубку...
Мне кажется, самый простой вариант, поставить на базе достаточно мощный ИК передатчик, который постоянно опрашивает устройства игроков. И если кнопка игрока в момент опроса нажата, то его устройство посылает подтверждение. Затрат минимум по ИК приемнику игрокам и один ИК светодиод на базе. И никакого геммороя с кашей в эфире.
Dinosaur,
давай так, меня задача заинтересовала, поэтому я готов немного поучаствовать.
Моя идея такова:
1.
источник сигнала - ИК-светодиоды или ИК-лазеры (что лучше - они стоят ненамного дороже светодиодов, зато избирательность и дальность - не сравнить).
2.
приёмник сигнала - любой ИК-чувствительный фотоэлемент (например, фототранзистор) на туже длину волны, что и источники.
3.
Приёмник помещаешь под линзу или ещё как, чтобы не нужно было совсем уж точно в него попадать. Иначе в этот транзистор хрен попадёшь (это особо актуально, если лазеры используются);
4.
Источники выдают меандры (загораются и гаснут), каждый на своей частоте. Если в качестве управлялки будет что-то типа Uno на 16МГц, то оптимальные частоты для пяти источников - 125, 500, 2 000, 8 000 и 32 000 герц потому, что при таких частотах все пять полупериодов - есть целое количество тактов МК (Q1. скетч для источника нужен?)
5.
приёмник настраивается (подстроечным резистором) так, чтобы при отсутствии сигнала он надёжно не срабатывал, а при наличии хотя бы одного сигнала - надёжно срабатывал и выдавал HIGH на пин (Q2. надо показывать как подключить фототранзистор и куда там пихать подстроечный резистор?)
Если это то, что тебе, то я готов написать скетч для определения сколько (и какие именно) источники в данный момент светят на приёмник. Q3. Надо? Или сам напишешь?
Проверить скетч могу в проетусе (просто загнать сигналы на пин по ИЛИ) и, если уж очень нужно - могу собрать на макетке и проверить "в железе" (Q4).
Для проверки в протеусе предлагаю вот такую схему (источники сигналов - меандры по 5В заведены на пин по ИЛИ). Можно щёлкать выключатели и смотреть в "мониторе порта", что там скетч наопределял.
Ответь на вопросы Q1-Q4, если тебе это интересно.
Передаччик сделай на мишени, и смотри сколько приемников на него направлено
Дида, где всеми любимый белый кот? Всклокоченный и лохматый, как подобает настоящему пацану? Что тут делает этот гладко причёсанный отличник?
Срецтво кончилось, вот кот и галстук адел.
признателен за внимание. Думаю лазеры смысла использовать нет - сильно узкий луч, а тут задача не тир сделать, чтобы белке в глаз палить, а чтобы слэйвы передавали сигнал примерно в нужном направлении - изображение "приведения" будет занимать 2/3 площади стены, вот в нее родимую и нужно светить. За замечание про линзу спасибо на приемнике, сразу в голову не пришло. Излучатель видимо что то типа TSAL5100 использовать, а приемник BPV11F
Q1 - сперва попытаюсь сделать сам, если где непреодолимый затык возникнет - спрошу совета.
Q2 - я так понимаю нужно будет усилитель сигнала от фототранзистора делать на ОУ, там же и регулировку усиления сделать можно будет, тоже посильная задача.
Q3, Q4 - идею из Вашего предыдущего ответа я уловил, буду пыхтеть. За схемку спасибо, как то так я и собирался ставить опыты на "кошках", но про диоды слёту бы и не придумал. Я так понимаю начинать измерять длительность импульса лучше по аппаратному прерыванию?
Тогда точно придется мутить связь слэйвов с мастером по радиоканалу. Спасибо за инверсию задачи - в обратном направлении (не светить слэйвами и принимать ими сигнал я не подумал - хотя по же этому принципу, насколько я помню, были сделаны в СССР игровые автоматы типа "охота на уток", да и световые пистолеты dendy и sega по тому же принципу работали).
Спасибо всем за участие, ушел думать над реализацией.
Q2 - я так понимаю нужно будет усилитель сигнала от фототранзистора делать на ОУ, там же и регулировку усиления сделать можно будет, тоже посильная задача.
Нет. Ты не будешь крутить ручку каждый раз когда излучатель приблизился или удалился к приемнику. Это бред. Нужна авторегулировка усиления. Нужен фильтр. Нужен детектор. Не нужно слушать советчиков, воображающих, что всё очень просто, когда сами в жизни ничего подобного не делали.
Ручкой я так понимаю уровень нуля выставить нужно, а дальше например триггер шмитта... не?
Какой уровень нуля? Посмотри на приемник ик-пульта. Где там ручка и "уровень нуля", что бы это ни значило?
Ну как бы цель не стоит повторить TSOP, регулятор усиления будет топорной реализацией AGC - то есть все фоновое освещение включаем и выставляем логический ноль. ну а дальше триггер... Частотный фильтр (ввиду ширины диапазана смысла нет ваять)
Ну как бы цель не стоит повторить TSOP, регулятор усиления будет топорной реализацией AGC - то есть все фоновое освещение включаем и выставляем логический ноль. ну а дальше триггер... Частотный фильтр (ввиду ширины диапазана смысла нет ваять)
Зачем все-так усложнять. Стандартный ИК приемник имеет очень хороший селективный усилитель, систему АРУ и компаратор. Как следствие - практически не реагирует на различные мешающие факторы и четко выделяет посылки передатчика. Я все-таки советую "обратный " вариант. Минимальная цена, стандартное схемотехническое решение и скетч, практически из примеров библиотеки. При этом все Ваши требования удовлетворит, а наличие обратного канала, позволит ввести еще кучу плюшек.
Передаччик сделай на мишени, и смотри сколько приемников на него направлено
ДИДЫ спасайте проект!!! кто помнит денди? и охоту на уток :)))))))))))))) там утка мигала, а в руже приемник был, сигналы собираем и отправляем по Радио.
лампочки подобрать, чтоб 50 Гц не фонили - это принципиально
освещенность подобрать, как и чувствительность приемника. Приведение должно мигать не полностью, иначе в помещении отраженный сигнал будет сильный.
Передаччик сделай на мишени, и смотри сколько приемников на него направлено
ДИДЫ спасайте проект!!! кто помнит денди? и охоту на уток :)))))))))))))) там утка мигала, а в руже приемник был, сигналы собираем и отправляем по Радио.
лампочки подобрать, чтоб 50 Гц не фонили - это принципиально
освещенность подобрать, как и чувствительность приемника. Приведение должно мигать не полностью, иначе в помещении отраженный сигнал будет сильный.
А с приёмником, не мудрите. Фототранзистор сам достаточно усилит (он же не фотодиод), триггер Шмитта тоже незачем - он уже есть на пине. Заводите сигнал на пин и регулируете ток фототранзистора, посылая на него сигнал из самого дальнего угла. Больше там ничего не надо. Отрегулировал и всё. От того, что кто-то подойдёт поближе ничего не изменится. Хотя, я бы лазер взял. Они мощнее, там вообще никаких проблем. Тут кто-то писал на форуме, как ИК-лазером звук на 10 метров передавали (на тот же фототранзистор) и играло почти без искажений.
Другое дело, что транзистор усилит всё, что увидит. Но тут надо просто подобрать транзистор с правильной длиной волны, чтобы ему видимый свет поменьше мешал. Ну и видимый свет в комнате - чтобы поменьше красного было.
Нормально всё будет работать. А со скетчем распознавания я помогу, если скажешь.
Дида, где всеми любимый белый кот? Всклокоченный и лохматый, как подобает настоящему пацану? Что тут делает этот гладко причёсанный отличник?
Вернулся. Выходные опять разлохматили и всклокотали отличничка. :)
!!!