Оглавление:
Видео: Беспроводное управление изголовьем кровати MQTT: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Несколько лет назад мы приобрели новую кровать из пены с эффектом памяти, и, как и в случае с большинством кроватей, вам также пришлось приобрести одну из их «утвержденных оснований», чтобы сохранить гарантию. Итак, мы выбрали наименее дорогую основу, которая также включала возможность поднимать и опускать изголовье кровати. Несколько дней спустя наш матрас и наша дешевая база American Adjustables с проводным управлением (по одному для каждой стороны кровати) были доставлены и настроены.
Первое, что мы заметили, это то, что шнуры в выставочном зале, которые были хорошими и длинными, были не тем, что у нас было на нашей кровати! Те, что в выставочном зале, имели пристройки. Эти удлинители НЕ были включены в нашу кровать и, что достаточно интересно, никто не был заинтересован в продаже нам пары удлинительных кабелей. Это оставило нас с элементами управления, которые едва доходили до верха кровати и которые нам пришлось перевернуть, чтобы использовать.
Ты получаешь то, за что платишь
Примерно через 6 месяцев мы замечаем, что хомуты для снятия натяжения на одном из элементов управления начали рваться. Через несколько месяцев - оголенный провод. Перенесемся примерно на год, и один из элементов управления больше не работает, а другой начинает дергаться.
Опять же, никто не был заинтересован в продаже нам замен. Потом меня осенило!
«Погоди минутку! Разве я не строю систему домашней автоматизации и УПРАВЛЕНИЯ?!?»
Шаг 1: открытие
Я хотел посмотреть, что я могу сделать с тем, что у меня было, поэтому я взял неисправный контроллер и вау! там было много дерьма! Для чего все это было? Я отступил и просто посмотрел на входящие и выходящие линии. Я смог увидеть, что есть линия питания 12 вольт и линия заземления. Две другие линии выглядели как сигнальные линии для двух кнопок вверх и вниз. Итак, я рискнул и просто перемкнул источник питания 12 В на сигнальную линию "вверх". Кровать начала двигаться! Затем я переместил перемычку на сигнальную линию «вниз», и кровать упала!
В коробке есть контакты еще для 4-х сигнальных линий и еще 4-х кнопок. Я предполагаю, что эта плата контроллера используется во всех их проводных базовых моделях, и они просто кладут на плату разные лицевые панели по мере необходимости. Итак, у меня была рабочая теория. Я проверил линию питания, чтобы увидеть, просела ли она во время использования или поднялась в любое время - нет. По сигнальным линиям потреблялся очень небольшой ток, но для активации двигателя им требовалось 12 вольт.
Шаг 2: Дизайн
Итак, простое контактное соединение между VCC и сигнальным контактом - это все, что нужно, но как это делается в моей системе. Для контактов потребуются два реле, а для беспроводного контроллера будет работать ESP8266. Поскольку реле может потреблять больше тока, чем могут обеспечить цифровые выводы, лучше всего использовать оптоизолятор между контроллером и реле. Это позволит слабым сигналом включить переключатель с более высоким током (в данном случае транзистор с управляемым светом) и безопасно активировать катушку реле. Кроме того, оптоизолятор изолирует контроллер от любых всплесков, которые могут образоваться, когда катушка реле отпускается и магнитное поле схлопывается. К счастью, существуют релейные модули, которые уже содержат всю эту схему и по довольно низкой цене.
Кровать будет источником питания для контроллера, и для того, чтобы работать с подаваемым напряжением 12 вольт, нам понадобится переменный понижающий преобразователь. Ниже приведена ссылка на очень недорогой вариант, который прекрасно работает. Линия 12 В и линии GND подключаются к входной стороне преобразователя, а сторона с регулируемым напряжением 5 В подключается к VCC NodeMCU и контакту VCC на модуле реле. Земля (-) на преобразователе подключается к контактам GND на как релейный модуль, так и NodeMCU.
NodeMCU подключается к IN1 с помощью D1 (GPIO5) и IN2 с помощью D2 (GPIO4). Верхняя сигнальная линия на платформе подключается к нормально разомкнутой винтовой клемме реле 1, а нижняя сигнальная линия подключается к нормально разомкнутой клеммной колодке реле 2. Вам нужно будет подключить провод 12 В, который подключен к входной стороне понижающего преобразователя, также к другому соединению клеммной колодки для ОБЕИХ реле 1 и 2.
Запчасти
- 1 - NodeMCU
- 1 - Модуль реле Duel с токовой изоляцией
- 1 - Понижающий преобразователь переменного ввода / вывода
- 1 - Макетная плата
- Многожильный медный провод 22 калибра
- 2 - винты M3x 8
Шаг 3: корпус
Корпус можно найти здесь:
Я разработал простой корпус с помощью Tinkercad, который позволяет кабелю управления кроватью входить в коробку между скобами для снятия натяжения внутри коробки. Здесь есть прорези для стяжки, которые помогут предотвратить скольжение кабеля, но в моем случае посадка была очень плотной и не нуждалась в этом. Крышка прикручивается двумя винтами M3x 8. Я бы рекомендовал загрузить код и протестировать систему, прежде чем устанавливать ее в коробку.
Я использовал горячий клей, чтобы удерживать доски на месте, но, возможно, в этом нет необходимости.
Шаг 4: Код
Код можно найти здесь:
ПРИМЕЧАНИЕ. В этом проекте используется библиотека pubsubclient, которую можно добавить в диспетчере библиотек в Arduino IDE
Код здесь довольно простой и был разработан на основе типа Cover MQTT в Home Assistant. Идея здесь проста: когда вы нажимаете кнопку вверх или вниз в домашнем помощнике, соответствующее реле замыкается до тех пор, пока не будет получена команда останова, ИЛИ система достигнет максимального времени активации и остановится.
Максимальное время используется в качестве меры предосторожности на случай, если пользователь забудет остановить его, или если команда была отправлена случайно, и маловероятно, что кто-то ее остановит. Мы не хотим, чтобы реле сработало на неопределенный срок или каких-либо неожиданных проблем с кроватью из-за длительного замыкания контактов.
В моем коде этот таймаут составляет 20 секунд и может быть изменен в блоке глобальной переменной в верхней части кода.
Вторая мера предосторожности заключалась в том, чтобы всегда быть уверенным, что если я активирую одно реле, всегда вызывается преднамеренное отключение другого, даже если последнее состояние уже было выключено. Я не хочу подавать 12 В по обеим сигнальным линиям, потому что не знаю, что это сделает с кроватью.
Кроме того, кровать публикует, что она доступна каждые 60 секунд, и все. Никаких наворотов. Поскольку у кровати нет обратной связи по положению, я не мог отправить ее обратно в Home Assistant.
Шаг 5: Пример интеграции
Код, который я написал, использует MQTT для связи по Wi-Fi и, следовательно, может взаимодействовать с любым центром автоматизации или устройством, использующим MQTT. Я использую Home Assistant со встроенным брокером MQTT. Ниже приведен пример моей конфигурации высокой доступности.
В HA у меня есть файл cover.yaml со следующим определением:
- платформа: mqtt
name: "Изголовье главной кровати" command_topic: "master_bed_control / cmd" availability_topic: "master_bed_control / availability" qos: 0 keep: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " офлайн "оптимистично: верно
Это дает мне одну запись в моем интерфейсе высокой доступности с кнопкой вверх / стоп / вниз, настроенной с действием, как описано выше.
Кроме того, я определил две кнопки на моей прикроватной панели управления (инструкция / сообщение в блоге) для подъема и опускания изголовья. Кнопки на панели управления определены как датчики MQTT:
- платформа: mqtt
state_topic: "bedside_cp1 / button5" имя: "Прикроватная кнопка CP1 5" значок: mdi: круг
- платформа: mqtt
state_topic: "bedside_cp1 / button6" имя: "Прикроватная кнопка CP1 6" значок: mdi: круг
… И 4 правила автоматизации для каждого нажатия и отпускания кнопки. При нажатии на кровать отправляется команда вверх или вниз в зависимости от того, какая кнопка была активирована, при отпускании кнопки отправляется команда остановки:
- идентификатор: '1548308650383'
псевдоним: MBR Прикроватная кнопка CP 5a триггер: - entity_id: sensor.bedside_cp1_button_5 от: 'Off' платформа: состояние до: 'On' условие: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.open_cover - id: '1548308758911' псевдоним: MBR Прикроватная кнопка CP 5b триггер: - entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover - id: '1548308863495' псевдоним: MBR Прикроватная кнопка CP 6a триггер: - entity_id: sensor.bedside_cp1_button_6 от: 'Off' платформа: состояние для: 'On' условие: action: - data: entity_id: ' cover.master_bed_headboard 'service: cover.close_cover - id:' 1548308911467 'псевдоним: MBR Прикроватная кнопка CP 6b триггер: - entity_id: sensor.bedside_cp1_button_6 от:' On 'платформа: состояние до:' Off 'условие: действие: - данные: entity_id: 'cover.master_bed_headboard' сервис: cover.stop_cover
Рекомендуемые:
Обнаружение движения под освещением кровати: 16 шагов (с изображениями)
Обнаружение движения при освещении кровати: Вы когда-нибудь пытались тихонько встать с постели ночью, только чтобы споткнуться о что-то и разбудить весь дом? Ночные огни с датчиком движения, незаметно установленные под вашей кроватью, обеспечивают низкий уровень света, достаточно яркий, чтобы направлять вас вокруг этих беспорядочных кубиков LEGO
Беспроводное управление сервоприводами RC через UDP: 3 шага
Беспроводное управление сервоприводами дистанционного управления через UDP. В этом проекте я хочу использовать свой iPhone для управления сервоприводами дистанционного управления. Я буду использовать акселерометр для управления двумя сервоприводами через UDP-соединение. Это проект Proof Of Concept, целью которого является проверка того, что соединение между iPhone и периферийным устройством может достигать высокого уровня
Беспроводное управление Arduino с помощью MATLAB: 11 шагов
Беспроводное управление Arduino с помощью MATLAB: несколько раз видели, как установить связь между приложением MATLAB и Arduino, жестко подключенным к ПК. Однако я не встречал ничего, что управляло бы Arduino через MATLAB по беспроводной сети с помощью совместимого с ENC28J60 экрана Ethernet
Беспроводное управление компьютером с миганием глаз;): 9 шагов (с изображениями)
Беспроводное управление компьютером с помощью моргания глаз;): А как насчет того, чтобы выйти за рамки своих привычек ?? А как насчет того, чтобы попробовать что-то новое ?? !!!! А как насчет того, чтобы управлять своим ПК и делать все, что вы хотите, БЕЗ клавиатуры и мыши! Хмм … Но как это возможно ??? Просто моргнув глазом !! Не б
ESP8266-NODEMCU WiFi-модуль №2 за 3 доллара - беспроводное управление контактами через веб-страницу: 9 шагов (с изображениями)
ESP8266-NODEMCU WiFi-модуль №2 за 3 доллара - беспроводное управление контактами через веб-страницу. Наступил новый мир этих микрокомпьютеров, и эта вещь - ESP8266 NODEMCU. Это первая часть, которая показывает, как вы можете установить среду esp8266 в вашу IDE Arduino через видео о начале работы и как части в