Сделай сам: создание SmartLock для вашего дома, который открывается только с вашего смартфона

В настоящее время на рынке доступно так много замков, для открытия которых требуется какой-то пароль. Эти замки очень эффективны, но очень дороги. Если нам нужно сделать замок для небольших целей, который автоматизирован и разблокируется или блокируется без пароля, но с помощью смартфона, мы можем сделать это, используя некоторые компоненты, которые легко доступны на рынке.



Этот замок будет очень дешевым и отлично подойдет для небольших масштабов. An приложение для Android потребуется для управления этим замком. Теперь перейдем к настройке ESP32, установке на него необходимых пакетов и внесению определенных изменений в оборудование!

Автоматический дверной замок



Не теряя времени, давайте приступим к изучению важных концепций и работе над этим проектом.



Как сделать SmartLock управляемым Android?

Шаг 1: Сбор компонентов

Перед началом любого проекта, если есть опасения, что вы застрянете в середине проекта и потратите время впустую, есть отличный способ избежать этого. Составьте полный список всех компонентов, которые вам понадобятся в проекте, и купите их в первую очередь. Ниже приводится полный список всех компонентов, которые мы собираемся использовать в этом проекте. Все эти компоненты легко доступны на рынке.



  • ESP32
  • Перемычки
  • Серводвигатель
  • Винты
  • Замок
  • Сверлильный станок

Шаг 2: Создание приложения

Поскольку мы собираемся создать интеллектуальный замок, которым будет управлять мобильный телефон, нам нужно разработать приложение для Android, которое будет содержать кнопку. Нажав эту кнопку, мы сможем открыть или закрыть интеллектуальный замок. Ранее мы разработали несколько приложения для Android. Мы уже разработали приложение, которое состоит из одной кнопки. Эта кнопка используется для отправки данных в базу данных. если «1» помещается в базу данных firebase, блокировка переключателя открывается, а если «0» помещается в эту базу данных, блокировка будет закрыта.

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

Шаг 3: Сборка компонентов

Поскольку у нас есть полный список всех компонентов, необходимых для завершения этого проекта, давайте сделаем шаг вперед и соберем все компоненты вместе.



Возьмите серводвигатель и подключите его Vcc и землю к Vcc и земле платы ESP соответственно. Подключите вывод PWM вашего серводвигателя к выводу 34 вашего Плата ESP32 . Теперь посмотрите, что на серводвигателе есть ручка зубчатого типа. Выньте ручку замка, вращая его, и зафиксируйте ручку мотор-редуктора в замке с помощью клея.

Теперь с помощью дрели просверлите в двери несколько отверстий, где вы хотите разместить этот умный замок. Просверлите отверстия таким образом, чтобы отверстия замка перекрывали отверстия в двери, освобождая место для фиксации винта.

Шаг 4: Работа

Поскольку теперь мы знаем основную идею этого проекта, позвольте нам понять, как этот проект будет работать.

ESP32 - это сердце этого проекта. К этой плате подключен серводвигатель, и этот микроконтроллер подключен к базе данных firebase. Когда кнопка в приложении нажимается, чтобы открыть замок, «1» помещается в базу данных firebase, а когда кнопка нажимается, чтобы закрыть блокировку, «0» помещается в базу данных firebase. Плата ESP постоянно считывает это значение в базе данных firebase. Пока есть 0, ESP32 заставит серводвигатель оставаться в исходном положении. Как только 1 войдет в базу огня, плата ESP прочитает его и скажет серводвигателю сделать поворот, который откроет замок.

Шаг 5: Начало работы с ESP32

