Мини-кейс 3: Умный дом
TROYKA-МОДУЛЬ МИНИ-РЕЛЕ



ЧТО ДЕЛАЕМ?
Last updated




Last updated
#include <SoftwareSerial.h>
#define RELAY_PIN A4 // ПИН реле модуля
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
// Встроенная функция readStringUntil будет читать все данные, пришедшие в UART до специального символа — '\n' (перенос строки).
// Он появляется в паре с '\r' (возврат каретки) при передаче данных функцией Serial.println().
// Эти символы удобно передавать для разделения команд, но не очень удобно обрабатывать. Удаляем их функцией trim().
String command = Serial.readStringUntil('\n');
command.trim();
// Проверяем, подходит ли команда под одну из ожидаемых: "On" или "Off"
// Если подходит, выполняем действие.
if (command == "RelayOn") {
digitalWrite(RELAY_PIN, HIGH);
} else if (command == "RelayOff") {
digitalWrite(RELAY_PIN, LOW);
}
}#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "LittleFS.h"
#define WIFI_SSID "dimdimdim" // Указываем SSID и пароль Wi-Fi сети, с которой будем выходить в интернет
#define WIFI_PASSWORD ""// Спрашиваем у препода
ESP8266WebServer server(80);
File htmlFile;
String page;
// Заведём функции handleOn() и handleOff().
// Они будут обрабатывать нажатия кнопок включения и выключения света в браузере.
void handleRoot() {
server.send(200, "text/html", page);
}
void handleOn() {
Serial.println("RelayOn"); // "turnOn"
server.send(200, "text/plain", "turnOn");
}
void handleOff() {
Serial.println("RelayOff"); // "turnOff"
server.send(200, "text/plain", "turnOff");
}
void setup(void) {
Serial.begin(115200);
LittleFS.begin(); // Инициализируем LittleFS для работы с файловой системой
Serial.println();
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (millis() > 20000) ESP.restart();
}
Serial.println();
Serial.println(WiFi.localIP()); // Выводим в консоль IP адрес
// Если на сервер приходит запрос на включение или выключение реле, вызываем соответствующую функцию
server.on("/", handleRoot); // Дублирование главной страницы
server.on("/home.htm", handleRoot); // Главная
server.on("/turnOn", handleOn);
server.on("/turnOff", handleOff);
htmlFile = LittleFS.open("/home.html", "r"); // Открываем html файл для чтения
if (!htmlFile) Serial.println("Html file open failed!"); // Выводим ошибку чтения файлы, если файла нет
server.begin(); // Запускаем сервер
while(htmlFile.available()) { // Записываем в page код из html файла построчно
String fileLine = htmlFile.readStringUntil('\n');
page += fileLine;
}
htmlFile.close(); // Закрываем файл с esp8266
}
void loop() {
server.handleClient();
}if (Serial.available()) {
command = Serial.readStringUntil('\n');
command.trim();
sensorVal = command.toFloat();
}
Serial.println(dht.getTemperatureC());