En esta sesión se pretende aprender a adquirir datos de un sensor BMP280 utilizando una placa Arduino Uno y enviarlos por el puerto serie para su posterior análisis. Concretamente, se leen las magnitudes de temperatura, presión atmosférica y altitud, y se envían en formato de texto con los datos separados por comas.
Además, se incorpora un número de paquete a cada conjunto de datos, que permite identificar el orden de las muestras y comprobar si se pierde alguna durante la transmisión. Los datos se envían de forma periódica, a razón de una muestra por segundo, cumpliendo así los requisitos del ejercicio propuesto.
El objetivo final es generar una salida ordenada y estructurada, adecuada para ser almacenada o procesada posteriormente en herramientas como hojas de cálculo o programas de análisis de datos.
Paso a paso de la creación del código:
Partimos de la libreria de arduino adafruit que descargamos en la sesión anterior (6.0)
int paquete = 0;
Hemos añadido esta línea fuera del setup() y del loop() para crear una variable llamada paquete.
Esta variable se utiliza para numerar cada envío de datos por el puerto serie. El número de paquete comienza en 0 y se incrementa en cada iteración del programa.
Hemos cambiado el void loop() {
El nuevo deberia quedar asi:
void loop() {
Serial.print(paquete);
Serial.print(", ");
Serial.print(bmp.readTemperature());
Serial.print(", ");
Serial.print(bmp.readPressure());
Serial.print(", ");
Serial.print(bmp.readAltitude(1025));
Serial.print(", ");
Serial.println("");
Anteriormente, los datos del sensor BMP280 se enviaban separados por punto y coma, con un retardo de 2 segundos y sin numeración de los envíos. Esto dificultaba su análisis y no seguía el formato solicitado.
Ahora, el loop() realiza lo siguiente:
-Envía por el puerto serie el número de paquete al inicio de cada línea, lo que permite identificar el orden de las muestras.
-Envía los valores de temperatura, presión y altitud obtenidos del BMP280.
-Separa todos los valores mediante comas, para obtener un formato limpio y compatible con CSV.
-Añade un identificador ("") al final de cada línea,.
-Incrementa el número de paquete en cada iteración con paquete++.
-Envía los datos una vez por segundo, usando delay(1000);, para generar un flujo continuo de información.
Resultado