Мини-кейс 3: Умный дом

РАБОТА С ВЫСОКИМ НАПРЯЖЕНИЕМ ОПАСНА ДЛЯ ЗДОРОВЬЯ И ЖИЗНИ!

Продолжим использовать мощности Wi-Fi модуля на базе ESP8266 для обработки информации. Соберём выключатель света, управляемый из web-интерфейса.

TROYKA-МОДУЛЬ МИНИ-РЕЛЕ

Мини-реле замыкает и размыкает электрические цепи подобно выключателю света на стене. Правда, выключатель управляется вручную, а реле управляется программой с Arduino. Реле способно работать под напряжением 220 вольт.

Реле имеет 3 контакта на клеммах. В положении «выключено» (его ещё называют «нормальным» положением) реле замыкает правую пару контактов и размыкает левую. В состоянии «включено» всё наоборот: реле размыкает правую и замыкает левую пары контактов.

Это сделано для удобства и безопасности. Если на управляющих пинах (S-V-G) внезапно пропадёт питание, реле отключится и перейдёт в «нормальное» положение.

Представь, что в твоей комнате свет подключён к реле и Arduino Uno. Внезапно тёмным вечером Arduino Uno отключилась. Тебе хотелось бы, чтобы свет погас? Если ты хочешь, чтобы он остался гореть, нужно подключать лампочки к нормально замкнутой паре контактов. Если ты хочешь, чтобы свет потух, — к нормально разомкнутой. По правилам техники безопасности свет должен потухнуть.

Включать и выключать реле ты будешь прямо из браузера. Wi-Fi модуль снова выступит сервером, работающим по протоколу HTTP. A Arduino Uno будет передавать в модуль html-страницу с «выключателем» и управлять реле.

ЧТО ДЕЛАЕМ?

  1. Slot Shield установи на Arduino Uno, а Slot Shield установите модуль реле.

    Для начала стоит проверить, что Arduino правильно обрабатывает поступающие команды.

  2. Загрузи код в Arduino Uno.

    #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);
      }
    }
  3. Программа должна реагировать на три команды, попробуй отправить их в Serial Monitor:

    • RelayOn — включить реле. Ты увидишь загоревшийся на реле светодиод.

    • RelayOff — выключить реле.

  4. Грузим html файл страницы в память esp8266 Troyka Module WI-Fi.

    1. Если версия Arduino 1.x:

      1. Нужно скачать дополнительный инструмент (SPIFFS) для Arduino IDE, чтобы работать с файловой системой esp8266.

      2. Разархивируй папку ESP8266FS в C:\Program Files (x86)\Arduino\tools\ Вам может быть понадобятся права администратора. Полный путь будет следующий: C:\Program Files (x86)\Arduino\tools\ESP8266FS\tool\esp8266fs.jar).

      3. Перезагрузи Arduino IDE и в Инструментах появится пункт "ESP8266 Sketch Data Upload".

      4. В папке с проектом создай папку "data" и туда добавь "home.html", скачав в конце этой странице.

      5. Переведи модуль в режиме программирования и в инструментах нажми на пункт "ESP8266 Sketch Data Upload". В память esp8266 загрузиться файл.

      6. После успешной загрузки перезагрузи WI-FI модуль.

    2. Если вы используете версию Arduino IDE 2.x:

      1. Перейдите на страницу LittleFS Uploader релизов и нажмите на файл .vsix для загрузки.

      2. На вашем компьютере перейдите по следующему пути: C:\Users\<имя пользователя>\.arduinoIDE\. Создайте новую папку под названием plugins, если её ещё нет.

      3. Переместите загруженный ранее файл .vsix в папку плагинов (удалите все предыдущие версии этого плагина).

      4. Перезапустите или откройте Arduino IDE 2.x. Чтобы проверить, был ли плагин успешно установлен, нажмите [ Ctrl ] + [ Shift ] + [ P ], чтобы открыть палитру команд. Там должна быть инструкция под названием «Upload Little FS to Pico/ESP8266/ESP32» (просто прокрутите вниз или найдите такое название).

      5. В папке с проектом создай папку "data" и туда добавь "home.html", скачав в конце этой странице.

      6. Убедитесь, что выбрана правильная плата ( Инструменты > Плата ) и COM-порт ( Инструменты > Порт ).

      7. В зависимости от выбранной платы ESP вам может потребоваться выбрать желаемый размер флэш-памяти. В Arduino IDE, в Tools > Flash size выберите желаемый размер флэш-памяти (это будет зависеть от размера ваших файлов).

      8. Затем загрузите файлы на плату ESP. Нажмите [ Ctrl ] + [ Shift ] + [ P ] в Windows, чтобы открыть палитру команд. Найдите команду «Upload LittleFS to Pico/ESP8266/ESP32» и щелкните по ней. Убедитесь, что Serial Monitor закрыт. В противном случае загрузка не удастся.

      9. Через несколько секунд вы должны получить сообщение «Completed upload». Файлы успешно загружены в файловую систему ESP.

  5. Теперь запрограммируй WI-FI модуль.

    #include <ESP8266WiFi.h>
    #include <WiFiClient.h>
    #include <ESP8266WebServer.h>
    #include "FS.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);
      SPIFFS.begin(); // Инициализируем SPIFFS для работы с файловой системой
      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 = SPIFFS.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();
    }
  6. Проверь, как работает сервер. Открой Serial Monitor, дождись строки с IP-адресом модуля. Скопируй его в адресную строку браузера (нужно зайти с устройства, который подключен к той же сети, что и WI-FI модуль) и допиши в конце "/turnOn".

  7. В Serial Monitor появится строка "On". Это значит, что Wi-Fi модуль отправил команду на включение реле. Попробуй команду "turnOff" — появится строка "Off".

  8. Теперь собери устройство целиком!

  9. Подключи сервер к питанию. Набери в браузере IP-адрес сервера и добавь к нему "/home.html". Ты увидишь интерфейс панели управления реле.

  10. Переключай реле кнопками «Включить» и «Выключить». При переключении реле должно издавать щелчки. Это звук работы металлической пластины внутри чёрного корпуса, которая замыкает то одну, то другую пару контактов.

Вы научились заливать в память ESP8266 файлы и использовать их в проекте, работать с РЕЛЕ. Ура, теперь ты можешь собрать умный светильник!

Дополнительное задание:

home.html для загрузки в esp8266

Last updated

Was this helpful?