ELABORAÇÃO DE BANCO DE DADOS EM MEMÓRIA SD PARA UTILIZAÇÃO COM RFID E ARDUINO

"ATUALIZAÇÃO"

ELABORAÇÃO DE BANCO DE DADOS EM MEMÓRIA SD PARA UTILIZAÇÃO COM RFID E ARDUINO

Daniel Baltazar Schneider

 

 

INTRODUÇÃO

Desde os primórdios dos tempos, o homem sempre se deparou com a necessidade de deixar registrados os principais eventos e as informações mais importantes que porventura pudessem ser utilizadas futuramente. Para isso foram criadas as inúmeras técnicas de pinturas pré históricas, as inscrições hieroglíficas dos egípcios, o papiro, a escrita cuneiforme etc. Todas essas “tecnologias” serviam para que fosse possível fazer tais registros (ALVES,2014).

A influência mais significativa nas organizações empresariais, nos últimos anos, foi a rápida transformação nos modos de estruturar e utilizar os sistemas de informação. Vista como um componente estratégico, a utilização dos sistemas de informação automatiza processos organizacionais e é fonte de vantagens competitivas por meio da análise de cenários, além de oferecer apoio ao processo de decisão e implementação de novas estratégias de negócios. Nesses cenários, cresce a necessidade de captar, gerenciar, armazenar, processar e compartilhar informações (PUGA, 2013).

Dentro de vários projetos nos deparamos com a necessidade de guardar dados para posterior conferência, mas como no caso do Arduino nem sempre temos memória interna para essa finalidade. A memória não volátil (EEPROM) presente no Arduino é muito limitada e inviável para grandes projetos sendo necessário a utilização de periféricos para essa finalidade. O cartão SD é uma boa solução para guardar e ler dados de forma rápida e simples, porém atualmente pouco conteúdo cientifico e prático é encontrado para essa finalidade. Este artigo foi escrito buscando demonstrar um banco de dados simples para gravação e conferência de dados presentes em um cartão SD com interação com um módulo RFID.

 

MATERIAL E MÉTODOS

No projeto foi utilizado um módulo leitor RFID (Radio Frequency Identification) RC522 (Figura 1), um módulo de cartão MICRO SD (Figura 2) e um Arduino UNO (Figura 3). Todos foram ligados conforme esquema da Figura 04.

