Гид по технологиям

Умный MP3 дверной звонок на ESPHome и DFPlayer

8 min read Умный дом Обновлено 27 Dec 2025
Умный MP3 дверной звонок на ESPHome
Умный MP3 дверной звонок на ESPHome

Введение

Самодельный MP3 дверной звонок с кастомными рингтонами

Беспроводные дверные звонки удобны тем, что не требуют прокладки кабелей, но часто ограничены набором встроенных MIDI‑мелодий и базовыми настройками громкости. В этом руководстве мы построим DIY‑решение, которое позволяет воспроизводить кастомные MP3‑файлы при нажатии на кнопку звонка, управлять воспроизведением из Home Assistant и использовать устройство как умную колонку для голосовых уведомлений.

Краткие определения (в одну строку):

  • DFPlayer — компактный модуль MP3‑плеера с поддержкой microSD и простым UART‑управлением.
  • Wemos D1 mini — плата на базе ESP8266 для проектов ESPHome/Arduino.
  • ESPHome — проект для генерации прошивок ESP‑устройств с интеграцией в Home Assistant.

В этой статье вы найдёте: список деталей, пошаговую сборку смарт‑колонки и смарт‑кнопки, настройки прошивки в ESPHome, автоматизацию в Home Assistant, варианты применения, чек‑листы и рекомендации по безопасности.

Что понадобится

  • Сервер Home Assistant (например, на Raspberry Pi или другом поддерживаемом устройстве).
  • 2 × Wemos D1 mini (или совместимые платы на ESP8266/ESP32).
  • DFPlayer (или модуль MP3 player с UART) и microSD‑карта.
  • 50 mm динамик или пара небольших 3 W динамиков.
  • Мини‑усилитель PAM8403 (5 V) для более громкого и качественного звука (рекомендуется).
  • Провода Dupont / джампер‑провода; паяльник и припой для стационарной сборки.
  • Корпус для сборки (3D‑печать или готовый пластик).

Фактическое соотношение мощности: DFPlayer напрямую способен управлять небольшими динамиками, но PAM8403 даёт заметный прирост громкости и плотности низких частот при 5 V питании.

Этап 1 — Собираем умную колонку (smart‑speaker)

Цель: создать устройство, которое из Home Assistant можно попросить воспроизвести файл по номеру, запустить папку, включить/отключить loop, регулировать громкость и т. п.

Пошагово:

  1. Откройте Home Assistant и установите аддон ESPHome (Supervisor → Add‑on Store → ESPHome).
  2. После установки откройте ESPHome и нажмите + New Device.
  3. Дайте устройству имя, например smart‑speaker.
  4. На этапе выбора платы выберите Wemos D1 и Wemos D1 mini (Wemos D1 and Wemos D1 mini).
  5. В списке устройств найдите свой smart‑speaker и нажмите Edit.
  6. В редакторе YAML укажите SSID и пароль вашей Wi‑Fi сети и вставьте блок с конфигурацией DFPlayer ниже строки captive_portal:. Приведённый ниже блок — это пример сервисов ESPHome для управления DFPlayer через Home Assistant.
uart:
  tx_pin: GPIO3
  rx_pin: GPIO1
  baud_rate: 9600

dfplayer:
  on_finished_playback:
    then:
      logger.log: 'Playback finished event'

api:
  encryption:
    key: "YourEncryptionKey"
  services:
  - service: dfplayer_next
    then:
      - dfplayer.play_next:
  - service: dfplayer_previous
    then:
      - dfplayer.play_previous:
  - service: dfplayer_play
    variables:
      file: int
    then:
      - dfplayer.play: !lambda 'return file;'
  - service: dfplayer_play_loop
    variables:
      file: int
      loop_: bool
    then:
      - dfplayer.play:
          file: !lambda 'return file;'
          loop: !lambda 'return loop_;'
  - service: dfplayer_play_folder
    variables:
      folder: int
      file: int
    then:
      - dfplayer.play_folder:
          folder: !lambda 'return folder;'
          file: !lambda 'return file;'
  - service: dfplayer_play_loop_folder
    variables:
      folder: int
    then:
      - dfplayer.play_folder:
          folder: !lambda 'return folder;'
          loop: true
  - service: dfplayer_set_device_tf
    then:
      - dfplayer.set_device: TF_CARD
  - service: dfplayer_set_device_usb
    then:
      - dfplayer.set_device: USB
  - service: dfplayer_set_volume
    variables:
      volume: int
    then:
      - dfplayer.set_volume: !lambda 'return volume;'
  - service: dfplayer_set_eq
    variables:
      preset: int
    then:
      - dfplayer.set_eq: !lambda 'return static_cast(preset);'
  - service: dfplayer_sleep
    then:
      - dfplayer.sleep
  - service: dfplayer_reset
    then:
      - dfplayer.reset
  - service: dfplayer_start
    then:
      - dfplayer.start
  - service: dfplayer_pause
    then:
      - dfplayer.pause
  - service: dfplayer_stop
    then:
      - dfplayer.stop
  - service: dfplayer_random
    then:
      - dfplayer.random
  - service: dfplayer_volume_up
    then:
      - dfplayer.volume_up
  - service: dfplayer_volume_down
    then:
      - dfplayer.volume_down

Важно: замените “YourEncryptionKey” на ваш существующий ключ шифрования API Home Assistant/ESPHome. Убедитесь, что в полном YAML‑файле присутствует ровно одна секция api: — дублирование api приведёт к ошибкам компиляции.

  1. Сохраните и нажмите Install в интерфейсе ESPHome.
  2. Выберите опцию Plug into this computer и дождитесь компиляции прошивки.

Выбор платы D1 mini в ESPHome

  1. Скачайте скомпилированную прошивку через ссылку Download project.

Скачивание скомпилированной прошивки

  1. Нажмите Open ESPHome Web, подключите D1 mini к компьютеру через micro‑USB и в разделе Connect выберите COM‑порт платы.
  2. Нажмите Install → Choose File и укажите скачанный бинарник, затем Install.
  3. После успешной прошивки подключите DFPlayer к D1 mini согласно схеме ниже (пины UART: TX/RX, питание 5 V/GND).

Подключение DFPlayer к плате D1 mini

По умолчанию DFPlayer может управлять двумя 3 W динамиками через SPK_1/SPK_2. Другие выводы динамиков подключаются к GND между этими клеммами. Для улучшения громкости и качества используйте PAM8403 между DFPlayer и динамиком.

Совет: если используете один маленький динамик 50 mm 3 W, добавление PAM8403 даст заметное улучшение громкости и динамического диапазона.

Этап 2 — Собираем смарт‑переключатель (bell‑switch)

Цель: получить устройство, которое при замыкании внешнего механического переключателя (кнопки) выдаёт событие в Home Assistant.

  1. В ESPHome создайте новый проект bell‑switch, выберите плату Wemos D1 mini.
  2. В редакторе YAML под captive_portal: добавьте блок, который настраивает GPIO‑реле/выход для короткого импульса при включении:
switch:
  - platform: gpio
    pin: D2
    id: relay
    name: "Bell"
    icon: "mdi:bell"
    on_turn_on:
    - delay: 200ms
    - switch.turn_off: relay
  1. Обновите SSID и пароль Wi‑Fi, сохраните проект и прошейте плату так же, как в первом устройстве (Plug into this computer → flash).
  2. После прошивки можно припаять два провода к плате и подключить эти провода к механическому переключателю (кнопке). Суть: при замыкании кнопки ESPHome увидит событие и кратковременно включит виртуальное реле.

Подключение смарт-кнопки к механическому переключателю

  1. Подайте питание и проверьте логи устройства в ESPHome — при нажатии кнопки вы увидите соответствующие записи.

Этап 3 — Добавляем MP3 файлы

  1. Подключите microSD к компьютеру и скопируйте MP3‑файлы в корень карты.
  2. Переименуйте файлы в числовые имена: 1.mp3, 2.mp3, 3.mp3 и т. д. — DFPlayer удобнее оперирует нумерованными файлами.
  3. Для кастомных голосовых сообщений используйте TTS‑сервисы и сохраняйте результат в MP3.
  4. Вставьте microSD в DFPlayer, подайте питание на устройство. Проверьте воспроизведение, замыкая любой IO/ADKey пин DFPlayer на GND — должен заиграть первый/текущий трек.

Совет: держите громкость на DFPlayer и на PAM8403 в среднем диапазоне при первичной проверке, затем настраивайте по месту.

Этап 4 — Создаём автоматизацию в Home Assistant

  1. В Home Assistant откройте Settings → Automations & Scenes.
  2. Создайте новую автоматизацию Start with an empty automation.
  3. В разделе Trigger выберите Device и найдите устройство Bell (bell‑switch).
  4. В качестве триггера выберите Bell switch on.
  5. В разделе Actions добавьте действие Call Service.
  6. Найдите сервис ESPHome: smart_speaker_dfplayer_play (имя сервиса соответствует конфигурации api.services в YAML) и выберите его.
  7. В поле file введите номер MP3‑файла, который хотите воспроизвести (например, 1 для 1.mp3).

Создание автоматизации для смарт-звонка, воспроизводящего MP3

  1. Сохраните автоматизацию и присвойте ей понятное имя.

Теперь при каждом нажатии механического переключателя Home Assistant запустит выбранный MP3 на вашем smart‑speaker.

Тестирование и отладка

Чек‑лист тестирования:

  • Проверить доступность устройств в ESPHome и Home Assistant.
  • Убедиться, что DFPlayer видит microSD и файлы доступны (проверка через последовательные логи или тест команды).
  • Проверить, что сервис dfplayer_play доступен в Developer Tools → Services.
  • Нажать кнопку и проверить логи автоматизации (History / Logbook) и логи ESPHome.
  • Отрегулировать громкость и эквалайзер при необходимости.

Частые проблемы и решения:

  • Не скомпилировалась прошивка — проверьте, что в YAML нет двух секций api:. Удалите лишнюю.
  • DFPlayer не видит microSD — проверьте формат карты (FAT32), целостность файлов и контакты.
  • Плохой звук/шум — используйте PAM8403 и обеспечьте стабильное 5 V питание.
  • ESP‑устройство теряет Wi‑Fi — проверьте силу сигнала и питание; для стабильности рекомендуется 5 V 1 A адаптер для D1 mini с усилителем.

Альтернативные подходы и расширения

  • ESP32 вместо ESP8266: даст дополнительную производительность и Bluetooth. Потребуются мелкие правки в конфигурации UART и плате.
  • Использовать MPD или Mopidy на Raspberry Pi и отправлять команды через Home Assistant — альтернатива с более гибкой файловой системой, но требует отдельного сервера.
  • Интеграция с голосовыми ассистентами (Google/Alexa) для воспроизведения уведомлений — возможно, но требует дополнительных интеграций и учёта приватности.

Когда такой подход не подходит:

  • Нужна сертифицированная аудиосистема с высоким качеством звука — DFPlayer + PAM8403 ограничены в качестве.
  • Требуется проводной звонок с питанием от 12–24 V и индустриальными требованиями — тогда нужен другой контроллер и трансформатор.

Роли и обязанности (быстрые чек‑листы)

Для мастера‑сборщика:

  • Проверить целостность плат и модулей.
  • Отладить UART‑соединение и убедиться в корректной скорости 9600.
  • Проверить питание динамика через PAM8403.

Для интегратора Home Assistant:

  • Добавить устройства ESPHome в Home Assistant.
  • Настроить автоматизации и сервисы.
  • Настроить уведомления при ошибках устройства.

Для конечного пользователя/установщика:

  • Выбрать место крепления корпуса у входной двери.
  • Проверить зону сети Wi‑Fi.
  • Настроить звук и громкость для комфортного уровня.

