Icono del sitio El Profe Alegría

Arduino y Base de Datos por USB.

Arduino y Base de datos USB

Arduino y Base de datos USB

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:

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:

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:

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:

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:

python nombre_del_archivo.py

6. Prueba del sistema:

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:

Captura VSC

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.

Captura PHPmyAdmin

En esta imágen podemos observar dentro de PHPMyAdmin los registros con su respectiva fecha y hora.

No te olvides de compartir en...
Salir de la versión móvil