Figura 1. Modulo RFID RC522 (fonte: http://www.arduinomogi.com.br/pd-32844d-modulo-leitor-rfid-mifare-r...).

 

Figura 2. Módulo cartão MICRO SD (fonte: https://pt.aliexpress.com/item/Micro-SD-card-mini-TF-card-reader-mo...).

 

Figura 3. Arduino UNO (fonte: https://store.arduino.cc/usa/arduino-uno-rev3)

 

Figura 4. Esquema de ligação dos componentes (fonte: o autor).

 

O código Arduino usado etá apresentado abaixo, a IDE utilizada foi a padrão do Arduino, que esta disponível para download em https://www.arduino.cc/en/Main/Software .

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

// Programa: SD, RFID, ARDUINO, BANCO DE DADOS//

// Autor: Daniel Baltazar Schneider

 

#include b>SD.h>

#include b>SPI.h>

#include b>MFRC522.h>

 

File myFile;

MFRC522 mfrc522(10, 9);

 

// Variáveis//

int x = 0;

byte sel = 0;

byte c1 = 0;

byte c2 = 0;

byte c3 = 0;

String status = "";

String cconteudo = "";

String usuario = "";

String nome = "";

char caractere;

char carac;

 

 

void setup() {

  Serial.begin(9600); //inicializa a comunicação serial

  SPI.begin(); //inicializa a comunicação SPI

  if (SD.begin(4)) { // Faz a contagem do número de usuários cadastrados

    myFile = SD.open("rfid.txt");

    if (myFile) {

      while (myFile.available()) {

        for (x; myFile.read() == 13; x++) {

          delay(10);

        }

      }

    }

    else {

      Serial.println("Falha ao abrir banco de dados");

    }

    Serial.print(x);

    Serial.println(" usuarios cadastrados: ");

    myFile.close();

    !SD.begin(4);

  }

}

 

void loop() {

  mfrc522.PCD_Init();

  while (sel == 0) {

    Serial.println("Aproxime o seu cartao do leitor...");

    cconteudo = "";

    while ( ! mfrc522.PICC_IsNewCardPresent()) {

    }

    if ( ! mfrc522.PICC_ReadCardSerial()) {

      return;

    }

    for (byte i = 0; i < mfrc522.uid.size; i++) {

      cconteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));

      cconteudo.concat(String(mfrc522.uid.uidByte[i], HEX));

    }

    cconteudo.toUpperCase();

    cconteudo.trim();

    mfrc522.PICC_HaltA();

 

    myFile = SD.open("rfid.txt");

    if (myFile) {

      while (myFile.available() && (c2 == 0)) {

        caractere = 0;

        while (myFile.available() && (caractere != ';') && (caractere != 13) && (c1 == 0)) {

          caractere = myFile.read();

          if ((caractere != ';') && (caractere != 13)) {

            usuario.concat(caractere);

          }

        }

        usuario.trim();

        if ((cconteudo == usuario ) && (c1 == 0) ) {

          status = "Usuario encontrado";

          Serial.println(status);

          c1 = 1;

          c3 = 1;

        }

        else {

          usuario = "";

          status = "Usuario nao encontrado ";

        }

        if (c3 == 1) {

          carac = 0;

          while (myFile.available() && (carac != 13) && (c3 == 1)) {

            carac = myFile.read();

            if ((carac != 13) && (carac != ';')) {

              nome.concat(carac);

            }

            delay(10);

          }

          nome.trim();

          if (c3 == 1) {

            c3 = 0;

            c2 = 1;

            sel = 1;

          }

        }

      }

    }

    else {

      Serial.println("Falha ao abrir banco de dados");

    }

    if (status != "Usuario encontrado") {

      Serial.println(status);

    }

  }

  myFile.close();

  Serial.print("Bem vindo ");

  Serial.println(nome);

  delay(2000);

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

No cartão de memória micro SD deve estar contido o arquivo rfid.txt. Dentro desse arquivo deve estar organizado em cada linha primeiramente o número da tag e na sequência o nome do usuário, sendo separado esses dois itens por ; (ponto e virgula) como exemplificado na figura 5.

Figura 5. Organização do arquivo rfid.txt contido no cartão MICRO SD (fonte: o autor)

Funcionamento

Quando o cartão é aproximado ao leitor rfid, esse informa o número da tag para o Arduino que acessa o cartão MICRO SD e dentro do arquivo rfid.txt compara a existência do cadastro da tag. 

https://www.youtube.com/watch?v=xlo-8pef87Y&feature=youtu.be

REFERÊNCIAS BIBLIOGRÁFICAS

ALVES, William Pereira. Banco de Dados. Érica, 06/2014. [Minha Biblioteca].

PUGA, Sandra. Banco de dados: implementação em SQL PIJSQL e Oracle 1 Ig. São Paulo, Pearson Education do Brasil, 2013.

MONK, Simon. Programação com Arduino II: Passos Avançados com Sketches - Série Tekne. Bookman, 01/2015. [Minha Biblioteca].

 

Exibições: 336

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Daniel Baltazar Schneider em 4 maio 2017 às 1:39
Comentário de Diogo Alves da Silva em 2 maio 2017 às 19:22

Cara fiz exatamente igual com os mesmos componentes....eeee  ??? nada, so o leitor rfid funciona.

Percebi que se alimento o SD com 5v (o mesmo pode ser alimentado com 3v ou 5v) ele funciona mais ai para de funcionar o leitor RFID, ai se volto ele para 3v, so o leitor RFID funciona....estranho ne....ja troquei os componentes para ter certeza que não era nada com os modulo. Também ja liguei individualmente para testar o funcionamento de cada modulo e esta tudo ok.

Alguma ideia??? vc tem algum video do "bicho" funcionando?rsrsrsrs

Abraço e muito obrigado pelo excelente post Daniel B.

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço