Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4fcca2701b | ||
|
|
51c46bf8d6 | ||
|
|
f4150ac1de |
+72
-33
@@ -26,47 +26,63 @@ Laravel (`DemoGrowboxSeeder` использует `sensor-1`/`fan-1`), а `zone_
|
|||||||
|
|
||||||
## Железо
|
## Железо
|
||||||
|
|
||||||
| Назначение | Пин (по умолчанию) |
|
По фото реального комплекта: 30-контактная ESP32 DevKit, готовый модуль
|
||||||
|-----------------|---------------------|
|
DHT22 с распаянными проводами и **один 2-канальный** релейный модуль
|
||||||
| DHT22 data | GPIO4 |
|
(SRD-05VDC-SL-C×2, общий разъём `GND IN1 IN2 VCC`) — закрывает sensor-1,
|
||||||
| Реле — light-1 | GPIO16 |
|
light-1, pump-1. Для fan-1 нужен ещё один канал реле (третий модуль или
|
||||||
| Реле — pump-1 | GPIO17 |
|
4-канальная плата) — в прошивке/config.h он уже заложен на GPIO18, физически
|
||||||
| Реле — fan-1 | GPIO18 |
|
пока не подключён.
|
||||||
|
|
||||||
Реле-модули по умолчанию считаются активными по LOW (`RELAY_ACTIVE_LOW` в
|
| Назначение | Пин (по умолчанию) | Примечание |
|
||||||
`config.h`) — типично для дешёвых китайских модулей на оптопаре. Если ваши
|
|---------------------|---------------------|------------|
|
||||||
реле активны по HIGH — поменяйте флаг.
|
| DHT22 DATA | GPIO4 | провод жёлтый на нашем модуле |
|
||||||
|
| Реле IN1 — light-1 | GPIO16 | **на шёлкографии платы подписан `RX2`**, не «16» |
|
||||||
|
| Реле IN2 — pump-1 | GPIO17 | **на шёлкографии платы подписан `TX2`**, не «17» |
|
||||||
|
| Реле IN — fan-1 | GPIO18 | нужен третий канал реле, пока не подключено |
|
||||||
|
|
||||||
DHT22 требует подтягивающий резистор ~10кОм между data и VCC, если он не
|
На этой конкретной 30-пиновой плате GPIO16/17 не подписаны номерами — они
|
||||||
встроен в конкретный модуль.
|
выведены как пины UART2 и промаркированы `RX2`/`TX2`. Физически это те же
|
||||||
|
GPIO, `config.h`/прошивку менять не нужно, важно только не перепутать их при
|
||||||
|
пайке/монтаже на плате.
|
||||||
|
|
||||||
|
Реле-модуль (2-канальный, SRD-05VDC-SL-C) активен по LOW —
|
||||||
|
`RELAY_ACTIVE_LOW` в `config.h` уже стоит в `true`. Перемычка `JD-VCC` на
|
||||||
|
модуле по умолчанию установлена (питание катушек реле — от той же VCC, без
|
||||||
|
гальванической развязки) — для этого проекта этого достаточно, снимать её
|
||||||
|
незачем.
|
||||||
|
|
||||||
|
DHT22 требует подтягивающий резистор ~10кОм между DATA и VCC — на нашем
|
||||||
|
модуле, похоже, уже встроен (компактная плата-переходник с 3 проводами), но
|
||||||
|
если показания не читаются — проверьте отдельным резистором.
|
||||||
|
|
||||||
### Схема подключения
|
### Схема подключения
|
||||||
|
|
||||||
```
|
```
|
||||||
ESP32 DevKitC
|
ESP32 (30 pin)
|
||||||
┌───────────────────────┐
|
┌───────────────────────┐
|
||||||
DHT22 DATA ───────┤ GPIO4 │
|
DHT22 DATA ───────┤ GPIO4 │
|
||||||
(+10к подтяжка │ │
|
(жёлтый провод) │ │
|
||||||
DATA -> 3V3) │ │
|
|
||||||
│ │
|
│ │
|
||||||
Реле LIGHT IN ────┤ GPIO16 │
|
Реле IN1 (light-1)─┤ GPIO16 (на плате: RX2)
|
||||||
Реле PUMP IN ────┤ GPIO17 │
|
Реле IN2 (pump-1) ─┤ GPIO17 (на плате: TX2)
|
||||||
Реле FAN IN ────┤ GPIO18 │
|
Реле IN (fan-1) ──┤ GPIO18 ← пока не подключено
|
||||||
│ │
|
│ │
|
||||||
3V3 ────┤ 3V3 │
|
3V3 ────┤ 3V3 │
|
||||||
GND ────┤ GND │
|
GND ────┤ GND │
|
||||||
USB/5V ─┤ VIN │
|
USB/5V ─┤ VIN │
|
||||||
└───────────────────────┘
|
└───────────────────────┘
|
||||||
|
|
||||||
DHT22: VCC -> 3V3 GND -> GND DATA -> GPIO4
|
DHT22 (готовый модуль, 3 провода):
|
||||||
Реле-модуль: VCC -> 5V (VIN) или 3V3 (смотри маркировку модуля)
|
оранжевый(+/VCC) -> 3V3 жёлтый(out/DATA) -> GPIO4 зелёный(-/GND) -> GND
|
||||||
GND -> GND (общий с ESP32)
|
|
||||||
IN -> GPIO16 / GPIO17 / GPIO18
|
Реле, 2-канальный модуль (разъём GND IN1 IN2 VCC):
|
||||||
|
VCC -> VIN (5V) GND -> GND (общий с ESP32)
|
||||||
|
IN1 -> GPIO16/RX2 (light-1) IN2 -> GPIO17/TX2 (pump-1)
|
||||||
|
|
||||||
⚠️ Реле коммутируют цепь самой нагрузки (свет/насос/вентилятор, обычно
|
⚠️ Реле коммутируют цепь самой нагрузки (свет/насос/вентилятор, обычно
|
||||||
12V/220V) через контакты COM/NO/NC — это ОТДЕЛЬНАЯ силовая цепь со своим
|
12V/220V) через винтовые клеммы COM/NO/NC каждого канала — это
|
||||||
источником питания, к GPIO ESP32 она не подключается. К плате идёт
|
ОТДЕЛЬНАЯ силовая цепь со своим источником питания, к GPIO ESP32 она не
|
||||||
только сигнальный IN каждого реле-модуля.
|
подключается. К плате идёт только сигнальный IN каждого канала.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Библиотеки
|
## Библиотеки
|
||||||
@@ -102,16 +118,39 @@ DHT22: VCC -> 3V3 GND -> GND DATA -> GPIO4
|
|||||||
авторизации — только для локальной сети, как и mosquitto платформы; для
|
авторизации — только для локальной сети, как и mosquitto платформы; для
|
||||||
выхода за пределы LAN сначала нужно добавить хотя бы Basic Auth.
|
выхода за пределы LAN сначала нужно добавить хотя бы Basic Auth.
|
||||||
|
|
||||||
## Настройка и прошивка
|
## Настройка и прошивка через Arduino IDE
|
||||||
|
|
||||||
1. `cp config.h.example config.h`, заполнить Wi-Fi SSID/пароль, IP хоста, на
|
1. **Поддержка ESP32.** Arduino IDE → Settings → «Additional boards manager
|
||||||
котором поднят `docker compose` платформы (mosquitto слушает `0.0.0.0:1883`
|
URLs» → добавить:
|
||||||
— доступен по IP машины в локальной сети), `zone_id` и `device_id`.
|
`https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json`
|
||||||
2. Открыть `growbox.ino` в Arduino IDE, выбрать плату (ESP32 Dev Module или
|
2. **Ядро.** Tools → Board → Boards Manager → найти `esp32` → установить
|
||||||
конкретную модель), порт.
|
пакет `esp32 by Espressif Systems`.
|
||||||
3. Прошить. Открыть Serial Monitor на 115200 бод — там лог подключения к
|
3. **Библиотеки.** Tools → Manage Libraries → поставить по одной:
|
||||||
Wi-Fi/NTP/MQTT/веб-сервера и каждой публикации телеметрии/команды, а
|
`PubSubClient`, `ArduinoJson` (v7), `DHT sensor library` (IDE предложит
|
||||||
также IP платы для похода в веб-интерфейс.
|
доустановить зависимость `Adafruit Unified Sensor` — согласиться).
|
||||||
|
4. **Скетч.** File → Open → `controllers/growbox/growbox.ino` — остальные
|
||||||
|
`.h`/`.cpp` подхватятся вкладками автоматически.
|
||||||
|
5. **Конфиг.** `cp config.h.example config.h`, заполнить Wi-Fi SSID/пароль,
|
||||||
|
IP хоста с поднятым `docker compose` платформы (mosquitto слушает
|
||||||
|
`0.0.0.0:1883` — доступен по IP машины в локальной сети), `zone_id` и
|
||||||
|
`device_id`. Если IDE уже была открыта — переоткрыть скетч.
|
||||||
|
6. **Плата и порт.** Подключить ESP32 по USB (кабель именно с передачей
|
||||||
|
данных). Tools → Board → esp32 → `ESP32 Dev Module` (или точная модель).
|
||||||
|
Tools → Port → появившийся `/dev/cu.usbserial-*` /
|
||||||
|
`/dev/cu.SLAB_USBtoUART`.
|
||||||
|
7. **Заливка.** Кнопка Upload. Часть плат просит зажать кнопку `BOOT` на
|
||||||
|
плате до появления точек соединения в логе.
|
||||||
|
8. **Проверка.** Serial Monitor, 115200 бод — лог подключения к
|
||||||
|
Wi-Fi/NTP/MQTT/веб-сервера, публикации телеметрии/команд и IP платы для
|
||||||
|
похода в веб-интерфейс.
|
||||||
|
|
||||||
|
**Если не заливается:**
|
||||||
|
- порта нет в списке — нужен драйвер USB-UART моста платы (CP2102 обычно
|
||||||
|
ставится сам на современной macOS, CH340 — вручную);
|
||||||
|
- `Failed to connect to ESP32` / `No serial data received` — зажать `BOOT`
|
||||||
|
на плате на время заливки;
|
||||||
|
- заливка обрывается или очень долгая — Tools → Upload Speed → понизить с
|
||||||
|
921600 до 115200.
|
||||||
|
|
||||||
### Сборка через `arduino-cli` (если не через IDE)
|
### Сборка через `arduino-cli` (если не через IDE)
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#define DEVICE_ID_FAN "fan-1"
|
#define DEVICE_ID_FAN "fan-1"
|
||||||
|
|
||||||
// --- Пины (ESP32 DevKitC) ---
|
// --- Пины (ESP32 DevKitC) ---
|
||||||
|
// На 30-контактных платах GPIO16/17 часто подписаны на шёлкографии как
|
||||||
|
// RX2/TX2 (пины UART2), а не номерами — это те же GPIO, см. README.md.
|
||||||
#define PIN_DHT22 4
|
#define PIN_DHT22 4
|
||||||
#define PIN_RELAY_LIGHT 16
|
#define PIN_RELAY_LIGHT 16
|
||||||
#define PIN_RELAY_PUMP 17
|
#define PIN_RELAY_PUMP 17
|
||||||
|
|||||||
Reference in New Issue
Block a user