Sistema de Control de Asistencia por Huella Digital con Arduino y Almacenamiento en la Nube
Componentes y materiales
| Arduino Mega 2560 R3 | × | 1 |
| Sensor huella ElectroPeak R301T | × | 1 |
| Módulo adaptador microSD TF ElectroPeak | × | 1 |
| Módulo RTC DS3231 I2C ElectroPeak | × | 1 |
| Pantalla TFT 3.5" ElectroPeak | × | 1 |
| Placa NodeMCU ESP8266 ESP-12E ElectroPeak | × | 1 |
| Cables jumper macho-hembra ElectroPeak | × | 1 |
Herramientas necesarias
- Cortadora láser
- Soldador
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Puedes leer este y otros tutoriales en la web oficial de ElectroPeak.
Resumen
Hoy es esencial aprender IoT. En este tutorial creamos un dispositivo de control de asistencia con huella digital que, además de guardar registros (entrada, salida, horas trabajadas) en tarjeta microSD, los sube a ThingSpeak cuando hay conexión a internet. Los datos pueden descargarse en CSV desde el panel.
Qué aprenderás
- Trabajar con sensores de huella digital.
- Subir datos a ThingSpeak con NodeMCU.
- Crear un sistema de asistencia con huella y Arduino.
¿Qué es ThingSpeak?
Plataforma IoT para visualizar y recopilar datos en la nube en tiempo real. Permite agregar, visualizar y analizar flujos de datos.
Conexión con ThingSpeak y subida de datos
- Crea cuenta en ThingSpeak.com.
- Inicia sesión, ve a My Channels > New Channel.
- Nombre, descripción, define número de campos (Field 1–4) y guarda.
- Ve a API Keys y anota Channel ID y Write API Key.
- Instala librería ThingSpeak en Arduino IDE (Gestor de librerías).
- Abre ejemplo WriteMultipleFields e introduce SSID, Password, Channel ID, Write API Key.
Nota: Espera al menos 15 segundos entre envíos a ThingSpeak.
Sistema de asistencia con sensor huella y Arduino
Tras registrar entrada/salida por huella, se guarda en tarjeta SD: fecha, nombre, hora entrada, hora salida, horas trabajadas. Luego se envía a ThingSpeak en el intervalo programado. Sin internet, los datos se almacenan y se envían al reconectar. La EEPROM del microcontrolador preserva los datos ante cortes de luz.
Circuito
Conecta todos los módulos y coloca el shield LCD sobre el Arduino.
Consejo: el shield LCD tapa algunos pines; suelda un cable desde la parte inferior si los necesitas.
Código
Librerías necesarias:
- Adafruit-Fingerprint-Sensor-Library
- Adafruit-GFX-Library
- MCUFRIEND_kbv
- RTClib
Descarga el código completo (adjunto como ZIP) y súbelo al Arduino. Está escrito para 11 personas con nombres por defecto, pero puedes modificarlos. Para registrar nuevo usuario: conecta al PC, pulsa tecla modo registro, abre Monitor Serie y sigue el proceso.
Referencias útiles:
- Módulo SD con Arduino: leer/escribir datos
- Módulo RTC DS1307 con Arduino y recordatorios
- Guía para pantallas TFT LCD con Arduino
El NodeMCU gestiona la subida a ThingSpeak: recibe datos del Arduino por serie, los envía y devuelve estado ("1" = éxito, "0" = fallo). Sube este código al NodeMCU:
#include "ThingSpeak.h"
#include <ESP8266WiFi.h>
char ssid[] = "TU_SSID";
char pass[] = "PASS_SSID";
WiFiClient client;
unsigned long myChannelNumber = TU_CHANNEL_ID;
const char * myWriteAPIKey = "TU_WRITE_API_KEY";
String Final = "", Date = "", Enter = "", Exit = "", Name = "", WT = "";
void String_Analyze(String input) {
int i1 = input.indexOf('*', 0);
int i2 = input.indexOf('*', i1 + 1);
int i3 = input.indexOf('*', i2 + 1);
int i4 = input.lastIndexOf('*');
Name = input; Date = input; Enter = input; Exit = input; WT = input;
Name.remove(i1);
Date.remove(i2); Date.remove(0, i1 + 1);
Enter.remove(i3); Enter.remove(0, i2 + 1);
Exit.remove(i4); Exit.remove(0, i3 + 1);
WT.remove(0, i4 + 1);
}
void Get_String() {
while (Serial.available()) Final = Serial.readString();
}
void setup() {
Serial.begin(9600);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH);
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass); Serial.print("0"); delay(5000);
}
}
digitalWrite(LED_BUILTIN, LOW);
Get_String(); String_Analyze(Final);
if (!Final.equals("")) {
ThingSpeak.setField(1, Date); ThingSpeak.setField(2, Name);
ThingSpeak.setField(3, Enter); ThingSpeak.setField(4, Exit);
ThingSpeak.setField(5, WT);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) { delay(100); Serial.print("1"); }
else { delay(100); Serial.print("0"); }
delay(17000); Final = "";
}
}
Montaje del dispositivo
Usa los planos y metacrilato de colores (u otro material) para la carcasa.
Descarga plano corte láser (adjunto DWG). Ensambla electrónica, monta la carcasa, conecta adaptador 12 V y ¡funciona!
Próximos pasos
- Añadir más iconos en la LCD.
- Incluir opción RFID.
- Subir datos a Google Sheets en vez de ThingSpeak.
Si te gusta, síguenos en Facebook.
Código
- Código 1: Ejemplo ThingSpeak WriteMultipleFields (Arduino)
- Código 2: NodeMCU subida datos asistencia (Arduino)
Partes personalizadas y envolventes
electropeak_attendance_code_q4bsYBzou5.zip(código completo Arduino)attendanceboxlasercut_ryMUOo5d7h.dwg(plano corte láser caja)
Proceso de manufactura
- Aprovechando el poder de la nube para IoT: Desbloqueando conectividad fluida e insights de datos
- Reproductores DVD: Historia, Tecnología y Futuras Innovaciones
- Sistema de Asistencia RFID Fiable con Arduino y Python
- Transferencia Inalámbrica de Datos Magnéticos con Arduino y Sensor 3D Infineon
- SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
- Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
- Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
- Construye una Torre de Sensores con Arduino Cloud: Temperatura, Movimiento y Gas
- Sistema de Ventilación Inteligente para Sótanos: Control de Humedad con Arduino
- Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets
- 10 beneficios clave del almacenamiento en la nube para empresas modernas