Índice:
- Suprimentos
- Etapa 1: Construindo uma Caixa
- Etapa 2: Fiação
- Etapa 3: download de bibliotecas
- Etapa 4: configuração do sensor de impressão digital e do sensor do cartão RFID
- Etapa 5: O CÓDIGO
- Etapa 6: Concluir
Vídeo: Arduino High Tech Safe: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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
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
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:
Corona Safe: Torneira de economia de água automática: 6 etapas
Corona Safe: Torneira de economia de água automática: Todos nós temos que lavar as mãos de vez em quando para nos livrarmos do vírus e das bactérias, especialmente para o vírus Corona, precisamos lavar as mãos por 20 segundos para nos livrarmos completamente dele. Além disso, o dispensador de sabão ou o botão da torneira podem não ser necessariamente higiênicos ou c
B-Safe, o cofre portátil: 8 etapas (com fotos)
B-Safe, o cofre portátil: *** 4 de setembro de 2019: Eu carreguei um novo arquivo 3D da própria caixa. Parecia que minha fechadura tinha 10 mm de altura demais para um bom fechamento *** O problemaImagine isto: Você acorda uma manhã e o tempo está muito bom. Você quer ir à praia. Porque você não
RFID Bank Safe: 3 etapas
RFID Bank Safe: RFID é a identificação por radiofrequência. Um cofre de banco é um cofre para objetos de valor. Juntar dois torna um banco ainda mais seguro. Veja como construir um com os componentes do Arduino e um pouco de trabalho de garagem
Arduino Key Safe: 4 etapas
Arduino Key Safe: ideias de: https://www.instructables.com/id/Key-Safe/Sou uma pessoa que sempre perdia minhas coisas sem motivo. Eu deixo essa chave segura para que eu possa me lembrar de colocar minhas coisas dentro, sem que elas se percam. Neste projeto, fiz algumas melhorias
Vintage Tech: Le Minitel: 6 etapas
Vintage Tech: Le Minitel: Minitel é este terminal super sofisticado introduzido na França nos anos 80 (veja a história completa). Usei o Minitel quando era criança e ele cruzou meu caminho de novo recentemente. Visto que é realmente " apenas " um terminal, ele pode ser conectado ao console de y