Строю потихоньку своими силами дом. Что-то такое... Но рассказ не о нём.

Типа дом
Типа дом

Где-то с год назад решил погрузиться в такую тему, как умный дом. Определился, что облачные решения мне не интересны и как одну из самых популярных платформ выбрал Home Assistant.

Прошёл все стадии построения автономного умного дома: установка Debian, настройка датчиков и устройств с Алихи и других магазов, настройка всяких автоматизаций и т.д. Но в один прекрасный момент понял, что мне не хватает функциональности и универсальности типовых датчиков предлагаемых маркетплейсами. С удивлением открыл для себя мир DIY платформ для умных устройств.

Одной из этих платформ, которая мне приглянулась своей простотой оказалась 

Ультразвуковые датчики расстояния HC-SR04 и JSN-SR04T в ESPHome

Короче, долго ли, коротко, но понадобился мне измеритель расстояния. Выбор пал на ультразвуковые датчики JSN-SR04T и HC-SR04

герои статьи
герои статьи

для интеграции с Home Assistant была выбрана плата WeMos D1

WeMos D1 mini
WeMos D1 mini

Для понимания цены вопроса, датчик стоит от 200 рублей и платка D1 от 350. И это всё что нужно, чтобы датчик работал.

Соединяется всё это по очень простой схеме

Схема соединения
Схема соединения

Для прошивки у вас должно быть настроено ПО. Есть несколько вариантов:

1. Прошивка с командной строки

2. Через web интерфейс

3. Используя установленный Home Assistant.

Обо всех вариантах установки написано много статей и снято видео. Можно об том прочитать как на официальном сайте ESPHome, посмотреть в видео у Алекса Квазиса и т.д.

Если же у вас уже установлен Home Assistant, то проще всего поставить к нему дополнение через HACS и использовать этот сервер для первичной прошивки плат. Но статья не о том, как установить Home Assistant или настроить ESPHome. Хочу рассказать с какой проблемой столкнулся при прошивке ультразвуковых датчиков и как она решилась.

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

Код для датчика HC-SR04 
Код для датчика HC-SR04 
sensor:
  - platform: ultrasonic
    trigger_pin: D1
    echo_pin: D2    name: 'My Ultrasonic Sensor'

И вправду датчик HC-SR04 заработал без проблем. Но поскольку он имеет открытый корпус, а его брат JSN-SR04T в качестве датчика использует автомобильный парктроник, то было желание использовать второй вариант. Удобно спрятать платы в коробку, а сам датчик встраивать куда надо.

Каково же было мое удивление, когда второй датчик с данной конфигурацией не заработал. Лог упорно выдавал тайм-аут датчика.

Разница в датчиках в том, что первый работает в дуплекс режиме и может одновременно передавать сигнал и принимать его. У второго же только симплекс режим, он поочередно отправляет и принимает сигнал.

До этого додумался только после анализа ксетча этого же датчика для Ардуино. А до этого были эксперименты:

1. Запитал плату датчика не с wemos d1, а напрямую.

2. Сократил расстояние между wemos d1 и платой датчика до минимума.

3. Укоротил длинный провод между платой датчика и самим датчиком.

4. Менял местами rx и tx.

5. Подключал плату датчика на другие пины, d8 и d9 по-моему

6. Запитывал не от usb ноутбука, а от внешнего блока питания.

Как всегда оказалось всё просто, у датчика есть параметр timeout. По умолчанию он установлен в 2.0m. Для дуплексного режима этого достаточно., а вот для симлекса его надо установить в 4.0m и бинго, датчик начал измерять расстояние 

Ультразвуковые датчики расстояния HC-SR04 и JSN-SR04T в ESPHome
Ультразвуковые датчики расстояния HC-SR04 и JSN-SR04T в ESPHome

Всем любимых хобби!