Приветствую коллеги! Делюсь с вами проектом, который выполнял на заказ.
Предназначен этот контроллер для нагревательной печи, в которой установлен датчик температуры (термопара).
Пользователь в окне браузера вводит входные параметры: Температуру нагрева и Время выдержки и нажимает Старт.
Печь разогревается и выдерживает заданные параметры, то включаясь, то отключаясь. В конце происходит полное выключение.
В процессе работы на LCD экране можно наблюдать текущую температуру и оставшееся время.
В Веб интерфейс встроен Файловый менеджер для энергонезависимой памяти. Тут отображаются все файлы в памяти. Их можно редактировать, скачивать, загружать и удалять. В этой памяти непрерывно ведется журнал, в котором записываются показания с заданным периодом.
Плюс в браузере в реальном времени строится наглядный график Температура-Время. Для его корректного построения нужен Интернет.
Предусмотрено аварийное выключение прибора при достижении Аварийной температуры.
Готовое изделие с этим контроллером работает уже пол года.
В качестве платы применяется Esp32 38pin.
Для входа на страницу Пользовательского интерфейса используйте адрес http://pech.local (или IP адрес, отображаемый на дисплее после включения).
Для вашего удобства, прилагаю Портейбл версию ArduinoIDE с нужными библиотеками.
Ссылка на облако со всеми файлами проекта: https://drive.google.com/drive/folders/16EHogvHXfEwp8g1oBPOSFpQWd6hwIyO5
Будут вопросы по скетчу - поясню!
Предназначен этот контроллер для нагревательной печи, в которой установлен датчик температуры (термопара).
Пользователь в окне браузера вводит входные параметры: Температуру нагрева и Время выдержки и нажимает Старт.
Печь разогревается и выдерживает заданные параметры, то включаясь, то отключаясь. В конце происходит полное выключение.
В процессе работы на LCD экране можно наблюдать текущую температуру и оставшееся время.
В Веб интерфейс встроен Файловый менеджер для энергонезависимой памяти. Тут отображаются все файлы в памяти. Их можно редактировать, скачивать, загружать и удалять. В этой памяти непрерывно ведется журнал, в котором записываются показания с заданным периодом.
Плюс в браузере в реальном времени строится наглядный график Температура-Время. Для его корректного построения нужен Интернет.
Предусмотрено аварийное выключение прибора при достижении Аварийной температуры.
Готовое изделие с этим контроллером работает уже пол года.
В качестве платы применяется Esp32 38pin.
Для входа на страницу Пользовательского интерфейса используйте адрес http://pech.local (или IP адрес, отображаемый на дисплее после включения).
Для вашего удобства, прилагаю Портейбл версию ArduinoIDE с нужными библиотеками.
Ссылка на облако со всеми файлами проекта: https://drive.google.com/drive/folders/16EHogvHXfEwp8g1oBPOSFpQWd6hwIyO5
Будут вопросы по скетчу - поясню!
Начальные строчки кода:
#include <WiFi.h>
#include <FS.h>
#include <LittleFS.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <detail/RequestHandlersImpl.h>
#include <ESPxWebFlMgr.h>
#include "time.h"
#define _LCD_TYPE 1 // 1 - шина i2c, 2 - через 10 пинов
#include <LiquidCrystal_I2C.h> // автор Frank de Brabander
#include "max6675.h" // автор Adafruit
#define ledhot 02 // плюс светодиода нагрева, подключать последовательно с сопротивлением 200 Ом
#define staart 17 // zhelt-bel
#define stoop 18 // zhelt-chern
#define therm1 26 // max6675 SCK
#define therm2 23 // max6675 CS
#define therm3 25 // max6675 SO
// 21 // 2004A disp SDA
// 22 // 2004A disp SCL
float minut; // сколько минут выдерживать
float gradusov; // на какой температуре (цель)
int ostatok; // сколько осталось секунд
int delt = 2; // дельта для температуры
int pau1 = 100; // временная пауза для электромагнитного реле
const word webserverServerPort = 80; // порт для веб-сервера
const word filemanagerport = 8080; // порт для файлового менеджера
const String hlssid = "wifi-free"; // имя wifi от роутера
const String hlpwd = "88888888"; // пароль wifi от роутера
const char* host = "pech"; // Определяем имя веб-сервера как pech.local
const unsigned long INTERVAL = 10000; // Определяем интервал записи в файл
const char* ntpServer = "pool.ntp.org"; // Определяем сервер времени
LiquidCrystal_I2C lcd(0x3F, 20, 4); // LCD адрес: 0x26 или 0x27 или 0x3F
const String webserverDefaultname = "/index.html";
...
Изменено: