- Components utilitzats:
- Explicació de treball:
- Descripció del circuit:
- Instal·lació de la biblioteca wiringPi a Raspberry Pi:
- Explicació de la programació:
Anteriorment hem utilitzat RFID en molts dels nostres projectes RFID i ja hem construït un sistema d’assistència basat en RFID amb 8051, aquí construirem un sistema d’assistència basat en RFID amb Raspberry Pi.
En aquest projecte de sistema d’assistència basat en RFID, us explicarem que com podem autoritzar i comptar l’assistència automàticament mitjançant targetes RFID. La tecnologia RFID (identificació i detecció de radiofreqüències) s’utilitza habitualment a les escoles, col·legis, oficines i estacions amb diversos propòsits per fer un seguiment automàtic de les persones. Aquí comptarem l’assistència d’una persona autoritzada mitjançant l’ús de RFID.
Si no esteu familiaritzat amb Raspberry Pi, hem creat una sèrie de tutorials i projectes de raspberry pi, amb interfícies amb tots els components bàsics i alguns projectes senzills per començar, comproveu-ho.
Components utilitzats:
- Raspberry Pi (amb targeta SD arrencada)
- Polsador
- Zumbador
- LCD de 16x2
- Olla de 10k
- Resistència 10K
- LED
- 1k resistència
- Taula de pa
- Lector RFID
- Potència 5 volts
- Etiquetes o targetes RFID
- Cable Ethernet
- Connexió de cables
Lector i etiquetes RFID:
RFID és un dispositiu electrònic que té dues parts: una és RFID Reader i l’altra és una etiqueta o targeta RFID. Quan posem l'etiqueta RFID a prop del lector RFID, es llegeixen les dades de l'etiqueta en sèrie. L'etiqueta RFID té un codi de caràcters de 12 dígits en una bobina. Aquest RFID funciona a una velocitat de transmissió de 9600 bps. RFID utilitza un electroimant per transferir dades del lector a l’etiqueta o l’etiqueta al lector.

Explicació de treball:
Aquí Raspberry Pi 3 controla tot el procés d’aquest projecte (l’usuari pot utilitzar qualsevol tauler Raspberry Pi). RFID Reader llegeix l’ identificador de la targeta RFID, Raspberry Pi rep aquestes dades a través d’UART, després RPi valida la targeta i mostra els resultats a la pantalla LCD.

Quan una persona posa la seva etiqueta RFID a prop del lector RFID per escanejar-la, RFID llegeix les dades de l’etiqueta i les envia a Raspberry Pi. A continuació, Raspberry Pi llegeix el número d’ identificació únic d’aquesta etiqueta RFID i, a continuació, compara aquestes dades amb dades o informació predefinides. Si les dades coincideixen amb les dades predefinides, Raspberry Pi incrementa l’assistència de la persona de l’etiqueta en una i, si no coincideix, el microcontrolador mostra el missatge “Targeta no vàlida” a la pantalla LCD i el timbre emet un so continu durant algun temps. I aquí també hem afegit un polsador per veure el número total. d’assistència de tots els estudiants. Aquí hem agafat 4 etiquetes RFID en què tres s’utilitzen per registrar l’assistència de tres estudiants i una s’utilitza com a targeta no vàlida.
Descripció del circuit:
El diagrama de circuits d’aquest projecte de sistema d’assistència a Raspberry Pi és molt senzill i conté Raspberry Pi 3, lector RFID, etiquetes RFID, brunzidor, LED i LCD. Aquí, Raspberry Pi controla el procés complet, com ara la lectura de dades provinents del lector, la comparació de dades amb dades predefinides, el control del timbre, la conducció del LED d’estat i l’enviament de l’estat a la pantalla LCD. El lector RFID s’utilitza per llegir etiquetes RFID. El buzzer s’utilitza per indicacions i és impulsat per un transistor NPN incorporat. La pantalla LCD s’utilitza per mostrar-hi l’estat o els missatges.

Les connexions són senzilles. La pantalla LCD està connectada amb Raspberry Pi en mode de 4 bits. Els pins RS, RW i EN del LCD es connecten directament a wiringPi GPIO 11, gnd i 10. I el pin de dades es connecta a wiringPi GPIO 6, 5, 4 i 1. Es fa servir un pot de 10K per configurar el contrast o la brillantor del LCD. El buzzer està connectat al pin 7 del cablejat PI GPIO respecte a terra. Es connecten tres LEDs per indicar l'estudiant amb la targeta RFID respectiva. I un LED s’utilitza per mostrar que el sistema està preparat per escanejar la targeta RFID. També es connecta un polsador al pin 12 de wiringPi GPIO per mostrar el recompte d'assistència. El lector RFID està connectat al pin UART (cablejat del pin 16 GPIO).
Instal·lació de la biblioteca wiringPi a Raspberry Pi:
Com a Python, importem RPi.GPIO d'importació com a fitxer de capçalera IO per utilitzar els pins GPIO de Raspberry Pi, aquí en llenguatge C hem d'utilitzar la biblioteca wiringPi per utilitzar els pins GPIO al nostre programa C. El podem instal·lar utilitzant les ordres següents una per una, podeu executar-la des de Terminal o des d’un client SSH com Putty (si utilitzeu Windows). Consulteu el nostre tutorial Introducció a Raspberry Pi per obtenir més informació sobre com manejar Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clonar git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Proveu la instal·lació de la biblioteca wiringPi, utilitzeu les ordres següents:
gpio -v gpio readall
Explicació de la programació:
Ara, primer, hem inclòs algunes biblioteques i hem definit els pins que hem d’utilitzar en aquest codi.
#incloure
Després, definiu algunes variables i matriu per al càlcul i emmagatzemeu valors i cadenes.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
A continuació, s’han escrit funcions per executar tot el procés. Alguns d’ells es detallen a continuació:
Donada lcdcmd nul·la funció s'utilitza per enviar ordres a l'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, BAIX); digitalWrite (EN, HIGH);……………..
La funció d' escriptura donada en buit s'utilitza per enviar dades a LCD.
escriptura nul·la (int ch sense signar) {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);……………..
La funció void clear () s'utilitza per esborrar la pantalla LCD, void setCursor s'utilitza per configurar la posició del cursor i la impressió buida per enviar la cadena a la pantalla LCD.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (conjunt); } void print (char * str) {while (* str) {write (* str); str ++; }}
La funció void start s'utilitza per inicialitzar la pantalla LCD en mode de 4 bits.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Les funcions void buzzer () i void wait () s’utilitzen per sonar el buzzer i esperar a col·locar de nou la targeta. La funció void serialbegin s’utilitza per inicialitzar la comunicació en sèrie.
void buzzer () {digitalWrite (buzz, HIGH); retard (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); retard (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("No es pot obrir"); setCursor (0,1); print ("Port sèrie"); }}
En la funció void setup () iniciem tots els GPIO, LCD i UART de sèrie.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("No es pot iniciar"); setCursor (0,1); print ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Donada void get_card () La funció s'utilitza per obtenir dades del lector RFID.
A la funció void main () , hem mostrat alguns missatges a la pantalla LCD i hem comparat les dades de l’etiqueta amb les dades predefinides per validar la targeta amb el codi següent.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; clar (); print ("Attd. Registrat"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); zumbador (); digitalWrite (led1, BAIX); wait (); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; clar (); print ("Attd. Registrat"); setCursor (0,1);………………
Finalment s'utilitza la funció void check_button () per mostrar l'assistència total en prémer el botó.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); clar (); setCursor (0,0); print ("std1 std2 std3");……………..
Consulteu el codi complet d’aquest sistema d’assistència de Raspberry Pi a continuació.
