Вы находитесь на странице: 1из 20

Проект электронный

замок Wi-Fi с RFID


Казюк Алексей
Схема соединения Arduino UNO c
компонентами
Схема 1

В Даной схеме показан делитель напряжения с 5


В Режим HIGH на ардуино UNO преабразует в 3.3
В режим HIGH на ESP8266 он необходим для
связи UNO с ESP8266 NODEMCU.
Для передачи сигнала.
В место 5 Вольтовой батареи будет выход
цифрового сигнала PD7 или PD4
Таких схем понадобится 2.
ESP8266 подключение физическое
Электроный замок
Схема 2

Данная схема схоже с 1 Схемой только


отличие в том что здесь используют
резисторы больших номиналов и большей
вольтаж на соединение на выходе с
Электронным замком.
Свет в помещении

Данная часть будет управляться с помощью ESP8266


передавая данные на Arduino UNO с неё на реле.
Открыта или закрыта дверь?
При замыкании контактов сигнал HIGH будет
подаваться на Arduino и показывать что дверь
закрыта и этот сигнал передастся через Схему
1 на NODEMCU после этого на сайте будет
показана дверь открыта или закрыта.
Код на Arduino UNO
Код на Arduino UNO
Код на Arduino UNO
Код на ESP8266 инициализация
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

#ifndef APSSID
#define APSSID "Door"
#define APPSK "4T1pS2DZe"
#endif

/* Set these to your desired credentials. */


const char *ssid = APSSID;
const char *password = APPSK;
bool led1stat =false;
bool door=true;
ESP8266WebServer server(80);
Код на ESP8266 конец инициализации
void setup() { pinMode(D5,INPUT);
delay(1000); IPAddress myIP = WiFi.softAPIP();
Serial.begin(115200); Serial.print("AP IP address: ");
Serial.println(); Serial.println(myIP);
Serial.print("Configuring access point..."); server.on("/", handle_OnConnect);
/* You can remove the password parameter
server.on("/led1on",
if you want the AP to be open. */ handle_led1on);
WiFi.softAP(ssid, password); server.on("/led1off",
pinMode(D1,OUTPUT);
handle_led1off);
server.on("/door", handle_door);
pinMode(D6,OUTPUT);
server.begin();
pinMode(D3,INPUT);
Serial.println("HTTP server
started");
Код ESP8266 цикл МК(микроконтроллера)

void loop() { else


{digitalWrite(D6, LOW);}
server.handleClient();
if(digitalRead(D5)||digitalRead(D3)){
if(led1stat) door = !door;
{digitalWrite(D1, HIGH);} delay(500);
else }
{digitalWrite(D1, LOW);}
if(door)
{digitalWrite(D6, HIGH);}
}
NODEMCU client(сылки)
void handle_led1off() {
void handle_OnConnect() { led1stat = false;
led1stat = false; Serial.println("GPIO7 Status: OFF");
Serial.println("GPIO7 Status: OFF | GPIO6 server.send(200, "text/html",
Status: OFF"); SendHTML(false,door));
server.send(200, "text/html", }
SendHTML(led1stat,door)); void handle(){
} server.send(200, "text/html",
void handle_led1on() { SendHTML(led1stat,false));
led1stat = true; }
Serial.println("GPIO7 Status: ON"); void handle_door(){
server.send(200, "text/html", door=false;
SendHTML(true,door)); server.send(200, "text/html",
} SendHTML(led1stat,false));
}
NODEMCU сайт
String SendHTML(uint8_t led1stat,uint8_t door){ ptr +=".button-off {background-color: #34495e;}\n";
String ptr = "<!DOCTYPE html> <html>\n"; ptr +=".button-off:active {background-color: #2c3e50;}\n";
ptr +="<head><meta name=\"viewport\" ptr +="p {font-size: 14px;color: #888;margin-bottom: 0px;}\n";
content=\"width=device-width, initial-scale=1.0, user- ptr +="</style>\n";
scalable=no\">\n"; ptr +="</head>\n";
ptr +="<title>LED Control</title>\n"; ptr +="<body>\n";
ptr +="<style>html { font-family: Helvetica; display: inline- ptr +="<h1>ESP8266 Web Server</h1>\n";
block; margin: 0px auto; text-align: center;}\n"; ptr +="<h3>Using Access Point(AP) Mode</h3>\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin:
50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n";
ptr +=".button {display: block;width: 80px;background-color:
#1abc9c;border: none;color: white;padding: 13px 30px;text-
decoration: none;font-size: 25px;margin: 0px auto
35px;cursor: pointer;border-radius: 4px;}\n";
ptr +=".button-on {background-color: #1abc9c;}\n";
ptr +=".button-on:active {background-color: #16a085;}\n" ;
NODEMCU (сайт-управление сылками)

if(led1stat) else{
{ptr +="<p>LED1: ON</p><a class=\"button ptr +="<a class=\"button button-on\" href=\"/\">The
button-off\" href=\"/led1off\">OFF</a>\n";} door is open</a>\n";
else }
{ptr +="<p>LED1: OFF</p><a class=\"button ptr +="<a class=\"button button-on\"
button-on\" href=\"/led1on\">ON</a>\n";} href=\"/door\">Open door</a>\n";
if(door) ptr +="</body>\n";
{ ptr +="</html>\n";
ptr +="<a class=\"button button-on\" return ptr;
href=\"/\">The door is closed</a>\n"; }
}
Демонстрация

Вместо замка будет светиться светодиод(желтый) если он горит


дверь закрыта если не горит дверь открыта.
Вместо лампы будет светиться светодиод(синий) если горит
значит через вайфай дали команду включения если не горит
значит через вайфай выключили(также по умолчанию синий
светодиод не горит)
Кнопка показывает состояние закрывание двери.
Замечание:

При закрывании двери необходимо нажать на кнопку и нажать на


верхнею часть где написано “The door is open”
Также эту сеть можно улучшить подсоедение дополнительный
ESP8266 <- Точка доступа + WiFi + сайт
NODEMCU <- Клиент который передает значение через WiFi
Такое соединение избавит от необходимости постоянно
перезагружать сайт
Сылки взятой идеи

Электронный замок своими руками #0 - концепт [пилотный


выпуск] – YouTube
Электронный замок своими руками часть #0.1 - питание –
YouTube
Конкурс для ардуино Казюк Алексей - YouTube

Вам также может понравиться