Админ
Администратор
- Регистрация
- 24.02.18
- Сообщения
- 1.673
- Реакции
- 444
Архитектура системы (что чем управляет)
Полный список комплектующих и где искать
На Ozon и WB ищите по точным названиям (прямые ссылки часто «живут» недолго). Высокоточные датчики надёжнее брать в специализированных магазинах.
Контроллер и датчики
Пульт и обвязка
Силовая часть и защита
Схема соединений (пошагово)
1. Шина I2C (датчики + дисплей)
У ESP32-S3 стандартные пины: GPIO8 (SDA) и GPIO9 (SCL).OpenSourceSimWheelESP32/src/QualityControl/README.md at fa0a4aea8fea83a08b5ee4940eb95fd37ed9918d · afpineda/OpenSourceSimWheelESP32
Mean Well IRM-10-5 (5V) → ESP32 (5V/VIN) и модуль реле. Суперконденсатор — параллельно 3.3V и GND на ESP32.
Прошивка: что скачать и как установить
1. Arduino IDE
Скачайте с официального сайта: https://www.arduino.cc/en/software (версия 2.x).
2. Ядро ESP32
Полный код (с гистерезисом и блокировкой заслонки)
Замените пины, если использовали другие.
Финальный чек-лист перед включением 220В
Схема 2. Шина I2C (датчики + дисплей)
Примечание: подсветку LCD (пин LED/BL) лучше запитать от 5V
блока Mean Well, а не от 3.3V ESP32 — иначе стабилизатор
платы будет перегреваться.
Схема 3. Кнопки пульта
Схема 4. Управление SSR-25DA через транзисторный ключ
Схема 5. 8-канальный модуль реле (вентиляторы, увлажнитель, заслонки, свет)
Схема 6. Силовая часть 220В (что куда на клеммниках)
Схема 7. Питание логики (5V и 3.3V)
Итоговая таблица всех пинов (для перепроверки)
Перед включением
- ESP32-S3 — «мозг». Обрабатывает датчики, кнопки и дисплей.
- SCD41 (I2C 0x62) — точный CO₂ (фотоакустический NDIR, ±(40ppm+5%)).https://docs.arduino.cc/libraries/sparkfun-scd4x-arduino-library/
- SHT35 (I2C 0x44) — эталонные температура/влажность (±0.1°C / ±1.5%RH).SHT35-DIS-B2.5kS, (1-101388-01), Преобразователь для датчика влажности и температуры – купить оптом и в розницу
- LCD 2004 I2C (0x27) — локальный пульт (4 строки).LCD-2004 I2C Module (белые символы на синем фоне), Дисплейный модуль
- SSR-25DA — только для обогревателя (ТЭН). Управляется через транзисторный ключ.
- 8-канальный модуль реле — вытяжка, приток, увлажнитель, заслонка (+/-), свет и резерв.
Полный список комплектующих и где искатьНа Ozon и WB ищите по точным названиям (прямые ссылки часто «живут» недолго). Высокоточные датчики надёжнее брать в специализированных магазинах.
Контроллер и датчики- ESP32-S3 DevKitC-1 (N16R8): Ozon/WB (ESP32-S3 DevKitC-1 N16R8); специализированные: smd61.ru (~980 ₽), 09v.ru (~542 ₽).
- SCD41 (CO₂): специализированные: ChipDip (арт. 8062395197, ~4480 ₽), Roboshop (~2200 ₽). На Ozon/WB ищите SCD41 датчик CO2.SCD41-D-R1, Датчик: газа; CO2; СО2; Uраб: 2,4-5,5В; Диапазон: 400-5000ppm – купить оптом и в розницу Модуль датчика углекислого газа, температуры и влажности SCD41 купить в RoboShop
- SHT35 (T/RH): специализированные: ChipDip (арт. 8068466294, ~530 ₽), Amperkot, Platan. На Ozon/WB: SHT35 датчик температуры влажности.SHT35-DIS-B2.5kS, (1-101388-01), Преобразователь для датчика влажности и температуры – купить оптом и в розницу
Пульт и обвязка- LCD 2004 I2C: Ozon/WB (LCD 2004 I2C), magazin-elektronika.ru (~703 ₽), iarduino.ru.
- Кнопки тактовые (4 шт.): Ozon/WB (тактовая кнопка 12x12).
- Блок питания Mean Well IRM-10-5 (5V/2A): Ozon/WB (Mean Well IRM-10-5), ChipDip, Platan.
- Корпус G373 IP65: Ozon/WB (корпус G373 IP65).
Силовая часть и защита- SSR-25DA: Ozon/WB (SSR-25DA твердотельное реле), 42unita.ru (~510–579 ₽). Обязательно радиатор.
- 8-канальный модуль реле (5V, с оптопарой): Ozon/WB (модуль реле 8 каналов 5V опторазвязка).
- Транзистор PN2222A (2 шт.): Ozon/WB (PN2222A транзистор). Нужен, так как 3.3V не открывает SSR-25DA напрямую.
- Резисторы 1 кОм и 3.3 кОм: Ozon/WB (резистор 1кОм 0.25Вт, резистор 3.3кОм).
- Варисторы 07D471K (2–3 шт.): Ozon/WB (варистор 07D471K). Ставятся параллельно контактам реле вентиляторов для гашения дуги.
- Предохранитель 10A + держатель: Ozon/WB. На линию обогревателя.
- Клеммники WAGO 221: Ozon/WB. Для силовой разводки 220В.
- Суперконденсатор 1F 3V (ионистор): Ozon/WB (ионистор 1F 3V).
Схема соединений (пошагово)1. Шина I2C (датчики + дисплей)
У ESP32-S3 стандартные пины: GPIO8 (SDA) и GPIO9 (SCL).OpenSourceSimWheelESP32/src/QualityControl/README.md at fa0a4aea8fea83a08b5ee4940eb95fd37ed9918d · afpineda/OpenSourceSimWheelESP32
- VCC всех устройств → 3.3V ESP32 (подсветку LCD лучше запитать от 5V блока питания, чтобы не перегружать стабилизатор платы).
- GND → GND.
- SDA → GPIO8, SCL → GPIO9. Адреса не конфликтуют: SCD41 (0x62), SHT35 (0x44), LCD (0x27/0x3F).
- UP → GPIO4, DOWN → GPIO5, EDIT → GPIO6, BACK → GPIO7.
- Вторые ножки всех кнопок → GND. В коде включим INPUT_PULLUP.
- GPIO (например, GPIO10) → резистор 1 кОм → база PN2222A.
- Между базой и 3.3V — резистор 3.3 кОм (подтяжка, чтобы SSR гарантированно выключался при сбросе).
- Эмиттер → GND.
- Коллектор → вход DC+ SSR-25DA. Вход DC- SSR → GND.
- Выход SSR (клеммы 1,2) — в разрыв фазного провода 220В к обогревателю. Нужен радиатор.
- Питание модуля — от 5V (Mean Well), сигнальные входы — с GPIO ESP32.
- Варистор 07D471K — параллельно контактам реле, коммутирующим вентиляторы (защита от индуктивных выбросов).
- Заслонка: если привод реверсивный — два канала (открыть/закрыть). Если с возвратной пружиной — один.
Mean Well IRM-10-5 (5V) → ESP32 (5V/VIN) и модуль реле. Суперконденсатор — параллельно 3.3V и GND на ESP32.
Прошивка: что скачать и как установить1. Arduino IDE
Скачайте с официального сайта: https://www.arduino.cc/en/software (версия 2.x).
2. Ядро ESP32
- File → Preferences → в поле Additional Boards Manager URLs вставьте:
. - Tools → Board → Boards Manager → найдите esp32 → установите esp32 by Espressif Systems.
- Tools → Board → ESP32S3 Dev Module. Порт (Tools → Port) появится после подключения платы.
- SparkFun SCD4x — для SCD41 (официальная библиотека, работает с SCD40/SCD41).https://docs.arduino.cc/libraries/sparkfun-scd4x-arduino-library/
- Sensirion I2C SHT3X — для SHT35 (адрес 0x44).https://raw.githubusercontent.com/Sensirion/arduino-i2c-sht3x/refs/heads/master/README.md#1
- LiquidCrystal I2C (автор Frank de Brabander или johnrickman) — для дисплея.LiquidCrystal_I2C Reference: Control Your 16x2 LCD Display ?
- Bounce2 (автор Thomas Fredericks) — антидребезг кнопок.thomasfredericks/Bounce2 alternatives and similar packages
- Подключите ESP32 по USB. Выберите порт.
- Нажмите Upload. Если появляется Connecting... и загрузка висит: зажмите кнопку BOOT на плате, нажмите Reset, отпустите Reset, затем отпустите BOOT — плата перейдёт в режим загрузчика. После загрузки перезагрузите плату кнопкой Reset (BOOT не трогать).USB CDC and DFU Flashing - - — Arduino ESP32 latest documentation
Полный код (с гистерезисом и блокировкой заслонки)Замените пины, если использовали другие.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SparkFun_SCD4x_Arduino_Library.h>
#include <SensirionI2CSht3x.h>
#include <Bounce2.h>
#define I2C_SDA 8
#define I2C_SCL 9
#define BTN_UP 4
#define BTN_DOWN 5
#define BTN_EDIT 6
#define BTN_BACK 7
#define PIN_SSR_HEATER 10
#define PIN_RELAY_EXHAUST 11
#define PIN_RELAY_SUPPLY 12
#define PIN_RELAY_HUMID 13
#define PIN_DAMPER_OPEN 14
#define PIN_DAMPER_CLOSE 15
#define PIN_RELAY_LIGHT 16
LiquidCrystal_I2C lcd(0x27, 20, 4);
SCD4x scd4x;
SensirionI2CSht3x sht3x;
Bounce btnUp = Bounce(), btnDown = Bounce(), btnEdit = Bounce(), btnBack = Bounce();
float SET_TEMP = 24.0; // °C
float SET_HUM = 90.0; // %
int SET_CO2 = 900; // ppm
enum State { MAIN, MENU };
State currentState = MAIN;
int menuIndex = 0;
float temp = 0, hum = 0;
int co2 = 0;
void setup() {
Serial.begin(115200);
Wire.begin(I2C_SDA, I2C_SCL);
btnUp.attach(BTN_UP, INPUT_PULLUP); btnUp.interval(25);
btnDown.attach(BTN_DOWN, INPUT_PULLUP); btnDown.interval(25);
btnEdit.attach(BTN_EDIT, INPUT_PULLUP); btnEdit.interval(25);
btnBack.attach(BTN_BACK, INPUT_PULLUP); btnBack.interval(25);
lcd.init(); lcd.backlight();
scd4x.begin(Wire);
sht3x.begin(Wire);
scd4x.startPeriodicMeasurement();
sht3x.startPeriodicMeasurement();
pinMode(PIN_SSR_HEATER, OUTPUT); digitalWrite(PIN_SSR_HEATER, LOW);
pinMode(PIN_RELAY_EXHAUST, OUTPUT); digitalWrite(PIN_RELAY_EXHAUST, LOW);
pinMode(PIN_RELAY_SUPPLY, OUTPUT); digitalWrite(PIN_RELAY_SUPPLY, LOW);
pinMode(PIN_RELAY_HUMID, OUTPUT); digitalWrite(PIN_RELAY_HUMID, LOW);
pinMode(PIN_DAMPER_OPEN, OUTPUT); digitalWrite(PIN_DAMPER_OPEN, LOW);
pinMode(PIN_DAMPER_CLOSE, OUTPUT); digitalWrite(PIN_DAMPER_CLOSE, LOW);
pinMode(PIN_RELAY_LIGHT, OUTPUT); digitalWrite(PIN_RELAY_LIGHT, LOW);
}
void loop() {
btnUp.update(); btnDown.update(); btnEdit.update(); btnBack.update();
static unsigned long lastRead = 0;
if (millis() - lastRead > 2000) { readSensors(); lastRead = millis(); }
handleButtons();
controlAll();
updateDisplay();
}
void readSensors() {
uint16_t co2Val; float t, h;
if (scd4x.readMeasurement(co2Val, t, h)) co2 = co2Val;
float shtT, shtH;
if (sht3x.getTemperatureHumidity(shtT, shtH) == 0) { temp = shtT; hum = shtH; }
}
void updateChannel(int pin, float value, float setpoint, float hysteresis, bool heating) {
static bool states[20] = {false};
int idx = pin % 20;
bool shouldOn;
if (heating) shouldOn = (value < setpoint - hysteresis);
else shouldOn = (value > setpoint + hysteresis);
if (shouldOn != states[idx]) { states[idx] = shouldOn; digitalWrite(pin, shouldOn ? HIGH : LOW); }
}
void controlAll() {
updateChannel(PIN_SSR_HEATER, temp, SET_TEMP, 0.5, true);
updateChannel(PIN_RELAY_HUMID, hum, SET_HUM, 3.0, true);
static bool ventOn = false; static bool damperMoving = false; static unsigned long tmr = 0;
bool needVent = (co2 > SET_CO2 + 150);
if (needVent && !ventOn && !damperMoving) {
digitalWrite(PIN_DAMPER_OPEN, HIGH); digitalWrite(PIN_DAMPER_CLOSE, LOW);
damperMoving = true; tmr = millis();
}
if (damperMoving && millis() - tmr > 8000) {
digitalWrite(PIN_DAMPER_OPEN, LOW); damperMoving = false;
ventOn = true;
digitalWrite(PIN_RELAY_EXHAUST, HIGH); digitalWrite(PIN_RELAY_SUPPLY, HIGH);
}
if (!needVent && ventOn) {
digitalWrite(PIN_RELAY_EXHAUST, LOW); digitalWrite(PIN_RELAY_SUPPLY, LOW); ventOn = false;
delay(10000); // вентиляторы останавливаются
digitalWrite(PIN_DAMPER_CLOSE, HIGH); delay(8000); digitalWrite(PIN_DAMPER_CLOSE, LOW);
}
if (co2 < SET_CO2 - 150 && !ventOn) { }
unsigned long hour = (millis() / 3600000) % 24;
digitalWrite(PIN_RELAY_LIGHT, (hour >= 6 && hour < 18) ? HIGH : LOW);
}
void handleButtons() {
if (btnEdit.fell()) { currentState = (currentState == MAIN) ? MENU : MAIN; }
if (btnBack.fell()) currentState = MAIN;
if (currentState == MENU) {
if (btnUp.fell()) menuIndex = (menuIndex - 1 + 3) % 3;
if (btnDown.fell()) menuIndex = (menuIndex + 1) % 3;
}
}
void updateDisplay() {
lcd.clear();
if (currentState == MAIN) {
lcd.setCursor(0,0); lcd.print("T="); lcd.print(temp,1); lcd.print("C");
lcd.setCursor(0,1); lcd.print("H="); lcd.print(hum,1); lcd.print("%");
lcd.setCursor(0,2); lcd.print("A="); lcd.print(co2); lcd.print("ppm");
lcd.setCursor(0,3); lcd.print(digitalRead(PIN_DAMPER_OPEN) ? "ЗАСЛОНКА: ОТКР" : "ЗАСЛОНКА: ЗАКР");
} else {
lcd.setCursor(0,0); lcd.print("> НАСТРОЙКИ <");
lcd.setCursor(0,1); lcd.print(menuIndex==0?">":" "); lcd.print("Температура");
lcd.setCursor(0,2); lcd.print(menuIndex==1?">":" "); lcd.print("Влажность");
lcd.setCursor(0,3); lcd.print(menuIndex==2?">":" "); lcd.print("CO2");
}
}
Финальный чек-лист перед включением 220В- □
Обогреватель подключён только через SSR-25DA и радиатор. - □
Вентиляторы подключены через реле модуля, параллельно контактам стоят варисторы. - □
На линии обогревателя есть предохранитель 10A. - □
Корпус и все металлические части заземлены. - □
Транзисторный ключ собран по схеме (1кОм на базу, 3.3кОм подтяжка). - □
В коде проверены пины и адрес LCD (0x27 или 0x3F).
Код:
┌─────────────────────┐ │ 220В сеть │ └──────────┬──────────┘ │ ┌────────────────┼────────────────┐ │ │ │ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐ │ Автомат │ │ Автомат │ │ Автомат │ │ 10A (ТЭН) │ │ 6A (вент.)│ │ 2A (БП) │ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │ │ │ ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼─────┐ │Предохр.10A│ │ Реле 8-кан│ │Mean Well │ │ + SSR │ │ (вентилят,│ │IRM-10-5 │ │ 25DA │ │ увлажн, │ │ 5V / 2A │ └─────┬─────┘ │ заслонки, │ └─────┬─────┘ │ │ свет) │ │ ┌─────▼─────┐ └─────┬─────┘ │ │ Обогрева- │ │ │ │ тель (ТЭН)│ │ │ └───────────┘ │ │ │ │ ┌──────────┴────────────────┴──────────┐ │ ESP32-S3 DevKitC-1 │ │ GPIO10 → транз.ключ → SSR (ТЭН) │ │ GPIO11-16 → 8-кан. модуль реле │ │ GPIO4-7 → кнопки │ │ GPIO8/9 → I2C (SCD41, SHT35, LCD) │ └───────────────────────────────────────┘
Схема 2. Шина I2C (датчики + дисплей) Код:
ESP32-S3 ┌──────────┐ │ │ │ 3.3V ───┼──────┬──────────┬──────────┐ │ GND ───┼──────┼──────────┼──────────┤ │ GPIO8 ──┼──SDA─┼──────────┼──────────┤ │ GPIO9 ──┼──SCL─┼──────────┼──────────┤ └──────────┘ │ │ │ │ │ │ ┌─────▼────┐ ┌───▼─────┐ ┌──▼──────┐ │ SCD41 │ │ SHT35 │ │ LCD 2004│ │ (CO2) │ │(T/RH) │ │ I2C │ │ адрес │ │ адрес │ │ адрес │ │ 0x62 │ │ 0x44 │ │ 0x27 │ └──────────┘ └─────────┘ └─────────┘
Примечание: подсветку LCD (пин LED/BL) лучше запитать от 5V
блока Mean Well, а не от 3.3V ESP32 — иначе стабилизатор
платы будет перегреваться. блока Mean Well, а не от 3.3V ESP32 — иначе стабилизатор
платы будет перегреваться.
Схема 3. Кнопки пульта Код:
ESP32-S3 ┌──────────┐ │ GPIO4 ──┼──────┬───[UP]───────┐ │ GPIO5 ──┼──────┼───[DOWN]─────┤ │ GPIO6 ──┼──────┼───[EDIT]─────┤ │ GPIO7 ──┼──────┼───[BACK]─────┤ │ GND ──┼──────┴──────────────┘ └──────────┘
Все кнопки — между GPIO и GND.
В коде: pinMode(pin, INPUT_PULLUP).
Нажатие = LOW. Внешние резисторы НЕ нужны.
Схема 4. Управление SSR-25DA через транзисторный ключ Код:
3.3V ──────────┐ │ [3.3 кОм] ← подтяжка базы (важно!) │ GPIO10 ───[1 кОм]───┐ │ ┌──┴──┐ │ B │ ┌────┤PN2222A├────┐ │ │ E │ C │ │ └──┬──┘──┬──┘ │ │ │ GND GND │ │ ┌───────┴───────┐ │ SSR-25DA │ │ ┌─────────┐ │ │ │ DC+ DC-│ │ │ └──┬───┬──┘ │ │ │ │ │ │ (C) GND │ │ │ │ 1 ─── 2 │ ← силовые клеммы └───────┬───────┘ │ Фаза 220В → ТЭН → Ноль 220В
ВАЖНО: SSR-25DA ставится на радиатор!
Без радиатора при токе >5A — перегрев и отказ.
Схема 5. 8-канальный модуль реле (вентиляторы, увлажнитель, заслонки, свет) Код:
ESP32-S3 8-канальный модуль реле ┌──────────┐ ┌──────────────────────┐ │ GPIO11 ─┼────────────┤ IN1 → Вытяжной вент. │ │ GPIO12 ─┼────────────┤ IN2 → Приточной вент.│ │ GPIO13 ─┼────────────┤ IN3 → Увлажнитель │ │ GPIO14 ─┼────────────┤ IN4 → Заслонка ОТКР │ │ GPIO15 ─┼────────────┤ IN5 → Заслонка ЗАКР │ │ GPIO16 ─┼────────────┤ IN6 → Освещение │ │ GPIO17 ─┼────────────┤ IN7 → Резерв │ │ │ │ IN8 → Резерв │ │ GND ───┼────────────┤ GND │ │ 5V ───┼────────────┤ VCC (от Mean Well!) │ └──────────┘ └──────────────────────┘
Схема одного канала с варистором (для вентиляторов): ┌─── Реле NO ───┬─────────────── Фаза к мотору │ │ │ [Варистор 07D471K] │ │ └───────────────┴─────────────── Ноль к мотору
Варистор ставится параллельно контактам реле
(между NO и фазой нагрузки) — гасит дугу при
отключении индуктивной нагрузки.
Схема 6. Силовая часть 220В (что куда на клеммниках) Код:
┌─────────────┐ Ввод 220В ─────┤ Автомат C16 ├─── Фаза (L) └─────────────┘ ┌─────────────┐ Ввод 220В ─────┤ Автомат C16 ├─── Ноль (N) └─────────────┘ ┌─────────────┐ Ввод 220В ─────┤ Заземление ├─── PE (обязательно!) └─────────────┘
Разводка фазного провода: ┌──────────────┐ L ─────────────┤ WAGO 221 (5) │ └──┬───┬───┬───┘ │ │ │ ┌────────────┘ │ └────────────┐ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌─────▼────┐ │ Автомат │ │ Автомат │ │ Автомат │ │ C10 (ТЭН)│ │ C6 (вент)│ │ C2 (БП) │ └────┬─────┘ └────┬─────┘ └─────┬────┘ │ │ │ ┌────▼─────┐ ┌────▼─────┐ ┌─────▼────┐ │ Предохр. │ │ 8-кан. │ │Mean Well │ │ 10A │ │ модуль │ │IRM-10-5 │ └────┬─────┘ │ реле │ │ 5V │ │ └────┬─────┘ └─────┬────┘ ┌────▼─────┐ │ │ │ SSR-25DA │ Нагрузки: │ │ (на │ - Вытяжка На ESP32, │ радиаторе│ - Приток 8-кан. модуль, └────┬─────┘ - Увлажнитель LCD (подсветка) │ - Заслонка ┌────▼─────┐ - Свет │ ТЭН │ │ (обогрев)│ └────┬─────┘ │ N (ноль) ──── обратно на WAGO N
Схема 7. Питание логики (5V и 3.3V) Код:
Mean Well IRM-10-5 ┌─────────────────┐ │ AC/L DC+ 5V ├──┬───────────────► ESP32 (пин 5V/VIN) │ AC/N DC- GND├──┼───────────────► ESP32 (GND) │ │ │ └─────────────────┘ ├───────────────► 8-кан. модуль реле (VCC) │ ├───────────────► LCD 2004 (подсветка LED/BL) │ └──[ионистор 1F 3V]──► ESP32 (пин 3.3V)
Ионистор: плюсом к 3.3V, минусом к GND.
Держит ESP32 живым 2–3 сек при пропадании сети,
чтобы он успел выключить реле.
Итоговая таблица всех пинов (для перепроверки)| GPIO | Назначение | Куда идёт |
|---|---|---|
| GPIO4 | Кнопка UP | GND через кнопку |
| GPIO5 | Кнопка DOWN | GND через кнопку |
| GPIO6 | Кнопка EDIT | GND через кнопку |
| GPIO7 | Кнопка BACK | GND через кнопку |
| GPIO8 | I2C SDA | SCD41 + SHT35 + LCD |
| GPIO9 | I2C SCL | SCD41 + SHT35 + LCD |
| GPIO10 | Сигнал SSR | Через 1кОм на базу PN2222A |
| GPIO11 | Реле вытяжки | IN1 модуля реле |
| GPIO12 | Реле притока | IN2 модуля реле |
| GPIO13 | Реле увлажнителя | IN3 модуля реле |
| GPIO14 | Реле заслонки «открыть» | IN4 модуля реле |
| GPIO15 | Реле заслонки «закрыть» | IN5 модуля реле |
| GPIO16 | Реле света | IN6 модуля реле |
| GPIO17 | Резерв | IN7 модуля реле |
| 3.3V | Питание датчиков | SCD41, SHT35, ионистор |
| 5V/VIN | Питание платы | Mean Well DC+ |
| GND | Общий минус | Всё, включая реле и SSR- |
Перед включением- □
SSR-25DA на радиаторе. - □
Варисторы параллельно контактам реле вентиляторов. - □
Заземление корпуса и всех металлических частей. - □
Подтяжка 3.3кОм на базе транзистора — обязательна. - □
Автомат на каждый канал нагрузки. - □
Ионистор плюсом к 3.3V.
Последнее редактирование:
