Faça você mesmo: criando um SmartLock para sua casa que só abre com seu smartphone

Hoje em dia existem tantas fechaduras disponíveis no mercado que precisam de algum tipo de senha para abri-las. Essas fechaduras são muito eficientes, mas muito caras. Se precisarmos fazer um bloqueio para uma finalidade de pequena escala que seja automatizado e seja desbloqueado ou bloqueado sem qualquer senha mas com um smartphone, podemos fazê-lo usando alguns componentes que estão facilmente disponíveis no mercado.



Esse bloqueio terá um custo muito baixo e funcionará perfeitamente em pequena escala. A aplicativo android será necessário para operar esta fechadura. Agora, vamos configurar o ESP32, instalar os pacotes necessários nele e fazer algumas alterações de hardware!

Fechadura Automática



Sem perder tempo, vamos começar a estudar conceitos importantes e a trabalhar neste projeto.



Como fazer um SmartLock operado por Android?

Etapa 1: reunindo os componentes

Antes de iniciar qualquer projeto, se houver medo de ficar preso no meio do projeto e perder tempo, há uma excelente abordagem para evitá-lo. Faça uma lista completa de todos os componentes de que você vai precisar no projeto e compre-os primeiro. A seguir está a lista completa de todos os componentes que vamos usar neste projeto. Todos esses componentes estão facilmente disponíveis no mercado.



  • ESP32
  • Jumper Wires
  • Servo motor
  • Parafusos
  • Fechadura
  • Furadeira

Etapa 2: fazendo o aplicativo

Como vamos fazer um bloqueio inteligente que será operado por um telefone celular, precisamos desenvolver um aplicativo para Android que conterá um botão. Ao pressionar esse botão, poderemos abrir ou fechar o bloqueio inteligente. Anteriormente, desenvolvemos vários aplicativos Android. Já desenvolvemos um aplicativo que consiste em apenas um botão. Este botão é usado para enviar dados para o banco de dados. se '1' for enviado para o banco de dados firebase, o bloqueio do switch será aberto e se '0' for enviado para o banco de dados, o bloqueio será fechado.

Por favor, consulte nosso artigo chamado Criação de uma chave liga / desliga sem fio para o seu PC para levar ajuda para desenvolver seu próprio aplicativo Android que será usado para operar o bloqueio inteligente.

Etapa 3: montagem dos componentes

Como temos uma lista completa de todos os componentes de que precisamos para concluir este projeto, vamos dar um passo à frente e montar todos os componentes juntos.



Pegue o servo motor e conecte seu Vcc e aterramento ao Vcc e aterramento da placa ESP respectivamente. Conecte o pino PWM do seu servo motor ao pino 34 do seu Placa ESP32 . Agora veja que há um botão do tipo engrenagem em um servo motor. Retire o manípulo da fechadura rodando-a e fixe o manípulo do motor redutor na fechadura com a ajuda de alguns adesivos.

Agora, com a ajuda da furadeira, faça alguns furos na porta onde deseja colocar essa trava inteligente. Certifique-se de fazer os furos de forma que os furos da fechadura se sobreponham aos furos da porta, permitindo a fixação do parafuso.

Etapa 4: Trabalho

Como agora sabemos a ideia principal por trás deste projeto, vamos entender como ele vai funcionar.

ESP32 é o coração deste projeto. Um servo motor está conectado a esta placa e este microcontrolador tem uma conexão com o banco de dados firebase. Quando o botão no aplicativo é pressionado para abrir o cadeado, ‘1’ é pressionado no banco de dados firebase e quando o botão é pressionado para fechar o cadeado, ‘0’ é pressionado no banco de dados firebase. A placa ESP está lendo esse valor continuamente no banco de dados do firebase. Enquanto houver 0, o ESP32 irá direcionar o servo motor para permanecer em sua posição inicial. Assim que 1 entrar no firebase, a placa ESP irá lê-lo e dizer ao servo motor para fazer uma rotação que abrirá a fechadura.

Etapa 5: Introdução ao ESP32

Se você não trabalhou no Arduino IDE antes, não se preocupe porque um passo a passo para configurar o Arduino IDE é mostrado abaixo.

  1. Baixe a versão mais recente do Arduino IDE em Arduino.
  2. Conecte sua placa Arduino ao PC e abra o painel de controle. Clique em Hardware e som. Agora aberto Dispositivos e impressora e encontre a porta à qual sua placa está conectada. No meu caso é COM14 mas é diferente em computadores diferentes.

    Encontrar o porto

  3. Clique em Arquivo e em Preferências. Copie o seguinte link no URL do gerente da placa adicional. “ https://dl.espressif.com/dl/package_esp32_index.json '

    Preferências

  4. Agora, para usar o ESP32 com o Arduino IDE, precisamos importar bibliotecas especiais que nos permitirão gravar código no ESP32 e usá-lo. essas duas bibliotecas estão anexadas no link fornecido a seguir. Para incluir a biblioteca, vá para Sketch> Incluir Biblioteca> Adicionar Biblioteca ZIP . Uma caixa aparecerá. Encontre a pasta ZIP em seu computador e clique em OK para incluir as pastas.

    Incluir Biblioteca

  5. Agora vá para Sketch> Incluir Biblioteca> Gerenciar Bibliotecas.

    Gerenciar Bibliotecas

  6. Um menu será aberto. Na barra de pesquisa, digite Arduino JSON. Uma lista aparecerá. Instalar Arduino JSON de Benoit Blanchon.

    Arduino JSON

  7. Agora clique no Ferramentas. Um menu suspenso aparecerá. Defina o tabuleiro para Módulo ESP Dev.

    Tabuleiro de Configuração

  8. Clique no menu Ferramentas novamente e defina a porta que você observou no painel de controle antes.

    Porta de configuração

  9. Agora faça o upload do código que está anexado no link abaixo e clique no botão de upload para gravar o código no microcontrolador ESP32.

    Envio

Portanto, agora, quando você enviar o código, pode ocorrer um erro. Este é o erro mais comum que pode ocorrer se você estiver usando uma nova versão do Arduino IDE e do Arduino JSON. A seguir estão os erros que você pode ver na tela.

No arquivo incluído em 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: erro: StaticJsonBuffer é uma classe de ArduinoJson 5. Consulte arduinojson.org/upgrade para saber como atualizar seu programa para ArduinoJson versão 6 StaticJsonBuffer jsonBuffer; ^ No arquivo incluído em C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0, em C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: erro: StaticJsonBuffer é uma classe de ArduinoJson 5. Consulte arduinojson.org/upgrade para saber como atualizar seu programa para ArduinoJson versão 6 retorna StaticJsonBuffer (). ParseObject (_data); ^ Várias bibliotecas foram encontradas para 'WiFi.h' Usado: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Não usado: C:  Arquivos de programas ( x86)  Arduino  libraries  WiFi Usando a biblioteca WiFi na versão 1.0 na pasta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi Usando a biblioteca IOXhop_FirebaseESP32-master na pasta: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (legado) Usando a biblioteca HTTPClient na versão 1.2 na pasta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClient Usando a biblioteca WiFiClientSecure na versão 1.0 na pasta: C:  Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecure Usando a biblioteca ArduinoJson em versão 6.12.0 na pasta: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson status de saída 1 Erro ao compilar para placa ESP32 Dev Module.

Não há nada com que se preocupar, pois podemos eliminar esses erros seguindo alguns passos simples. Esses erros estão surgindo porque a nova versão do Arduino JSON tem outra classe em vez de StaticJsonBuffer. Esta é a classe do JSON 5. Portanto, podemos simplesmente eliminar esse erro fazendo o downgrade da versão do Arduino JSON do nosso IDE Arduino. Simplesmente vá para Sketch> Incluir Biblioteca> Gerenciar Bibliotecas. Procurar por Arduino JSON de Benoit Blanchon que você instalou antes. Desinstale-o primeiro e depois defina sua versão para 5.13.5. Agora, como configuramos uma versão antiga do Arduino JSON, instale-o novamente e recompile o código. Desta vez, seu código será compilado com sucesso.

Para baixar o código, clique aqui.

Etapa 6: Código

o código deste projeto é muito simples, mas ainda assim, alguns pedaços dele são explicados abaixo.

1. No início do código, incluiremos três bibliotecas. A primeira é habilitar o Wifi na placa ESP, a segunda é habilitar o ESP para usar servo motor e a terceira é conectar a placa ESP ao banco de dados firebase. Depois disso, adicionaremos o host firebase, autenticação, nome de nossa conexão de internet local e sua senha no código. Depois de fazer isso, crie um objeto para usar o servo motor.

#include // incluir biblioteca para usar WiFi #include // incluir biblioteca para servo motor #include // incluir biblioteca para conectar ao Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // substitua xxxxxxxxxx por seu host firebase aqui #define FIREBASE_AUTH 'xxxxxxxxxx' / / substitua xxxxxxxxxx por sua autenticação de firebase aqui #define WIFI_SSID 'código xx, xxxxxxxx' // substitua xxxxxxxxxx pelo nome de nossa conexão Wifi #define WIFI_PASSWORD 'xxxxxxxxxx' // substitua xxxxxxxxxx por sua senha wi-fi Servo myservo; // cria objeto para servo motor int pos = 0; // criando variável int state; // criando variável

2 void setup () é uma função executada apenas uma vez em um programa, quando a placa do microcontrolador é ligada ou o botão de habilitação é pressionado. A taxa de transmissão é definida nesta função. A taxa de transmissão é, na verdade, a velocidade de comunicação em bits por segundo através da qual o microcontrolador se comunica com os dispositivos externos. O servo motor é conectado ao pino 34 da placa ESP. o código é escrito nesta função para conectar o microcontrolador à conexão de Internet local.

configuração vazia () {Serial.begin (115200); // definindo a taxa de transmissão myservo.attach (34); // conecte o pino PWM do servo motor ao pino 34 do ESP32 myservo.write (60); atraso (1000); // conectar ao wi-fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ('conectando'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.'); atraso (500); } Serial.println (); Serial.print ('conectado:'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

3 - void loop () é uma função que é executada repetidamente em um loop. Nesta função, informamos ao microcontrolador quais as operações a realizar e como. Aqui, os dados estão sendo lidos do firebase e armazenados na variável chamada Estado . Se o estado tiver o valor '0', a posição do servo motor é definida para 8 graus. Se o valor no estado variável for igual a '1', a posição do servo motor será definida para 55 graus.

void loop () {state = Serial.println (Firebase.getFloat ('motor')); // ler os dados do firebase // se o estado for '0' o motor DC desligará if (state == '0') {myservo.write (8); // define a posição do servo motor delay (1000); // aguarde um segundo Serial.println ('Porta Travada'); } else if (state == '1') {myservo.write (55); // define a nova posição do servo motor delay (1000); // aguarde um segundo Serial.println ('Porta desbloqueada'); } // trata o erro if (Firebase.failed ()) {Serial.print ('configuração / número falhou:'); Serial.println (Firebase.error ()); Retorna; } atraso (1000);