67 lines
5.7 KiB
Markdown
67 lines
5.7 KiB
Markdown
# 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` або власний скрипт).
|
||
|
||
## Збірка та конфігурація
|
||
1. Встановіть ESP-IDF v5.5.1 (шлях `IDF_PATH` має вказувати на `/Users/tarassivas/esp/v5.5.1/esp-idf`).
|
||
2. Один раз виконайте `idf.py reconfigure`, щоб підвантажити залежності з `idf_component.yml`.
|
||
3. Переконайтеся, що в `sdkconfig` увімкнено:
|
||
- `CONFIG_TINYUSB_CDC_ENABLED=y`
|
||
- `CONFIG_TINYUSB_CDC_RX_BUFSIZE=128` (або інше значення за вашим сценарієм).
|
||
4. Зберіть проєкт: `idf.py build`, прошийте `idf.py flash`, переглядайте лог `idf.py monitor`.
|
||
|
||
## Подальший розвиток
|
||
1. Додати протокол обміну з Raspberry Pi (наприклад, командний набір через USB CLI або окреме IPC).
|
||
2. Включити зворотній зв’язок: вимір напруги/струму, датчики температури для кожного DC/DC.
|
||
3. Розширити CLI (макроси, сценарії, логування станів) та інтегрувати з продакшн-скриптами.
|