Если вы раньше не работали над Arduino IDE, не беспокойтесь, потому что пошаговые инструкции по настройке Arduino IDE показаны ниже.

  1. Загрузите последнюю версию Arduino IDE из Ардуино.
  2. Подключите плату Arduino к ПК и откройте панель управления. Нажмите на Оборудование и звук. Теперь откройте Устройства и принтер и найдите порт, к которому подключена ваша плата. В моем случае это COM14 но на разных компьютерах он разный.

    Поиск порта

  3. Щелкните Файл, а затем щелкните Настройки. Скопируйте следующую ссылку в Дополнительный URL-адрес менеджера совета директоров. « https://dl.espressif.com/dl/package_esp32_index.json '

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

  4. Теперь, чтобы использовать ESP32 с Arduino IDE, нам нужно импортировать специальные библиотеки, которые позволят нам записывать код на ESP32 и использовать его. эти две библиотеки прикреплены по приведенной ниже ссылке. Чтобы включить библиотеку, goto Эскиз> Включить библиотеку> Добавить библиотеку ZIP . Появится окно. Найдите папку ZIP на вашем компьютере и нажмите OK, чтобы включить папки.

    Включить библиотеку

  5. Теперь перейти Эскиз> Включить библиотеку> Управление библиотеками.

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

  6. Откроется меню. В строке поиска введите Ардуино JSON. Появится список. Установить Arduino JSON от Бенуа Бланшона.

    Ардуино JSON

  7. Теперь нажмите на Инструменты. Появится раскрывающееся меню. Установите доску на Модуль разработки ESP.

    Доска настроек

  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 StaticJsonBuffer jsonBuffer версии 6; ^ В файле, включенном в 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: error: StaticJsonBuffer - это класс из ArduinoJson 5. Пожалуйста, посетите arduinojson.org/upgrade, чтобы узнать, как обновить вашу программу до ArduinoJson версии 6 возвращает StaticJsonBuffer (). ParseObject (_data); ^ Для 'WiFi.h' обнаружено несколько библиотек Используется: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Не используется: C:  Program Files ( x86)  Arduino  libraries  WiFi Использование библиотеки WiFi версии 1.0 в папке: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Использование библиотеки IOXhop_FirebaseESP32-master в папке: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Использование библиотеки 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  packages  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 от Бенуа Бланшона которые вы установили раньше. Сначала удалите его, а затем установите его версию на 5.13.5. Теперь, когда мы установили старую версию Arduino JSON, установите ее снова и перекомпилируйте код. На этот раз ваш код будет успешно скомпилирован.

Чтобы скачать код, щелкнуть Вот.

Шаг 6: Код

код этого проекта очень прост, но все же некоторые его фрагменты объясняются ниже.

1. В начале кода мы включим три библиотеки. Первый - включить Wi-Fi на плате ESP, второй - разрешить ESP использовать серводвигатель, а третий - подключить плату ESP к базе данных firebase. После этого мы добавим в код хост firebase, аутентификацию, имя нашего локального интернет-соединения и его пароль. После этого создайте объект для использования серводвигателя.

#include // включить библиотеку для использования WiFi #include // включить библиотеку для серводвигателя #include // включить библиотеку для подключения к Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // заменить xxxxxxxxxx на ваш хост firebase здесь #define FIREBASE_AUTH 'xxxxxxxxxx' / / замените xxxxxxxxxx аутентификацией firebase здесь #define WIFI_SSID 'xx code, xxxxxxxx' // замените xxxxxxxxxx именем нашего Wi-Fi-соединения #define WIFI_PASSWORD 'xxxxxxxxxx' // замените xxxxxxxxxx своим паролем Wi-Fi Servo myservo; // создаем объект для серводвигателя int pos = 0; // создание переменной int state; // создание переменной

2. установка void () это функция, которая запускается только один раз в программе, когда плата микроконтроллера включена или нажата кнопка включения. В этой функции устанавливается скорость передачи данных. Скорость передачи - это фактически скорость передачи данных в битах в секунду, с помощью которой микроконтроллер обменивается данными с внешними устройствами. Серводвигатель подключен к контакту 34 платы ESP. В этой функции написан код для подключения микроконтроллера к локальному Интернет-соединению.

void setup () {Serial.begin (115200); // установка скорости передачи данных myservo.attach (34); // подключаем вывод ШИМ серводвигателя к выводу 34 ESP32 myservo.write (60); задержка (1000); // подключаемся к Wi-Fi. 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. пустой цикл () это функция, которая запускается снова и снова в цикле. В этой функции мы сообщаем микроконтроллеру, какие операции выполнять и как. Здесь данные считываются из базы данных и сохраняются в переменной с именем штат . Если состояние имеет значение «0», положение серводвигателя установлено на 8 градусов. Если значение в состоянии переменной равно «1», положение серводвигателя будет установлено на 55 градусов.

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