Урок 3. Розетка с управлением через браузер.

  • Просмотры Просмотры: 188
  • Последнее обновление Последнее обновление:
  • В этом уроке мы создадим реле с управлением через браузер(в локальной сети).

    Сборка
    Соберите схему ниже.
    1546379896960.png

    Программа
    В ESP8266 загрузите код ниже, но перед загрузкой в строках 10 и 11 напишите данные для подключения к вашему WiFi.
    C++:
    #include <ESP8266WiFi.h>                              //Библиотека для работы с WiFi
    #include <WiFiClient.h> //Библиотека для работы с WiFi клиентами
    #include <ESP8266WebServer.h> //Библиотека для создания Web сервера на esp8266
    #include <ESP8266mDNS.h> //Библиотека для работы с mDNS

    int relay = D4; //Пин реле
    bool PowerState = false; //Переменная для хранения состояния реле

    String page; //HTML код передаваемый клиенту

    const char* ssid = "ssid"; //Имя вашей сети WiFi
    const char* password = "password"; //Пароль вашей сети WiFi

    ESP8266WebServer server(80); //Инициализация веб сервера

    void setup() {
    Serial.begin(115200); //Инициализация Serial порта

    pinMode(relay , OUTPUT); //Пин реле как выход
    digitalWrite(relay , PowerState); //Изменяем состояние пина

    WiFi.mode(WIFI_AP_STA); //Режим WiFi
    Wifi.begin(ssid, password); //Подключение к WiFi

    if(WiFi.waitForConnectResult() == WL_CONNECTED){} //Ждем пока не подключимся к WiFi

    MDNS.begin("IoT-3", WiFi.localIP()); //Запуск MDNS
    Serial.print(WiFi.localIP()); //Пишем в Serial порт IP адрес для доступа
    server.on ( "/", HTTP_handleRoot); //Если запрошен корень сервера отдаем код страницы
    server.begin(); //Запуск сервера
    }

    void loop() {
    server.handleClient(); //Ждем клиента...
    delay(50);
    }

    void HTTP_handleRoot(void) { //Функция запускается при запросе корня сервера
    bool state = false; //Статус переданный из браузера

    if( server.hasArg("state") ){ //Если в запросе к серверу есть аргумент "state"...
    if(strncmp(server.arg("state").c_str(),"1",1) == 0)state = true;}else {state = PowerState;} //Изменяем состояние переменной в зависимости от переданного аргумента

    page =

    "<html>\
    <head>\
    <meta charset=\"utf-8\" />\
    <title>МегаВольт / IoT</title>\ /*Заголовок сайта*/
    </head>\
    <body>\
    ";

    if(state){ //Если реле включено...
    page+="\
    <h2>Состояние: Включено</br></h2>\
    <a href=\"/?state=0\"><button>Выключить</button></a>\
    ";
    }

    else { //Иначе...
    page+="\
    <h2>Состояние: Выключено</br><h2>\
    <a href=\"/?state=1\"><button>Включить</button></a>\
    ";
    }

    page+= "\
    </body>\
    </html>";

    server.send (200, "text/html", page); //Отправляем код клиенту
    if(state != PowerState){ //Если статус которые получили от клиента не равен текущему статусу
    PowerState = state; //Меняем статус
    digitalWrite(relay , PowerState); //Переключаем реле
    }

    }
    Управление
    Зайдите в Serial порт - после подключения к WiFi ESP8266 отправит свой IP.
    Зайдите в браузер и в строке поиска введите этот IP, откроется страница управления.
  • Загрузка…
Сверху