Índice:

Arduino High Tech Safe: 6 etapas
Arduino High Tech Safe: 6 etapas

Vídeo: Arduino High Tech Safe: 6 etapas

Vídeo: Arduino High Tech Safe: 6 etapas
Vídeo: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, Julho
Anonim
Arduino High Tech Safe
Arduino High Tech Safe

Este é o meu cofre de alta tecnologia Arduino. Você tem que escanear seu dedo, escanear seu cartão e, em seguida, inserir uma senha de 4 dígitos para destravar a gaveta. Este projeto não é recomendado para iniciantes porque é muito avançado. O código é longo, mas irei compartilhá-lo neste projeto. O custo é de cerca de US $ 75 se você construir o mesmo cofre que eu. Este projeto também pode levar de 1 a 3 dias para ser concluído. Então vamos começar!

Suprimentos

Para construir o mesmo cofre que o meu, você precisará de:

Arduino (Uno recomendado porque não tenho etapas para arduino mega ou nano. Mas você ainda pode usá-los)

tábua de pão

servo

fios de ligação

controle de video game

20 * 4 (você pode usar 16 * 4, mas terá que alterar o código)

scanner de impressão digital

scanner de cartão rfid mfrc522

um balde de legos

Etapa 1: Construindo uma Caixa

Construindo uma caixa
Construindo uma caixa

Primeiro você vai precisar de uma caixa para colocar seus eletrônicos. Você pode usar legos, uma caixa impressa em 3D ou até mesmo papelão! (Embora isso possa ser mais difícil) Não se esqueça de fazer furos para uma gaveta e seus eletrônicos. Se você estiver usando o scanner de cartão RFID, não será necessário fazer um furo para isso se as paredes forem finas. Os cartões ainda funcionam, mas você tem que colocar os chaveiros perto para que o senor do cartão RFID possa lê-los. Também deixe espaço para seu arduino e fios dentro. NOTA: Quando você construir a gaveta, deixe um buraco nela para que seu servo possa girar e travar a gaveta.

Etapa 2: Fiação

Fiação!
Fiação!

Esta etapa pode ser complicada porque você precisa conectar os fios no local exato ou a parte eletrônica não funcionará. Não tenho um diagrama de fiação, mas direi a vocês como cada um vai. A fiação é apenas para o arduino uno. Você terá que pesquisar por onde colocar os fios se estiver usando um arduino mega ou nano. Se você não estiver usando todos os elétrons que tenho, pode simplesmente pular essa fiação.

Scanner de impressão digital: fio verde: fio branco D2: fio preto D3: fio vermelho GND: 5V

Joystick: 5V = 3,3V GND = GND X = A2 Y = A3 Interruptor = D4

scanner de cartão rfid: 3,3V = 3,3V rst = D9 GND = GND miso = D12 mosi = D11 sck = D13 sda = D10

tela LCD: 5V = 5V GND = GND sda = A4 sck = A5

Servo: fio vermelho: 5V fio marrom: fio amarelo GND: D6

NOTA: NÃO CONECTE O SCANNER DE CARTÃO RFID EM 5V. SE VOCÊ FOR, VAI QUEBRAR !!!

Você pode estar se perguntando por que eu disse para ligar a alimentação do joystick a 3,3 V quando diz 5 V na lateral. Isso porque o servo, a tela e o scanner de impressão digital precisam de 5V. Se você adicionar o joystick a isso, a eletrônica pode não funcionar porque tudo precisa de 5V. O joystick ainda funcionará com 3.3V. É apenas o valor máximo que não 1023, será ~ 670.

Etapa 3: download de bibliotecas

Neste projeto, você precisará de 6 bibliotecas para usar toda a eletrônica. 1 para o servo, 1 para o sensor de impressão digital, 2 para scanner de cartão RFID e 2 para a tela. O joystick não precisa de uma biblioteca. Agora, o que é uma biblioteca? É basicamente um arquivo que contém muitos códigos que você pode usar em seu projeto com comandos simples. Para obter essas bibliotecas, você precisa ir a um lugar chamado GitHub. Se você sabe como baixar e descompactar bibliotecas, basta acessar os links abaixo para fazer os downloads. Se você não souber como, pode ir para meu instructable que fala sobre como baixar uma biblioteca na etapa 3:

ou pesquise um vídeo do youtube sobre como baixar uma biblioteca do Arduino do GitHub

LINKS PARA LIRÁRIOS:

Servo

sensor de impressão digital:

spi

sensor de cartão rfid

biblioteca de tela 1

biblioteca de tela 2

Etapa 4: configuração do sensor de impressão digital e do sensor do cartão RFID

Esta etapa fala sobre como configurar o sensor de impressão digital e o sensor do cartão RFID. A menos que você já tenha usado seu sensor de impressão digital, será necessário mostrar a ele a aparência de sua impressão digital para que ele possa salvá-la na memória. Mesmo que já o tenha usado antes, provavelmente ainda deve seguir este passo. Vou te dizer como fazer isso brevemente, mas se não fizer sentido vá para o mesmo link instrutível na última etapa. Isso vai muito bem. Básico, basta abrir o ide arduino. Vá para arquivo> exemplos> sensor de impressão digital adafruit> inscrever-se. Faça upload do código para o arduino, abra o monitor serial e siga as etapas indicadas. Quando diz para você dar um número. Digite 1 #.

