Как стать автором
Обновить
1479.37
Timeweb Cloud
То самое облако

Просто «включатель» света с радаром 24 ГГц для «Умного дома» или автономного использования

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров12K
3D рендер устройства
3D рендер устройства

Привет, Хабр!

Вот и добралась моя безумная DIY автоматизация до ванной комнаты, а причина тому — датчик присутствия HLK-LD2402. Этот датчик был куплен на распродаже в одном оранжевом маркетплейсе с целью поиграться и забыть, но он настолько мне понравился, что я решил дать ему возможность поработать в составе моего DIY устройства. А что из этого вышло — читайте далее.

❯ Включаем и выключаем [без использования рук]

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

Модуль радарного датчика HLK-LD2402
Модуль радарного датчика HLK-LD2402

▢ В чем преимущество данного модуля?

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

В отличии от PIR датчиков, радарные датчики типа HLK-LD2402 имеют радиолокационный принцип обнаружения, поэтому даже статические объекты с легкостью фиксируются данным датчиком.

▢ Коммуникация / интерфейс

Здесь всё просто, в данном датчике используется UART интерфейс для обмена данными. Если мы подключимся в терминале с помощью UART к датчику, то в консоли увидим что-то подобное:

distance:102
distance:115
distance:143
distance:167

Как несложно догадаться, это дистанция до объекта, которую фиксирует датчик. Данные посылаются с периодичностью 500 мс.

❯ Аппаратная часть блока управления

В своих проектах я часто использую микроконтроллер esp8266, он достаточно дёшев и успешно справится с нашими задачами, поэтому и в этот раз применим его в реализации нашего устройства.

▢ Принципиальная схема модуля

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

Принципиальная схема
Принципиальная схема

Чтобы реализовать устройство в компактном виде, в схеме применен блок питания на базе экономичного импульсного преобразователя напряжения LNK306DN в корпусе SO-8C. Для управления осветительной нагрузкой применяется связка силового симистора BT136-600 и оптопары MOC3052M. В качестве «мозга» устройства применён esp8266.

▢ Печатная плата

Чтобы устройство имело небольшие габариты, был применен двухсторонний монтаж, где с одной стороны размещена «высоковольтная», а с другой «низковольтная» часть. Ниже представлена визуализация печатной платы:

Рендер печатной платы. На шелкографии опечатка: не +5 V, а +3.3 V
Рендер печатной платы. На шелкографии опечатка: не +5 V, а +3.3 V

Ну и для оценки ниже приведена трассировка и размеры платы:

Трассировка и габариты
Трассировка и габариты

Разработка печатный платы выполнялась в KiCAD.

❯ Изготовление прототипа печатной платы

Чтобы сократить временные затраты, первый прототип печатной платы изготовляется в «домашних условиях», а помогает мне в этом деле мой портативный лазерный гравер:

Лазерный гравер
Лазерный гравер

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

Ниже на изображении представлены этапы изготовления платы:

Этапы изготовления платы
Этапы изготовления платы

После активации фоторезиста лазером, выполняется проявка и травление платы. Видео процесса активации вы можете увидеть ниже под спойлером.

Засветка фоторезиста лазером. [YouTube]

И так как плата работает с высоким напряжением, для улучшения диэлектрической прочности будем использовать паяльную маску. Ниже представлен процесс нанесения паяльной маски с помощью сетки для шелкографии и пластиковой визитной карточки Hi-Link, которая поставлялась вместе с радарным модулем.

Нанесение паяльной маски
Нанесение паяльной маски

И далее с помощью лазерного станка активируем фотополимерную маску.

Активация маски с помощью лазера. [YouTube]

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

Этапы сборки
Этапы сборки

Важное замечание!

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

❯ Корпус модуля управления

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

Рендер корпуса
Рендер корпуса

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

После сверки всех размеров в виртуальный среде, перенесем данный корпус в реальный мир с помощью 3D печати. Корпус печатался с применением HIPS пластика.

▢ Собираем всё в кучу

Теперь мы собрать устройство и увидеть финальный результат.

Этапы сборки устройства в корпусе
Этапы сборки устройства в корпусе

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

❯ Микро ПО модуля

