Skip to content
VITAZGIOPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

SEBOSTIAN — умная колонка «Себастьян»

Самодельная колонка для голосового ИИ-дворецкого «Себастьян» (локальный ИИ на домашнем сервере). Внутри две платы ESP32, дисплей с тачем, стерео-динамики, микрофон, Bluetooth-колонка, AUX-выход, ARGB-подсветка и радио 433 МГц.

Статус: стенд собран, все узлы проверены (кроме переключателя источника звука 74HC4053 — ещё не пришёл). Сейчас на платах стоит тестовая прошивка с экранами для проверки всего железа. Голосовой контур (прошивка XiaoZhi / связь с сервером Себастьяна) — следующий этап.


Как это устроено

                ┌──────────────── UART 115200 (TX/RX накрест + GND) ───────────────┐
                │                                                                  │
   ┌────────────┴─────────────┐                                     ┌──────────────┴───────────┐
   │  ESP32-S3-N16R8 «ГОЛОВА» │                                     │  ESP32 «СО-ПРОЦЕССОР»    │
   │  дисплей 2.4" + тач      │                                     │  Bluetooth-колонка (A2DP)│
   │  SD-карта (MP3)          │                                     │  AUX: PCM5102A           │
   │  2× MAX98357A (стерео)   │                                     │  ARGB-лента              │
   │  микрофон INMP441        │                                     │  радио 433 (RX + TX)     │
   │  Wi-Fi: часы, OTA        │                                     │  3 сенсорные кнопки      │
   │  детект штекера AUX      │                                     │  кнопка микрофона        │
   └──────────────────────────┘                                     │  замер батареи           │
                                                                    └──────────────────────────┘
  • Голова (S3) — голосовой контур: экран, звук в динамики, микрофон, Wi-Fi. Главная плата.
  • Со-процессор (обычная ESP32) — всё остальное: Bluetooth-звук (S3 так не умеет — у него нет Bluetooth Classic), радио, свет, кнопки, батарея.
  • Платы общаются текстовыми командами по UART.

Питание

UPS-модуль HW-465 (2×18650 параллельно, зарядка USB-C, повышайка 5 В 3 А, авто-переход на батарею при отключении USB) → тумблер → общий рельс 5 В на обе ESP, усилители, PCM, ленту, радио. Земля общая. ⚠️ Перемычки 9V/12V на модуле не паять — MAX98357A сгорят.


Папки

Папка Плата Что
S3/ ESP32-S3-N16R8 (голова) PlatformIO-проект головы
ESP32/ ESP32 D0WD-V3 (со-процессор) PlatformIO-проект со-процессора

В каждом проекте:

  • src/main.cpp — прошивка
  • src/secrets.h — Wi-Fi и пароль OTA (не в git, шаблон: src/secrets.example.h)
  • secrets.ini — пароль OTA для заливки по Wi-Fi (не в git)
  • platformio.ini — окружения: обычное (по кабелю) и *_ota (по Wi-Fi)

Как прошивать

Первый раз / если что-то сломалось — по кабелю

  1. Скопируй src/secrets.example.h → src/secrets.h, впиши Wi-Fi и пароль OTA.
  2. Создай secrets.ini:
    [env:esp32s3_ota]            ; у со-процессора: [env:esp32_ota]
    upload_flags = --auth=ПАРОЛЬ_OTA
  3. В VS Code внизу выбери env:esp32s3 (голова) или env:esp32 (со-процессор) → Upload.

Обычно — по Wi-Fi (OTA)

  • Голова: Wi-Fi и OTA включаются сами при старте. Выбери env:esp32s3_ota → Upload. IP головы — на экране (HOME / SYSTEM), вписан в upload_port.
  • Со-процессор: на экране головы страница SYSTEM → COPROC OTA (лента станет фиолетовой, Bluetooth выключится). Дождись COPROC OTA: ZHDU <IP> → env:esp32_ota → Upload. Есть 5 минут, потом плата сама вернётся в обычный режим.
  • Windows при первой заливке спросит разрешение для Python в брандмауэре — разрешить, иначе No response from the ESP.

Тестовая прошивка: экраны головы

Листать кнопками < и > внизу.

Экран Что показывает Кнопки
HOME часы (NTP, МСК), дата, Wi-Fi, батарея %, BT, связь плат, аудио VOL−, PLAY/STOP, VOL+
AUDIO SD, громкость, мьюты, штекер AUX, уровень микрофона PLAY, MIC TEST, VOL±, SPK MUTE, AUX MUTE, AUX MUSIC, L/R TEST
SENSORS связь в обе стороны, батарея, BT, сенсоры T1/T2/T3/MIC (круги) LED NEXT, BEEP
RADIO пульт 433: коды 1–21 + HOLD, что поймал приёмник 22 кнопки
SYSTEM Wi-Fi, IP, OTA, память, аптайм, причина перезагрузки COPROC OTA, REBOOT HEAD

