- Componentes utilizados:
- Explicación de trabajo:
- Descripción del circuito:
- Instalación de la biblioteca WiringPi en Raspberry Pi:
- Explicación de programación:
Anteriormente hemos utilizado RFID en muchos de nuestros proyectos de RFID y ya hemos construido un sistema de asistencia basado en RFID utilizando 8051, aquí vamos a construir un sistema de asistencia basado en RFID utilizando Raspberry Pi.
En este proyecto de Sistema de asistencia basado en RFID, le explicaremos cómo podemos autorizar y contar la asistencia automáticamente mediante el uso de tarjetas RFID. La tecnología RFID (identificación y detección de radiofrecuencia) se utiliza comúnmente en escuelas, universidades, oficinas y estaciones para diversos fines para realizar un seguimiento automático de las personas. Aquí contaremos la asistencia de una persona autorizada mediante RFID.
Si no está familiarizado con Raspberry Pi, hemos creado una serie de tutoriales y proyectos de Raspberry Pi, con interfaz con todos los componentes básicos y algunos proyectos simples para comenzar, verifique.
Componentes utilizados:
- Raspberry Pi (con tarjeta SD iniciada)
- Presionar el botón
- Zumbador
- LCD de 16x2
- Bote de 10k
- Resistencia de 10K
- LED
- Resistencia de 1k
- Tabla de pan
- Lector RFID
- Potencia 5 voltios
- Etiquetas o tarjetas RFID
- Cable de ethernet
- Cables de conexión
Lector RFID y etiquetas:
RFID es un dispositivo electrónico que tiene dos partes: una es el lector RFID y la otra es una etiqueta o tarjeta RFID. Cuando colocamos la etiqueta RFID cerca del lector RFID, lee los datos de la etiqueta en serie. La etiqueta RFID tiene un código de caracteres de 12 dígitos en una bobina. Esta RFID funciona a una velocidad de 9600 bps. RFID utiliza un electroimán para transferir datos del lector a la etiqueta o de la etiqueta al lector.
Explicación de trabajo:
Aquí Raspberry Pi 3 está controlando todo el proceso de este proyecto (el usuario puede usar cualquier placa Raspberry Pi). El lector RFID lee la identificación de la tarjeta RFID, estos datos son recibidos por Raspberry Pi a través de UART, luego RPi valida la tarjeta y muestra los resultados en la pantalla LCD.
Cuando una persona coloca su etiqueta RFID cerca del lector RFID para escanear, RFID lee los datos de la etiqueta y los envía a Raspberry Pi. Luego, Raspberry Pi lee el número de identificación único de esa etiqueta RFID y luego compara estos datos con datos o información predefinidos. Si los datos coinciden con los datos predefinidos, Raspberry Pi incrementa la asistencia de la persona de la etiqueta en uno y si no coincide, el microcontrolador muestra el mensaje 'Tarjeta no válida' en la pantalla LCD y el zumbador suena continuamente durante algún tiempo. Y aquí también agregamos un botón para ver el número total. de asistencia de todos los alumnos. Aquí hemos tomado 4 etiquetas RFID en las que tres se usan para registrar la asistencia de tres estudiantes y una se usa como tarjeta no válida.
Descripción del circuito:
El diagrama de circuito para este proyecto del sistema de asistencia Raspberry Pi es muy simple, que contiene Raspberry Pi 3, lector RFID, etiquetas RFID, zumbador, LED y LCD. Aquí, Raspberry Pi controla el proceso completo, como la lectura de datos provenientes del lector, la comparación de datos con datos predefinidos, la activación del timbre, el LED de estado de conducción y el envío del estado a la pantalla LCD. El lector RFID se utiliza para leer etiquetas RFID. El zumbador se utiliza para las indicaciones y es impulsado por un transistor NPN incorporado. La pantalla LCD se utiliza para mostrar el estado o los mensajes en ella.
Las conexiones son sencillas. La pantalla LCD está conectada con Raspberry Pi en modo de 4 bits. Los pines RS, RW y EN de la pantalla LCD están conectados directamente al cableadoPi GPIO 11, gnd y 10. Y los pines de datos están conectados al cableadoPi GPIO 6, 5, 4 y 1. Se usa un potenciómetro de 10K para establecer el contraste o el brillo de la pantalla LCD. El zumbador está conectado en el pin 7 del GPIO del cableado Pi con respecto a tierra. Se conectan tres LED para indicación del estudiante con la tarjeta RFID respectiva. Y se usa un LED para mostrar que el sistema está listo para escanear la tarjeta RFID. También se conecta un botón en el pin 12 del GPIO del cableado Pi para mostrar el Conteo de asistencia. El lector RFID está conectado al pin UART (cableado del pin 16 de GPIO).
Instalación de la biblioteca WiringPi en Raspberry Pi:
Al igual que en Python, importamos RPi.GPIO importado como archivo de encabezado IO para usar los Pines GPIO de Raspberry Pi, aquí en lenguaje C necesitamos usar la biblioteca WiringPi para usar los Pines GPIO en nuestro Programa C. Podemos instalarlo usando los siguientes comandos uno por uno, puede ejecutar este comando desde la Terminal o desde algún cliente SSH como Putty (si está usando Windows). Consulte nuestro tutorial Introducción a Raspberry Pi para obtener más información sobre cómo manejar Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd cableadoPi git pull origin cd cableadoPi./build
Pruebe la instalación de la biblioteca WiringPi, use los siguientes comandos:
gpio -v gpio readall
Explicación de programación:
Ahora primero hemos incluido algunas bibliotecas y definimos los pines que necesitamos usar en este código.
#incluir
Después, defina algunas variables y una matriz para el cálculo y almacene valores y cadenas.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Luego se han escrito funciones para ejecutar todo el proceso. Algunos de ellos se dan a continuación:
Dada lcdcmd nula función se utiliza para enviar comandos al LCD
void lcdcmd (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); escritura digital (D6, temp & ch << 1); digitalWrite (D7, temp & ch); escritura digital (RS, BAJA); escritura digital (EN, ALTA);……………..
La función de escritura nula dada se utiliza para enviar datos a la pantalla LCD.
escritura vacía (unsigned int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); escritura digital (D6, temp & ch << 1); digitalWrite (D7, temp & ch); escritura digital (RS, ALTA); escritura digital (EN, ALTA);……………..
Dado que la función void clear () se usa para borrar la pantalla LCD, void setCursor se usa para establecer la posición del cursor y anular la impresión para enviar cadenas a la LCD.
vacío claro () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; si (y == 0) conjunto = 128 + x; si (y == 1) conjunto = 192 + x; lcdcmd (conjunto); } void print (char * str) {while (* str) {write (* str); str ++; }}
La función de inicio vacío se utiliza para inicializar la pantalla LCD en modo de 4 bits.
inicio vacío (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Las funciones void buzzer () y void wait () se utilizan para hacer sonar el zumbador y esperar para volver a colocar la tarjeta. La función void serialbegin se usa para inicializar la comunicación serial.
zumbador anulado () {digitalWrite (zumbido, ALTO); retraso (1000); digitalWrite (zumbido, BAJO); } void wait () {digitalWrite (led5, LOW); retraso (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); imprimir ("No se puede abrir"); setCursor (0,1); imprimir ("puerto serie"); }}
En la función void setup () iniciamos todos los GPIO, LCD y UART en serie.
configuración vacía () {if (cableadoPiSetup () == -1) {borrar (); print ("No se puede empezar"); setCursor (0,1); imprimir ("cableadoPi"); } pinMode (led1, SALIDA); pinMode (led2, SALIDA);……………………
La función get_card () dada void se usa para obtener datos del lector RFID.
En la función void main () , mostramos algunos mensajes en la pantalla LCD y comparamos los datos de la etiqueta con los datos predefinidos para validar la tarjeta con el siguiente código.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; claro(); print ("Attd. Registrado"); setCursor (0,1); imprimir ("Studnet 1"); digitalWrite (led1, ALTO); zumbador(); digitalWrite (led1, BAJO); Espere(); } más si (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; claro(); print ("Attd. Registrado"); setCursor (0,1);………………
Finalmente, la función void check_button () se usa para mostrar la asistencia total al presionar el botón.
anular check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); claro(); setCursor (0,0); imprimir ("std1 std2 std3");……………..
Verifique el código completo para este sistema de asistencia Raspberry Pi a continuación.