- Componenti utilizzati:
- Spiegazione di lavoro:
- Descrizione del circuito:
- Installazione della libreria wiringPi in Raspberry Pi:
- Spiegazione della programmazione:
Abbiamo già utilizzato RFID in molti dei nostri progetti RFID e abbiamo già costruito un sistema di presenze basato su RFID utilizzando 8051, qui costruiremo un sistema di presenze basato su RFID utilizzando Raspberry Pi.
In questo progetto del sistema di presenze basato su RFID, ti spiegheremo come possiamo autorizzare e contare automaticamente le presenze utilizzando le carte RFID. La tecnologia RFID (identificazione e rilevamento a radiofrequenza) è comunemente utilizzata in scuole, college, uffici e stazioni per vari scopi per tenere automaticamente traccia delle persone. Qui conteremo le presenze di una persona autorizzata utilizzando l'RFID.
Se non hai familiarità con Raspberry Pi, abbiamo creato una serie di tutorial e progetti Raspberry Pi, con l'interfacciamento con tutti i componenti di base e alcuni semplici progetti con cui iniziare, controlla.
Componenti utilizzati:
- Raspberry Pi (con scheda SD avviata)
- Premi il bottone
- Cicalino
- LCD 16x2
- Pentola da 10k
- Resistenza 10K
- GUIDATO
- Resistenza da 1k
- Tagliere per il pane
- Lettore RFID
- Potenza 5 volt
- Tag o carte RFID
- Cavo Ethernet
- Cavi di collegamento
Lettore e tag RFID:
RFID è un dispositivo elettronico composto da due parti: una è un lettore RFID e l'altra è un tag o una scheda RFID. Quando mettiamo il tag RFID vicino al lettore RFID, questo legge i dati dei tag in modo seriale. Il tag RFID ha un codice di 12 cifre in una bobina. Questo RFID funziona a una velocità di trasmissione di 9600 bps. RFID utilizza l'elettromagnete per trasferire i dati da Reader a Tag o da Tag a Reader.
Spiegazione di lavoro:
Qui Raspberry Pi 3 controlla l'intero processo di questo progetto (l'utente può utilizzare qualsiasi scheda Raspberry Pi). Il lettore RFID legge l' ID della scheda RFID, questi dati vengono ricevuti da Raspberry Pi tramite UART, quindi RPi convalida la scheda e mostra i risultati sullo schermo LCD.
Quando una persona mette il proprio tag RFID vicino al lettore RFID per eseguire la scansione, l'RFID legge i dati del tag e lo invia a Raspberry Pi. Quindi Raspberry Pi legge il numero di identificazione univoco di quel tag RFID e quindi confronta questi dati con dati o informazioni predefiniti. Se i dati sono abbinati a dati predefiniti, Raspberry Pi incrementa la presenza della persona del tag di uno e se la corrispondenza non è abbinata, il microcontrollore mostra il messaggio "Scheda non valida" sul display LCD e il cicalino suona continuamente per un po 'di tempo. E qui abbiamo anche aggiunto un pulsante per vedere il totale n. di presenza di tutti gli studenti. Qui abbiamo preso 4 tag RFID di cui tre sono usati per registrare la presenza di tre studenti e uno è usato come carta non valida.
Descrizione del circuito:
Lo schema del circuito per questo progetto del sistema di presenza Raspberry Pi è molto semplice, che contiene Raspberry Pi 3, lettore RFID, tag RFID, cicalino, LED e LCD. Qui Raspberry Pi controlla il processo completo come la lettura dei dati provenienti dal lettore, il confronto dei dati con i dati predefiniti, il cicalino di guida, il LED di stato di guida e l'invio di stato al display LCD. Il lettore RFID viene utilizzato per leggere i tag RFID. Il buzzer viene utilizzato per le indicazioni e pilotato dal transistor NPN integrato. Il display LCD viene utilizzato per visualizzare lo stato o i messaggi su di esso.
I collegamenti sono semplici. L'LCD è connesso a Raspberry Pi in modalità 4 bit. I pin RS, RW e EN dell'LCD sono collegati direttamente a wiringPi GPIO 11, gnd e 10. E i pin dati sono collegati a wiringPi GPIO 6, 5, 4 e 1. Un potenziometro da 10K viene utilizzato per impostare il contrasto o la luminosità dell'LCD. Il cicalino è collegato al cablaggioPi GPIO pin 7 rispetto alla massa. Tre LED sono collegati per l'indicazione dello studente con la rispettiva scheda RFID. E un LED viene utilizzato per mostrare che il sistema è pronto per eseguire la scansione della scheda RFID. Un pulsante è anche collegato al pin 12 di wiringPi GPIO per visualizzare il conteggio delle presenze. Il lettore RFID è collegato al pin UART (cablaggio GPIO pin 16).
Installazione della libreria wiringPi in Raspberry Pi:
Come in Python importiamo RPi.GPIO come file di intestazione IO per utilizzare i pin GPIO di Raspberry Pi, qui in linguaggio C dobbiamo utilizzare la libreria wiringPi per utilizzare i pin GPIO nel nostro programma C. Possiamo installarlo usando i seguenti comandi uno per uno, puoi eseguire questo comando da Terminale o da qualche client SSH come Putty (se stai usando Windows). Segui il nostro tutorial per iniziare con Raspberry Pi per saperne di più sulla gestione del Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Testare l'installazione della libreria wiringPi, utilizzare i seguenti comandi:
gpio -v gpio readall
Spiegazione della programmazione:
Ora per prima cosa abbiamo incluso alcune librerie e definito i pin che dobbiamo usare in questo codice.
#includere
Dopo di ciò, definire alcune variabili e array per il calcolo e memorizzare valori e stringhe.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Quindi le funzioni sono state scritte per eseguire l'intero processo. Alcuni di loro sono riportati di seguito:
Data la funzione void lcdcmd viene utilizzata per inviare il comando all'LCD
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
La funzione data void write viene utilizzata per inviare dati a LCD.
void write (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Dato che la funzione void clear () viene utilizzata per cancellare il display LCD, void setCursor viene utilizzato per impostare la posizione del cursore e void print per inviare la stringa al display LCD.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; se (y == 0) poni = 128 + x; se (y == 1) poni = 192 + x; lcdcmd (set); } void print (char * str) {while (* str) {write (* str); str ++; }}
La funzione void begin viene utilizzata per inizializzare l'LCD in modalità 4 bit.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Le funzioni void buzzer () e void wait () vengono utilizzate per emettere un segnale acustico al buzzer e per attendere di posizionare nuovamente la scheda. La funzione void serialbegin viene utilizzata per inizializzare la comunicazione seriale.
void buzzer () {digitalWrite (buzz, HIGH); ritardo (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); ritardo (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Impossibile aprire"); setCursor (0,1); print ("porta seriale"); }}
Nella funzione void setup () inizializziamo tutti i GPIO, LCD e UART seriale.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Impossibile avviare"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Dato void get_card () La funzione viene utilizzata per ottenere dati dal lettore RFID.
Nella funzione void main () , abbiamo mostrato alcuni messaggi sul display LCD e confrontato i dati del tag con i dati predefiniti per convalidare la carta con il codice sottostante.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; chiaro(); print ("Attd. Registered"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); cicalino(); digitalWrite (led1, LOW); aspettare(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; chiaro(); print ("Attd. Registered"); setCursor (0,1);………………
Infine la funzione void check_button () viene utilizzata per mostrare la presenza totale alla pressione del pulsante.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); chiaro(); setCursor (0,0); print ("std1 std2 std3");……………..
Controlla il codice completo per questo sistema di presenza Raspberry Pi di seguito.