Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Come impostare un IP statico per Raspberry PI

    Novembre 10, 2023

    Le migliori rendite passive tecnologiche per guadagna soldi

    Novembre 4, 2023

    Guida all’Acquisto: I Migliori Router WiFi del 2023

    Settembre 13, 2023
    Facebook X (Twitter) Instagram
    Facebook X (Twitter) Instagram
    iSmanettoneiSmanettone
    Subscribe
    • Home
    • News
    • Programmazione
    • iPhone
    • Wifi e sicurezza
    • Backtrack
    • Arduino
    • Android
    • Apple
    • Raspberry
    • Altro
    iSmanettoneiSmanettone
    Home»Arduino»Lezione 19: Come far interagire Arduino con il lettore RFID e MySQL
    Arduino

    Lezione 19: Come far interagire Arduino con il lettore RFID e MySQL

    ismanettoneblogBy ismanettoneblogNovembre 14, 20151 commento4 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Nella scorsa lezione su Arduino, abbiamo visto come far interagire Arduino, keypad e un server MySQL. Lo scopo del programma era quello di verificare se un codice che viene digitato dal keypad è presente nel database e in caso affermato può essere fatta un’operazione, come ad esempio accendere un semplice LED, aprire una porta etc…

    In modo molto analogo, in questa lezione vedremo come far leggere ad un Arduino un tessera magnetica attraverso un lettore RFID, fare un query ad un database MySQL per verificare se la tessera è valida oppure no.

    RFID Arduino

    Come abbiamo visto nella lezione dedicata al lettore RFID, è possibile usare il lettore RFID-RC522 per poter leggere delle tessere magnetiche con Arduino.

    La libreria ufficiale del dispositivo, permette di leggere il codice che è formato da 4 parti, che possono essere memorizzate in un unica variabile di tipo String (anche se non è il massimo per Arduino Uno) per usarla facilmente nel nostro semplice programma.

    Funzionamento del programma

    L’utente passa la tessera magnetica bianca, oppure il portachiavi blu e il lettore RFID è in grado di rilevare tale operazione ed avviare in Arduino le operazioni necessarie per poter leggere il codice. Tale codice, che è salvato in modo hardware nella nostra tessera, verrà mostrato nella seriale di Arduino e salvato nella variabile String codiceLetto.

    Come per il programma della lezione 17, dobbiamo seguire le seguenti operazioni.

    Prima di tutto è necessario crearsi una Schema all’interno del DB MySQL. Nel mio caso l’ho chiamato Auth. 

    C’è solamente una table di nome Codes, che ha come attributi un solo elemento che è Code, un elemento di tipovarchar(10), che è chiave primaria e deve non deve essere nulla.

    Per fare queste operazioni si può usare tranquillamente il MySQL Workbench, che è un programma davvero semplice da usare.

    Per maggiori informazioni riguardo a MySQL, vi consiglio di leggere questo articolo.

    Ed ecco il codice del programma per Arduino Uno/Arduino Mega che permette di verificare la presenza di un codice della tessera magnetica letta con il lettore RFID-.RC522, relativamente a quelle presenti nel DB MySQL:

    /*
    Questo programma permette di collegarsi ad un DB MySQL per verificare se il codice della tessera magnetica è corretto
    PINOUT:
     
    RC522 MODULE    Uno/Nano    
    SDA             D10
    SCK             D13
    MOSI            D11
    MISO            D12
    IRQ             N/A
    GND             GND
    RST             D9
    3.3V            3.3V
    Autore Giacomo Bellazzi
    Versione 1.0
    */
    #include "SPI.h"
    #include "Ethernet.h"
    #include "sha1.h"
    #include "mysql.h"
    #include "RFID.h"
    /* Vengono definiti PIN del RFID reader*/
    #define SDA_DIO 10  // 53 per Mega
    #define RESET_DIO 9
    #define delayRead 1000 // Time of delay 
    #define LEDGREEN 13
    #define LEDRED 12
     
    /* Viene creata una istanza della RFID libreria */
    RFID RC522(SDA_DIO, RESET_DIO); 
    byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress server_addr(192, 168, 0, 2);
    Connector my_conn;
    char user[] = "username";
    char password[] = "password";
    char QUERY_POP[50] = "Select * From Auth.Codes as AK Where AK.Code='%s'";
    char query[65];
     
    void setup() {
     Ethernet.begin(mac_addr);
     Serial.begin(9600);
     /* Abilita SPI*/
     SPI.begin(); 
     /* Viene inizilizzato RFID reader */
     RC522.init();
     pinMode(13,OUTPUT);
     while (!Serial);
     delay(1000);
     Serial.println("Connecting...");
     if (my_conn.mysql_connect(server_addr, 3306, user, password)){
    Serial.println("Connected!");
     } else {
     Serial.println("Connection failed.");
     }
    }
    void loop() {
       /* Temporary loop counter */
      byte i;
      // Se viene letta una tessera
      if (RC522.isCard())
      {
        // Viene letto il suo codice 
        RC522.readCardSerial();
        String codiceLetto ="";
        Serial.println("Codice delle tessera letto:");
     
        // Viene caricato il codice della tessera, all'interno di una Stringa
        for(i = 0; i <= 4; i++)
        {
          codiceLetto+= String (RC522.serNum[i],HEX);
          codiceLetto.toUpperCase();
        }
        char charBuf[12];
        codiceLetto.toCharArray(charBuf, 12); 
        Serial.println(codiceLetto);
        if(isAuthorized(charBuf)){
          Serial.println("Tessera autorizzata");
          accendiLed(LEDGREEN);
        }else{
          Serial.println("Tessera non autorizzata");
          accendiLed(LEDRED);
        }
      delay(delayRead);  
      }
     }
     
    // Controlla se un codice è autorizzato
    boolean isAuthorized(char code[]){
      
    sprintf(query, QUERY_POP,code);
     
    my_conn.cmd_query(query);
    my_conn.get_columns();
    row_values *row = NULL;
     int number = 0;
     while (row = my_conn.get_next_row()) {
    number++;
     my_conn.free_row_buffer();
      
     }
      
     my_conn.free_columns_buffer();
     if(number==0){
       return false;
     }else{
      return true; 
     }
    }
    
    // Questa funzione permette di accendere un LED per un determinato periodo
    void accendiLed(int ledPin){
      digitalWrite(ledPin,HIGH);
      delay(delayRead);
      digitalWrite(ledPin,LOW);
    }

    Per poter mandare il esecuzione il programma, è necessario inserire username a password del vostro DB MySQL. Poi è necessario inserire i codici delle tessere magnetiche che si voglio autorizzare. Per farlo si può usare questa query:

     

    1
    INSERT  INTO Codes(Code) VALUES ('EC17832AF')
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    ismanettoneblog

    Related Posts

    Come utilizzare il modulo ESP8266 per comodare Arduino da Smartphone

    Marzo 15, 2017

    Progetto rilevatore apertura garage con Arduino

    Gennaio 2, 2017

    C.H.I.P il nuovo PC low cost targato Linux da 9$

    Gennaio 1, 2017
    View 1 Comment

    1 commento

    1. Ingrassia Alfredo on Novembre 10, 2016 1:34 pm

      Salve, vorrei sapere dove scaricare tutte le librerie utilizzati in questo sketch e se avete anche la struttura esempio di questa database utilizzata in questo esempio.
      Conosco un po il mondo di arduino ma ho qualche problema con il dialogo arduino + W5100 + RC522 e php MySql.
      Vorrei dunque se e possibile per voi una mano d’aiuto.

      Ecco il mio progetto:
      Sono pilota aereo privato a l’aeroclub di Cannes e instruttore di volo ULM a Fayence e vivo in Francia da molto tempo (43 anni), ma sono Italiano (Siciliano esattamente).
      Il mio club mi ha domandato di fare con un lettore RFID di tipo MC522 e con arduino un armadio a chiave per aerei, in quale il pilota passa la sua carta davanti il lettore RC522, questo lettore va a interrogare il database e vedere quali sono i diritti di questo pilota e azionare uno o piu relays per aprire il o i cassetti delle chiave per gli aerei.

      Conosco l’arduino perché mi sono fabbricato un EFIS (Electronic Flight Instrument System) che funziona come una bomba, ma ho dei problemi di programmazione per fare communicare un arduino 2560 mega con shiel ethernet W5100 e il lettore RC522 con php MySql…
      Un aiuto sarebbe il benvenuto

      Grazie per avanzo

    Donazione PayPal
    Instructables
    Instructables
    Alla Scoperta di Backtrack
    Alla scoperta di Backtrack
    Raspberry PI
    Kali Linux
    Arduino
    Kali Linux
    Github Repo
    Instructables
    Chi sono e come contattarmi
    Instructables
    Email
    Blogroll
    • Blog di AlterVista
    • Come iniziare
    • Forum di Supporto
    • Guide WordPress
    Meta
    • Accedi
    • Feed dei contenuti
    • Feed dei commenti
    • WordPress.org
    Editors Picks
    8.5

    Apple Planning Big Mac Redesign and Half-Sized Old Mac

    Gennaio 5, 2021

    Autonomous Driving Startup Attracts Chinese Investor

    Gennaio 5, 2021

    Onboard Cameras Allow Disabled Quadcopters to Fly

    Gennaio 5, 2021
    Top Reviews
    9.1

    Review: T-Mobile Winning 5G Race Around the World

    By ismanettoneblog
    8.9

    Samsung Galaxy S21 Ultra Review: the New King of Android Phones

    By ismanettoneblog
    8.9

    Xiaomi Mi 10: New Variant with Snapdragon 870 Review

    By ismanettoneblog
    Advertisement
    Demo
    iSmanettone
    Facebook X (Twitter) Instagram Pinterest Vimeo YouTube
    • Home
    • News
    • Arduino
    • Raspberry
    © 2025 ThemeSphere. Designed by ThemeSphere.

    Type above and press Enter to search. Press Esc to cancel.

    Ad Blocker rilavato
    Ad Blocker rilavato
    Il nostro sito web è reso possibile dalla visualizzazione di pubblicità online ai nostri visitatori. Ti preghiamo di supportarci disabilitando il tuo Ad Blocker