Уже по классике в своих проектах использую собственную базовую прошивку для DIY IoT устройств. В данной прошивке реализован удобный веб интерфейс и все необходимые сервисы для работы как в автономном режиме, так и в составе систем «Умного дома». Для первичной конфигурации устройство использует встроенный сервис Captive Portal — в этом режиме устройством создается Wi-Fi точка доступа, при подключении к которой пользователя автоматически переносит на страницу конфигурации устройства. Для конфигурации устройства используется доступ по паролю. По умолчанию пароль «admin», который можно будет изменить после входа в соответствующем разделе меню.

Для быстрого и удобного доступа к своим IoT устройствам, я специально разработал мобильное приложение, которые значительно упрощает управление своим DIY «зоопарком». Ниже представлены скриншоты конфигурации устройства с помощью мобильного приложения.

Скриншоты конфигурации
Скриншоты конфигурации

На изображении показаны несколько экранов для управления устройством:

  • Страница входа;

  • Основная информационная страница с элементами управления;

  • Конфигурация подключения с помощью MQTT протокола (интеграция в системы «Умный дом»;

  • Конфигурация диапазона обнаружения для активации освещения.

Также доступна конфигурация и в обычном веб браузере без использования выше описанного мобильного приложения.

▢ Чуть чуть кода

Как я писал ранее, обмен с радарным датчиком выполняется по UART, то нам необходимо извлекать данные с помощью последовательного интерфейса. Для этого мы будем использовать методы Serial.Read() или Serial.available(). Ниже представлен фрагмент кода отвечающий за процесс получения данных:

void radar_process(){                                                   // Чтение и обработка данных с радара
      if(Serial.available() > 0) {
          char inChar = Serial.read();
          if (inChar == '\n') {
            processString(inputString);
            inputString = "";
           }else{
          inputString += inChar;
         }
       }
}

Так как каждые новые данные с радара начинаются с новой строки, то будем из разделять с помощью условия:

if (inChar == '\n') {
            processString(inputString);
            inputString = "";
           }else{
          inputString += inChar;
         }

И так как нам нужно получить числовое значение дистанции, которое в строке разделяется с помощью символа «:», то для отделения числового значения воспользуемся следующей функцией:

void processString(String str) {
  int startIndex = str.indexOf(':') + 1;                                // Находим позицию после ':'
  if (startIndex > 0 && startIndex < str.length()) {
    String numberString = str.substring(startIndex);                    // Берем подстроку после ':'
    float get_data = numberString.toFloat();                            // Преобразуем строку в число
     if(get_data != 105.00){                                            // Исключаем кривые данные
        hum = get_data; 
     }                                        
  }
}

Данная функция извлекает из полученной строки числовое значение дистанции до объекта и преобразует в тип float с последующей записью в глобальную переменную hum.

❯ Интеграция в систему «Умный дом»

Так как я использую Home Assistant, то ниже будет описан процесс интеграции для данной системы. На самом деле здесь ничего сложного, интеграция выполняется с помощью протокола MQTT, а так как устройство имеет функцию автоматической интеграции «Mqtt Auto Discovery», то процесс интеграции займет не более пары минут. После активации MQTT подключения, в Home Assistant автоматически появятся объекты, которые относятся к нашему устройству, вам лишь нужно будет добавить на главный экран «карточку объектов» устройства. Для упрощения, ниже приведен кода данной карточки:

type: entities
entities:
  - entity: sensor.dist
    name: Датчик присутствия
  - entity: switch.auto
    name: Автоматический режим
    icon: mdi:home-sound-out-outline
  - entity: sensor.sd_up
    name: Диапазон обнаружения верхний
  - entity: sensor.d_down
    name: Диапазон обнаружения нижний
  - entity: switch.onf
    name: Освещение
    icon: mdi:coach-lamp
title: Освещение в ванной

После сохранения карточки объектов мы увидим следующий результат:

Карточка объектов Home Assistant
Карточка объектов Home Assistant

Ну и для разнообразия, приведу график зависимости дистанции от активации освещения:

График
График

❯ Итоги

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

Благодарю всех за ваше внимание! Всем здоровья и интересных проектов! Если у вас остались вопросы, пожелания и предложения, то добро пожаловать в комментарии!

Ссылки к статье:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перейти ↩

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 25: ↑25 и ↓0+34
Комментарии32

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud