Как купить девайс для умного дома и попасть в команду разработчиков

Началась эта история в августе 2020 года. Скучая в отпуске, я рылся в интернете с весьма определенной целью — «что бы еще прикупить и засунуть в свой умный дом…».

И попалось мне на глаза очень интересное устройство.

Оконный привод Drivent

6bef3dc627edf2bcd58503d659b7070e.png

Данное устройство устанавливается на место ручки окна и позволяет приоткрывать окно на заданный процент командой умного дома.

Мне оно показалось весьма полезным и интересным. Вспомнив свои мучения с проветриванием, особенно в зимний период, когда у нас в Мурманске вечером температура на улице может быть -5, а к утру упасть до -20, я решил — надо попробовать. В голове сразу рисовалась картинка, где я могу регулировать открытие окна исходя из необходимости проветривания и нужной температуры в спальне. Точнее, чтобы Умный дом сам мог это регулировать. Да, я тоже считаю, что Умный дом — это не просто управление светом/розетками/девайсами с телефона или пульта, а именно система, которая сама, без моего вмешательства управляет всем этим, исходя из моих привычек и предпочтений. Я уже привык к тому, что когда я захожу домой — свет в коридоре уже включен, вентиляция в ванной работает в зависимости от влажности воздуха, не допуская появления влаги на стенах, и что когда я захожу в туалет, свет там включается сам. По моему мнению — именно такие действия можно назвать Умным домом.

От скуки, я прочитал практически весь чат в telegram, посвященный этому девайсу. Задал несколько вопросов, получил исчерпывающие ответы. Очень подкупило то, что команда разработчиков общается в чате и внимательно прислушивается к пожеланиям клиентов. Решено! Заказал один на пробу. Девайс приехал в весьма достойной коробочке, с пакетиком запасных частей и всего необходимого для установки. Даже саморезы и сверло были в комплекте. Но для начала я решил погонять его без установки, просто на столе.

Как же без багов?

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

Будучи радиомехаником 5 разряда я для начала запросил схему устройства, благо схемы читать умею. Да и такое поведение устройства говорило о том, что просто где-то происходит сбой. Ибо этот баг не удавалось четко повторить. Одни и те же команды привод чаще всего выполнял нормально, но иногда что-то происходило, и он начинал крутиться.

Пошли эксперименты.

Заземлить корпус мотора.

0a823eef44e07e2a02ab0bdb97154c1c.jpg

Безрезультатно.

Повесить конденсатор на мотор.

7d5b982837b54f4cfb633c0e075113cc.jpg

Бесполезно.

Соответственно попытки помыть плату, поискать непропай и т.п. тоже не привели к какому-то результату. Качество разработки и сборки платы было настолько высоким, что данные операции проделывались просто на всякий случай. А вдруг? Но нет, проблема не исчезала. Памятуя знаменитую фразу, что электроника — это наука о контактах, и все проблемы возникают из-за того, что нет контакта там, где он должен быть или есть там, где его быть не должно, я таки надеялся, что всё будет просто. Но на дворе уже XXI век и всё стало намного сложнее. Да, мы прекрасно понимали, что всё дело в банальной наводке, но поймать её не могли. Спаял перемычкой в кольцо RX и TX разъёма программирования, запаял дополнительную подтяжку на кнопки, заземлил все неиспользуемые входы esp8266. Все попытки были тщетны.

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

Волшебная команда

Проблема осложнялась тем, что как только мы подключали к последовательному интерфейсу монитор для сборки логов — сбои волшебным образом прекращались. Но, изменяя длину проводов, мне всё-таки удалось добиться сбоев при подключённом мониторе. Снятие логов с esp8266 показало, что в момент сбоя происходит нарушение стека. И возникла мысль -, а что если проблема в наводках излучения антенны WiFi на схему или саму esp8266?

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

WiFi.setOutputPower (10);

Данная команда просто снижала уровень мощности передатчика esp8266 с 20,5 до 10 Дб.

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

1599307deadcd5a7e64ffe75ae92b873.jpg

То есть когда пользователь обновлял прошивку, эта настройка ставилась принудительно вместе с обновлением.

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

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

Эта проблема обнаружилась только на некоторых модулях esp8266 из конкретной партии. Но мы взяли на вооружение опыт работы с чуть пониженной мощностью, и получили в конечном итоге более устойчивые результаты работы всего устройства.

А я получил статус внештатного beta-тестера команды Drivent.

Оказывается это было только начало…

Продолжение следует…

© Habrahabr.ru