Agora, para o cartão RFID, esta etapa é muito fácil. Abra o ide arduino. Vá para arquivo> exemplos> mfrc522> ler dados pessoais. Faça upload para o arduino e abra o monitor serial. Digitalize o cartão ou chaveiro que você deseja usar que veio com o seu sensor. Em seguida, ele lhe dará algumas informações. Procure o ID do cartão que terá 4 conjuntos de 2 dígitos. Algo assim: AB 45 2Y 45, mas seu código será diferente. Escreva isso em um pedaço de papel. Você precisará dele novamente mais tarde. É isso para esta etapa.

Etapa 5: O CÓDIGO

Esta será a etapa mais difícil para a maioria de vocês, mas é muito simples. Primeiro copie e cole o código abaixo no ide arduino. Em segundo lugar, edite as 2 seções onde diz EDIT CODE. 1 seção é para o scanner de cartão, 1 é para o joystick. Essas etapas não podem ser ignoradas. Uma vez feito isso, carregue o código para o arduino!

#include #include Fingerprint.h>

#incluir

#incluir

#incluir

#incluir

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVO);

# define RST_PIN 9

# define SS_PIN 10

MFRC522 mfrc522 (SS_PIN, RST_PIN);

SoftwareSerial mySerial (2, 3);

Adafruit_Fingerprint finger = Adafruit_Fingerprint (& mySerial);

Servo servo;

char d1;

char d2;

char d3;

char d4;

void setup () {

servo.attach (6);

servo.write (170);

lcd.begin (20, 4);

Serial.begin (9600);

while (! Serial);

SPI.begin ();

mfrc522. PCD_Init ();

atraso (4);

mfrc522. PCD_DumpVersionToSerial ();

atraso (100);

Serial.println ("\ n / nTeste de detecção de dedo de fruta");

finger.begin (57600);

atraso (5);

if (finger.verifyPassword ()) {

Serial.println ("Todos os sistemas funcionando");

lcd.clear ();

lcd.setCursor (1, 0);

lcd.print ("Por favor, digitalize o dedo");

} outro {

Serial.println ("ERRO: Sensor de impressão digital não encontrado!");

lcd.setCursor (0, 0);

lcd.print ("ERRO: Impressão digital");

lcd.setCursor (1, 1);

lcd.print ("sensor não encontrado!");

enquanto (1) {atraso (1); }

}

finger.getTemplateCount ();

Serial.print ("Sensor contém"); Serial.print (finger.templateCount); Serial.println ("modelos"); Serial.println ("Aguardando dedo válido …"); }

void (* resetFunc) (void) = 0;

void loop () {

getFingerprintIDez ();

atraso (50);

}

uint8_t getFingerprintID () {

uint8_t p = finger.getImage ();

switch (p) {

case FINGERPRINT_OK:

Serial.println ("Imagem obtida");

pausa;

case FINGERPRINT_NOFINGER:

Serial.println ("Nenhum dedo detectado");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Erro de comunicação");

return p;

case FINGERPRINT_IMAGEFAIL:

Serial.println ("Erro de imagem");

return p;

predefinição:

Serial.println ("Erro desconhecido");

return p;

}

p = dedo.imagem2Tz ();

switch (p) {

case FINGERPRINT_OK:

Serial.println ("Imagem convertida");

pausa;

case FINGERPRINT_IMAGEMESS:

Serial.println ("Imagem muito confusa");

return p;

case FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("Erro de comunicação");

return p;

case FINGERPRINT_FEATUREFAIL:

Serial.println ("Não foi possível encontrar recursos de impressão digital");

return p;

case FINGERPRINT_INVALIDIMAGE:

Serial.println ("Não foi possível encontrar recursos de impressão digital");

return p;

predefinição:

Serial.println ("Erro desconhecido");

return p;

}

p = finger.fingerFastSearch ();

if (p == FINGERPRINT_OK) {

Serial.println ("Encontrou uma correspondência de impressão!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {Serial.println ("Erro de comunicação");

return p;

} else if (p == FINGERPRINT_NOTFOUND) {

Serial.println ("Não encontrou correspondência");

return p;

} outro {

Serial.println ("Erro desconhecido");

return p;

}

Serial.print ("Nº ID encontrado"); Serial.print (finger.fingerID);

Serial.print ("com a confiança de"); Serial.println (finger.confidence);

return finger.fingerID;

}

int getFingerprintIDez () {

uint8_t p = finger.getImage ();

if (p! = FINGERPRINT_OK) retorna -1;

p = dedo.imagem2Tz ();

if (p! = FINGERPRINT_OK) retorna -1;

p = finger.fingerFastSearch ();

if (p! = FINGERPRINT_OK) retorna -1;

Serial.print ("Nº ID encontrado"); Serial.print (finger.fingerID);

Serial.print ("com a confiança de"); Serial.println (finger.confidence);

if (finger.fingerID == 1) {

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("Dedo aceito");

lcd.setCursor (2, 0);

lcd.print ("agora digitalize o cartão …");

lcd.setCursor (0, 3);

lcd.print ("===================>");

while (! mfrc522. PICC_IsNewCardPresent ());

enquanto (! mfrc522. PICC_ReadCardSerial ());

if (mfrc522.uid.uidByte [0] == 0x92 && // ============================ EDITAR CÓDIGO ======== ==============

mfrc522.uid.uidByte [1] == 0xAB && // Pegue aquele pedaço de papel com o ID nele, havia 4 conjuntos de 2 dígitos

mfrc522.uid.uidByte [2] == 0x90 && // Olhe pelo código, veja onde diz 0x92, 0xAB, 0x90, 0x1c? Entre em cada

mfrc522.uid.uidByte [3] == 0x1C) {// da seção de 2 dígitos após o 0x. Por exemplo, a seção do ID diz

lcd.clear (); // 3E, então insira o 3E após o 0x para fazer 0x3E. Faça isso para cada seção

lcd.setCursor (3, 0);

lcd.print ("Finalmente, digite");

lcd.setCursor (1, 1);

lcd.print ("senha do joystick");

while (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.setCursor (8, 4);

lcd.print ("*"); if (analogRead (A2) <= 100) {

d1 = L;

}

if (analogRead (A2)> = 670) {

d1 = R;

}

if (analogRead (A3) <= 100) {

d1 = U;

}

if (analogRead (A3)> = 670) {

d1 = D;

}

atraso (500);

enquanto (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d2 = L;

}

if (analogRead (A2)> = 670) {

d2 = R;

}

if (analogRead (A3) <= 100) {

d2 = U;

}

if (analogRead (A3)> = 670) {

d2 = D;

}

atraso (500);

enquanto (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d3 = L;

}

if (analogRead (A2)> = 670) {

d3 = R;

}

if (analogRead (A3) <= 100) {

d3 = U;

}

if (analogRead (A3)> = 670) {

d3 = D;

}

atraso (500);

while (analogRead (A2)> = 10 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670) {

}

lcd.print ("*");

if (analogRead (A2) <= 100) {

d4 = L;

}

if (analogRead (A2)> = 670) {

d4 = R;

}

if (analogRead (A3) <= 100) {

d4 = U;

}

if (analogRead (A3)> = 670) {

d4 = D;

}

atraso (500);

if (d1 == L && d2 == U && d3 == L && d4 == R) {// ================= EDITAR CÓDIGO ====== ================

lcd.clear (); // Esta seção é onde você pode editar a senha com o joystick

lcd.setCursor (2, 0); // a senha é definida para esquerda, esquerda para cima, direita. Se você quiser mudar

lcd.print ("Acesso concedido!"); // coloque um L para esquerda, R para direita, U para cima ou D para baixo em qualquer um dos

lcd.setCursor (2, 1); // 4 seções com uma letra após os sinais ==.

lcd.print ("Gaveta desbloqueada.");

lcd.setCursor (2, 2);

lcd.print ("Quando terminar, mova");

lcd.setCursor (1, 3);

lcd.print ("joystick para travar novamente");

servo.write (90);

enquanto (analogRead (A2)> = 100 &&

analogRead (A2) <= 670 &&

analogRead (A3)> = 100 &&

analogRead (A3) <= 670);

servo.write (170);

lcd.setCursor (3, 0);

lcd.print ("Gaveta travada");

atraso (3000);

resetFunc ();

}outro{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACESSO NEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando o sistema…");

atraso (3000);

resetFunc ();

}

}outro{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACESSO NEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando o sistema…");

atraso (3000);

resetFunc ();

}

}outro{

lcd.clear ();

lcd.setCursor (2, 0);

lcd.print ("ACESSO NEGADO !!!");

lcd.setCursor (0, 2);

lcd.print ("Reiniciando o sistema…");

atraso (3000);

resetFunc ();

}

return finger.fingerID; }

Etapa 6: Concluir

Uma coisa que esqueci de dizer, bem, 2 coisas é que eu construí isso antes de tirar as fotos, então não pude mostrar como construí a caixa. A outra é que é recomendado aparafusar a peça servo na parte que gira. Do contrário, alguém pode puxar a gaveta enquanto ela está trancada e puxar a peça. Mas antes de parafusá-lo, encontre o local certo onde colocá-lo, porque o servo gira até um certo grau. Ou você pode apenas alterá-lo no código. Se alguns dos componentes eletrônicos estão agindo de forma estranha, você pode querer encontrar uma maneira diferente de obter 5 V para alguns deles. Percebi que quando meu scanner de impressão digital piscava, a tela piscava levemente com ele e o servo fazia barulho. Quando o servo se movia, a tela escurecia. Espero que tenham gostado do projeto! Se você tiver alguma dúvida, deixe-os nos comentários. Não estou muito no instructables, mas responderei assim que puder!

Recomendado: