En este tutorial voy a explicar como capturar datos con arduino y mandarlos a una base de datos creada con PHPMyAdmin. Tambien utilizaremos Python como mediador entre el puerto serial y la Base de Datos.
Materiales:
- Arduino UNO/Nano.
- Pulsador.
- Resistencia 1Kohm.
- Cables varios.
- Protoboard.
- Cable USB.
- XAMPP instalado en PC.
- Python instalado en PC.
- Recomendación: Visual Studio Code (no es necesario pero si muy útil).
Esquema de conexiones:
Para llevar a cabo la opción en la que el Arduino se comunica con la base de datos a través de un script de Python, necesitarás:
- Configurar el Arduino para enviar datos a través del puerto serie.
- Configurar un entorno Python para recibir esos datos y registrarlos en la base de datos de phpMyAdmin.
- Crear la base de datos en phpMyAdmin.
- Ejecutar el script de Python para registrar cada pulsación.
1. Código para el Arduino:
Este código hace que el Arduino envíe un mensaje al puerto serie cada vez que se presione el pulsador.
const int buttonPin = 2; // Pin al que está conectado el pulsador int buttonState = 0; void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); // Inicia la comunicación serie a 9600 bps } void loop() { buttonState = digitalRead(buttonPin); // Lee el estado del pulsador if (buttonState == HIGH) { Serial.println("Pulsacion"); // Envía "Pulsacion" por el puerto serie delay(1000); // Espera un segundo para evitar múltiples registros por una sola pulsación } }
Este código leerá el estado del pulsador y enviará «Pulsacion» al puerto serie cuando el pulsador sea presionado.
2. Configurar el entorno de Python:
Para que el script de Python funcione, necesitarás instalar las siguientes bibliotecas:
- pyserial: Para leer los datos del puerto serie.
- mysql-connector-python: Para conectarse a la base de datos MySQL (phpMyAdmin).
Para instalarlas, abre una terminal o símbolo del sistema y ejecuta:
pip install pyserial mysql-connector-python
3. Crear la base de datos en phpMyAdmin:
- Abre phpMyAdmin desde tu servidor local (por ejemplo, http://localhost/phpmyadmin).
- Crea una base de datos llamada arduino.
- Crea una tabla llamada registros con las siguientes columnas:
- id (INT, autoincremental, llave primaria).
- fecha_hora (DATETIME).
4. Script de Python:
Este script leerá los datos enviados por el Arduino y registrará cada pulsación con la fecha y hora en la base de datos.
import serial import mysql.connector from datetime import datetime # Configura la conexión con la base de datos conn = mysql.connector.connect( host="localhost", user="tu_usuario", # Reemplaza con tu usuario de MySQL password="tu_contraseña", # Reemplaza con tu contraseña de MySQL database="arduino" # Nombre de la base de datos que creaste ) cursor = conn.cursor() # Configura el puerto serie (ajusta el puerto según tu PC) ser = serial.Serial('COM3', 9600, timeout=1) # Reemplaza 'COM3' según corresponda print("Esperando datos del Arduino...") try: while True: line = ser.readline().decode('utf-8').strip() # Lee y decodifica la línea if line == "Pulsacion": # Registra la fecha y hora de la pulsación fecha_hora = datetime.now().strftime('%Y-%m-%d %H:%M:%S') cursor.execute("INSERT INTO registros (fecha_hora) VALUES (%s)", (fecha_hora,)) conn.commit() print(f"Registrado: {fecha_hora}") except KeyboardInterrupt: print("Cerrando la conexión...") # Cierra la conexión y el puerto serie cuando se detenga el script cursor.close() conn.close() ser.close()
5. Ejecución del script:
- Conecta el Arduino a la PC usando el cable USB y carga el código del Arduino.
- Asegúrate de que el puerto serie en el script de Python (‘COM3’) coincida con el puerto asignado a tu Arduino. Puedes verificar esto en el IDE de Arduino (Herramientas > Puerto).
- Ejecuta el script de Python desde la terminal o el símbolo del sistema:
python nombre_del_archivo.py
6. Prueba del sistema:
- Una vez que el script esté en ejecución, presiona el pulsador conectado al Arduino.
- Cada vez que lo hagas, el Arduino enviará «Pulsacion» al puerto serie.
- El script de Python leerá este mensaje y registrará la fecha y hora en la base de datos.
- Verifica en phpMyAdmin que los registros se estén insertando correctamente en la tabla registros.
Notas adicionales:
Asegúrate de que el servidor MySQL de XAMPP esté en ejecución para que el script de Python pueda conectarse a la base de datos.
Si tienes problemas con la conexión al puerto serie, revisa que no haya otros programas interfiriendo (como el monitor serie del IDE de Arduino).
Con esta configuración, tendrás un sistema en el que cada pulsación del botón se registra en la base de datos junto con la fecha y la hora.
Imagenes de funcionamiento:
En esta imágen podemos observar dentro del entorno de Visual Studio Code la ejecución del scrip en Python. En la parte inferior vemos las pulsaciones en forma de registro con su respectiva fecha y hora.
En esta imágen podemos observar dentro de PHPMyAdmin los registros con su respectiva fecha y hora.