Как контролировать состояние коммутатора?

Фон

Я создаю простое веб-приложение, используя малину в качестве сервера. Я использую эту малину также для управления Arduino. Пользователь может отправлять команды через браузер на малину, и она может управлять некоторыми функциями ардуино!

Что я хочу

введите описание изображения здесь

Я хочу использовать Arduino для включения и выключения лампы параллельно обычному ручному выключателю, который я могу использовать для включения и выключения лампы, например:

1: Если лампа выключена, а переключатель также находится в положении «ВЫКЛ.» (размыкающий переключатель), я могу включить лампу с помощью переключателя, установив его в положение «ВКЛ.» (замкнув переключатель). Затем система мониторинга сообщит Arduino (и веб-серверу), что переключатель включен/замкнут и горит свет.

2: Я могу использовать Arduino, чтобы выключить свет, не обязательно переводя переключатель в положение OFF. Если свет выключен (потому что я выключил его с помощью arduino), а переключатель находится в положении ON (замкнут), мне нужно переключить его в положение OFF, а затем снова в положение ON, чтобы я мог чувствовать эти изменения и отправить их на arduino (и, следовательно, на веб-сервер).

3 (Возможное улучшение?): Всякий раз, когда я меняю состояние переключателя, свет меняет свое состояние на противоположное текущему: если свет горит, он гаснет, и наоборот, независимо от переключателя. состояние.

Проблема

Как я могу на самом деле узнать, включен ли переключатель? В любом случае можно использовать датчик, какую-то электронную схему или компонент, который может определить, включен переключатель или выключен? Я думал об использовании реле для управления светом в зависимости от состояния света, которое хранится на ардуино/веб-сервере. Является ли это надежным способом (я имею в виду использование реле) для этого?

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

Ответы (4)

Чтобы получить описанную вами функциональность, вам нужно иметь «3-позиционные» (SPDT) переключатели — ручной и реле, которым управляет Arduino. Это похоже на наличие двух выключателей, которые управляют освещением с обоих концов коридора, за исключением того, что один из них управляется вашим MCU.

Ощущение состояния света — это отдельная тема. На этом и других сайтах есть много схем для безопасного определения наличия сетевого напряжения в розетке.

Спасибо за ваш ответ! Ваш подход действителен, и я собираюсь его реализовать, хотя мне все еще интересно, как бы я установил такую ​​​​систему в простой переключатель SPST, хотя они обычно не используются в качестве переключателей ламп (я думаю?)
Они (где?) регулярно используются на лестничных клетках, где у вас есть переключатель вверху и внизу. Переключение любого из них включает или выключает свет. Многие реле являются «трехходовыми», и вы просто подключаете их последовательно со вторым «трехходовым» выключателем и светом. Настенные выключатели света часто бывают 3-позиционными, поэтому их можно подключить для включения света в любой конфигурации или фактически использовать в качестве 3-позиционного выключателя.

Поскольку вам все равно нужно будет управлять сетью, вы можете подключить последовательно только реле и свет. Существующий коммутатор вы подключаете к GPIO Arduino. Таким образом, Arduino знает состояние переключателя и может управлять освещением без дополнительных соединений и датчиков. Существует проблема, заключающаяся в том, что ваш Arduino должен работать правильно, чтобы управлять освещением, даже если вы хотите использовать только физическую кнопку. Таким образом, это решение подходит только в том случае, если вы можете жить с невозможностью переключать состояние освещения, пока вы не отремонтируете Arduino.

Касательно надежности. У меня точно такое же решение, как и в этом ответе, и у меня есть небольшие проблемы с тем, что реле не отключается (контакты приварены), поэтому я бы посоветовал купить качественное реле, а не какую-то неизвестную деталь с ebay, даже если его «параметры» выглядят нормально.

Если вам неудобно работать с 120 В переменного тока (может быть катастрофическим, если вы не знаете, что делаете), то механическое решение намного безопаснее. Вы будете ненавидеть это, но для проверки концепции вы можете приклеить концевой выключатель на лицевую панель под выключателем света, как на картинке ниже (окрашивание его в белый цвет может сделать его более терпимым). Я бы использовал подтягивающий резистор, чтобы дать вам активный ВЫСОКИЙ сигнал, который обычно более интуитивно понятен. Ознакомьтесь с этим руководством по переключателям.

введите описание изображения здесь

Для более продвинутого решения я бы уменьшил и выпрямил напряжение на переключателе, чтобы увидеть, есть ли одно и то же с обеих сторон переключателя (ЗАКРЫТО) или разные вещи (ОТКРЫТО). В идеале у вас должен быть небольшой изолирующий понижающий трансформатор между любым сетевым напряжением и вашим чувствительным микроконтроллером. Однако ради дешевого решения вы можете использовать конденсаторы с рейтингом X для изоляции. Любое решение необходимо будет преобразовать в постоянный ток, чтобы ваш микроконтроллер мог его прочитать при напряжении от 0 до 5 вольт.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Я бы сказал, прекрасный выход, и, согласно симулятору, он потребляет всего около 25 мВт (синий цвет — это изолированное выпрямленное напряжение, а оранжевый — напряжение, регулируемое стабилитроном). Прочитайте этот вывод с помощью одного из входов вашего микроконтроллера, и у вас есть индикатор! (К сведению, 0 В означает отсутствие разницы между переключателем = ЗАМКНУТ)

Конденсаторно-изолированное питание

Хотя, безусловно, это хорошее решение для опытного инженера, предлагать схемы сетевого напряжения людям, которые только что укрепились в микроконтроллерах, — это верный путь к смертельной катастрофе.
Хороший вопрос, я добавил механическое решение. Хотя OP намеревается управлять реле 120 В с микроконтроллером, так что это будет проблемой и с высоковольтным интерфейсом.
Спасибо за ваш ответ! Что ж, я не уверен, понял ли я то, что вы имели в виду в первом абзаце, но я не собираюсь использовать Arduino для изменения положения переключателя; Я могу захотеть, чтобы Arduino знал, включен переключатель или выключен, но я не хочу использовать Arduino для изменения его состояния!
Добавил картинку для наглядности. Это громоздко и неприглядно, но оно должно работать хорошо, как только вы отрегулируете позиционирование, чтобы заставить его срабатывать. Если вы собираетесь добавить проектную коробку выше или ниже выключателя света для размещения вашего оборудования IoT, вы также можете просверлить небольшое отверстие из стороны в сторону через выключатель света, а затем использовать проволочную связь, спускающуюся в вашу проектную коробку. чтобы скрыть всю электронику от глаз. Движение переключателя света вверх/вниз будет связано с концевым выключателем того же типа в вашем блоке проекта, чтобы считывать его линейное положение (вверх или вниз).

Еще одна любопытная идея, которую я предлагаю здесь. Есть ли простое оптоэлектронное сенсорное решение, способное решить эту проблему? Два преимущества дают нам изоляцию для обеспечения безопасности, изменение уровня напряжения на ваших частях MCU. Представьте, что внутри выключателя питания есть физическое соединение, когда он включен, чтобы излучать свет для срабатывания оптодатчика, тогда мы получаем логический сигнал как 1. Когда он выключен, мы получаем несигналы как 0.

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