Bricolatge: crear un SmartLock per a casa que només s’obre amb el vostre telèfon intel·ligent

Actualment, hi ha tants panys disponibles al mercat que necessiten algun tipus de contrasenya per obrir-lo. Aquests panys són molt eficients però molt costosos. Si hem de fer un bloqueig per a un propòsit de petita escala que estigui automatitzat i que estigui desbloquejat o bloquejat sense cap contrasenya però amb un telèfon intel·ligent, el podem fer utilitzant alguns components fàcilment disponibles al mercat.



Aquest pany tindrà un cost molt baix i funcionarà perfectament a petita escala. An aplicació per Android serà necessari per accionar aquest pany. Ara, anem cap a la configuració de l’ESP32, instal·lant-hi els paquets necessaris i realitzant determinats canvis de maquinari.

Bloqueig automàtic de la porta



Sense perdre temps, comencem a estudiar conceptes importants i a treballar en aquest projecte.



Com fer que SmartLock funcioni amb Android?

Pas 1: Recopilació dels components

Abans d’iniciar qualsevol projecte, si té por de quedar-se atrapat enmig del projecte i perdre el temps, hi ha un enfocament excel·lent per evitar-lo. Feu una llista completa de tots els components que necessiteu al projecte i compreu-los en primer lloc. A continuació es mostra la llista completa de tots els components que utilitzarem en aquest projecte. Tots aquests components estan fàcilment disponibles al mercat.



  • ESP32
  • Jumper Wires
  • servo Motor
  • Cargols
  • Bloqueig
  • Màquina de trepar

Pas 2: crear l'aplicació

Com que farem un bloqueig intel·ligent que funcionarà amb un telèfon mòbil, hem de desenvolupar una aplicació per a Android que contingui un botó. Prement aquest botó podrem obrir o tancar el bloqueig intel·ligent. Anteriorment, n’hem desenvolupat diverses aplicacions per Android. Ja hem desenvolupat una aplicació que només consta d’un botó. Aquest botó s’utilitza per enviar dades a la base de dades. si s’introdueix ‘1’ a la base de dades de firebase, el bloqueig del commutador s’obrirà i si s’introduirà ‘0’ a aquesta base de dades, es tancarà el bloqueig.

Consulteu el nostre article anomenat Creació d’un commutador sense fils d’encès / apagat per al vostre PC per ajudar-vos a desenvolupar la vostra pròpia aplicació per a Android que s'utilitzarà per fer funcionar el bloqueig intel·ligent.

Pas 3: Muntatge dels components

Com que tenim una llista completa de tots els components que necessitem per completar aquest projecte, anem un pas endavant i muntem tots els components junts.



Agafeu el servomotor i connecteu el Vcc i la terra a la Vcc i a la terra de la placa ESP, respectivament. Connecteu el pin PWM del vostre servomotor al pin 34 del vostre Tauler ESP32 . Ara comproveu que hi ha un pom de tipus engranatge en un servomotor. Traieu el mànec del pany girant-lo i fixeu el pom del motor d'engranatges al pany amb l'ajuda d'alguns adhesius.

Ara, amb l’ajut de la màquina de trepar, practiqueu uns forats a la porta on vulgueu col·locar aquest pany intel·ligent. Assegureu-vos que practiqueu els forats de manera que els forats del pany superposin els forats de la porta, deixant lloc al cargol.

Pas 4: treballar

Com que ara coneixem la idea principal d’aquest projecte, entenguem com funcionarà aquest projecte.

ESP32 és el cor d’aquest projecte. Hi ha un servomotor connectat a aquesta placa i aquest microcontrolador té una connexió a la base de dades de firebase. Quan es prem el botó de l’aplicació per obrir el bloqueig, es prem '1' a la base de dades de firebase i, quan es prem el botó per tancar el bloqueig, es prem '0' a la base de dades de firebase. El tauler ESP llegeix aquest valor a la base de dades de firebase contínuament. Mentre hi hagi 0, l’ESP32 dirigirà el servomotor a mantenir-se en la seva posició inicial. Tan bon punt 1 entra a la base de foc, la placa ESP la llegirà i dirà al servomotor que faci una rotació que obrirà el pany.

