Files
rostpoliplast/Move/ld2410b_counter.md
T
Mephimeow fe740da06b +move
2026-04-29 10:24:42 +00:00

89 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LD2410B Conveyor Counter
ESPHome прошивка для подсчета товаров на конвейере с помощью mmWave сенсора **Hi-Link LD2410B** + **ESP32**. Данные передаются через **MQTT**.
## Схема подключения
```
ESP32 DevKit V1 LD2410B
──────────────────────────────────
GPIO17 (TX) ────► RX
GPIO16 (RX) ────► TX
GPIO18 ────► OUT (digital motion)
3.3V / 5V ────► VCC
GND ────► GND
GPIO2 ────► LED (status, onboard)
```
**Важно:** Питание LD2410B — **5V** (не 3.3V!). UART логика 3.3V — совместима с ESP32.
## Как работает
1. **UART** (256000 baud) — чтение дистанции и энергии движения для каждой "зоны" (gate)
2. **GPIO OUT** — быстрый бинарный сигнал присутствия
3. **Конечный автомат** определяет момент прохода товара:
- `State 0` — ожидание
- `State 1` — товар в зоне (energy > threshold)
- `State 2` — товар прошел (debounce 300ms) → +1 к счетчику
## MQTT топики
| Топик | Описание |
|---|---|
| `ld2410b/conveyor/sensor/items_count/state` | Общий счетчик товаров |
| `ld2410b/conveyor/sensor/moving_distance/state` | Дистанция до цели (cm) |
| `ld2410b/conveyor/sensor/trigger_distance/state` | Дистанция в зоне детекции |
| `ld2410b/conveyor/text_sensor/counter_status/state` | Строка статуса (state, energy, count) |
| `ld2410b/conveyor/button/reset_counter/command` | Сброс счетчика (payload: любая) |
| `ld2410b/conveyor/number/energy_threshold/command` | Порог энергии детекции |
| `ld2410b/conveyor/number/min_distance_cm/command` | Мин. дистанция зоны (cm) |
| `ld2410b/conveyor/number/max_distance_cm/command` | Макс. дистанция зоны (cm) |
## Настройка порогов
### Energy Threshold
- **По умолчанию:** 50
- **Диапазон:** 10100
- Чем выше — тем меньше ложных срабатываний, но нужно больше энергии движения для детекции
### Min / Max Distance
- **По умолчанию:** 75–200 см
- Установите диапазон, в котором товары проходят через луч
- LD2410B имеет минимальную дистанцию ~75 см (gate 0)
## Установка
```bash
# Установите ESPHome
pip install esphome
# Скомпилируйте и залейте
esphome run ld2410b_counter.yaml
```
## secrets.yaml
Создайте файл `secrets.yaml` рядом с конфигом:
```yaml
mqtt_broker: "192.168.1.100"
mqtt_user: "esphome"
mqtt_pass: "your_password"
```
## Отладка
1. Откройте веб-интерфейс ESP (по IP устройства)
2. Следите за `Counter Status` — строка вида `State: 1 | E: 65 | D: 120 | Count: 42`
3. Если счетчик не увеличивается:
- Уменьшите `Energy Threshold`
- Проверьте что товар попадает в диапазон `Min/Max Distance`
4. Если ложные срабатывания — увеличьте `Energy Threshold` или сузьте диапазон дистанций
## Ограничения LD2410B
- **Минимальная дистанция:** ~75 см
- **Угол обзора:** ~120° (для сужения используйте физический экран/тубус перед сенсором)
- **Не различает** направление движения (для этого нужен LD2450 с трекингом X/Y)
- **Макс. скорость конвейера:** зависит от размера товаров и debounce (300ms). Для быстрого конвейера уменьшите debounce в коде.