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-адресу у своєму браузері, результат проекту буде представлено там, як на рисунку