diff --git a/pump_controller_8_2_OLED_DONE/MANUAL.md b/pump_controller_8_2_OLED_DONE/MANUAL.md index 248ec71..f04f4b1 100644 --- a/pump_controller_8_2_OLED_DONE/MANUAL.md +++ b/pump_controller_8_2_OLED_DONE/MANUAL.md @@ -60,12 +60,18 @@ GND). **Сирену, лампу или пускатель напрямую к ` > **Важно: тип модуля должен быть именно active-LOW.** Если поставить модуль с > активным HIGH, реле будет включено в норме и отпускать при аварии — логика > перевернётся. Пины `D3` и `D4` выбраны именно под active-LOW: они удерживают -> HIGH во время загрузки платы, поэтому реле молчат при включении питания. +> HIGH во время загрузки, поэтому реле не остаются включёнными на всё время +> старта. Оговорки, которые лучше знать заранее: -* Реле «Авария» **щёлкает при каждой заливке прошивки** — схема автосброса USB - дёргает `D3`. Это нормально. +* **Оба реле кратковременно моргают при каждой перезагрузке прибора** — и при + подаче питания, и при заливке прошивки. Так и есть, это нормально: выходы + сидят на служебных пинах платы, и пока прошивка не запустилась, уровнем на них + управляет не она. Автоматика в этот момент ещё не работает, ложных уведомлений + моргание не вызывает. +* Если моргание окажется недопустимым (например, сирена успевает пискнуть) — + ставится RC-цепочка на вход релейного модуля. Прошивку менять не нужно. * Встроенный светодиод платы повторяет состояние реле «Резерв» — удобно для проверки монтажа. * Схема **не отказобезопасная**: если контроллер обесточен, сигнала аварии нет. @@ -295,7 +301,7 @@ ALARM:OFF BACKUP:OFF | Экран замирает на 1-3 с в момент аварии | Так и задумано: отправка уведомления блокирует прибор не дольше 3 секунд. Реле при этом срабатывают сразу, без ожидания сервера | | Панель пишет «Реле включено», но нагрузка не сработала | Проблема в монтаже или в типе модуля. Проверьте, что модуль **active-LOW**, что он питается, и что общий GND соединён | | Реле сработали наоборот: включены в норме, отпускают при аварии | Стоит модуль с активным HIGH вместо active-LOW. Замените модуль либо потребуйте правку прошивки | -| Реле щёлкает при заливке прошивки | Нормально: схема автосброса USB дёргает `D3`. На работу не влияет | +| Реле моргают при перезагрузке или заливке прошивки | Нормально, см. 2.3. Выходы на служебных пинах платы; пока прошивка не стартовала, уровнем управляет не она. Уведомления при этом не отправляются | | Имя устройства не сохраняется | В нём есть русские буквы, пробелы или знаки препинания — они отбрасываются. Допустимы только латиница, цифры, `_` и `-` | | Задержка не сохраняется | Значение вне диапазона 0…3600 или не целое число — поле игнорируется | | Прибор не стартует после включения | На `D3` или `D4` висит нагрузка, тянущая пин к GND при старте — проверьте релейный модуль и его питание | diff --git a/pump_controller_8_2_OLED_DONE/README.md b/pump_controller_8_2_OLED_DONE/README.md index 789c1d2..6d8a3af 100644 --- a/pump_controller_8_2_OLED_DONE/README.md +++ b/pump_controller_8_2_OLED_DONE/README.md @@ -54,7 +54,7 @@ Wemos D1 Mini (ESP8266). Питание 5 В по microUSB или 3.3 В на п Для реле active-LOW безопасное состояние — пин в `HIGH`. Значит выход обязан сидеть на пине, который держит `HIGH` **всю загрузку**, пока `setup()` ещё не -выполнился, иначе реле щёлкнет ложной аварией при каждом включении питания. +выполнился, иначе реле останется включённым на всё время старта. | Пин | GPIO | Уровень при загрузке | Реле active-LOW при загрузке | |---|---|---|---| @@ -78,12 +78,42 @@ Wemos D1 Mini (ESP8266). Питание 5 В по microUSB или 3.3 В на п void setRelay(int pin, bool on) { digitalWrite(pin, on ? LOW : HIGH); } ``` +#### Что происходит при перезагрузке на самом деле + +Проверено на собранном приборе: **при перезагрузке оба реле кратковременно +моргают.** Признано некритичным и оставлено как есть. + +Ранее в этом разделе утверждалось, что реле при загрузке молчат — это оказалось +неверно, и формулировка исправлена. + +Наиболее вероятный механизм: оба выхода неизбежно сидят на служебных пинах. +`GPIO2` (`D4`) — это ещё и `UART1 TX`, и на нём во время загрузки появляется +служебный вывод; `GPIO0` (`D3`) — пин выбора режима загрузки, который дёргается +схемой сброса. Пока `setup()` не выполнился, уровнем на них управляет не +прошивка. Точную причину не измеряли: осциллографа в проверке не было. + +Часть морганий может приходиться на светодиод релейного модуля, а не на +фактическое переключение контакта: короткий импульс успевает зажечь индикатор, +но не перебросить якорь. Различить можно тестером на контактах реле, если это +когда-нибудь станет важно. + +**Почему решение всё равно верное.** Альтернатива — `D8` — не улучшила бы +ситуацию, а ухудшила: он подтянут к `LOW`, и реле было бы уверенно **включено +всю загрузку**, а не моргнуло бы. Кратковременное моргание предпочтительнее +устойчивого ложного сигнала на несколько секунд. + +**Если моргание когда-нибудь станет проблемой** (например, сирена успевает +пискнуть): ставится RC-цепочка на вход релейного модуля, чтобы короткие импульсы +не проходили, либо модуль с триггером Шмитта на входе. Прошивку менять не +потребуется. + ### 2.4 Прочие особенности ESP8266 * `D4` (GPIO2) — встроенный светодиод платы, тоже активен от `LOW`. Реле «Резерв» получает бесплатную индикацию на плате. * `D3` (GPIO0) — пин выбора режима загрузки. Схема автосброса USB дёргает его вниз при заливке скетча, поэтому реле «Авария» щёлкает при каждой прошивке. + Кроме того, оба реле кратковременно моргают при любой перезагрузке (см. 2.3). Косметика, но пугает. * `A0` — **только аналоговый вход** (0–3.2 В, без внутренней подтяжки). Ни цифровым выходом, ни входом с подтяжкой быть не может, поэтому в бюджет