Pas 5: Introducció a ESP32

Si no heu treballat abans amb Arduino IDE, no us preocupeu perquè es mostra un pas a pas per configurar Arduino IDE a continuació.

  1. Descarregueu la versió més recent d'Arduino IDE des de Arduino.
  2. Connecteu la vostra placa Arduino al PC i obriu el Tauler de control. Fer clic a Maquinari i so. Ara obert Dispositius i impressora i cerqueu el port al qual està connectada la vostra placa. En el meu cas ho és COM14 però és diferent en diferents ordinadors.

    Buscant Port

  3. Feu clic a Fitxer i després a Preferències. Copieu el següent enllaç a URL addicional del gestor de la junta. ' https://dl.espressif.com/dl/package_esp32_index.json '

    Preferències

  4. Ara, per utilitzar ESP32 amb Arduino IDE, hem d’importar biblioteques especials que ens permetin gravar codi a ESP32 i utilitzar-lo. aquestes dues biblioteques s'adjunten a l'enllaç que es mostra a continuació. Per incloure la biblioteca, aneu Esbós> Inclou biblioteca> Afegeix biblioteca ZIP . Apareixerà un quadre. Cerqueu la carpeta ZIP a l'ordinador i feu clic a D'acord per incloure-les.

    Inclou la biblioteca

  5. Ara vés Esbós> Inclou biblioteca> Gestiona les biblioteques.

    Gestiona les biblioteques

  6. S'obrirà un menú. A la barra de cerca, escriviu Arduino JSON. Apareixerà una llista. Instal·la Arduino JSON de Benoit Blanchon.

    Arduino JSON

  7. Ara feu clic a Eines. Apareixerà un menú desplegable. Estableix el tauler a Mòdul de desenvolupament ESP.

    Taula de configuració

  8. Torneu a fer clic al menú Eina i configureu el port que heu observat abans al tauler de control.

    Configuració del port

  9. Ara pengeu el codi adjunt a l'enllaç següent i feu clic al botó de càrrega per gravar el codi al microcontrolador ESP32.

    Pujar

Per tant, ara quan pengeu el codi, es pot produir un error. Aquest és l'error més comú que es pot produir si utilitzeu una nova versió de l'IDE Arduino i l'Arduino JSON. A continuació es detallen els errors que podeu veure a la pantalla.

Al fitxer inclòs des de C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, des 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 és una classe d'ArduinoJson 5. Consulteu arduinojson.org/upgrade per aprendre a actualitzar el vostre programa a ArduinoJson. versió 6 StaticJsonBuffer jsonBuffer; ^ Al fitxer inclòs des de C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, des de 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 és una classe d'ArduinoJson 5. Consulteu arduinojson.org/upgrade per obtenir informació sobre com actualitzar el vostre programa a ArduinoJson versió 6 retorna StaticJsonBuffer (). ParseObject (_data); ^ S'han trobat diverses biblioteques per a 'WiFi.h' Usades: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi No s'utilitza: C:  Program Files ( x86)  Arduino  libraries  WiFi Usant biblioteca WiFi a la versió 1.0 de la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Utilitzant la biblioteca IOXhop_FirebaseESP32-master a la carpeta: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (heretat) Utilitzant la biblioteca HTTPClient a la versió 1.2 a la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Ús de la biblioteca WiFiClientSecure a la versió 1.0 a la carpeta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Ús de la biblioteca ArduinoJson a versió 6.12.0 a la carpeta: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson exit status 1 Error en compilar la placa ESP32 Dev Module.

