WiFi-умный замок на Arduino и ESP8266 — открывание с телефона
Компоненты и материалы
| Arduino UNO R3 | 1 |
| ESP8266 WiFi-модуль (с PCB-антенной) | 1 |
| Дарлингтонский высоковольтный транзистор | 1 |
| Соленоид-замок (lock-style) | 1 |
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Это и другие уроки можно прочитать на официальном сайте ElectroPeak.
В этом уроке вы узнаете, как создать умный дверной замок на базе Arduino, который можно открывать с мобильного телефона. По завершении проекта вы:
- Научитесь генерировать специальный QR-код.
- Научитесь создавать страницу входа на ESP8266.
- Сможете открывать дверь с помощью телефона.
Надежная защита дверей с умным замком
В наши дни безопасность дома или офиса можно повысить с помощью передовых технологий. Смартфоны и умные устройства становятся доступнее, и это отличный вариант для создания умной автоматизации дома. Каждый день инженеры разрабатывают новые системы, делающие жизнь безопаснее и удобнее. Вы, вероятно, видели умные замки с клавиатурами или сканерами отпечатков пальцев.
В этом проекте мы создадим систему на базе Arduino для организации входа по WiFi с соленоидным замком. Мы не используем клавиатуру или сложные механические элементы — это и есть преимущество системы. Мы просто наклеиваем QR-код на дверь, а допущенные люди сканируют его, попадают на страницу входа и вводят пароль. После ввода правильного пароля срабатывает соленоид-замок. Нам понадобятся только Arduino, драйвер для соленоида и ESP8266 для подключения к локальной WiFi-сети. Приступим!
Схема подключения
Схема подключения показана на рисунках выше. Основные соединения:
- ESP8266 подключается к Arduino по последовательному порту (Serial).
- Соленоид управляется через дарлингтонский транзистор от пина 9 Arduino.
- Питание соленоида — от внешнего источника (12В).
Код
Сначала пишем код для ESP-01: он создает веб-страницу входа, принимает пароль от пользователя и передает его Arduino через последовательный порт. Затем пишем код для Arduino: он получает данные от ESP-01 и управляет соленоидом. Оба кода компилируются и загружаются через Arduino IDE.
Настройка Arduino IDE (если первый запуск)
- Скачайте Arduino IDE с официального сайта и установите.
- Запустите IDE, очистите редактор и вставьте код.
- В Tools > Board выберите вашу плату Arduino.
- Подключите Arduino к ПК и выберите COM-порт в Tools > Port.
- Нажмите кнопку Upload (стрелка).
- Готово!
Код для Arduino
String inputString = ""; // строка для входящих данных
bool stringComplete = false; // флаг завершения строки
void setup() {
Serial.begin(115200);
inputString.reserve(200);
pinMode(9, OUTPUT);
}
void loop() {
if (stringComplete) {
if (inputString == "your_password") {
digitalWrite(9, HIGH);
delay(300);
digitalWrite(9, LOW);
Serial.println(inputString);
inputString = "";
stringComplete = false;
}
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
Загрузка кода на ESP-01
Для загрузки скетча на ESP-01 также используется Arduino IDE. Перед загрузкой нужно добавить поддержку плат ESP8266:
- В File > Preferences в поле «Additional Boards Manager URLs» добавьте:
https://arduino.esp8266.com/stable/package_esp8266com_index.json - В Tools > Board > Boards Manager найдите и установите «esp8266 by ESP8266 Community».
- В Tools > Board выберите «Generic ESP8266 Module».
- Подключите USB-TTL конвертер, выберите правильный порт в Tools > Port.
- Загрузите скетч.
Код для ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
// Настройки WiFi
const char* ssid = "YourSSID";
const char* password = "YourPASSWORD";
ESP8266WebServer server(80);
char htmlResponse[3000];
void handleRoot() {
snprintf(htmlResponse, 3000,
"<!DOCTYPE html>\n"
"<html lang=\"en\">\n"
"<head>\n"
"<style>\n"
"body {background-color: rgb(160, 0, 53);}\n"
"h3 {color: white;text-align:center;}\n"
"p {color: white; text-align:center;}\n"
"div {color: white; text-align:center;}\n"
"input {text-align:center;}\n"
"</style>\n"
"<meta charset=\"utf-8\">\n"
"<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n"
"</head>\n"
"<body>\n"
"<h3><center>Electropeak Smart Security Door</center></h3>\n"
"<p><center>Please type your ID</center></p>\n"
"<div>ID: <input type='text' name='pass_word' id='pass_word' align='center' size=10 autofocus></div>\n"
"<div><br><button id=\"save_button\">Log In</button></div>\n"
"<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>\n"
"<script>\n"
"var pass;\n"
"$('#save_button').click(function(e){\n"
" e.preventDefault();\n"
" pass = $('#pass_word').val();\n"
" $.get('/save?pass=' + pass, function(data){\n"
" console.log(data);\n"
" });\n"
"});\n"
"</script>\n"
"</body>\n"
"</html>");
server.send(200, "text/html", htmlResponse);
}
void handleSave() {
if (server.arg("pass") != "") {
Serial.println(server.arg("pass"));
}
}
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handleRoot);
server.on("/save", handleSave);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
После загрузки кода откройте Serial Monitor в Arduino IDE и узнайте IP-адрес ESP8266. Введите этот IP в адресной строке браузера — откроется веб-интерфейс. Введите пароль в текстовое поле, и если он верный, Arduino активирует замок. Обратите внимание: телефон и ESP8266 должны быть подключены к одному WiFi-роутеру.
Создание QR-кода
Теперь создадим QR-код для удобного доступа к веб-странице. Существует множество онлайн-генераторов QR-кодов. Мы рекомендуем один из них.
Просто введите IP-адрес в поле и нажмите «Create QR Code». Распечатайте полученный код и наклейте рядом с дверью. Чтобы открыть дверь, нужно подключиться к WiFi, отсканировать QR-код и ввести пароль.
Что дальше?
Несколько идей для развития проекта:
- Создать профессиональный UI для страницы входа.
- Добавить уровни доступа или временные разрешения для разных пользователей.
Это и другие уроки можно прочитать на официальном сайте ElectroPeak.
Производственный процесс
- Внутри банковских хранилищ: история, дизайн и будущее безопасности
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
- Создание потрясающей системы Ambilight для монитора на Arduino
- Создание надежного RFID-замка на Arduino — пошаговое руководство
- Умные шторы: автоматическое управление светом на Arduino с солнечной энергией
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- IoT-монитор пульса в реальном времени на Arduino и MAX30100
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Веб-сервер на Arduino Uno WiFi: управление LED через браузер
- WiFi-умный замок на Arduino и ESP8266 — открывание с телефона