Сенсорные кнопки на корпусе: 1 — тише, 2 — play/stop, 3 — громче.


Распиновка

Голова — ESP32-S3-N16R8

Узел Пины
Дисплей ST7789 240×320 + тач XPT2046 (общая SPI) SCK 12, MOSI 11, MISO 13, LCD_CS 10, DC 9, RST 14, BL 21, TOUCH_CS 16, T_IRQ 17
SD-карта (своя SPI) SCK 6, MOSI 7, MISO 15, CS 5
I2S → 2× MAX98357A (+ PCM5102A позже через 74HC4053) BCLK 40, LRC 41, DIN 42
Мьют динамиков (2× BC547) 2 (LOW = играют)
Мьют AUX (PCM5102A XSMT) 39 (HIGH = играет)
Детект штекера AUX 3 (через 10 кОм, HIGH = вставлен)
Микрофон INMP441 (I2S0) SCK 47, WS 48, SD 38, L/R → GND
UART к со-процессору TX 8, RX 18
Монитор (USB-UART) 43/44 — не трогать

Нельзя: 35–37 (заняты PSRAM), 0 (BOOT), 19/20 (USB), 45/46 (strapping). Свободны: 1, 4.

Со-процессор — ESP32 (D0WD-V3, 4 МБ)

Узел Пины
I2S → PCM5102A (AUX) BCK 26, LCK 25, DIN 22
Выбор источника 74HC4053 (когда будет) 21 (LOW = S3)
ARGB-лента (4 диода) 32 → 470 Ом → Din
Сенсоры TTP223 36 (T1), 35 (T2), 34 (T3)
Кнопка микрофона 4 (pull-up)
Замер батареи 33 (делитель 10к/10к от B+)
Радио 433 RX 27 (через делитель 10к/20к), TX 13
UART к голове RX2 16, TX2 17

Нельзя: 12 (не даст загрузиться), 0/2 (strapping), 1/3 (USB). Свободны: 14, 18, 19, 23, 39 (только вход).


Протокол UART (голова ↔ со-процессор)

Направление Строка Смысл
S3 → ESP PING n проверка связи (ответ P,n)
S3 → ESP BEEP / MUSIC / LED мелодия в AUX / тестовая музыка вкл-выкл / режим ленты
S3 → ESP RF n / RFHOLD отправить радиокод n (1–21) / код 1 три раза
S3 → ESP OTA режим прошивки по Wi-Fi
ESP → S3 S,t1,t2,t3,mic,bat_mV,uptime,bt,music статус 5 раз в секунду
ESP → S3 T,n нажат сенсор n
ESP → S3 R,n,code / L,n,code / U,code пойман триггер / код подсветки / чужой код
ESP → S3 X,n,code радиокод отправлен
ESP → S3 W,state,pct,ip статус OTA со-процессора

Важные грабли (уже наступили)

  • MAX98357A (клоны): SD подтянут к VIN через ~4 кОм. Левый канал — ничего не нужно. Правый — 1 кОм с SD на GND (≈1 В). Проверка: AUDIO → L/R TEST (левый 3 стука, правый 2).
  • PCM5102A: перемычки снизу H1, H2, H4 — середина на L (GND), иначе шум. SCK → GND. H3 = XSMT.
  • GPIO37 на S3 N16R8 занят PSRAM — микрофон на нём вешал плату (WDT).
  • Флеш 16 МБ: в platformio.ini нужен board_upload.flash_size = 16MB, иначе загрузчик крутится в перезагрузках.
  • Со-процессор: разметка min_spiffs.csv (2 слота под OTA), huge_app.csv OTA не умеет.
  • Bluetooth и Wi-Fi на обычной ESP32 мешают друг другу — поэтому OTA со-процессора отдельным режимом.
  • Радио HOLD = код 1 три раза подряд (длинная пачка не срабатывает).
  • ARGB работает напрямую от 3.3 В через 470 Ом, 10 кОм — слишком много.

Что дальше

  • 74HC4053 — переключение источника звука (S3 ↔ Bluetooth) на усилители и AUX
  • Замена сдохшего MAX98357A
  • Сборка питания от UPS-модуля, замер батареи
  • Корпус
  • Голосовой контур: XiaoZhi на S3 ↔ сервер Себастьяна

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages