Направи си сам: Създаване на SmartLock за вашия дом, който се отваря само с вашия смартфон

Днес на пазара има толкова много брави, които се нуждаят от някаква парола, за да я отворят. Тези брави са много ефективни, но много скъпи. Ако трябва да направим заключване за малка мащабна цел, която е автоматизирана и се отключва или заключва без никаква парола, но със смартфон, можем да го направим, като използваме някои компоненти, които са лесно достъпни на пазара.



Тази ключалка ще бъде много евтина и ще работи перфектно в малък мащаб. An android приложение ще е необходим за задействане на тази ключалка. Сега, нека да преминем към настройка на ESP32, инсталиране на необходимите пакети върху него и извършване на определени промени в хардуера!

Автоматично заключване на вратата



Без да губим време, нека започнем да изучаваме важни концепции и да работим по този проект.



Как да направя SmartLock, управляван от Android?

Стъпка 1: Събиране на компонентите

Преди да започнете какъвто и да е проект, ако има страх, че ще закъсате в средата на проекта и ще загубите време, има отличен подход да го избегнете. Направете пълен списък на всички компоненти, които ще ви трябват в проекта, и първо ги купете. Следва пълният списък на всички компоненти, които ще използваме в този проект. Всички тези компоненти са лесно достъпни на пазара.



  • ESP32
  • Джъмперни проводници
  • Серво мотор
  • Винтове
  • Ключалка
  • Пробивна машина

Стъпка 2: Създаване на приложението

Тъй като ще направим интелигентна ключалка, която ще се управлява от мобилен телефон, трябва да разработим приложение за Android, което ще съдържа бутон. С натискането на този бутон ще можем да отворим или затворим интелигентната ключалка. Преди това разработихме няколко андроид приложения. Вече разработихме приложение, което се състои само от един бутон в него. Този бутон се използва за изпращане на данни в базата данни. ако „1“ се натисне в базата данни на firebase, заключването на превключвателя ще се отвори и ако „0“ се натисне в тази база данни, заключването ще се затвори.

Моля, обърнете се към нашата статия с име Създаване на безжичен превключвател за включване / изключване за вашия компютър да вземете помощ за разработване на собствено приложение за Android, което ще се използва за управление на интелигентната ключалка.

Стъпка 3: Сглобяване на компонентите

Тъй като имаме пълен списък на всички компоненти, които са ни необходими, за да завършим този проект, нека се придвижим една крачка напред и да съберем всички компоненти заедно.



Вземете серво мотора и свържете съответно Vcc и земята към Vcc и земята на платката ESP. Свържете PWM щифта на вашия серво мотор към щифта 34 на вашия ESP32 дъска . Сега вижте, че на серво мотора има копче от тип предавка. Извадете дръжката на ключалката, като я завъртите и фиксирайте копчето на мотор-редуктора в ключалката с помощта на някои лепила.

Сега с помощта на бормашината пробийте няколко дупки на вратата, където искате да поставите тази интелигентна ключалка. Уверете се, че сте пробили дупките по такъв начин, че отворите на ключалката да припокриват отворите на вратата, като отваряте място за фиксиране на винта.

Стъпка 4: Работа

Тъй като вече знаем основната идея зад този проект, нека разберем как ще работи този проект.

ESP32 е сърцето на този проект. Към тази платка е свързан серво мотор и този микроконтролер има връзка с базата данни на firebase. Когато бутонът в приложението се натисне за отваряне на ключалката, „1“ се натиска в базата данни на firebase, а когато се натисне бутонът, за да се затвори ключалката, „0“ се натиска в базата данни на firebase. Платката ESP непрекъснато отчита тази стойност в базата данни на firebase. Докато има 0, ESP32 ще насочва серво мотора да остане в първоначалното си положение. Веднага щом 1 влезе в firebase, ESP платката ще го прочете и ще каже на сервомотора да направи въртене, което да отвори ключалката.

Стъпка 5: Първи стъпки с ESP32

Ако не сте работили по Arduino IDE преди, не се притеснявайте, защото стъпка по стъпка за настройване на Arduino IDE е показана по-долу.

  1. Изтеглете най-новата версия на Arduino IDE от Arduino.
  2. Свържете дъската на Arduino към компютъра и отворете контролния панел. Кликнете върху Хардуер и звук. Сега отворете Устройства и принтер и намерете порта, към който е свързана вашата платка. В моя случай е така COM14 но при различните компютри е различно.

    Намиране на порт

  3. Щракнете върху Файл и след това върху Предпочитания. Копирайте следната връзка в URL адрес на допълнителен управител на борда. „ https://dl.espressif.com/dl/package_esp32_index.json '

    Предпочитания

  4. Сега, за да използваме ESP32 с Arduino IDE, трябва да импортираме специални библиотеки, които ще ни позволят да записваме код на ESP32 и да го използваме. тези две библиотеки са прикачени в линка, даден по-долу. За да включите библиотеката, отидете Скица> Включване на библиотека> Добавяне на ZIP библиотека . Ще се появи поле. Намерете ZIP папката на вашия компютър и щракнете върху OK, за да включите папките.

    Включете библиотека

  5. Сега отидете Скица> Включване на библиотека> Управление на библиотеки.

    Управление на библиотеките

  6. Ще се отвори меню. В лентата за търсене въведете Arduino JSON. Ще се появи списък. Инсталирай Arduino JSON от Benoit Blanchon.

    Arduino JSON

  7. Сега кликнете върху Инструменти. Ще се появи падащо меню. Настройте дъската на ESP Dev модул.

    Съвет за настройка

  8. Щракнете отново върху менюто Инструменти и задайте порта, който сте наблюдавали в контролния панел преди.

    Настройка на порт

  9. Сега качете кода, който е приложен в линка по-долу, и кликнете върху бутона за качване, за да запишете кода на микроконтролера ESP32.

    Качване

Така че сега, когато ще качите кода, може да възникне грешка. Това е най-честата грешка, която може да възникне, ако използвате нова версия на Arduino IDE и Arduino JSON. Следват грешките, които може да видите на екрана.

Във файл, включен от C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, от C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: error: StaticJsonBuffer е клас от ArduinoJson 5. Моля, вижте arduinojson.org/upgrade, за да научите как да надстроите програмата си до ArduinoJson версия 6 StaticJsonBuffer jsonBuffer; ^ Във файл, включен от C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, от C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: грешка: StaticJsonBuffer е клас от ArduinoJson 5. Моля, вижте arduinojson.org/upgrade, за да научите как да надстроите програмата си до ArduinoJson версия 6 връща StaticJsonBuffer (). ParseObject (_data); ^ Намерени са множество библиотеки за „WiFi.h“ Използвано: C:  Users  Pro  AppData  Local  Arduino15  пакети  esp32  hardware  esp32  1.0.2  библиотеки  WiFi Не се използва: C:  Program Files ( x86)  Arduino  libraries  WiFi Използване на библиотека WiFi на версия 1.0 в папка: C:  Users  Pro  AppData  Local  Arduino15  пакети  esp32  hardware  esp32  1.0.2  библиотеки  WiFi Използване на библиотека IOXhop_FirebaseESP32-master в папка: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (наследство) Използване на библиотека HTTPClient във версия 1.2 в папка: C:  Users  Pro  AppData  Local  Arduino15  Packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Използване на библиотека WiFiClientSecure при версия 1.0 в папка: C:  Users  Pro  AppData  Local  Arduino15  пакети  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Използване на библиотека ArduinoJson в версия 6.12.0 в папка: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson статус на изход 1 Грешка при компилиране за модула ESP32 Dev.

Няма какво да се притеснявате, защото можем да премахнем тези грешки, като следваме няколко прости стъпки. Тези грешки възникват, защото новата версия на Arduino JSON има друг клас вместо StaticJsonBuffer. Това е класът на JSON 5. Така че можем просто да премахнем тази грешка, като понижим версията на Arduino JSON на нашата Arduino IDE. Просто отидете на Скица> Включване на библиотека> Управление на библиотеки. Търся Arduino JSON от Benoit Blanchon които сте инсталирали преди. Първо го деинсталирайте и след това задайте неговата версия на 5.13.5. Сега, когато зададохме стара версия на Arduino JSON, инсталирайте я отново и прекомпилирайте кода. Този път вашият код ще се компилира успешно.

За да изтеглите кода, щракнете тук.

Стъпка 6: Код

кодът на този проект е много прост, но все пак, някои части от него са обяснени по-долу.

1. В началото на кода ще включим три библиотеки. Първият е да активирате Wifi на ESP платката, вторият е да се даде възможност на ESP да използва серво мотор и третият е да свържете ESP платката към базата данни на firebase. След това в кода ще добавим хоста на firebase, удостоверяването, името на локалната ни интернет връзка и нейната парола. След като направите това, създайте обект, за да използвате серво мотора.

#include // включва библиотека за използване на WiFi #include // включва библиотека за сервомотор #include // включва библиотека за свързване към Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // замества xxxxxxxxxx от вашия хост на firebase тук #define FIREBASE_AUTH 'xxxxxxx / замени XXXXXXXXXX от вашия firebase удостоверяване тук #define WIFI_SSID 'хх код, XXXXXXXX' // замени XXXXXXXXXX от името на нашия Wifi връзка #define WIFI_PASSWORD 'XXXXXXXXXX' // замени XXXXXXXXXX от вашата безжична мрежа парола Серво myservo; // създаване на обект за серво мотор int pos = 0; // създаване на променлива int състояние; // създаване на променлива

2. настройка за празнота () е функция, която се изпълнява само веднъж в програма, когато платката на микроконтролера е включена или е натиснат бутонът за активиране. Скоростта на предаване е зададена в тази функция. Скоростта на предаване всъщност е скоростта на комуникация в битове в секунда, чрез която микроконтролерът комуникира с външните устройства. Серво моторът е свързан към щифта 34 на платката ESP. в тази функция се записва код за свързване на микроконтролера към локалната интернет връзка.

void setup () {Serial.begin (115200); // задаване на скоростта на предаване myservo.attach (34); // свързваме PWM щифт на сервомотора към pin34 на ESP32 myservo.write (60); забавяне (1000); // свързване към wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('свързване'); докато (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); забавяне (500); } Serial.println (); Serial.print ('свързан:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. цикъл void () е функция, която се изпълнява отново и отново в цикъл. В тази функция ние казваме на микроконтролера, какви операции да се извършат и как. Тук данните се четат от firebase и се съхраняват в имената на променливата държава . Ако състоянието има стойност „0“ в себе си, позицията на серво мотора е зададена на 8 градуса. Ако стойността в променливо състояние е равна на „1“, позицията на серво мотора ще бъде зададена на 55 градуса.

невалиден цикъл () {състояние = Serial.println (Firebase.getFloat ('мотор')); // четем данните от firebase // ако състоянието е '0', двигателят за постоянен ток ще се изключи if (state == '0') {myservo.write (8); // зададена позиция на закъснението на серво мотора (1000); // изчакайте onw second Serial.println ('Door Locked'); } иначе ако (състояние == '1') {myservo.write (55); // задаване на нова позиция на закъснението на серво мотора (1000); // изчакайте една секунда Serial.println ('Door Unloocked'); } // обработва грешка, ако (Firebase.failed ()) {Serial.print ('настройката / номерът не са успели:'); Serial.println (Firebase.error ()); връщане; } закъснение (1000);