Дистанционное управление дверью гаража с телефона (Wi - Fi)
Дистанционное управление дверью гаража с телефона (Wi - Fi)
 






В настоящее время вы можете управлять чем угодно с помощью вашего телефона. В этой статье мы собираемся сделать кпопку для управления дверью, а с модулем ESP и возможностью управлять ею с помощью Wi - Fi. С добавлением магнитного дверного датчика мы получаем информацию, открыта или закрыта дверь. По цене около $ 10 вы можете контролировать и проверять состояние двери вашего гаража из любого места!


Шаг 1: Элементы


Чтобы создать прототип, вам понадобятся:


ESP8266-01
Перемычки
220 Ом резистор
Магнитный геркон
Реле модуль

Шаг 2. Загрузите код

Загрузите следующий код в ESP8266. Вам нужно изменить переменные SSID / password маршрутизатора, но это должно быть так. Перед загрузкой кода откройте последовательный монитор в среде Arduino. Как только код загрузится, он будет записывать IP-адрес модуля в последовательный порт - вы захотите это отметить.

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "YourRouterSSID";
const char* password = "YourRouterPassword";
ESP8266WebServer server(80);
int switchPin = 0;
int switchStateCur;
int relayPin = 2;
int WiFiCon() {
    // Check if we have a WiFi connection, if we don't, connect.
  int xCnt = 0;
  if (WiFi.status() != WL_CONNECTED){
        Serial.println();
        Serial.println();
        Serial.print("Connecting to ");
        Serial.println(ssid);
        WiFi.mode(WIFI_STA);
        
        WiFi.begin(ssid, password);
        
        while (WiFi.status() != WL_CONNECTED  && xCnt < 50) {
          delay(500);
          Serial.print(".");
          xCnt ++;
        }
        if (WiFi.status() != WL_CONNECTED){
          Serial.println("WiFiCon=0");
          return 0; //never connected
        } else {
          Serial.println("WiFiCon=1");
          Serial.println("");
          Serial.println("WiFi connected");  
          Serial.println("IP address: ");
          Serial.println(WiFi.localIP());
          return 1; //1 is initial connection
        }
  } else {
    Serial.println("WiFiCon=2");
    return 2; //2 is already connected
  
  }
}
String htmlServe(int doorAction) {
  String htmStr;
      if (switchStateCur==1 && doorAction ==1){
        digitalWrite(relayPin, 0);
        delay(400);
        digitalWrite(relayPin, 1);
      } else if (switchStateCur==0 && doorAction ==0){
        digitalWrite(relayPin, 0);
        delay(400);
        digitalWrite(relayPin, 1);
      }
  htmStr += "<html>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0,\">\n";
  htmStr += "<meta http-equiv=\"refresh\" content=\"5; URL=/sdoor\"> \n";
  htmStr += "<body>\n<center>\n<h1>\n";
      if (switchStateCur==1){
        htmStr += "Your Door is Open";
      } else {
        htmStr += "The Door is Closed";
      }
  
  htmStr +="</h1>\n<br><a href=\"/";
  
      if (switchStateCur==0){
        htmStr += "odoor";
      } else {
        htmStr += "cdoor";
      }
      
  htmStr += "\">\n<button>\n";
  
      if (switchStateCur==0){
        htmStr += "Open Door";
      } else {
        htmStr += "Close Door";
      }
  htmStr += "</button></a>\n";
  htmStr += "<br><br><br><a href=\"/sdoor\"><button>Recheck</button></a>";
  
  htmStr += "</center>\n</body>\n</html>\n";
  return htmStr;
  
}
void setup(){
  pinMode(switchPin, INPUT);
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, HIGH);
  Serial.begin(115200);
  WiFiCon();
   server.on("/odoor", [](){
      server.send(200, "text/html", htmlServe(0));
   });
   server.on("/cdoor", [](){
      server.send(200, "text/html", htmlServe(1));
   });
   server.on("/sdoor", [](){
      server.send(200, "text/html", htmlServe(2));
   });
  server.begin();
}
void loop(){
  switchStateCur = digitalRead(switchPin);
  
  server.handleClient();
  delay(1000);
}

Здесь была добавлена одна строка HTML:

  HtmStr + = "<meta http-equiv = \" refresh \ "content = \" 5; URL = / sdoor \ "> \ n";

Когда эта строка загружается в браузере пользователя (телефон), он сообщает, что автоматически обновляет экран каждые 5 секунд. И он говорит, чтобы обновить его до «/ sdoor». Вы заметите, что кнопки действий в веб-форме вызывают URL-адреса «odoor» и «cdoor» (открывать и закрывать дверь) - мы не хотим их обновлять и повторно инициировать действие, поэтому мы переходим к «sdoor», (S для статуса), который не предпринимает никаких действий по своему усмотрению.

Операция занимает около десяти секунд, чтобы открыть или закрыть.

Шаг 3: Создание макета

 
Как только схема будет собрана, подключите ESP и включите ее. В веб-браузере перейдите на «страницу» sdoor на IP-адрес ESP. Если IP-адрес, полученный с последовательного порта, был 192.168.0.153, вам нужно ввести это в адресной строке:

Http://192.168.0.153/sdoor

Вы должны увидеть очень простую страницу, которая сообщает статус двери, и кнопку действия, чтобы открыть или закрыть ее.

Удерживайте магнит возле язычкового переключателя, и когда браузер обновится, вы увидите изменение статуса.

Нажмите кнопку действия в браузере, чтобы открыть или закрыть дверь - вы должны услышать короткий щелчок, когда реле моментально срабатывает.

Если вы не получаете эти результаты, проверьте правильность схемы и код на наличие проблем.






Перевод статьи "Smart Phone (WiFi) Controlled Garage Door Opener With ESP8266"
{poster_avatar}  admin
2 255