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

Беспроводные дверные звонки удобны тем, что не требуют прокладки кабелей, но часто ограничены набором встроенных 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, регулировать громкость и т. п.
Пошагово:
- Откройте Home Assistant и установите аддон ESPHome (Supervisor → Add‑on Store → ESPHome).
- После установки откройте ESPHome и нажмите + New Device.
- Дайте устройству имя, например smart‑speaker.
- На этапе выбора платы выберите Wemos D1 и Wemos D1 mini (Wemos D1 and Wemos D1 mini).
- В списке устройств найдите свой smart‑speaker и нажмите Edit.
- В редакторе 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 приведёт к ошибкам компиляции.
- Сохраните и нажмите Install в интерфейсе ESPHome.
- Выберите опцию Plug into this computer и дождитесь компиляции прошивки.
- Скачайте скомпилированную прошивку через ссылку Download project.
- Нажмите Open ESPHome Web, подключите D1 mini к компьютеру через micro‑USB и в разделе Connect выберите COM‑порт платы.
- Нажмите Install → Choose File и укажите скачанный бинарник, затем Install.
- После успешной прошивки подключите DFPlayer к D1 mini согласно схеме ниже (пины UART: TX/RX, питание 5 V/GND).
По умолчанию DFPlayer может управлять двумя 3 W динамиками через SPK_1/SPK_2. Другие выводы динамиков подключаются к GND между этими клеммами. Для улучшения громкости и качества используйте PAM8403 между DFPlayer и динамиком.
Совет: если используете один маленький динамик 50 mm 3 W, добавление PAM8403 даст заметное улучшение громкости и динамического диапазона.
Этап 2 — Собираем смарт‑переключатель (bell‑switch)
Цель: получить устройство, которое при замыкании внешнего механического переключателя (кнопки) выдаёт событие в Home Assistant.
- В ESPHome создайте новый проект bell‑switch, выберите плату Wemos D1 mini.
- В редакторе 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- Обновите SSID и пароль Wi‑Fi, сохраните проект и прошейте плату так же, как в первом устройстве (Plug into this computer → flash).
- После прошивки можно припаять два провода к плате и подключить эти провода к механическому переключателю (кнопке). Суть: при замыкании кнопки ESPHome увидит событие и кратковременно включит виртуальное реле.
- Подайте питание и проверьте логи устройства в ESPHome — при нажатии кнопки вы увидите соответствующие записи.
Этап 3 — Добавляем MP3 файлы
- Подключите microSD к компьютеру и скопируйте MP3‑файлы в корень карты.
- Переименуйте файлы в числовые имена: 1.mp3, 2.mp3, 3.mp3 и т. д. — DFPlayer удобнее оперирует нумерованными файлами.
- Для кастомных голосовых сообщений используйте TTS‑сервисы и сохраняйте результат в MP3.
- Вставьте microSD в DFPlayer, подайте питание на устройство. Проверьте воспроизведение, замыкая любой IO/ADKey пин DFPlayer на GND — должен заиграть первый/текущий трек.
Совет: держите громкость на DFPlayer и на PAM8403 в среднем диапазоне при первичной проверке, затем настраивайте по месту.
Этап 4 — Создаём автоматизацию в Home Assistant
- В Home Assistant откройте Settings → Automations & Scenes.
- Создайте новую автоматизацию Start with an empty automation.
- В разделе Trigger выберите Device и найдите устройство Bell (bell‑switch).
- В качестве триггера выберите Bell switch on.
- В разделе Actions добавьте действие Call Service.
- Найдите сервис ESPHome: smart_speaker_dfplayer_play (имя сервиса соответствует конфигурации api.services в YAML) и выберите его.
- В поле file введите номер MP3‑файла, который хотите воспроизвести (например, 1 для 1.mp3).
- Сохраните автоматизацию и присвойте ей понятное имя.
Теперь при каждом нажатии механического переключателя 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: быстрая сборка (короткая инструкция)
- Подготовить две платы Wemos D1 mini и DFPlayer + PAM8403 + динамик.
- Создать два проекта в ESPHome: smart‑speaker и bell‑switch.
- В smart‑speaker добавить UART и dfplayer конфигурации; задать API key.
- В bell‑switch настроить GPIO switch на D2.
- Прошить оба устройства через ESPHome Web Installer.
- Стереть и записать MP3 на microSD в формате 1.mp3, 2.mp3 и т. д.
- Подключить провода к физическому переключателю, установить корпус и питание.
- Создать автоматизацию в 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, если захотите улучшить интерфейс или добавить голосовые сценарии.
Похожие материалы
Как выбрать саундбар для телевизора
update-alternatives в Ubuntu — быстрое руководство
Установка Rust на Raspberry Pi
Google Pixel 8: дата, ожидания и трансляция
Как скачивать Netflix для офлайн‑просмотра