2 – Lectura y almacenamiento de datos de sensores en Windows

PARTE 1 – Preparar el Arduino para enviar datos correctamente

1.1 Conectar el Arduino

  1. Conectar el cable USB tipo A-B.
  2. Abrir Arduino IDE.
  3. Ir a:

Herramientas → Placa → Arduino Mega 2560
Herramientas → Puerto → Seleccionar el puerto COM correcto.

Si no sabes cuál es:

  • Desconecta el cable.
  • Mira qué puerto desaparece.
  • Vuelve a conectar.
  • Ese es el correcto.

1.2 Código base para enviar datos estructurados

Es FUNDAMENTAL que los datos tengan formato fijo.

Ejemplo usando un sensor analógico en A0:

void setup() {
  Serial.begin(9600);
}void loop() {
  int valor = analogRead(A0);  
Serial.print("S1;ANALOGICO;");
  Serial.println(valor);  
  delay(2000);
}

Esto genera una línea clara:

S1;ANALOGICO;523

Siempre el mismo patrón. Sin texto decorativo.

Subir el programa.

⚠️ Muy importante:
NO abrir el Monitor Serie después. El puerto solo puede usarse por un programa a la vez.


PARTE 2 – Preparar Windows para capturar datos

Windows no guarda automáticamente lo que sale por USB. Necesitamos un programa que lea el puerto serie y lo escriba en un archivo.

La solución más limpia: Python.


PARTE 3 – Instalar Python en Windows

3.1 Descargar

Ir a:
https://www.python.org/downloads/

Descargar versión para Windows.

3.2 Instalación correcta

Durante la instalación:

✔ Marcar “Add Python to PATH”
✔ Install Now

Finalizar instalación.


PARTE 4 – Instalar librería para comunicación serie

Abrir:

Inicio → escribir “cmd” → Enter

Ejecutar:

pip install pyserial

Si aparece “Successfully installed”, está correcto.


PARTE 5 – Crear el programa que guarda datos

5.1 Crear archivo

En el escritorio:

Crear archivo llamado:

guardar_datos.py

Abrir con Bloc de notas y pegar:

import serial
import csv
from datetime import datetime

# CAMBIAR ESTE PUERTO POR EL CORRECTO
PUERTO = "COM3"
BAUDIOS = 9600

try:
    ser = serial.Serial(PUERTO, BAUDIOS, timeout=1)
except:
    print("No se puede abrir el puerto. Verifica el COM.")
    exit()

archivo = open("datos_sensores.csv", mode="a", newline="")
writer = csv.writer(archivo, delimiter=";")

print("Capturando datos... Presiona Ctrl+C para detener.")

try:
    while True:
        linea = ser.readline().decode("utf-8").strip()

        if linea:
            timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            datos = linea.split(";")

            fila = datos + [timestamp]
            writer.writerow(fila)
            archivo.flush()

            print(fila)

except KeyboardInterrupt:
    print("Finalizando captura...")
    archivo.close()
    ser.close()

Guardar archivo.


PARTE 6 – Ejecutar captura de datos

  1. Cerrar el Monitor Serie del IDE.
  2. Abrir CMD.
  3. Ir al escritorio:
cd Desktop
  1. Ejecutar:
python guardar_datos.py

Si todo funciona, verás:

[‘S1’, ‘ANALOGICO’, ‘523’, ‘2026-03-02 21:30:10’]

Y se creará automáticamente:

datos_sensores.csv


PARTE 7 – Verificar archivo generado

Abrir el archivo con Excel.

Formato típico:

S1;ANALOGICO;523;2026-03-02 21:30:10
S1;ANALOGICO;517;2026-03-02 21:30:12

Ya tienes registro histórico con timestamp.

Eso significa:

  • Persistencia de datos
  • Trazabilidad
  • Capacidad de análisis

PARTE 8 – Problemas comunes y solución

Error: “Access denied”
→ El Monitor Serie está abierto.

Error: “No se puede abrir el puerto”
→ Puerto incorrecto.

Símbolos extraños
→ Baudrate incorrecto (debe coincidir con Serial.begin).

No se guardan datos
→ El Arduino no está enviando líneas con println.