Neste projeto, projetaremos uma fechadura de porta exclusiva que pode ser operada sem cartão-chave, senha de entrada ou identificação biométrica. Um smartphone é a chave para trancar e destrancar a porta via Bluetooth.
Esta porta usa uma fechadura solenóide, que depende de uma trava para travamento e destravamento elétrico. Também possui LEDs para indicar se a porta está trancada ou destrancada e aciona uma campainha para notificações sonoras. Um sensor de vibração produz um sinal de alerta, protegendo a porta contra acesso não autorizado ou forçado.
Usaremos uma placa Arduino NANO e precisaremos de um smartphone com conectividade Bluetooth para este projeto. Vamos começar com o diagrama de blocos, seguido pelo diagrama de circuitos.
Diagrama de blocos do sistema
Os principais blocos de construção do sistema incluem:
- Uma placa Arduino NANO
- O Módulo Bluetooth HC05
- Um relé
- Uma fechadura solenóide
- Uma campainha de 12 V.
Também usaremos alguns outros blocos, com:
- LEDs
- Uma mini campainha
- Sensores de vibração

Um diagrama de blocos da fechadura operada por smartphone.
1. O Smartphone com conectividade Bluetooth para transmitir comandos através do telefone para trancar ou destrancar a porta.
2. O módulo Bluetooth envia comandos do smartphone do usuário para trancar ou destrancar a porta. O aplicativo Bluetooth envia esses sinais para a placa Arduino por meio de comunicação serial.
3. Um sensor de vibração é usado para detectar movimento ou vibrações na porta quando ela está trancada. Caso o sensor detecte vibrações fortes, ele envia um alerta para a placa Arduino.
4. Os relés: O relé 1 ativa (energiza) a trava solenóide. São necessários 12 V para alimentar a bobina interna do solenóide. O relé 2 também usa 12 V, mas é usado para alimentar a campainha grande.
5. A trava solenóide é usado para trancar a porta
6. A grande campainha de 12 V gera um alerta caso alguém tente abrir a porta à força quando trancada (sem usar o smartphone).
7. A mini campainha alertas sempre que a porta é trancada ou destrancada, gerando um sinal sonoro longo ou curto, respectivamente.
8. LEDs: LEDs verdes e vermelhos indicam se a porta está travada ou destravada.
Componentes necessários:

A fechadura solenóide.

O Módulo Bluetooth HC05.

A placa Arduino NANO.

A grande campainha (12 V).

A mini campainha (5 V).

O relé – montagem em PCB de 12 V.

O módulo sensor de vibração.
Diagrama esquemático:

