Leer tarjeta RFID con PHP y ESP8266

En este post te mostraré cómo leer el ID de una tag o tarjeta RFID y enviarla a un servidor Apache con PHP para guardarla, procesarla, etcétera.

Aunque este ejemplo está creado con PHP, podrías enviar el valor a cualquier servidor web con cualquier lenguaje de programación que soporte HTTP.

Lo que haremos será usar una tarjeta ESP8266 que ya tiene WiFi integrado, además de un lector RFID RC522. Básicamente será poner juntos dos tutoriales:

De igual modo veamos cómo hacerlo; te dejaré el código de ejemplo tanto de la tarjeta (en C++) como del servidor web (en PHP).

Circuito

Comencemos viendo el circuito. En este caso es el mismo que usamos en el tutorial anterior, pues vamos a leer el ID de la tarjeta. Lo que cambiará es que haremos una petición HTTP, pero como el “módulo” encargado de la comunicación ya viene integrado, no hace falta modificar el cableado.

Conexión lector RFID con NodeMCU ESP8266 – Circuito

Es buen momento para indicarte que leas los posts que cito en caso de que te falte alguna librería o quieras ver un ejemplo más simple. Igualmente te dejaré el código completo al final del post, pero nunca está de más estudiar un poco.

Código del servidor

Para hacer las cosas simples solo vamos a guardar el id de la tarjeta, mismo que estará en la URL. En este caso vamos a usar un archivo de texto para guardar el valor, pero recuerda que siempre puedes usar bases de datos.

La respuesta que le damos al cliente será “Serial [SERIAL] guardado”; aunque como siempre, puedes responder una cadena vacía o responder cualquier otra cosa y manejarla del lado del cliente.

Es importante notar que en mi caso, el proyecto estará en una carpeta llamada esp8266_rfid_api y que el archivo se llama save_rfid.php por lo que la URL será localhost/esp8266_rfid_api/save_rfid.php pero en mi red local tengo la IP 192.168.1.77 así que debo hacer la petición (desde la ESP8266) a la URL http://192.168.1.77/esp8266_rfid_api/save_rfid.php.

Por favor toma en cuenta eso cuando hagas tus pruebas; igualmente puedes subir el contenido a un servidor de internet, simplemente cambia los valores.

Algoritmo del cliente

Veamos lo que haremos en el cliente; es decir, en la tarjeta ESP8266 pero explicado con lenguaje humano.

En el setup iniciamos el Serial. El Serial es para depurar y enviar mensajes a la computadora usando el cable USB. Recuerda deshabilitar este apartado en caso de que conectes la tarjeta NodeMCU ESP8266 a una computadora que no cuente con el monitor serial abierto. Ya que el código va a esperar hasta que haya comunicación.

Igualmente en el setup es en donde conectamos a la red WiFi con las credenciales de acceso establecidas, iniciamos el lector y preparamos la clave de encriptación para leer la o las tarjetas.

Luego, en el loop, que es el que se repetirá indefinidamente, comenzamos comprobando si estamos conectados a la red Wifi, en caso de que no, detenemos el proceso (el proceso, pero el loop seguirá corriendo).

También en el loop comprobamos si hay una tarjeta y la intentamos leer. En caso de que sea legible, la leemos y justo aquí es en donde enviamos el serial a PHP usando una petición HTTP.

En resumen, la petición se hará tan pronto acerquemos una tarjeta RFID al lector.

Código fuente para leer RFID y enviar a PHP

Finalmente veamos el código de la tarjeta. Yo uso PlatformIO, pero debe funcionar igualmente con el IDE Arduino haciendo las modificaciones necesarias.

En resumen, al acercar una tarjeta RFID para que se lea, el ID será enviado al servidor web con PHP en un instante. Y de este modo ya habremos leído etiquetas RFID usando la tarjeta ESP8266 y PHP.

Demostración

Leyendo ID de tarjeta RFID usando PHP y ESP8266

Veamos una demostración. En este caso al acercar mis dos etiquetas RFID al lector, vemos lo siguiente en el archivo de salida:

En este caso hice varias pruebas con ambas tarjetas, y todas funcionaron. Como te dije, puedes guardar el serial en otro lugar o hacer cualquier otra cosa, aquí solo te pongo un ejemplo.

Poniendo todo junto

Dejo el código completo tanto de la tarjeta como el de PHP en mi GitHub. No olvides que el código del servidor debe ir en htdocs, /var/www/public_html o la carpeta de tu servidor de acuerdo a tu configuración.

Te invito también a leer más sobre PHP o sobre la ESP8266.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

3 comentarios en “Leer tarjeta RFID con PHP y ESP8266”

  1. Buena noche quería saber como realizo el proceso pero enviando los datos por POST hacia PHP para poder utilizar la información del tag para consultar en mysql atraves de php de antemano agradezco tu colaboración.

  2. Buena tarde tengo un modulo SL025B Ver. 3.0 el cual se conecta a mi pc por el puerto serial para la lectura de tarjetas por lo que necesito realizar un pequeño programa con php y mysql que al dar lectura de una tarjeta realice la consulta y verifique si esta registrado y así dar acceso o no.

Dejar un comentario