5b4691dc533e2d44f435f7afe04acd038188453d
watch-watch
watch-watch — вбудована система на ESP32-S3 для нагляду за п’ятьма силовими модулями на базі Raspberry Pi 5. ESP32-S3 керує DC/DC перетворювачами через сигнали EN, а також надає USB CLI інтерфейс для налаштування та діагностики без окремого UART.
Основні можливості
- Керування каналами живлення: 5 незалежних ліній
EN(GPIO 2, 4, 5, 18, 19), які можна увімкнути, вимкнути або перемкнути з коду чи CLI. - Послідовний автотест: у
app_mainреалізовано базову логіку — канали вмикаються по черзі з інтервалом 4 с, що дозволяє перевірити всі DC/DC. - Світлодіодний індикатор стану: п’ять WS2812 (GPIO 8) показують роботу каналів — активний канал підсвічується яскраво-зеленим, увімкнені/вимкнені відображаються зеленим/синім, помилки — червоним.
- Нативний USB-CLI: ESP32-S3 підключається до Raspberry Pi 5 по USB і стає CDC ACM пристроєм; командний інтерфейс дозволяє керувати каналами та дивитись стан у реальному часі.
- Модульна архітектура: окремі компоненти
dcdc_controllerіusb_cdc_cliспрощують розширення (телеметрія, автоматизація, протоколи зв’язку).
Структура проєкту
├── main
│ ├── main.c // базова логіка, ініціалізація модулів
│ ├── dcdc_controller.c/.h // API керування DC/DC каналами
│ ├── usb_cdc_cli.c/.h // TinyUSB CLI для Raspberry Pi 5
│ └── idf_component.yml // залежність на espressif/esp_tinyusb
├── sdkconfig // конфігурація (опції TinyUSB увімкнені)
└── README.md // цей файл
GPIO-призначення каналів
| Канал | GPIO | Призначення |
|---|---|---|
| 0 | 2 | Модуль живлення #1 |
| 1 | 4 | Модуль живлення #2 |
| 2 | 5 | Модуль живлення #3 |
| 3 | 18 | Модуль живлення #4 |
| 4 | 19 | Модуль живлення #5 |
Піни можна змінити в
main/dcdc_controller.c, масивs_dcdc_gpio_map.
Світлодіоди стану
- IC WS2812 підключений до GPIO 8 (один ланцюг із 5 діодів).
- Модуль
ws2812_statusсинхронізує стан з DC/DC: увімкнені канали світяться зеленим, вимкнені — синім, активний у поточному циклі — яскраво-зеленим крапкою. - За критичної помилки (наприклад, DCDC не ініціалізувався) всі індикатори стають червоними.
- Колірні алгоритми можна кастомізувати у
main/ws2812_status.c. - GPIO, кількість діодів та тактову частоту RMT можна змінити через
idf.py menuconfig(розділ Налаштування watch-watch).
USB CDC CLI
Після підключення ESP32-S3 до Raspberry Pi 5 з’являється USB-пристрій (CDC ACM). У CLI доступні команди:
| Команда | Опис |
|---|---|
help |
довідка по командам |
status |
поточний стан усіх каналів |
enable <n> |
увімкнути канал n (0..4) |
disable <n> |
вимкнути канал n |
toggle <n> |
перемкнути канал n |
CLI з’являється після того, як Raspberry Pi встановить DTR (наприклад, через screen, picocom або власний скрипт).
Збірка та конфігурація
- Встановіть ESP-IDF v5.5.1 (шлях
IDF_PATHмає вказувати на/Users/tarassivas/esp/v5.5.1/esp-idf). - Один раз виконайте
idf.py reconfigure, щоб підвантажити залежності зidf_component.yml. - Переконайтеся, що в
sdkconfigувімкнено:CONFIG_TINYUSB_CDC_ENABLED=yCONFIG_TINYUSB_CDC_RX_BUFSIZE=128(або інше значення за вашим сценарієм).
- Зберіть проєкт:
idf.py build, прошийтеidf.py flash, переглядайте логidf.py monitor.
Подальший розвиток
- Додати протокол обміну з Raspberry Pi (наприклад, командний набір через USB CLI або окреме IPC).
- Включити зворотній зв’язок: вимір напруги/струму, датчики температури для кожного DC/DC.
- Розширити CLI (макроси, сценарії, логування станів) та інтегрувати з продакшн-скриптами.
Description
Languages
C
92.7%
CMake
3.3%
Makefile
1.6%
Python
1.1%
C++
0.5%
Other
0.7%