Introduction: Door Sensor
Целта на овој проект е на наједноставен начин да се симулира улогата на магнет сензорот при креирање на аларм за врата. Целиот овој проект е како од општествена така и од практична примена, но пред се од сигурносни причини за секој дом. Сопственикот има целосна контрола врз алармот, односно може преку соодветната мобилна апликација RemoteXY да го вклучи/исклучи истиот.
Step 1: Потребни Хардверски Компоненти
Во склоп на овој проект ги имаме користено следните компоненти кои беа неопходни за изработка на истиот. Тоа се следните:
- Arduino Uno R3
- Breadboard
- 2x LED (Green and Red)
- WiFi Relay ESP8266-01
- Buzzer
- Magnetic door sensor
- Wires
- Arduino Uno USB cable
Step 2: Изворен Код (со Коментари)
// RemoteXY select connection mode and include library #define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT #include <RemoteXY.h>// RemoteXY connection settings #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 115200 #define REMOTEXY_WIFI_SSID "Alarm" #define REMOTEXY_WIFI_PASSWORD "12345678" #define REMOTEXY_SERVER_PORT 6377// RemoteXY configurate #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = { 255, 1, 0, 51, 0, 29, 0, 8, 13, 0, 2, 0, 34, 10, 32, 17, 2, 26, 31, 31, 79, 78, 0, 79, 70, 70, 0, 67, 5, 9, 39, 83, 14, 2, 26, 51 }; // this structure defines all the variables of your control interface struct { // input variable uint8_t switch_1; // =1 if switch ON and =0 if OFF</p><p> // output variable char text_1[51]; // string UTF8 end zero</p><p> // other variable uint8_t connect_flag; // =1 if wire connected, else =0} RemoteXY; #pragma pack(pop) #define LED_RED 8 #define LED_GREEN 3 const int buzzer = 5; const int sensor = 7; int flag = 1; int i = 400; // pocetna frekvencija za buzzer int state; // 0 close - 1 open switch void setup() { RemoteXY_Init (); //inicijalizacija na RemoteXY //setiranje na vlezni i izlezni pinovi pinMode(sensor, INPUT_PULLUP); pinMode (LED_RED, OUTPUT); pinMode (LED_GREEN, OUTPUT); } void loop() { RemoteXY_Handler (); state = digitalRead(sensor); //se cita sostojba na senzor if (RemoteXY.switch_1 == 0) { //proverka na switchot od aplikacijata //isklucuvanje na diodite i bazerot digitalWrite(LED_RED, 0); digitalWrite(LED_GREEN, 0); noTone(buzzer); strcpy (RemoteXY.text_1, "ALARMOT NE RABOTI"); //ispisuvanje na screen } else { if (state == HIGH) { //proverka na senzorot strcpy (RemoteXY.text_1, "OPEN"); //ispisuvanje na screen digitalWrite(LED_GREEN, 0); //green light off tone(buzzer, i); i = i + 500; //menuvanje na frekvencija na buzzer if (i > 1000) { i = 400; } //del za trepkanje na red LED dioda if (flag == 1) { flag = 0; digitalWrite(LED_RED, 1); //red light on delay(100); } else { flag = 1; digitalWrite(LED_RED, 0); //red light off delay(100); } } else { strcpy (RemoteXY.text_1, "CLOSED"); //ispisuvanje na screen digitalWrite(LED_RED, 0); //red light off digitalWrite(LED_GREEN, 1); //green light on noTone(buzzer); //soodvetno so funckijata, nema zvuk } } }
Step 3: Поврзување
Поврзувањето е направено на следниот начин:
Следните компоненти се поврзани со соодветните pin-ови од Arduino UNO R3:
Магнетен сензор - pin 7
Buzzer - pin 5
Green LED - pin 3
Red LED - pin 8
ESP WiFi Relay: TX -> RX(Arduino), RX -> TX(Arduino), GND е поврзан со соодветното GND на Arduino, EN and Power(3V3) се поврзани со 3,3V излез од Arduino-то за напојување на ESP модулот.
Step 4: Софтверска Спецификација
Функционалноста на софтверскиот дел е имплементирана во Arduino 1.8.8 IDE.
За конектирање со мобилната апликација наведена погоре ја користиме библиотеката RemoteXY.h
Самата библиотека си сетира посебна конфигурација и конекциски податоци исто така (WiFi name, password, Server_Port итн). Иницијализацијата и сетирањето на влезно/излезните пинови се врши во функцијата setup(), а фунцкионалниот дел се извршува во loop() функцијата, сите други константи и променливи се дефинираат и иницијализираат надвор од фунцкиите.
Целиот изворен код е прикажан подолу.
Step 5: Мобилна Апликација - RemoteXY
На сликата е покажан дел од интерфејсот на мобилната апликација RemoteXY која ја користиме за контрола, регулација на алармот и добивање соодветни известувања за состојбата. Со помош на копчето ON/OFF го вклучуваме и исклучуваме алармот. Доколку сензорот е отворен, односно вратата е отворена, во лабелата се испишува OPEN, a доколку истиот е затворен се испишува CLOSED. Следно сценарио е кога е исклучен алармот се испишува соодветната порака - ALARMOT NE RABOTI.
Comments
4 years ago
Sounds like a good door alarm! Thanks for sharing :)