Критерии приёмки

  • При нажатии на физическую кнопку воспроизводится выбранный MP3 в течение 2 секунд.
  • Управление воспроизведением доступно из Home Assistant (play/pause/volume).
  • Устройство стабильно держит соединение с Wi‑Fi в течение 24 часов.
  • Звук не искажается при номинальной громкости и не вызывает перегрева усилителя.

Безопасность и конфиденциальность

  • Если вы используете TTS с облачными сервисами, проверьте политику конфиденциальности — голосовые фразы могут передаваться в облако.
  • Шифруйте соединение API ESPHome при помощи encryption.key, особенно если устройства в гостевой сети.
  • Не оставляйте открытые порты для доступа к ESP‑устройствам с интернета.

Шаблон SOP: быстрая сборка (короткая инструкция)

  1. Подготовить две платы Wemos D1 mini и DFPlayer + PAM8403 + динамик.
  2. Создать два проекта в ESPHome: smart‑speaker и bell‑switch.
  3. В smart‑speaker добавить UART и dfplayer конфигурации; задать API key.
  4. В bell‑switch настроить GPIO switch на D2.
  5. Прошить оба устройства через ESPHome Web Installer.
  6. Стереть и записать MP3 на microSD в формате 1.mp3, 2.mp3 и т. д.
  7. Подключить провода к физическому переключателю, установить корпус и питание.
  8. Создать автоматизацию в Home Assistant для вызова dfplayer_play с нужным файлом.

Тестовые сценарии (acceptance)

  • Сценарий 1: одиночное нажатие кнопки → воспроизведение 1.mp3, статус устройства «Playing» в Home Assistant.
  • Сценарий 2: многократные нажатия подряд → предыдущий трек прерывается и запускается заново.
  • Сценарий 3: удалённая команда из Home Assistant (pause/play/volume) корректна и влияет на воспроизведение.

Короткое объявление проекта (100–200 слов)

Соберите умный MP3 дверной звонок на базе ESPHome и DFPlayer: два недорогих модуля Wemos D1 mini превращаются в полноценный смарт‑звонок и колонку, воспроизводящую любые MP3 по нажатию кнопки. Решение интегрируется в Home Assistant и позволяет запускать треки по номеру, делать loop, менять громкость и папки. Это простой DIY‑проект для уведомлений и персонализации входной зоны — замените стандартные MIDI‑мелодии на любимую песню, голосовое сообщение или предупреждение о статусе системы.

Итоги

  • Проект даёт гибкий умный звонок с поддержкой кастомных MP3 и интеграцией в Home Assistant.
  • Нужны две платы Wemos D1 mini: одна для колонки (DFPlayer), другая — для переключателя.
  • Обязательно используйте стабильное питание и подумайте об усилителе (PAM8403) для качества звука.

Important: сохраняйте одну секцию api: в YAML и не дублируйте ключи.

Ниже — краткие ссылки и напоминания:

  • Формат microSD: FAT32.
  • Порт UART DFPlayer: 9600 бод.
  • Файлы MP3: именовать числовыми именами 1.mp3, 2.mp3 и т. д.

Спасибо за сборку — поделитесь результатом в сообществе Home Assistant, если захотите улучшить интерфейс или добавить голосовые сценарии.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как выбрать саундбар для телевизора
Аудио

Как выбрать саундбар для телевизора

update-alternatives в Ubuntu — быстрое руководство
Linux

update-alternatives в Ubuntu — быстрое руководство

Установка Rust на Raspberry Pi
Программирование

Установка Rust на Raspberry Pi

Google Pixel 8: дата, ожидания и трансляция
Новости

Google Pixel 8: дата, ожидания и трансляция

Как скачивать Netflix для офлайн‑просмотра
Инструкции

Как скачивать Netflix для офлайн‑просмотра

Настройка Netflix: персонализация аккаунта
Стриминг

Настройка Netflix: персонализация аккаунта