O diagrama de circuito completo da fechadura operada por smartphone.
Conexões do circuito:
O Módulo Bluetooth HC05 possui quatro conexões de pinos: VCC, GND, Tx e Rx.
- Arduino fornece o pino VCC com 5 V
- O pino GND se conecta ao terra do circuito comum
- Os pinos Tx e Rx se conectam aos pinos digitais D11 e D12 do Arduino, respectivamente
- Os LEDs vermelho e verde se conectam aos pinos IO digitais D9 e D10
- Os pinos IO digitais, D7 e D8, acionam as bobinas do Relé 1 e do Relé 2 através dos transistores
- Ambos os transistores NPN BC547 são conectados em configuração de chave e sua saída de coletor aciona a bobina do relé
- A saída do Relé 1 NA aciona as campainhas. A saída do Relé 2 NA energiza a bobina solenóide
- Os terminais comuns (C) de ambos os relés são alimentados com 12 V (que é fornecido tanto para a campainha quanto para a trava solenóide)
- A mini campainha de 5V se conecta ao pino digital D5
O módulo do sensor de vibração possui três conexões de pinos: VCC, GND e D0.
- Arduino fornece o pino VCC com 5 V
- O pino GND se conecta ao terra do circuito comum
- O pino D0 se conecta ao pino digital D6 do Arduino
- O pino VIN do Arduino recebe 12 V de entrada, gerando assim 5 V usando seu regulador de tensão de 5 V integrado. Esses 5V são então fornecidos aos outros módulos.
Operação do circuito:
O funcionamento do circuito inicia quando ele é alimentado com 12 V. Inicialmente, o solenóide fica na posição travada e a luz vermelha acende para indicar que a porta está travada.
Para começar, abra o aplicativo Bluetooth em seu smartphone e emparelhe-o com o módulo HC05 (insira a senha padrão, 1234). Depois de concluído, o módulo HC05 pisca lentamente e está pronto para receber comandos.
Em seguida, envie o comando “ULCK” para destravar a porta a partir do aplicativo Bluetooth do seu smartphone. O módulo HC05 receberá este comando e o transmitirá serialmente ao Arduino através dos pinos Tx-Rx.
Ao receber o comando, o Arduino enviará a Lógica 1 para o pino D8, ligando o Relé 2. Isso ativa o solenóide e a porta destrava. Ao mesmo tempo, o Arduino envia:
- Lógica 1 ao pino D9, acendendo o LED verde, sinalizando que a porta está destravada
- Lógica 0 ao pino D10, apagando o LED vermelho (usado somente quando a porta está travada)
- Lógica 1 ao pino D5 por um segundo, indicando para o mini buzzer gerar um bipe longo, sinalizando que a porta está destravada
Para trancar a porta, envie o comando “LOCK”. O módulo HC05 receberá este comando e o passará para o Arduino. O Arduino então desliga o Relé 2 enviando o Logic 0 para o pino D8, que desativa o solenóide e trava a porta.
Arduino também envia:
- Lógica 1 ao pino D5 por meio segundo, o que gera um bipe curto da mini campainha, indicando que a porta está trancada. Apaga o verde liderado por
- Lógica 1 ao pino D10, acendendo o LED vermelho, sinalizando que a porta está travada
- Lógica 0 ao pino D9, apagando o LED verde (usado somente quando a porta está destravada)
Quando a porta está trancada e o sensor de vibração detecta qualquer tipo de choque, força ou vibração, ele fornece um sinal de alerta via Logic 1 para o Arduino. Uma vez recebido, o Arduino enviará a Lógica 1 para o pino D7, que liga o Relé 1, produzindo um alarme a partir da campainha grande de 12 V,
Este funcionamento do circuito funciona por causa do programa que é baixado no FLASH interno do ATMega328 do Arduino. O programa é escrito em linguagem C/C++ e compilado no software Arduino IDE.
O arquivo (código) do programa deve ser baixado (upload) na memória de programa de 32 KB (FLASH) do ATMega328.
Programa de software:
#include
SoftwareSerial BT_serial(11,12);
char recved_code(5);
char código_bloqueio(5) = “BLOQUEIO”;
char unlock_code(5) = “ULCK”;
int i=0,sirene_rly=7,buz=5;
int lock_rly=8,lock_led=10,unbloqueio_led=9;
int porta_vibr_sensor=6;
int lock_flag=0,unlock_flag=1;
configuração nula
{
// coloque seu código de configuração aqui, para executar uma vez:
BT_serial.begin(9600);
Serial.begin(9600);
pinMode(sirene_rly,SAÍDA);
pinMode(buz,SAÍDA);
pinMode(lock_led,SAÍDA);
pinMode(lock_rly,SAÍDA);
pinMode(unlock_led,SAÍDA);
pinMode(door_vibr_sensor,INPUT);
digitalWrite(lock_rly,LOW);
digitalWrite(desbloqueio_led,BAIXO);
digitalWrite(lock_led,1);
digitalWrite(buz,0);
digitalWrite(sirene_rly,LOW);
}
loop vazio
{
int porta_vib_sensor_stat,lock_sensor_stat;
porta_vib_sensor_stat = digitalRead(door_vibr_sensor);
if((door_vib_sensor_stat==0) && (lock_flag==1))
{
digitalWrite(sirene_rly,ALTO);
Serial.println(“tentativa de arrombar a porta”);
}
if(BT_serial.disponível )
{
recved_code(i) = BT_serial.read ;
Serial.print(recved_code(i));
eu++;
}
se(eu==4)
{
Serial.print(recved_code);
if(strcmp(lock_code,recved_code)==0)
{
digitalWrite(lock_rly,LOW);
digitalWrite(buz,1);
atraso(1000);
digitalWrite(buz,0);
lock_flag=1;
desbloquear_flag=0;
BT_serial.print(“Porta trancada”);
digitalWrite(lock_led,ALTO);
digitalWrite(desbloqueio_led,BAIXO);
}
if(strcmp(desbloqueio_código,recved_code)==0)
{
digitalWrite(lock_rly,ALTO);
digitalWrite(buz,1);
atraso(500);
digitalWrite(buz,0);
desbloquear_flag=1;
lock_flag=0;
BT_serial.print(“Porta destravada”);
digitalWrite(lock_led,BAIXO);
digitalWrite(unlock_led,ALTO);
}
eu=0;
}
}
Link de vídeo: