Fechadura eletrônica para arduino uno. Bloqueio inteligente automático e Arduino

Este projeto é modular, ou seja, você pode conectar/desconectar diferentes elementos e obter diferentes funcionalidades. As imagens acima mostram a opção com todas as funcionalidades, a saber:

  • Mecanismo de tranca... Serve para ABRIR e FECHAR a porta. Este projeto abrange o uso de três mecanismos diferentes:
    • Servo. Há grandes, há pequenos. Muito compacto, e com um parafuso pesado é uma ótima opção
    • Acionamento elétrico da fechadura da porta do carro. Uma coisa grande e poderosa, mas come apenas correntes insanas
    • Trava solenóide. Uma boa opção, pois bate em si

    Nas configurações do firmware, você pode escolher qualquer um dos três tipos (configuração lock_type)

  • Botão dentro... Serve para ABRIR e FECHAR a porta por dentro. Pode ser colocado na maçaneta da porta (lado da palma ou do dedo), na própria porta ou no batente
  • Botão fora... Serve para FECHAR a porta, bem como para DESPERTAR da economia de energia. Pode ser colocado na maçaneta da porta (lado da palma ou do dedo), na própria porta ou no batente
  • Parada final para fechar a porta. Serve para fechar automaticamente a fechadura quando a porta é fechada. Eles podem ser:
    • Botão de tato
    • Sensor Hall + imã na própria porta
    • Interruptor Reed + ímã na própria porta
  • Segredo botão de reset de acesso... Serve para redefinir a senha / inserir uma nova senha / memorizar uma nova chave / combinação, etc. Pode estar escondido em algum lugar no caso
  • Diodo emissor de luz para indicar trabalho. LED RGB, cores vermelhas e verdes são usadas (quando misturadas, elas dão amarelo):
    • Acende em verde - a fechadura está ABERTA. Queima para não esquecer de fechar a porta
    • Amarelo sólido - o sistema acordou e está aguardando a entrada da senha
    • Piscando em vermelho - a bateria está descarregada

Qualquer um destes elementos pode ser excluído do sistema:

  • Nós removemos o interruptor final. No firmware nas configurações, também desligamos (definindo tail_button). Agora para fechar a fechadura, você precisa pressionar o botão
  • Nós removemos o botão externo. No firmware nas configurações, também o desativamos (configuração wake_button). Agora o sistema não precisa ser acordado, ele acorda sozinho (o consumo de energia é um pouco maior). E também não temos mais um botão de fechamento na frente da porta e precisamos de um interruptor de limite. Ou o bloqueio é o diabo
  • Nós removemos o botão interno. Esta opção é adequada para armários e cofres. Você não precisa alterar nada nas configurações
  • Nós removemos o LED. Você não precisa alterar nada nas configurações
  • O botão de redefinição de acesso pode ser dessoldado após o primeiro uso ou você pode reescrever o código por conta própria
  • Porta fechada, pressionada FORA - acordar, aguardar senha / etiqueta RFID / chave eletrônica / impressão digital
  • A porta está fechada, o sistema despertou, esperando que a senha seja digitada. O tempo pode ser ajustado (configuração hora de dormir)
  • A porta está fechada, uma senha/tag/chave foi inserida, etc. - abrir
  • Porta fechada, pressionada DENTRO - aberta
  • Porta aberta, pressionada OUT - fechar
  • Porta aberta, pressionada DENTRO - fechar
  • A porta está aberta, o END é pressionado - feche

A trava fornece a operação da bateria no modo de economia de baixa energia (ligar desligar: configuração dormir_ativar), a saber:

  • Acorde a cada poucos segundos, siga o EVENTO (opcional se não houver botão externo. Você pode habilitá-lo na configuração wake_button)
  • A cada poucos minutos, monitore a tensão de Akum (configuração de ligar / desligar bateria_monitor)
  • Se Akum estiver descarregado (a tensão é definida na configuração bat_low):
    • abra a porta (opcional, pode ser configurado no firmware open_bat_low)
    • proibir mais abertura e fechamento
    • quando os botões são pressionados, o LED vermelho pisca
    • pare de monitorar o EVENTO (ou seja, digite a senha/tag, etc.)

Quando o sistema estiver ativado, pressione o botão de alteração de senha (botão oculto). Nós caímos em modo de alteração de senha:
Digite a senha dos números ( MÁXIMO 10 DÍGITOS!!!)

  • Quando você pressiona *, a senha é salva na memória e o sistema sai da alteração da senha
  • Quando você pressiona #, a senha é redefinida (você pode digitá-la novamente)
  • Se você não pressionar nada por 10 segundos, sairemos automaticamente do modo de alteração de senha, a senha permanecerá antiga

Quando o sistema está acordado (acordado por botões ou a suspensão está desabilitada), pressione * para entrar no modo de entrada de senha
Se o sistema dormir e acordar periodicamente para verificar o EVENTO, pressione * e segure até que o LED vermelho acenda
Modo de entrada de senha:

  • O processamento de senha é feito de forma que a senha correta seja contada apenas quando a sequência correta de números for digitada, ou seja, se a senha for 345, você poderá inserir qualquer número até que a sequência 345 apareça, ou seja, 30984570345 abrirá a fechadura quando terminar em 345.
  • Se a senha for digitada corretamente, a porta se abrirá
  • Se você não pressionar nada, após 10 segundos o sistema retornará ao modo normal (standby)
  • Se você pressionar #, sairemos imediatamente do modo de entrada de senha
  • Se você pressionar o botão secreto para alterar a senha no modo de entrada de senha, também sairemos dele

Eu, como a maioria que o tem, associo DACHA às palavras: descanso, churrasco, conforto e outros movimentos agradáveis ​​ao espírito e ao corpo, mas também há um lado negativo: jardim, escavação, reparos, construção, etc.

Há 10 anos, minha família e eu tentamos melhorar e criar o máximo de conforto em nossa casa de campo. Construímos, reparamos, etc. Uma casa, um celeiro, uma casa de banhos... ...e finalmente chegou a uma cerca de rua, um portão e um portão. Fazer isso é consciência, orçamento e conveniência.

Após discutir alguns detalhes, foi decidido que o portão deveria ser automático e que o portão deveria ter algumas propriedades do ACS. Com o portão, o problema foi resolvido comprando um conjunto de automação (drive, trilho, controle remoto, etc.), e com o portão, foi necessário resolver alguns problemas, sobre eles abaixo.

As tarefas eram as seguintes:

  1. A fechadura deveria funcionar em conjunto com um vídeo porteiro previamente instalado (abra o portão sem sair de casa)
  2. Ser capaz de abrir a porta com chave normal e sem chave da rua e do quintal.
  3. Manterá dentro do orçamento restante até 5000 rublos.

As buscas em runet apresentaram a seguinte faixa de preço de 7000 ao infinito. A compra de uma solução pronta desapareceu e foi concebida uma alternativa com amplas oportunidades, nomeadamente, cortar a porta você mesmo!

Após alguns cálculos e cálculos, decidiu-se comprar uma fechadura eletromecânica por cerca de 2000 rublos, um teclado à prova d'água por 350 rublos e um MK que dirigirá aqui. Como havia várias nano placas Arduino, relés e peças soltas e alguns fios em estoque, a diferença entre o custo do kit finalizado foi de mais de 4000 tr. Para mim, um grande bônus para a carteira e autodesenvolvimento.

Bem, agora, das palavras à ação:

Depois de comprar todos os componentes necessários, ele começou a serrar.

Diagrama de conexão do teclado

Indicação LED adicional (branco, verde, vermelho) do painel com os sinais do teclado (entrar, senha correta abrir a porta, recusado).

  • pino 9 amarelo
  • pino 10 verde
  • pino 11 vermelho

O painel de plexiglass (treliça) foi cortado em uma caixa de chocolates e um sorriso pelos vizinhos do escritório. Mas o menor cortador acabou sendo um pouco mais gordo, tive que trabalhar com uma lima.

Bem, aqui está o fim de semana, mudei-me para a dacha.

Para abrir uma fechadura eletromecânica, você precisa de 12 volts. A fonte de alimentação do MK era de 5 V., a solução foi colocar um conversor dc-dc step-up do céu para a fechadura. Comecei a verificar tudo, funciona, mas quando a tensão foi aplicada ao solenóide da fechadura, o dunya reiniciou, curto-circuito na fonte de alimentação. Além disso, depois de ligar a placa exterior do videoporteiro à fechadura, ao pressionar o botão para abrir a porta, nada aconteceu, uma pequena corrente à fechadura. Puxar novos fios não é uma opção, eles já estavam concretados na saída da casa. Resolvi adicionar outro relé para o painel e colocar uma fonte adicional de 12 V. para o castelo. Após analisar/coletar, tudo funcionou, o MK parou de reiniciar. Escondi tudo em uma caixa de junção à prova d'água, escondi os fios, cola, silicone e pronto!

A lição de hoje sobre como usar um leitor RFID com um Arduino para criar um sistema de travamento simples, em palavras simples - uma trava RFID.

RFID (Inglês Radio Frequency IDentification) é um método de identificação automática de objetos, no qual os dados armazenados nos chamados transponders, ou tags RFID, são lidos ou escritos por meio de sinais de rádio. Qualquer sistema RFID consiste em um leitor (leitor, leitor ou interrogador) e um transponder (também conhecido como tag RFID, às vezes o termo tag RFID também é usado).

Este tutorial usará uma etiqueta RFID de um Arduino. O dispositivo lê o identificador exclusivo (UID) de cada tag RFID que colocamos ao lado do leitor e o exibe no display OLED. Se o UID do tag for igual ao valor predefinido que está armazenado na memória do Arduino, então veremos a mensagem “Unlocked” no display. Se o identificador único não for igual ao valor predefinido, a mensagem "Desbloqueado" não aparecerá - veja a foto abaixo.

A fechadura está fechada

A fechadura está aberta

Detalhes necessários para criar este projeto:

  • Leitor RFID RC522
  • Tela OLED
  • Tábua de pão
  • Fios

Detalhes adicionais:

  • Bateria (powerbank)

O custo total dos componentes do projeto foi de aproximadamente US$ 15.

Passo 2: Leitor RFID RC522

Cada tag RFID tem um pequeno chip (cartão branco na foto). Se você apontar a lanterna para este cartão RFID, poderá ver um pequeno chip e uma bobina que o envolve. Este chip não possui bateria para gerar energia. Ele recebe energia do leitor sem fio usando esta grande bobina. Um cartão RFID como este pode ser lido a até 20 mm de distância.

O mesmo chip existe nas etiquetas do chaveiro RFID.

Cada tag RFID possui um número único que a identifica. Este é o UID que é mostrado no display OLED. Exceto por este UID, cada tag pode armazenar dados. Este tipo de cartão pode armazenar até 1.000 dados. Impressionante, não é? Este recurso não será usado hoje. Hoje, tudo o que interessa é a identificação de um determinado cartão pelo seu UID. O custo do leitor RFID e desses dois cartões RFID gira em torno de US$ 4.

Etapa 3: tela OLED

Este tutorial usa um monitor OLED I2C de 0,96 "128x64.

Este é um display muito bom para uso com Arduino. É um display OLED e isso significa que tem baixo consumo de energia. O consumo de energia desta tela é de cerca de 10-20mA e depende do número de pixels.

A tela tem uma resolução de 128 por 64 pixels e é minúscula. Existem duas opções de exibição. Um deles é monocromático e o outro, como o usado no tutorial, pode apresentar duas cores: amarelo e azul. A parte superior da tela só pode ser amarela e a parte inferior azul.

Este display OLED é muito brilhante e possui uma ótima e muito boa biblioteca que a Adafruit desenvolveu para este display. Além disso, o display usa uma interface I2C, portanto, conectar-se ao Arduino é incrivelmente fácil.

Você só precisa conectar dois fios, excluindo Vcc e GND. Se você é novo no Arduino e deseja usar um display simples e barato em seu projeto, comece aqui.

Etapa 4: conecte todos os detalhes

A comunicação com a placa Arduino Uno é muito simples. Primeiro, conecte a alimentação ao leitor e ao monitor.

Tenha cuidado, o leitor RFID deve estar conectado à saída de 3,3V do Arduino Uno ou será corrompido.

Como o display também pode funcionar em 3,3V, conectamos o VCC de ambos os módulos ao trilho positivo da placa de ensaio. Este barramento é então conectado à saída de 3,3 V do Arduino Uno. Em seguida, conectamos os dois aterramentos (GND) ao barramento de aterramento da placa de ensaio. Em seguida, conectamos o barramento GND da placa de ensaio ao Arduino GND.

Tela OLED → Arduino

SCL → Pino Analógico 5

SDA → Pino Analógico 4

Leitor RFID → Arduino

RST → Pino Digital 9

IRQ → Não conectado

MISO → Pino Digital 12

MOSI → Pino Digital 11

SCK → Pino Digital 13

SDA → Pino Digital 10

O módulo leitor RFID usa a interface SPI para se comunicar com o Arduino. Portanto, vamos usar os pinos SPI de hardware do Arduino UNO.

O pino RST vai para o pino digital 9. O pino IRQ permanece desconectado. O pino MISO vai para o pino digital 12. O pino MOSI vai para o pino digital 11. O pino SCK vai para o pino digital 13 e, finalmente, o pino SDA vai para o pino digital 10. É isso.

Leitor RFID conectado. Agora precisamos conectar o display OLED ao Arduino usando a interface I2C. Assim o pino SCL do display vai para o pino analógico do Pin 5 e o SDA do display para o pino analógico 4. Se agora ligarmos o projeto e colocarmos o cartão RFID próximo ao leitor, podemos ver que o projeto está trabalhando bem.

Etapa 5: código do projeto

Para que o código do projeto seja compilado, precisamos incluir algumas bibliotecas. Em primeiro lugar, precisamos da biblioteca MFRC522 Rfid.

Para instalá-lo, acesse Sketch -> Incluir bibliotecas -> Gerenciar bibliotecas(Gestão da Biblioteca). Encontre o MFRC522 e instale-o.

Também precisamos da biblioteca Adafruit SSD1306 e da biblioteca Adafruit GFX para mapeamento.

Instale as duas bibliotecas. A biblioteca Adafruit SSD1306 precisa de uma pequena modificação. Ir para a pasta Arduino -> Bibliotecas, abra a pasta Adafruit SSD1306 e edite a biblioteca Adafruit_SSD1306.h... Comente a linha 70 e descomente a linha 69 porque a tela tem uma resolução de 128x64.

Primeiro, declaramos o valor da etiqueta RFID que o Arduino precisa reconhecer. Este é um array de inteiros:

Código Int = (69.141.8.136); // UID

Em seguida, inicializamos o leitor RFID e exibimos:

Rfid.PCD_Init(); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

Depois disso, na função loop, verificamos a tag no leitor a cada 100ms.

Se houver uma tag no leitor, lemos seu UID e o imprimimos no display. Em seguida, comparamos o UID da tag que acabamos de ler com o valor armazenado na variável de código. Se os valores forem iguais, imprimimos a mensagem UNLOCK, caso contrário não exibiremos esta mensagem.

If (match) (Serial.println ("\ nConheço este cartão!"); PrintUnlockMessage ();) else (Serial.println ("\ nUnknown Card");)

Claro, você pode alterar esse código para armazenar mais de 1 valor UID para que mais tags RFID sejam reconhecidas pelo projeto. Este é apenas um exemplo.

Código do projeto:

#incluir #incluir #incluir #incluir #define OLED_RESET 4 Adafruit_SSD1306 display (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid (SS_PIN, RST_PIN); // Instância da classe MFRC522 :: MIFARE_Key key; código int = (69.141.8.136); // Este é o UID armazenado int codeRead = 0; String uidString; void setup () (Serial.begin (9600); SPI.begin (); // Inicializa o barramento SPI rfid.PCD_Init (); // Inicia o MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inicializa com o endereço I2C 0x3D (para o 128x64) // Limpa o buffer.display.clearDisplay(); display.display(); display.setTextColor (WHITE); // ou BLACK); display.setTextSize (2); display.setCursor (10,0); display.print ("Bloqueio RFID"); display.display(); ) void loop () (if (rfid.PICC_IsNewCardPresent()) (readRFID();) delay (100);) void readRFID() (rfid.PICC_ReadCardSerial()); Serial.print (F ("\nPICC type:") ); MFRC522 :: PICC_Type piccType = rfid.PICC_GetType (rfid.uid.sak); Serial.println (rfid.PICC_GetTypeName (piccType)); // Verifique é o PICC do tipo MIFARE clássico! = PICMType22 && piccType! = MFRC522 : : PICC_TYPE_MIFARE_1K && piccType! = MFRC522 :: PICC_TYPE_MIFARE_4K) (Serial.println (F ("Sua tag não é do tipo MIFARE Classic.")); return;) clearUID(); return;) clearUID(); PICC "s digitalizados" UID:"); printDec (rfid.uid.uidByte, rfid.uid.size); uidString = String (rfid.uid.uidByte) + "" + String (rfid.uid.uidByte) + "" + String (rfid. uid.uidByte) + "" + String (rfid.uid.uidByte); printUID(); int i = 0; boolean match = true; while (i

Passo 6: o resultado final

Como você pode ver na lição - por um pouco de dinheiro, você pode adicionar um leitor RFID aos seus projetos. Você pode facilmente criar um sistema de segurança usando este leitor ou criar projetos mais interessantes, por exemplo, para que os dados de um disco USB sejam lidos somente após o desbloqueio.

O apresentador do canal do youtube “AlexGyver” foi convidado a fazer uma fechadura eletrônica com as próprias mãos. Bem vindo ao ciclo de vídeos sobre fechaduras eletrônicas no arduino. Em termos gerais, o assistente explicará a ideia.

Existem várias opções para criar um sistema de fechadura eletrônica. Na maioria das vezes eles são usados ​​para trancar portas e gavetas, armários. E também para a criação de esconderijos e cofres secretos. Portanto, você precisa fazer um modelo que seja conveniente para trabalhar e possa mostrar de forma clara e detalhada a estrutura do sistema por dentro e por fora. Portanto, decidi fazer uma moldura com uma porta. Para isso você precisa de uma barra quadrada 30 x 30. Contraplacado 10mm. Dobradiças de porta. Inicialmente, eu queria fazer uma caixa de madeira compensada, mas lembrei que tudo na sala estava cheio de peças de reposição. Não há onde colocar essa caixa. Portanto, um layout será feito. Se alguém quiser colocar uma fechadura eletrônica, olhando para o layout, você pode repetir tudo facilmente.

Tudo o que você precisa para um castelo pode ser encontrado nesta loja chinesa.

O objetivo é desenvolver os circuitos e firmwares mais eficientes para fechaduras eletrônicas. Você poderá usar esses resultados para instalar esses sistemas em suas portas, gavetas, armários e esconderijos.

A porta está pronta. Agora você precisa descobrir como abrir e fechar eletronicamente. Para esses fins, uma poderosa trava solenóide da aliexpress é adequada (link para a loja acima). Se você aplicar tensão aos terminais, ele abrirá. A resistência da bobina é de quase 12 ohms, o que significa que em uma tensão de 12 volts, a bobina consumirá cerca de 1 ampere. Uma bateria de lítio e um módulo de reforço podem lidar com essa tarefa. Ajustamos à voltagem apropriada. Embora um pouco mais seja possível. A trava é presa ao interior da porta a uma distância para que não fique presa na borda e possa fechar. A trava deve ser uma contrapartida na forma de uma caixa de metal. É inconveniente e errado usá-lo sem ele. Teremos que dar um passo, pelo menos para criar a aparência de trabalho normal.

No modo inativo, a trava abre normalmente, ou seja, se houver maçaneta na porta, dê um impulso, abra a porta pela maçaneta. Mas, se você começar, esse método não é mais adequado. O conversor boost não pode lidar com a carga. Para abrir a porta com mola, você terá que usar uma bateria maior e um conversor mais potente. Ou a alimentação da rede e martelo na autonomia do sistema. Há pedaços de grandes dimensões nas lojas chinesas. Eles são adequados para caixas. A energia pode ser fornecida usando um relé ou um transistor mosfet, ou um interruptor no mesmo transistor. Uma opção mais interessante e menos dispendiosa é um servo acionamento conectado a uma biela com qualquer elemento de travamento - uma trava ou uma válvula mais séria. Ele também pode precisar de um pedaço de raio de aço que funcione como uma biela. Tal sistema não precisa de muita corrente. Mas ocupa mais espaço e uma lógica de controle mais astuta.

Existem dois tipos de servos. Pequeno, fraco e poderoso, com o qual você pode empurrar com segurança os orifícios dos pinos de metal sérios. Ambas as opções mostradas funcionam em portas e gavetas. Você terá que mexer na caixa, fazendo um buraco na parede deslizante.

Segunda parte

Imagine uma fechadura de porta operada por chave RF.

A fechadura funciona assim: Trouxeram a NOSSA chave (RFID-tag) - a fechadura fechou, trouxeram a chave novamente - a fechadura abriu. Para visualizar o funcionamento da fechadura, são utilizados seis LEDs de duas cores (régua). Ao fechar, uma luz vermelha passa, ao abrir, uma verde. Se você trouxer a chave de ALGUÉM, os LEDs vermelhos piscarão.

Como atuador, decidi usar o acionamento do travamento central do carro. Você pode comprar um novo, pode usar, a diferença de preço não é grande, então usei um novo, é mais confiável. A haste de acionamento é conectada à trava. A espagnolette ainda é soviética, forte. E eu não preciso de um poderoso "anti-vandalismo".

A "máquina" é controlada por dois fios. Uma polaridade estende a haste, a polaridade reversa retrai a haste. Em 12 volts, a corrente é de 6 amperes, muito ...
Não há interruptores de limite na "máquina".

Decorrente do fato de que o circuito da fechadura (como concebido) tem uma alimentação garantida, uma bateria de 12 volts, para garantir o funcionamento da fechadura, no caso de uma perda de ~ 220. Desenvolveu um esquema de controle de ponte para a "máquina". Uma característica especial do circuito é sua não linearidade, que garante uma operação confiável do mecanismo de trava e, ao mesmo tempo - um modo de operação suave da "máquina" e dos transistores principais.

No diagrama (acima), o ombro "Fechar" é destacado em vermelho e o ombro "Aberto" é destacado em verde. Os ombros são alimentados separadamente, através de resistores (localizados na fonte de alimentação). Separação de alimentação dos braços da ponte, introduzida para eliminar falsos alarmes.

Explicação: Através de resistores de 33 ohms (no diagrama de alimentação), uma tensão de 12 volts carrega os capacitores (2000 microfarads, em cada braço). Quando a tensão de controle vem do controlador Arduino_ProMini- 168 à entrada "Fechar" (ou similarmente a "Abrir"), através do optoacoplador PVT322 - o braço de chave correspondente se abre. Neste caso, acontece o seguinte: No momento da abertura das chaves, a energia dos capacitores "puxa" poderosamente o motor da "máquina". À medida que os capacitores são descarregados (isso acontece rapidamente), o motor do "carro" é alimentado por uma corrente limitada por resistores (33 Ohm). Devido a isso, no final do processo de "fechamento" - "abertura" da fechadura, a haste se move lentamente.

Esta maneira de controlar o motor é ideal.

Circuito de alimentação do transformador. Em geral, o circuito de bloqueio é alimentado por uma bateria de 12 volts, 2,8 -A / H. E o circuito de alimentação mantém a bateria em um nível nominal. O LED de rede indica a operação normal da fonte de alimentação.

Todos os diodos são 1N4007 (esqueci de indicar no diagrama, mas a pessoa fez a pergunta - quais?).

(1) limitador de sobrecorrente montado. Resistor R 1 o limite superior de corrente é definido em 300 mA.
No estabilizador integrado LM317 (2) regulador de tensão montado. A tensão de estabilização é ajustada por um resistorR 2 ... A voltagem da bateria deve ser de 13,7 volts.

A tensão da bateria é fornecida em três pontos.
Através de resistores (33-Ohm cada) em (X), (Y) - alimentação dos braços das chaves do "motorista" do motor do "carro".

Eu coleciono a maioria dos meus dispositivos do que veio à mão. Este projeto não é exceção. Como corpo eu uso um corpo :) do reator eletrônico:

Os LEDs No.-2 ... No.-7 são de duas cores. Eles estão dispostos em uma linha. Eles são usados ​​para visualizar os processos de "abertura" e "fechamento" da fechadura. Embelezamento.