Управление функциональной кроватью

Здравствуй, дорогой читатель!

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

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

Но вот обратился ко мне человек с запросом сообразить средство для беспроводного управления функциональной кроватью. И как тут отказать, когда у человека физические возможности ограничены, и есть финансовая, чтобы компенсировать первые? Человек вменяемый, деловой, задача интересная, дай, думаю, узнаю, чем ему помочь. Кровать у него, как выяснилось, вот такая:

Управление функциональной кроватью Arduino, Автоматизация, Длиннопост

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

Управление функциональной кроватью Arduino, Автоматизация, Длиннопост

Немного подумав, что же это может быть, я решил прикинуть эту задачу к Arduino. Оказалось, что это вполне доступно по затратам на комплектующие и времени на разработку и исполнение.

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

Но, в процессе изучения вопроса выяснил, что есть такая штука, как Blynk. Думаю, что многие здесь о нём знают, и кто-то наверняка пользуется. Для тех, кто ещё не знаком с тем, что это такое - в двух словах это средство, упрощающее автоматизацию и позволяющее быстро создавать программы для управления при помощи iOS и Android. Сейчас существует две версии Blynk: Blynk legacy и Blynk IoT. Первая имеет как бесплатный, так и платный функционал, оплачиваемый единовременно. Во второй же разработчики уже перешли на подписку, что для моего случая никуда не годится.

Так вот узнав о Blynk немного больше я понял, что для данного проекта подойдёт как нельзя лучше Blynk legacy. Посмотрев пару-тройку примеров его использования я понял, что лучше будет использовать модуль с WiFi, и мой выбор пал на NodeMCU Lua ESP8266, которая очень похожа на Arduino Nano, и уже имеет на борту встроенный WiFi. К тому же полностью совместима с Blynk и довольно проста.

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

Что касается кода, то на первый взгляд всё просто: копируешь несколько строк для Blynk в Arduino IDE, вписываешь имя точки доступа, к которой планируется подключение, пароль, ключ аутентификации, выдаваемый сервисом при регистрации аккаунта Blynk и шьёшь в контроллер. Чудо, а не сервис! И если говорить о проекте в сферическом вакууме, то это действительно так.

На практике же, после описанных выше манипуляций приложение Blynk для Android подключилось без проблем, и уже через несколько минут я успешно дёргал ногой контроллера, пиная светодиод и радовался! Но радость моя улетучилась как только вместо ноги я прикрутил первый из блоков реле. Оказалось, что по какой-то неведомой мне причине после выключения контроллера он подаёт сигнал на ноги, который пропадает после первого нажатия на кнопку в приложении, запрограммированную для подачи сигнала.

По задумке контроллер при включении не должен подавать сигналов без команды, потому, как это приведёт к тому, что кровать от этого если не испортится, то взбесится уж точно) Здесь мне пришлось потрудиться для того, чтобы сформулировать проблему на международном девелОперском и найти решение. Оказалось, что не я один столкнулся с такой проблемой, и для её решения пришлось снова лезть в IDE и назначать нужным ногам режим реле.

После внесения изменений левый сигнал при включении пропал, и всё заработало как надо. Выяснив по дороге, что для питания блоков в 8 и 4 реле нужно дополнительное питание отыскал в родном блоке кровати 5 вольт и запитал их к нему. Кстати, сама NodeMCU выдаёт на ноги вместо 5 вольт 3,3. Что для сигнала реле достаточно, и даже позволяет запитывать одиночное реле.

В результате мне удалось добиться того, что с минимальной доработкой родного блока управления я уже мог использовать для управления им приложение на Android, в котором можно располагать различные элементы управления так, как захочется. Ну, или почти. Интерфейс конструктора более-менее гибкий и имеет довольно большой набор различных функций на вкус и цвет и под разные нужды. Мне же понадобилось всего 11 кнопок, на которые, кстати, бесплатного объёма функций не хватило, и пришлось отсыпать рубликов разработчикам. После чего у меня получился насколько это возможно простой и близкий к родному и железному интерфейс:

Управление функциональной кроватью Arduino, Автоматизация, Длиннопост

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

Так что моё резюме по использованию Blynk в связке с NodeMCU 8266 на WiFi: это не слишком сложно, довольно гибко и на фоне других решений весьма привлекательно. Поскольку даже не смотря на сравнительную простоту реализации на фоне разработки прошивки и программы с нуля на всё-провсё у меня ушло дня так четыре. Весьма плотных таких дня,.

Надеюсь, что мои заметки по этому проекту будут полезны другим начинающим автоматчикам и энтузиастам электроники. Спасибо за внимание!

Arduino & Pi

1.4K поста20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу