TL,DR: Как реализовать систему оповещения с несколькими оконечными устройствами, позволяющую звонить с любого терминала на любой другой терминал? Основными ограничениями являются отказ от использования программируемых чипов/MCU (только универсальная и специализированная жесткая логика), использование проводной связи вместо беспроводной, отсутствие отдельного кабеля между каждыми двумя терминалами, наличие единого источника питания вместо батарей везде. Нет необходимости передавать голос или текст — только целевые уведомления в стиле «дверной звонок между любыми двумя комнатами». Получатель должен знать, кто отправил уведомление.
Это мой первый вопрос по электротехнике SE. Я любитель электроники. Я считаю себя новичком.
Я хотел бы реализовать в своем доме своего рода систему уведомлений для звонков между комнатами, либо разработав ее самостоятельно, либо найдя существующий дизайн. Основная идея заключается в том, что будет несколько терминальных устройств (ниже называемых «терминалами») A, B, C, D, … в разных местах. Каждый терминал будет иметь отдельную кнопку для каждого другого терминала (так, например, терминал A будет иметь кнопки «B», «C», «D» и т. д.), отдельный светодиод для каждого другого терминала (таким образом, терминал A будет иметь светодиоды «B»). », «С», «Д» и так далее), и один звонок (как обычный электрический дверной звонок). Кнопки будут использоваться для совершения звонков, а светодиоды будут указывать на вызывающего абонента.
Предположим, Алиса (которая в данный момент находится рядом с терминалом А) хочет позвонить Бобу (который в данный момент находится рядом с терминалом В). Затем Алиса нажимает кнопку «В» на терминальном устройстве А. В результате на терминале В загорается светодиод с пометкой «А», а на терминале В раздается звонок. Терминалы C, D и т. д. молчат. Боб слышит звонок, видит светодиод и идет к терминалу А, чтобы посмотреть/спросить, что произошло.
Будет не более 16 терминалов и не менее 5 терминалов.
Вместо нескольких светодиодов на каждом терминале может быть один или два семисегментных дисплея для отображения идентификатора вызывающего абонента.
Опционально, также будет кнопка «позвонить на все другие терминалы одновременно», например, чтобы одновременно позвонить на B, C, D и т. д. с A. Это (как и другие необязательные функции) во многом будет зависеть от того, упрощают ли они вещи или усложняют.
Все клеммы будут питаться от одного источника питания (вместо батарей в каждой клемме), таким образом, по крайней мере два провода будут проходить через все клеммы (Vcc и GND). В зависимости от схемы может потребоваться третий провод питания. Кроме того, низкочастотная проводная связь предпочтительнее высокочастотной беспроводной связи по нескольким причинам, включая отсутствие опыта работы с радиочастотами. Допускается до 8 дополнительных проводов для связи (т.е. не считая проводов питания), при этом все кабели должны сходиться в одной точке (местоположении источника питания). В качестве альтернативы к каждому терминалу может быть подключено дополнительное промежуточное устройство.
Могут быть проблемы, если два вызова выполняются одновременно с разных терминалов. Этого можно избежать, заблокировав клеммы B, C, D после активации клеммы A и снова разблокировав их после деактивации клеммы A. В любом случае, эту проблему можно полностью игнорировать, предполагая, что любая комбинация одновременных вызовов не разрушит схему.
У меня есть идея (все еще грубая, без схемы) о том, как выполнить вышеуказанный проект с жесткой логикой общего назначения (вентиляторы, счетчики, кодировщики, декодеры). Каждый терминал может послать две пачки импульсов, одну посылку с кодированием посылок и приемник с кодировкой пачки. Одного или двух проводов связи может быть достаточно. Это кажется нетривиальным, но жизнеспособным. Возможно, мне придется найти кого-нибудь, кто проверит мою схему, прежде чем пытаться ее реализовать.
Однако у меня есть сильное ощущение, что эта или подобная проблема уже решена и реализована в некоторых специализированных интегральных схемах или электронных модулях, которые можно просто подключить с минимальными/умеренными дополнениями. Однако я не уверен, как искать такое решение, а также будет ли цена приемлемой для меня. Мои попытки ввести «многонаправленный дверной звонок», «домашняя система оповещения» и ряд других запросов не дали ничего существенного.
Возможно, пульты дистанционного управления можно было бы перепрофилировать в терминалы (вызывающая часть), с разными командами для разных получателей и разными протоколами для разных вызывающих абонентов, но тогда либо каждый получатель должен понимать всех вызывающих абонентов (несколько принимающих модулей в каждом терминале?), либо должно быть не менее 20 различных команд, поддерживаемых пультом дистанционного управления (для охвата 5 терминалов) до 240 различных поддерживаемых команд (для охвата 16 терминалов). Однако я не исследовал идею с дистанционным управлением.
Можете ли вы указать на существующее решение с несколькими «одноранговыми» терминальными устройствами, которое в первую очередь предназначено для создания простых неголосовых уведомлений? Или к любым идеям о том, как это может быть реализовано? Или к существующим местам в Интернете, где одно и то же обсуждается под другим именем / в другой обстановке? Существуют ли решения других проблем (например, дистанционного управления), которые можно было бы адаптировать для этой цели?
Обратите внимание, что я не буду принимать ответы, предлагающие программируемые микросхемы/микроконтроллеры/что-либо, что должно быть запрограммировано, даже если это действительно упростит оставшуюся часть схемы. (Я не говорю, что такие ответы будут совершенно бесполезны, так как у других людей с другими навыками может быть такая же проблема! Кроме того, допустимо наличие нескольких перемычек или микропереключателей внутри каждого терминального устройства для назначения терминалам уникальных идентификаторов, даже если это может считать «программированием».)
Если ничего другого, я попробую использовать ворота и счетчики. Даже если на данный момент все это окажется для меня невыполнимым, я все равно буду рад узнать, какие существуют возможности.
Любой вклад приветствуется!
Интересный. Конечно, любой здравомыслящий человек использовал бы для этого микроконтроллер, например Arduino . Но если вам действительно нужно решение с «жесткой логикой», я бы предложил основывать его на автономном чипе UART — при условии, что они все еще доступны. Вот функциональная блок-схема, объясняющая концепцию.
смоделируйте эту схему - схема, созданная с помощью CircuitLab
U12 — это DIP-переключатель, который используется для идентификации конкретного терминала (ID источника).
U2 — это микросхема «кодировщика клавиатуры», которая выводит номер клавиши (идентификатор назначения) вместе с «действительным» стробоскопом, указывающим, что клавиша нажата. Вы никогда не указывали, как долго вы хотите, чтобы дисплей сохранялся, поэтому я предполагаю, что это только до тех пор, пока нажата клавиша. Таким образом, каждое нажатие клавиши отправляет два сообщения: одно при нажатии клавиши и одно при ее нажатии. Сообщение о включении отправляет собственный идентификатор терминала в качестве идентификатора получателя, который получатели интерпретируют как «отключение дисплея».
U3 — это мультиплексор, который выбирает выход клавиатуры для нажатия клавиши и собственный идентификатор терминала для нажатия клавиши, а U4 превращает фронты «действительного» сигнала в строб-импульсы для передатчика UART.
Передатчик UART последовательно преобразует два 4-битных кода в 8-битный байт, который затем поступает от приемников всех терминалов. Если идентификатор получателя соответствует собственному идентификатору терминала (определенному U7), то включается отображение, отображающее исходный идентификатор из сообщения. Если идентификатор получателя совпадает с идентификатором источника в сообщении (определяется U11), то дисплей выключается. Триггер U10 запоминает состояние дисплея, а U8 функционирует как декодер для дисплея (U9), который может быть либо отдельным светодиодом, либо 7-сегментным дисплеем.
Поле с пометкой «Шина или концентратор» представляет соединения между всеми терминалами. Вы можете использовать RS-232 в качестве интерфейса сигнализации, и в этом случае вам понадобится концентратор, который объединяет все сигналы передатчика вместе и перенаправляет их на все приемники. Или вы можете использовать RS-485 в качестве интерфейса сигнализации, что позволит вам просто объединить все терминалы вместе с распределением мощности.
Добавление функции «звонить всем» проще всего добавить, назначив этой функции один из идентификаторов адресата (например, 0xF). Вы сможете иметь только 15 терминалов, но потребуется лишь небольшая дополнительная логика на приемнике, чтобы проверить этот конкретный идентификатор, входящий для включения отображения.
Каждый из блоков, показанных на этой диаграмме, доступен в виде отдельного чипа (SSI/MSI TTL плюс UART).
Марко Буршич
пользователь84255
Евгений Ш.
пользователь84255