0
<< предыдущая заметка 
25 сентября 2021
Сушильный шкаф Hotstorm и ESP 8266

Сейчас накидаю то, что я сделал с прошивкой для ESP 12, вдруг потом нужно будет вспомнить.
Немного предыстроии.
В канун нового 2021 г был куплен домой сушильный шкаф Hotstorm калужского завода (вот такой)

К нему в комплекте шел вот такой предохранитель, который срабатывает при 150 С°

После полугода интенсивной работы в какой-то момент (слава богу все были дома), вентилятор перестал работать, перегретые тэны стали краснеть, шкаф экстренно вырубили, предохранитель так и не сработал. Приехал сервисмен, включил шкаф (он заработал как будто ничего не случилось). По согласованию с заводом поменял вентилятор, потом заменил предохранитель, плату управления и все нагревательные элементы (завод сказал прислать все для анализа). Шкаф заработал, но доверие потерял. Возникло желание мониторить его работу, а также иметь резервную систему выключения. В теме про «Умный дом» задался вопросом что можно сделать и lleo предложил построить все на ESP8266 с его прошивкой.

Итак, что было куплено на Aliexpress:

1. Релейный модуль на базе ESP-12F
2. Датчик температуры DS18B20
3. USB программатор CP2102

Далее качается https://github.com/espressif/esptool софтина, точнее устанавливается питон (я делал на винде) и в нем устанавливается

pip install esptool

На плате есть два контакта для питания 5v и 7-80v, 5-вольтовый блок я подсоединял на обе линии, все работает. TX-RX со свистком перекрестно, +GND соединить. Далее перед каждой командой нажимается кнопка на плате, тестируется

esptool.py -p COM3 -b 921600 flash_id

берется прошивка и заливается

esptool.py -p COM3 -b 921600 write_flash 0x00000 firmware.bin

На плате с помощью резистора по схеvе подключается термодатчик к io04

Ставятся перемычки между relay control pin 1,2 с io05, io15

Блок питания 5v взял от apple по следующим причинам: он выдает ровные 5в, он компактный, 220 подключаются по проводу, вилка отключается, дома их навалом).
Пищалка подключается к io03 и GND

Бокс Hegel 110x70, сальники PG-7 из Вимоса


В задней стенке шкафа просверлил отверстие и через сальник вкрутил датчик

Базовое описание софта на странице CFAQ
Мои настройки config.txt

DS18B20.begin
loop 1 12 /RELAY

Файл /RELAY


# при первом запуске задаем температуры AT1 — срабатывание вентилятора, AT(2-5) мониторинг, AT6 вырубание
if {SET} != 1 { {AT1} = 28 ; {AT2} = 38 ; {AT3} = 52 ; {AT4} = 58; {AT5} = 68 ; {SET} = 1}

# DT можно менять из консоли для отладки
{T} = {DS18B20} + {DT}
{DIFFT} = {T} — {OLDT}

{OK} = 0
if {DIFFT} > 1 { {OK} = 1 }
if {DIFFT} < -1 { {OK} = 1 }
# OK значит, что температура поменялась больше чем на градус
if {OK} = 1 { {PCOUNT} = {COUNT} ; {COUNT} = 0 ; {PREVT} = {OLDT} ; {OLDT} = {T} } else { {COUNT} += 1 }

{VON} = 0
# насколько я понимаю у if нет && поэтому разбиваем на три условия
if {OK} > 0 {VON} += 1
if {T} > {AT1} {VON} += 1
if {T} > {PREVT} {VON} += 1
if {OLD} == 0 {VON} += 1
if {VON} == 4 { pinmode 15 OUTPUT ; pin 15 1 ; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° > {AT1}° вкл. PIN15 (сост {gpio15} темп {T}) } }

{VOFF} = 0
if {OK} > 0 {VOFF} += 1
if {T} < {AT3} {VOFF} += 1
if {T} < {PREVT} {VOFF} += 1
if {OLD} = 1 {VOFF} += 1
if {VOFF} == 4 { pinmode 15 OUTPUT; pin 15 0 ; play M....M....M ; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° < {AT3}° выкл. PIN15 (сост {gpio15} темп {T}) } }

{LOGS} = 0
if {gpio15} != {OLD} { {LOGS} += 3 }
if {COUNT} < 1 { {LOGS} += 1 }
if {OK} > 0 { {LOGS} += 1 }

if {LOGS} == 2 { ping http://myhomeserver/bot/t.php?id={chip}-{FlashChipId}&temp={[...] }
#передаем параметр wait — сколько циклов пропустили без изменения t°
if {LOGS} == 5 { ping http://myhomeserver/bot/t.php?id={chip}-{FlashChipId}&temp={[...] }

{OLD} = {gpio15}

{C5} = 0
if {OK} > 0 {C5} += 1
if {PREVT} < {AT5} {C5} += 1
if {T} > {AT5} {C5} += 1
if {C5} = 3 { {OK} = 0; pinmode 15 OUTPUT ; pin 15 1 ; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° больше <{AT5}°> (темп {T}) } }

{C4} = 0
if {OK} > 0 {C4} += 1
if {PREVT} < {AT4} {C4} += 1
if {T} > {AT4} {C4} += 1
if {C4} = 3 { play M ; {OK} = 0 ; pinmode 15 OUTPUT ; pin 15 1; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° больше <{AT4}°> (темп {T}) } }

{C3} = 0
if {OK} > 0 {C3} += 1
if {PREVT} < {AT3} {C3} += 1
if {T} > {AT3} {C3} += 1
if {C3} = 3 { {OK} = 0 ; pinmode 15 OUTPUT ; pin 15 1 ; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° больше <{AT3}°> (темп {T}) } }

{C2} = 0
if {OK} > 0 {C2} += 1
if {PREVT} < {AT2} {C2} += 1
if {T} > {AT2} {C2} += 1
if {C2} = 3 { {OK} = 0 ; pinmode 15 OUTPUT ; pin 15 1 ; ping http://canada.lleo.me/bot/t.php?id={chip}-{FlashChipId}&soft[...]: t° больше <{AT2}°> (темп {T}) } }

Скрипт включает и выключает вентилятор, который подсоединен к реле на io15, пингует php страницу, которая пишет лог и помогает выводить информацию на web страницу домашнего монитора.

файл t.php

$time = date('H:i:s');
$date = date('Y-m-d');
$ts = $date.' '.$time;

if(isset($_GET['FreeHeap'])) {
$heap = $_GET['FreeHeap'].' '.$time;
file_put_contents(«FreeHeap.txt», $heap);
}
if(isset($_GET['changed'])) {
$gif = «fan-«.$_GET['state'].».gif»;
$stategif = «fan-gif.gif»;
if(isset($_GET['changed'])) {
if (!copy($gif, $stategif)) {
echo «не удалось скопировать\n»;
}
}
}
if(isset($_GET['id'])) {

$file = $_GET['id'].'.txt';
if($_GET['wait']) $append = 'wait '.$_GET['wait'].»\n».$ts . ' ' . $_GET['temp'].' ' . $_GET['FreeHeap'].»\n»;
else $append = $ts . ' ' . $_GET['temp'].»\n»;

file_put_contents($file, $append , FILE_APPEND );
file_put_contents(«current.txt», $_GET['temp']);
}
?>


В прошивке есть редактор файлов, находящихся в памяти. Несложно поправить шаблон, я сделал себе темную тему, так у меня выглядит фронтенд на айфоне

Встроенный редактор позволяет создавать текстовые файлы. Для того, чтобы загрузить свою картинку, достаточно в текстовом редакторе вставить код svg (отличный экономичный формат), потом переименовать txt в svg.

Еще планирую добавить функционала. Например поставить реле выключения шкафа при большой температуре. Реле на плате скорее всего не выдержит нагрузки, поэтому заказал реле помощнее с управлением по линии 220. Также в процессе документирования настроил наконец этот сайт, тоже сделал темную тему.

В заключении выражаю огромную благодарность lleo за создание и поддержание прошивки и сайта. Также он оказал неоценимую помощь в настройке конкретно моего устройства, был на связи днем и ночью, с лимоном в машине, на полке в поезде, даже в ФишфабрИке, везде отвечал на любые странные вопросы.

После всего остались некоторые нерешенные вопросы и пожелания относительно совершенствования прошивки:
— добавление нескольких условий в if
— запись переменных в файл
— загрузка файлов в флешку (описанный метод /upload не работает, или не хватает подробностей в его описании на странице документации СИФАК
— мониторинг ресурсов чипа, иногда есть большие тормоза веб интерфейса, которые не проходят без перезагрузки; при этом система вроде работает нормально, циклы продолжают запускаться

Во время постинга в систему binoniq тоже возникли вопросы (нет функции или описания как сделать):
— в шаблоне _STYLE_ADD: {www_css}my.css _ файл из папки не подцепляет
— нет нормальной возможности вставить код html без исполнения и форматирования для демонстрации исходников
— нет возможности отключить автосоздание ссылок в html
— не работают анимированные gif (видимо с ними что-то происходит во время загрузки)
— фотографию с датчиком так и не удалось повернуть; перед загрузкой она была в правильном формате, а поворот средствами движка не сохраняется

Возможно что-то уже работает, но не задокументировано. Пост постараюсь обновлять.

тэги записи:
binoniq, esp
<< предыдущая заметка  
Оставить комментарий
Linux Ubuntu Firefox
 Израиль
0
0
1949800


<< предыдущая заметка