Introduction: Сигналізація Для Дверей На Базі Arduino UNO І ESP8266

В цій статті розглянуто процес створення сигналізації для дверей на базі Arduino UNO і ESP8266

Step 1: Компоненти

Arduino UNO

ESP8266

Геркон

Світлодіод

Резистор 220 Ом

Резистор 470 Ом

Резистор 1 кОм

Резистор 2.2 кОм

Step 2: Під’єднання

Приєднати:

- пін RX модуля ESP8266 до цифрового піна 3 ардуїно (ЕSP8266 RX використовує 3,3В.

Напруги вище цієї можуть вивести модуль з ладу, потрібно приєднати резистор як показано на схемі).

-пін TX модуля ESP8266 до цифрового піна 2 ардуїно

-пін VCC ESP8266 до піна 3,3В ардуїно.

-землю ESP8266 до землі ардуїно.

-анод світлодіода через резистор до піна 9 ардуїно

-катод світлодіода до землі

-геркон одним виводом під'єднати до піна 5 В ардуїно, іншим - між землею і піном 8 ардуїно

Step 3: Завантаження Коду:

Обов'язково має бути підключена бібліотека, що дозволяє забезпезпечити зв'язок з TX і RX виводами.

Далі має бути оголошений пін світлодіода.

У функції налаштування спочатку встановлюється швидкість передачі даних для послідовного зв'язку та модуля wifi на 9600.

Потім оголошуються піни: світлодіод як вихідний, а кнопки як вхідний.

Лінії викликають функцію та встановлюють сервер за IP-адресою, наданою ESP.

Потім ESP надсилатиме дані за цією IP-адресою.

У функції циклу зчитується значення стану кнопки, а потім застосовується умова, якщо кнопка замкнена, то загориться світлодіод. Після цього встановлена затримка 3 секунди протягом якої світлодіод продовжує світитися, після чого система оновлюється.

На веб-сторінці в цей час буде відображуватися повідомлення, що сповіщає про стан сигналізації. "Все нормально", або "НЕБЕЗПЕЧНО", в залежності від умови.

Код, що подається в функції String esp8266_coman(), надішле команди ESP і виведе висновок ESP на моніторі.

#include <SoftwareSerial.h>
#define DEBUG true
#define pinLed 9
#define pinButt 8

SoftwareSerial wifi_module(2,3);

void setup()
{
    Serial.begin(9600);
    wifi_module.begin(9600);

    pinMode(pinLed, OUTPUT);
    pinMode(pinButt, INPUT);

    esp8266_command("AT+RST\r\n",2000,DEBUG); // reset module

    esp8266_command("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point

    esp8266_command("AT+CIFSR\r\n",1000,DEBUG); // get ip address

    esp8266_command("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections

    esp8266_command("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}

void loop()
{
    if (digitalRead(pinButt)) {
        digitalWrite(pinLed, digitalRead(pinButt));
        delay(3000); // Wait for 3 seconds before light off the led
    }

    digitalWrite(pinLed, 0 ); // Otherwise light off the led

    if(wifi_module.available()) 
    {
       if(wifi_module.find("+IPD,"))
       {

            delay(1000);
            int connectionId = wifi_module.read()-48;     
            String webpage = "<h1>IOT Alarm System</h1>";
            webpage +="<p>Alarm status is ";
            webpage +="</p>";
            if (digitalRead(pinButt))
            {
                webpage +="<h5>DANGER! </h5>";
            }

            else

            {
                webpage +="<h4>Everything Normal</h4>";
            }
                String cipSend = "AT+CIPSEND=";
                cipSend += connectionId;
                cipSend += ",";
                cipSend +=webpage.length();
                cipSend +="\r\n";

                esp8266_command(cipSend,1000,DEBUG);
                esp8266_command(webpage,1000,DEBUG);

                String closeCommand = "AT+CIPCLOSE="; 
                closeCommand+=connectionId; // append connection id
                closeCommand+="\r\n";
                esp8266_command(closeCommand,3000,DEBUG);
            }
        }
        delay(100);
}

String esp8266_command(String command, const int timeout, boolean debug)

{
    String response = "";
    wifi_module.print(command); 
    long int time = millis();
    while( (time+timeout) > millis())
    {
        while(wifi_module.available())
        {
          char c = wifi_module.read(); 
          response+=c;
        }  
    }
    if(debug)
        {
          Serial.print(response);
        }
    return response;
}<br>

Step 4: Відлагодження

ESP, що використовується тут, створює веб-сторінку за IP-адресою та надсилає дані на цю IP-адресу. Після завантаження коду на IP-адресу, можна побачити зображення, яке показано на рисунку.

Step 5: Виведення Результату

Якщо ввести ІP-адресу у своєму браузері, результат проекту буде представлено там, як на рисунку

Step 6: Відео