За допомогою вбудованої в Home Assistant сутності Media Player можна зробити оповіщення, програвач музики чи інтернет радіо. І для цього можна використовувати телевізор, wifi колонки та DLNA пристрої. Подібний пристрій можна також зробити самостійно на платі розробника з мікроконтролером ESP32. Це бюджетний варіант, але якість звука буде хорошою завдяки використанню I2S підсилювача звуку MAX98357A.

Плата розробника на ESP32 — це недорога система з малим енергоспоживанням на мікроконтролерах із вбудованим Wi-Fi та Bluetooth. Також вона має 2 інтерфейси I2S.

Integrated Inter-IC Sound Bus (I2S) – це стандарт інтерфейсу послідовної шини, який використовується для підключення цифрових аудіопристроїв. Його виробляє Philips Semiconductor. Цей інтерфейс найчастіше використовується аудіо компонентами АЦП і ЦАП.

Модуль MAX98357A має цифро-аналоговий перетворювач та цифровий підсилювач класу D, який використовує цифровий аудіоінтерфейс або I 2 S для зв’язку з блоками мікроконтролера.

Переваги модуля MAX98357A I2S перераховані нижче:

  1. Ефективність 92%.
  2. Може забезпечити вихідну потужність 3,2 Вт при навантаженні 4 Ом при напрузі 5 В
  3. Зменшення шуму клацання та спливаючого вікна
  4. Захист від короткого замикання та термозахист
  5. Підтримує лівий, правий або (Лівий/2 + Правий/2) вихід (по замовчуванню (L+R)/2)
  6. Напруга живлення може бути від 2,7 В до 5,5 В.
  7. Вбудований термоконтроль.
  8. Подавлення клацання.

Модуль MAX98357A I2S показаний нижче.

max98357a

Схема з’єднання з esp32.

Схема підключення max98357a до esp32.

Опис контактів та з’єднання з esp32.

MAX98357aESP32Опис
LRC (WS)GPIO33Left Rigth Clock
BCLK (SCK)GPIO22Bit Clock Input. Вхід тактової частоти.
DINGPIO19Digital Data input. Вхід даних.
GAINПідсилення. Підтягуючи до GND чи VIN за допомогою резистора можна отримати від 3 до 15dB підсилення.
SDВимкнення. Вибір каналу.
GNDGNDземля
VIN5VНапруга живлення.

Ці модулі можна придбати на aliexpress- MAX98375A, плата розробника ESP32 та гучномовці.

ESPHOME.

Частина програми, яка відповідає за створення медіа програвача.

i2s_audio:
  i2s_lrclk_pin: GPIO33
  i2s_bclk_pin: GPIO19

media_player:
  - platform: i2s_audio
    name: ESPHome I2S Media Player
    dac_type: external
    i2s_dout_pin: GPIO22
    mode: mono

Після додавання цього коду, компіляції та перезапуску в Home Assistant з’явитсся сутність з медіа програвачем, яку можна використовувати в автоматизаціях.

GAIN
GAIN – налаштування підсилення. Ви можете отримати підсилення 3 дБ, 6 дБ, 9 дБ, 12 дБ або 15 дБ.
-15 дБ, якщо між GAIN і GND підключено резистор 100K
-12 дБ, якщо GAIN підключено безпосередньо до GND
– 9 дБ, якщо GAIN ні до чого не підключено (це значення за замовчуванням)
– 6 дБ, якщо GAIN підключено безпосередньо до Vin
– 3 дБ, якщо резистор 100K підключений між GAIN і Vin.
Таким чином, посилення за замовчуванням становить 9 дБ, але ви можете легко змінити його, налаштувавши підключення до контакту GAIN. Зверніть увагу
може знадобитися виконати скидання живлення, щоб відрегулювати посилення.


SD / MODE
Цей контакт використовується для режиму вимкнення, але також використовується для налаштування каналу виведення.
– Якщо SD підключено до GND напряму (напруга нижче 0,16 В), підсилювач вимикається.
– Якщо напруга на SD становить від 0,16 В до 0,77 В, тоді на виході буде (Лівий + Правий)/2, тобто середнє стерео.
– Якщо напруга на SD становить від 0,77 В до 1,4 В, то на виході буде лише правий канал.
– Якщо напруга на SD вища за 1,4 В, то вихід є лівим каналом.
Це доповнюється внутрішнім підтягуючим резистором 100 КБ на SD, тому вам потрібно використовувати підтягуючий резистор на SD, щоб збалансувати
з внутрішнім опором 100K.

В автоматизаціях Home Assistant можна використовувати сервіс tts.google_translate_say для озвучування температури на вулиці. Не забудьте замінити назву сутності media_player на свою.

service: tts.google_translate_say
data:
  cache: false
  entity_id: media_player.cooler_ble_speaker_esphome_i2s_media_player
  message: " Зараз на вулиці {{states.weather.home.state}} та {{state_attr('weather.home','temperature')| round (0)}} градусів Цельсію. Найвища температура {{state_attr('weather.home', 'forecast')[0]['temperature']| round (0)}}, а найнижча {{state_attr('weather.home', 'forecast')[0]['templow']| round (0)}}"

Не забудьте прописати мову в Home Assistant configuration.yaml наступним чином:

tts:
  - platform: google_translate
    language: "uk"

Категорії: Без категорії