No hi ha res de què preocupar-se perquè podem eliminar aquests errors seguint alguns senzills passos. Aquests errors es produeixen perquè la nova versió d'Arduino JSON té una altra classe en lloc de StaticJsonBuffer. Aquesta és la classe de JSON 5. Per tant, simplement podem eliminar aquest error actualitzant la versió d'Arduino JSON del nostre IDE Arduino. Simplement aneu a Esbós> Inclou biblioteca> Gestiona les biblioteques. Buscar Arduino JSON de Benoit Blanchon que heu instal·lat abans. Desinstal·leu-lo primer i definiu-ne la versió 5.13.5. Ara, ja que hem definit una versió antiga d'Arduino JSON, torneu-la a instal·lar i torneu a compilar el codi. Aquesta vegada, el vostre codi es compilarà correctament.

Per descarregar el codi, feu clic aquí.

Pas 6: Codi

el codi d'aquest projecte és molt senzill, però tot i així, alguns trossos s'expliquen a continuació.

1. Al començament del codi, inclourem tres biblioteques. La primera és habilitar Wifi a la placa ESP, la segona és habilitar ESP per utilitzar el servomotor i la tercera és connectar la placa ESP a la base de dades de Firebase. Després d'això, afegirem l'amfitrió de Firebase, l'autenticació, el nom de la nostra connexió a Internet local i la seva contrasenya al codi. Després de fer això, creeu un objecte per utilitzar el servomotor.

#include // include library to use WiFi #include // include library for servo motor #include // include library to connect to Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // reemplaça xxxxxxxxxx pel teu host de firebase aquí #define FIREBASE_AUTH 'xxxxxxxxxx' / / reemplaçar xxxxxxxxxx per la vostra autenticació firebase aquí #define WIFI_SSID 'xx code, xxxxxxxx' // replace xxxxxxxxxx pel nom de la nostra connexió Wifi #define WIFI_PASSWORD 'xxxxxxxxxx' // replace xxxxxxxxxx per la vostra contrasenya wifi Servo myservo; // crear objecte per al servomotor int pos = 0; // crear estat int variable; // creant una variable

2. configuració nul·la () és una funció que només s'executa en un programa quan la placa de microcontrolador està engegada o es prem el botó d'activació. La velocitat en bauds s'estableix en aquesta funció. La velocitat de transmissió és en realitat la velocitat de comunicació en bits per segon a través de la qual el microcontrolador es comunica amb els dispositius externs. El servomotor està connectat al pin34 de la placa ESP. s'escriu un codi en aquesta funció per connectar el microcontrolador a la connexió d'Internet local.

configuració nul·la () {Serial.begin (115200); // configuració de la velocitat de transmissió myservo.attach (34); // connecteu el pin PWM del servomotor al pin34 de ESP32 myservo.write (60); retard (1000); // connectar-se a wifi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('connectant'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); retard (500); } Serial.println (); Serial.print ('connectat:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3. bucle buit () és una funció que s'executa una i altra vegada en bucle. En aquesta funció, expliquem al microcontrolador, quines operacions cal realitzar i com. Aquí, les dades es llegeixen des de Firebase i s’emmagatzemen a la variable anomenada estat . Si l’estat té el valor ‘0’, la posició del servomotor s’estableix a 8 graus. Si el valor de l’estat variable és igual a ‘1’, la posició del servomotor s’establirà a 55 graus.

bucle buit () {estat = Serial.println (Firebase.getFloat ('motor')); // llegiu les dades de la base de dades // si l'estat és '0', el motor de corrent continu s'apagarà si (estat == '0') {myservo.write (8); // establir la posició del retard del servomotor (1000); // espera un segon segon Serial.println ('Porta bloquejada'); } else if (state == '1') {myservo.write (55); // estableix una nova posició del retard del servomotor (1000); // espereu un segon Serial.println ('Porta desbloquejada'); } // gestiona l'error si (Firebase.failed ()) {Serial.print ('setting / number failed:'); Serial.println (Firebase.error ()); tornar; } retard (1000);