35e5ffea1e
- PROTOCOL.md: topology, JSON schema, MQTT topic, auth, retry logic - HARDWARE.md: components, GPIO map, ASCII wiring, power, calibration - FIRMWARE_NOTES.md: stack (ESP32 core 3.x), libraries, main loop, known issues, TODO - INDEX.md: manifest + current status + blockers Current blocker: TITAN 9 P5 default = no RS232 output. Fix: call Zemic +7(472)277-71-19, set P5=3, then test on-site. Related server repo: admin/scales
120 lines
6.6 KiB
Markdown
120 lines
6.6 KiB
Markdown
# Hardware: Весовой контроллер на ESP32
|
||
|
||
## Используемые компоненты
|
||
|
||
| Компонент | Примечание |
|
||
|----------------------------------|----------------------------------------------------------------------------------|
|
||
| ESP32-WROOM (ESP32 Dev Module) | Основной контроллер |
|
||
| W5500 Ethernet модуль | Зелёный компактный модуль 3.3V (синий оказался бракованным — см. ниже) |
|
||
| MAX3232 модуль | RS232 ↔ 3.3V TTL, питание 3–5В, 15×9 мм, рабочая t −40…+85°C |
|
||
| DS3231 RTC модуль | Часы реального времени с батарейкой; синхронизация NTP (Google 216.239.35.0) |
|
||
| 2-канальное реле (оптоизолятор) | На транзисторах BC547, управление светофором (красный / зелёный) |
|
||
| Блок питания 5В 2А | Питание всей схемы |
|
||
| Zemic TITAN 9 (весовой индикатор)| Основан на Zemic A12E; разъём DB25 (RS-232); весовая платформа до 50–60 т |
|
||
|
||
> **Важно:** Синий W5500 (первый заказанный) оказался бракованным — RJ45-трансформатор не работал
|
||
> несмотря на горящий светодиод питания. Заменён на зелёный компактный модуль 3.3V.
|
||
|
||
## Схема подключения
|
||
|
||
### W5500 → ESP32 (SPI)
|
||
|
||
```
|
||
W5500 ESP32
|
||
----- -----
|
||
MOSI → GPIO23
|
||
MISO → GPIO19 ⚠️ MOSI/MISO на модуле подписаны наоборот —
|
||
SCK → GPIO18 в прошивке SPI.begin(18, 23, 19, 4) — переставлены!
|
||
CS → GPIO4 ⚠️ GPIO5 — strapping pin, вызывает конфликт SPI при старте
|
||
RST → GPIO26 используем GPIO4
|
||
3.3V → 3.3V
|
||
GND → GND
|
||
```
|
||
|
||
### MAX3232 → ESP32 (UART RS232)
|
||
|
||
```
|
||
Весы DB25 MAX3232 (RS232 side) MAX3232 (TTL side) ESP32
|
||
--------- ------------------ ------------------ -----
|
||
Pin 2 TXD → RX (RS232)
|
||
TX (TTL) → GPIO16 (RX2)
|
||
Pin 7 GND → GND GND
|
||
VCC (3.3V) ← 3.3V
|
||
```
|
||
|
||
> Весы DB25: передача данных только на TXD + GND — 2 провода минимум.
|
||
> RXD нужен только если отправлять команды (T — тара, Z — обнуление, R — запрос веса).
|
||
> DTR может использоваться для питания гальваноразвязки (уточнить по конкретному экземпляру).
|
||
|
||
### Реле → ESP32 (светофор)
|
||
|
||
```
|
||
ESP32 Схема Нагрузка
|
||
----- ----- --------
|
||
GPIO32 → 1 кОм → база BC547 → коллектор → реле К1 → КРАСНЫЙ сигнал
|
||
GPIO33 → 1 кОм → база BC547 → коллектор → реле К2 → ЗЕЛЁНЫЙ сигнал
|
||
GND → эмиттер BC547
|
||
5V → обмотка реле (через диод защиты 1N4007)
|
||
```
|
||
|
||
### DS3231 → ESP32 (I2C)
|
||
|
||
```
|
||
DS3231 ESP32
|
||
------ -----
|
||
SDA → GPIO21
|
||
SCL → GPIO22
|
||
VCC → 3.3V
|
||
GND → GND
|
||
```
|
||
|
||
> **Порядок инициализации:** DS3231 должен инициализироваться **до** вызова `ETH.begin()`,
|
||
> иначе возникает конфликт I2C.
|
||
|
||
### Полная карта GPIO
|
||
|
||
| GPIO | Функция |
|
||
|------|----------------------|
|
||
| 4 | W5500 CS (SPI) |
|
||
| 16 | RS232 RX (Serial2) |
|
||
| 17 | RS232 TX (Serial2) |
|
||
| 18 | W5500 SCK |
|
||
| 19 | W5500 MISO |
|
||
| 21 | DS3231 SDA (I2C) |
|
||
| 22 | DS3231 SCL (I2C) |
|
||
| 23 | W5500 MOSI |
|
||
| 26 | W5500 RST |
|
||
| 32 | Реле КРАСНЫЙ |
|
||
| 33 | Реле ЗЕЛЁНЫЙ |
|
||
|
||
## Питание
|
||
|
||
- Общий источник: **5В 2А** (блок питания)
|
||
- ESP32 питается через USB/VIN от 5В
|
||
- W5500: **3.3V** (зелёный модуль имеет встроенный стабилизатор, но питается от 3.3V напрямую)
|
||
- MAX3232: 3.3V от ESP32
|
||
- DS3231: 3.3V от ESP32 + CR2032 батарейка для хранения времени
|
||
- Реле: 5В обмотка через BC547 (логика 3.3V с ESP32 управляет через транзистор)
|
||
|
||
## Корпус / монтаж
|
||
|
||
Монтаж предполагается в техническом отсеке на объекте рядом с весовым индикатором TITAN 9.
|
||
Корпус и способ крепления — TBD (на усмотрение Алексея на месте).
|
||
|
||
## Калибровка датчиков
|
||
|
||
Весовой индикатор TITAN 9 используется как готовый прибор — **калибровка датчиков выполняется
|
||
внутри индикатора**, не на стороне ESP32. ESP32 только принимает уже откалиброванные данные по RS232.
|
||
|
||
Параметры индикатора (настраиваются через сервисное меню с паролем):
|
||
|
||
| Параметр | Назначение | Нужное значение |
|
||
|----------|------------------------------------|------------------------|
|
||
| P3 | Скорость порта | 1 = 9600 baud |
|
||
| P4 | Что передавать | 2 = брутто |
|
||
| P5 | Режим передачи | **3 = при стабилизации** |
|
||
|
||
> ⚠️ **Текущий статус:** P5 стоит в режиме "нет передачи" (заводской дефолт).
|
||
> Для входа в сервисное меню нужен пароль — уточнить у Zemic: **+7 (472) 277-71-19**.
|
||
> Тест без подключённой платформы не даст RS232-вывода даже при правильном P5.
|