Bricolaje: Creación de un SmartLock para su hogar que solo se abre con su teléfono inteligente

Hoy en día, hay tantas cerraduras disponibles en el mercado que necesitan algún tipo de contraseña para abrirlas. Estos candados son muy eficientes pero muy costosos. Si necesitamos hacer un candado para un propósito a pequeña escala que esté automatizado y se desbloquee o bloquee sin contraseña pero con un teléfono inteligente, podemos hacerlo usando algunos componentes que están fácilmente disponibles en el mercado.



Esta cerradura tendrá un costo muy bajo y funcionará perfectamente a pequeña escala. Un aplicación android será necesario para operar este bloqueo. Ahora, vayamos a configurar el ESP32, instale los paquetes necesarios y realice ciertos cambios de hardware.

Cerradura de puerta automática



Sin perder tiempo, comencemos a estudiar conceptos importantes y a trabajar en este proyecto.



¿Cómo hacer SmartLock operado por Android?

Paso 1: recopilación de los componentes

Antes de iniciar cualquier proyecto, si existe el temor de quedarse atascado en medio del proyecto y perder el tiempo, existe un excelente enfoque para evitarlo. Haz una lista completa de todos los componentes que vas a necesitar en el proyecto y cómpralos en primer lugar. A continuación se muestra la lista completa de todos los componentes que vamos a utilizar en este proyecto. Todos estos componentes están fácilmente disponibles en el mercado.



  • ESP32
  • Cables de puente
  • Servo Motor
  • Empulgueras
  • Bloquear
  • Taladro

Paso 2: hacer la aplicación

Como vamos a hacer una cerradura inteligente que será operada por un teléfono móvil, necesitamos desarrollar una aplicación para Android que contenga un botón. Pulsando ese botón podremos abrir o cerrar la cerradura inteligente. Anteriormente, hemos desarrollado varios aplicaciones de Android. Ya hemos desarrollado una aplicación que consta de un solo botón. Este botón se utiliza para enviar datos a la base de datos. si se inserta '1' en la base de datos de base de fuego, el bloqueo del interruptor se abrirá y si se inserta '0' en esa base de datos, el bloqueo se cerrará.

Consulte nuestro artículo llamado Creación de un interruptor de encendido / apagado inalámbrico para su PC para recibir ayuda para desarrollar su propia aplicación de Android que se utilizará para operar la cerradura inteligente.

Paso 3: ensamblar los componentes

Como tenemos una lista completa de todos los componentes que necesitamos para completar este proyecto, avancemos un paso y ensamblemos todos los componentes.



Tome el servomotor y conecte su Vcc y tierra al Vcc y tierra de la placa ESP respectivamente. Conecte el pin PWM de su servomotor al pin 34 de su Tablero ESP32 . Ahora vea que hay una perilla tipo engranaje en un servomotor. Saque la manija de la cerradura girándola y fije el pomo del motorreductor en la cerradura con la ayuda de unos adhesivos.

Ahora, con la ayuda de la taladradora, perfora unos agujeros en la puerta donde quieres colocar esta cerradura inteligente. Asegúrese de perforar los orificios de tal manera que los orificios de la cerradura se superpongan a los orificios de la puerta, dejando espacio para que el tornillo se fije.

Paso 4: trabajando

Como ahora conocemos la idea principal detrás de este proyecto, entendamos cómo va a funcionar este proyecto.

ESP32 es el corazón de este proyecto. Un servomotor está conectado a esta placa y este microcontrolador tiene una conexión a la base de datos de base de fuego. Cuando se presiona el botón en la aplicación para abrir el candado, se presiona '1' en la base de datos de base de fuego y cuando se presiona el botón para cerrar el candado, se ingresa '0' en la base de datos de base de fuego. La placa ESP está leyendo este valor en la base de datos de firebase continuamente. Mientras haya 0, el ESP32 dirigirá el servomotor para que permanezca en su posición inicial. Tan pronto como 1 entre en la base de fuego, la placa ESP lo leerá y le dirá al servomotor que haga una rotación que abrirá la cerradura.

Paso 5: Introducción a ESP32

Si no ha trabajado en Arduino IDE antes, no se preocupe porque a continuación se muestra un paso a paso para configurar Arduino IDE.

  1. Descargue la última versión de Arduino IDE de Arduino.
  2. Conecte su placa Arduino a la PC y abra el Panel de control. Haga clic en Hardware y sonido. Ahora abierto Dispositivos e impresora y busque el puerto al que está conectada su placa. En mi caso es COM14 pero es diferente en diferentes computadoras.

    Encontrar puerto

  3. Haga clic en Archivo y luego haga clic en Preferencias. Copia el siguiente enlace en el URL adicional del administrador de la junta. ' https://dl.espressif.com/dl/package_esp32_index.json”

    Preferencias

  4. Ahora, para usar ESP32 con Arduino IDE, necesitamos importar bibliotecas especiales que nos permitirán grabar código en ESP32 y usarlo. estas dos bibliotecas se adjuntan en el enlace que figura a continuación. Para incluir la biblioteca, vaya a Bosquejo> Incluir biblioteca> Agregar biblioteca ZIP . Aparecerá un cuadro. Busque la carpeta ZIP en su computadora y haga clic en Aceptar para incluir las carpetas.

    Incluir biblioteca

  5. Ahora ve Croquis> Incluir biblioteca> Administrar bibliotecas.

    Administrar bibliotecas

  6. Se abrirá un menú. En la barra de búsqueda, escriba Arduino JSON. Aparecerá una lista. Instalar en pc Arduino JSON de Benoit Blanchon.

    Arduino JSON

  7. Ahora haga clic en el Herramientas. Aparecerá un menú desplegable. Ponga el tablero en Módulo de desarrollo ESP.

    Tablero de ajuste 

  8. Haga clic en el menú Herramientas nuevamente y configure el puerto que observó en el panel de control antes.

    Puerto de configuración

  9. Ahora cargue el código que se adjunta en el enlace a continuación y haga clic en el botón de carga para grabar el código en el microcontrolador ESP32.

    Subir

Entonces, cuando cargue el código, puede ocurrir un error. Este es el error más común que puede ocurrir si está utilizando una nueva versión de Arduino IDE y Arduino JSON. Los siguientes son los errores que puede ver en la pantalla.

En el archivo incluido de C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, de 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 es una clase de ArduinoJson 5. Consulte arduinojson.org/upgrade para aprender cómo actualizar su programa a ArduinoJson versión 6 StaticJsonBuffer jsonBuffer; ^ En el archivo incluido desde C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, desde 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 es una clase de ArduinoJson 5. Consulte arduinojson.org/upgrade para saber cómo actualizar su programa a ArduinoJson versión 6 return StaticJsonBuffer (). ParseObject (_data); ^ Se encontraron varias bibliotecas para 'WiFi.h' Usado: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi No usado: C:  Archivos de programa ( x86)  Arduino  libraries  WiFi Usando la biblioteca WiFi en la versión 1.0 en la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Usando la biblioteca IOXhop_FirebaseESP32-master en la carpeta: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legacy) Usando la biblioteca HTTPClient en la versión 1.2 en la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Usando la biblioteca WiFiClientSecure en la versión 1.0 en la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Usando la biblioteca ArduinoJson en versión 6.12.0 en la carpeta: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson estado de salida 1 Error al compilar el módulo de desarrollo ESP32 de la placa.

No hay nada de qué preocuparse porque podemos eliminar estos errores siguiendo unos sencillos pasos. Estos errores surgen porque la nueva versión de Arduino JSON tiene otra clase en lugar de StaticJsonBuffer. Esta es la clase de JSON 5. Así que podemos simplemente eliminar este error degradando la versión de Arduino JSON de nuestro Arduino IDE. Simplemente ve a Croquis> Incluir biblioteca> Administrar bibliotecas. Buscar Arduino JSON de Benoit Blanchon que ha instalado antes. Desinstálelo primero y luego configure su versión en 5.13.5.  Ahora que hemos configurado una versión antigua de Arduino JSON, instálela nuevamente y recompile el código. Esta vez, su código se compilará correctamente.

Para descargar el código, hacer clic aquí.

Paso 6: Código

El código de este proyecto es muy simple, pero aún así, algunos fragmentos se explican a continuación.

1. Al comienzo del código, incluiremos tres bibliotecas. La primera es habilitar Wifi en la placa ESP, la segunda es permitir que ESP use el servomotor y la tercera es conectar la placa ESP a la base de datos de firebase. Después de eso, agregaremos el host de la base de fuego, la autenticación, el nombre de nuestra conexión a Internet local y su contraseña en el código. Después de hacer eso, cree un objeto para usar el servomotor.

#include // incluye biblioteca para usar WiFi #include // incluye biblioteca para servomotor #include // incluye biblioteca para conectarse a Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // reemplaza xxxxxxxxxx por tu host de firebase aquí #define FIREBASE_AUTH 'xxxxxxxxxx' / / reemplace xxxxxxxxxx por su autenticación de base de fuego aquí #define WIFI_SSID 'xx code, xxxxxxxx' // reemplace xxxxxxxxxx por el nombre de nuestra conexión Wifi #define WIFI_PASSWORD 'xxxxxxxxxx' // reemplace xxxxxxxxxx por su contraseña wifi Servo myservo; // crea un objeto para el servomotor int pos = 0; // creando variable int state; // creando variable

2. configuración vacía () es una función que se ejecuta solo una vez en un programa cuando se enciende la placa del microcontrolador o se presiona el botón de habilitación. La velocidad en baudios se establece en esta función. La tasa de baudios es en realidad la velocidad de comunicación en bits por segundo a través de la cual el microcontrolador se comunica con los dispositivos externos. El servomotor está conectado al pin 34 de la placa ESP. En esta función se escribe un código para conectar el microcontrolador a la conexión a Internet local.

configuración vacía () {Serial.begin (115200); // establecer la velocidad en baudios myservo.attach (34); // conecta el pin PWM del servomotor al pin34 de ESP32 myservo.write (60); retraso (1000); // conectarse a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('conectando'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); retraso (500); } Serial.println (); Serial.print ('conectado:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. bucle vacío () es una función que se ejecuta una y otra vez en un bucle. En esta función le decimos al microcontrolador, qué operaciones realizar y cómo. Aquí, los datos se leen de la base de fuego y se almacenan en la variable llamada estado . Si el estado tiene el valor '0', la posición del servomotor se establece en 8 grados. Si el valor en el estado variable es igual a '1', la posición del servomotor se establecerá en 55 grados.

bucle vacío () {estado = Serial.println (Firebase.getFloat ('motor')); // leer los datos de la base de fuego // si el estado es '0', el motor de CC se apagará if (state == '0') {myservo.write (8); // establecer la posición del retardo del servomotor (1000); // espera un segundo Serial.println ('Puerta bloqueada'); } else if (estado == '1') {myservo.write (55); // establece una nueva posición del retardo del servomotor (1000); // esperar un segundo Serial.println ('Puerta desbloqueada'); } // manejar el error if (Firebase.failed ()) {Serial.print ('configuración / número fallido:'); Serial.println (Firebase.error ()); regreso; } retraso (1000);