Gráfico Excel del Data Logger

Data Logger Shield

 

  • Recuperar los datos de una tarjeta SD del Data Logger.
  • Preparar los datos para importarlos a Excel.
  • Mostrar la forma de convertir los timeStamp Unix que usa Arduino a formato de fechas Excel. 
  • Hacer un pequeño gráfico de ejemplo de cómo presentar estos datos..
  •  

    Material requerido.

    Imagen de Arduino UNO   Arduino UNO o equivalente.
    Vista principal Un Data logger shield.
    Sensor temperatura y humedad Un Sensor de temperatura y humedad DHT11,
    Porta baterias Un porta pilas.

     

    Presentando los datos del Data Logger

     

    En la última sesión, dejamos a medio terminar un bonito experimento de recopilación de datos de campo tomados en ambiente real. Montamos un sistema de recolección de información de temperatura y humedad mediante un Data Logger shield y un sensor DHT11.

    Ahora al cabo de unas cuantas horas y casi dos días, ha llegado el momento de sacar la tarjeta SD del Data Logger y ver que tal están nuestros preciosos datos.

    Conviene decir que en la primera prueba se me había olvidado que en el ejemplo de programa que usamos en la sesión anterior estábamos tomando valores de temperatura y humedad cada segundo, lo que es un completo disparate.

    Ni la temperatura ni la humedad tienen variaciones bruscas de valor y por eso, lo razonable sería tomar muestras cada minuto o incluso cada 10 minutos, pero como esto es un ejemplo práctico he muestreado cada 20 segundos para tener unos cuantos datos que mostrar sin tener que esperar una semana.

    Además llevamos ya no sé cuántos días que no ha parado de llover sin parar, lo que hace la gráfica de la humedad relativa bastante aburrida, pero es lo que tiene la realidad que se suele ser un asco pero hay que aceptarla como es.

    El objetivo de esta pequeña sesión es recibir esos datos de la tarjeta SD, comprobarlos y preparar unos gráficos con los valores medidos para su estudio y por comodidad y extensión voy a utilizar Excel 2013, pero cualquier hoja de cálculo serviría parecido, aunque hay par de cuestiones sobre las fechas que dependen de cada una, confío en que el procedimiento sirva para cualquiera que se os ocurra.

    Normalmente además de la fecha, tendremos que trabajarnos un poco los datos en crudo para que al importarlos a Excel no nos maree demasiado. Esto hará que esta sesión se centre un poco excesivamente en Excel pero va a ser preciso si queremos mostrar al final unas gráficas con la evolución de los parámetros medidos.

    La razón es que si no se lo ponemos fácil, Excel importará los datos como texto a la mínima duda y eso no nos conviene porque arruinaría nuestros valores y quedaría un gráfico bastantemente soso.

    Así que vamos con ello sin más tardanza

     

    Comprobando la tarjeta SD

     

    Si sacáis la tarjeta SD del lector del Data Logger shield, la podemos leer en nuestro PC, siempre y cuando tengas un adaptador adecuado, claro (Casi todos los portátiles actuales incluyes bahías lectoras de SDs). En mi caso tiene este contenido:

    Lista contenido

    Si recordáis, hicimos que el data Logger guardara un registro en un fichero llamado Loggerxx donde xx son números correlativos para no pisar registros previos, pero eso también significa que había más de una prueba y múltiplos intentos de realizar la captura de datos que ha ido dejando rastro visible en la tarjeta y que ya debería haber borrado.

    Si os fijáis Logger01, Logger05 y Logger06 ya contienen información, pero la primera buena fue Logger08 que tuve un par de días pero tomando datos cada segundo lo que la hace impracticable y por ultimo esta Logger10 que es una colección de muestras tomadas cada 20 segundos a lo largo de un par de días y que vamos a usar como base para el resto de la sesión: LOGGER10

    Es un documento de texto simple separado por comas, y podemos abrirlo con cualquier editor de textos:

    INformacion recogida

    La columna Fecha/Hora contiene el sello de tiempo de la medida, pero en el formato de Unix como segundos transcurridos desde la madrugada del año nuevo de 1970, que tendremos que procesar porque la fecha de Excel maneja un formato y clave diferente. La segunda y tercera columna corresponden a las lecturas de temperatura y humedad en cada momento.

    Aunque puede parecer listo para llevarse a Excel, la realidad es que nos daremos de bruces con varios problemas si antes no procesados un poco todo esto.

    La primera razón, al menos en España, es que nosotros usamos la coma como separador decimal y no el punto, por lo que en principio deberíamos sustituir 19.00 por 19,00.

    Claro que a su vez esto tiene otro problema, y es que hemos usado las comas como separadoras de valores y de ahí la extensión CSV del fichero de texto: Valores separados por comas (Coma Separated Values)

    Si lo importásemos así directamente, Excel los asignaría automáticamente a textos y no a números, dando al traste con nuestra intención de usarlos para hacer gráficos.

    Además en realidad los decimales no tienen mucho sentido en las lecturas de temperatura y humedad ya que el sensor tiene una incertidumbre mayor que eso con lo que en principio voy a eliminar las Strings “.00” directamente para simplificarme la vida.

    Si usáis un editor de textos decente, en mi caso Word de Microsoft, podremos hacer con facilidad varios procesos previos para preparar el fichero.

     

    Limpiando los datos en Word

     

    Lo primero es abrir el fichero LOGGER10 en Word:

    Muestras de datos

    Ahora vamos a empezar por eliminar todas las “.00” de nuestros datos. En Word es reemplazar la String buscada por nada:

    Reemplazando datos en Word

     

  • Fijaros que nada es no poner nada y no un espacio en blanco. 
  •  

    Si le dais a reemplazar todos, el resultado será algo como esto:

    Procesando texto csv

    Podemos dejar las comas como separadores, pero no conviene dejar los espacios en blanco porque Excel tiene tendencia a importar los valores como textos en cuanto ve espacios en blanco cerca así que es más seguro eliminarlos.

    De nuevo reemplazar “  “ dos espacios por nada (Dos espacios es lo que había en nuestro programa) y nos quedará poco más o menos así:

    Eliminando decimales

    Guarda este documento procesado como DATALOGGER__.CSV o lo que te parezca y ya podemos importar esto directamente a Excel con ciertas garantías. Para ello abrimos Excel y hacemos:

    [Menú] Datos\Obtener datos externos\desde texto

    Y seleccionáis vuestro fichero modificado:

    Seleccionando fichero CSV

    Ahora es el momento de elegir varias opciones de importación que espero sean automáticas:

    Importando CSV

    Aseguraros de elegir Delimitados por comas o tabuladores como separadores y pinchad en Mis datos tienen encabezados que son los nombres de las columnas y pinchad siguiente.

    Ahora nos pide que le indiquemos cual es el separador. Elegid coma y debajo veréis como os muestra cómo piensa encolumnar los datos.

    Importando CSV a excel

    Pincha en siguiente y aparecerá esto:

    Info 5

    Elegid general, porque las fechas no están en un formato que Excel reconozca y dar a finalizar. Aun os hará otra pregunta idiota más:

    Importando a excel

    Pulsa intro y ya está, te pondrá los datos importados a partir de la posición del cursor. Deberías obtener algo así:

    Resultado de la importacion

    La cosa va bastante bien, pero Excel no utiliza el mismo formato de fechas que Unix y por eso vamos a necesitar hacer una conversión de una a otra. Vamos en primer lugar a insertar una columna en blanco entre fecha y temp para acomodad la fecha Excel.

    Apunta a la columna C en el nombre y pulsando el botón derecho aparecerá la opción insertar. Píncha la y escribe el nombre de esa columna.

    Preparando datos

     

    Convirtiendo el formato de fechas

     

    Vale. Vamos con el tema de la conversión de fechas. Es sencillo, pero requiere entender la diferencia de como calculan las fechas Unix y Excel.

    Ya hemos dicho que el número que en Unix y Arduino representa nuestra fecha y hora es un long que representa el número de segundos transcurridos desde el año nuevo de 1970.

    Pero Excel calcula las fechas de modo diferente. Usa un numero con decimales en que la parte entera representa el número de días transcurridos desde el 1 de enero de 1900, y la parte decimal son los segundos transcurridos desde las 00 horas hasta el momento actual.

    La conversión es bastante fácil cuando entiendes lo de arriba. Como el número de segundos de un día es 60 secs x 60 min x 24 horas, El número de días de la fecha Excel es:

    (Fecha Unix) / (60 x 60 x24)

    Los decimales de esta operación representan los segundos de Excel como porcentaje de un día completo. Pero Unix cuenta desde el 01/01/ 1970 y Excel desde 01/01/1900 por lo que ya basta con sumar esta diferencia de fechas. Si tengo en Excel digamos en la celda A1 un timestamp Unix, para convertirlo al formato de excel tendríamos que hacer:

    +A1 / (60 + 60 +* 24) + ) + "1/1/1970"

    Excel tragará directamente esta formula, pero cuando vamos a convertir un puñado de formulas conviene ayudarle para ahorrarle operaciones escribiendo esto así:

    +A1 / 86400 + 25569

    Donde 25.569 es el número de días desde 1/1/1900 hasta 1/1/1970 y así Excel no tiene que trabajar mucho lo que acelerará el tiempo de calculo de las formulas, algo que puede ser importante si importáis unos cuantos miles de líneas de datos

    El resultado sera como asi:

    adaptando fechas desde unix

    Normalmente, Excel no te muestra los segundos en los formatos normales de fecha/hora y por eso he aplicado un formato personalizado para forzarle a mostralos: Apuntad a una de esas celdas y pulsad boton derecho + Formato celdas.

    personalizando la hora

    EL resto ya es muy facil. Basta con generar un grafico desde estas columnas. Pinchad en la cabecera de Excel Fecha y seleccionad Temp y Humedad. Ahora con CTRL+ SHIFT+ Flecha Abajo, os seleccionará las tres columnas completas.

    Selecciona Insertar en las tiras de opciones y ahora Gráficos recomendados:

    preparando graficos

    Selecciona ahora el grafico que mas te guste. Yo voy a coger uno de lineas para no complicarme la vida y despues puedes modificar el tamaño y la posición donde quieres el gráfico:

    grafico de temp y humedad

    En este ejemplo se aprecia como cae la temperatura entre la zona interior de mi despacho (Donde se esta calentito) y la tejabana exterior donde puse el Data logger y por cierto como se puso a llover en plan Noé, rapdiamente subió la humedad ambiente.

    En abscisas podéis apreciar las horas de las medidas y aquí os dejo una copia del fichero Excel con datos y gráfico, por si queréis echarle una ojeada: final

     

    Consideraciones finales

     

    La idea de esta humilde sesión solo ha sido tratar de disminuir el miedo que solemos tener a tomar valores reales en campo, porque antes o después tendréis que hacerlo y no vale la pena tenerle miedo porque es una cosa muy sencilla, especialmente si cuentas con algún sistema cómodo como un Data Logger Shield.

    Y aunque tenemos pendiente algún sistema de ingresar estos valores en una Base de datos, plotear los valores con un Excel o LibreOffice es una opción muy valida para presentar información de nuestros proyectos o simplemente medir valores reales para nuestra información.

    Animaros y veréis como vuestros proyectos mejoran con rapidez.

     

    Resumen de la sesión

    Data Logger Shield

     

  • Recuperar los datos de una tarjeta SD del Data Logger.
  • Preparar los datos para importarlos a Excel.
  • Mostrar la forma de convertir los timeStamp Unix que usa Arduino a formato de fechas Excel. 
  • Hacer un pequeño gráfico de ejemplo de cómo presentar estos datos..
  •  

    Material requerido.

    Imagen de Arduino UNO   Arduino UNO o equivalente.
    Vista principal Un Data logger shield.
    Sensor temperatura y humedad Un Sensor de temperatura y humedad DHT11,
    Porta baterias Un porta pilas.

     

    Presentando los datos del Data Logger

     

    En la última sesión, dejamos a medio terminar un bonito experimento de recopilación de datos de campo tomados en ambiente real. Montamos un sistema de recolección de información de temperatura y humedad mediante un Data Logger shield y un sensor DHT11.

    Ahora al cabo de unas cuantas horas y casi dos días, ha llegado el momento de sacar la tarjeta SD del Data Logger y ver que tal están nuestros preciosos datos.

    Conviene decir que en la primera prueba se me había olvidado que en el ejemplo de programa que usamos en la sesión anterior estábamos tomando valores de temperatura y humedad cada segundo, lo que es un completo disparate.

    Ni la temperatura ni la humedad tienen variaciones bruscas de valor y por eso, lo razonable sería tomar muestras cada minuto o incluso cada 10 minutos, pero como esto es un ejemplo práctico he muestreado cada 20 segundos para tener unos cuantos datos que mostrar sin tener que esperar una semana.

    Además llevamos ya no sé cuántos días que no ha parado de llover sin parar, lo que hace la gráfica de la humedad relativa bastante aburrida, pero es lo que tiene la realidad que se suele ser un asco pero hay que aceptarla como es.

    El objetivo de esta pequeña sesión es recibir esos datos de la tarjeta SD, comprobarlos y preparar unos gráficos con los valores medidos para su estudio y por comodidad y extensión voy a utilizar Excel 2013, pero cualquier hoja de cálculo serviría parecido, aunque hay par de cuestiones sobre las fechas que dependen de cada una, confío en que el procedimiento sirva para cualquiera que se os ocurra.

    Normalmente además de la fecha, tendremos que trabajarnos un poco los datos en crudo para que al importarlos a Excel no nos maree demasiado. Esto hará que esta sesión se centre un poco excesivamente en Excel pero va a ser preciso si queremos mostrar al final unas gráficas con la evolución de los parámetros medidos.

    La razón es que si no se lo ponemos fácil, Excel importará los datos como texto a la mínima duda y eso no nos conviene porque arruinaría nuestros valores y quedaría un gráfico bastantemente soso.

    Así que vamos con ello sin más tardanza

     

    Comprobando la tarjeta SD

     

    Si sacáis la tarjeta SD del lector del Data Logger shield, la podemos leer en nuestro PC, siempre y cuando tengas un adaptador adecuado, claro (Casi todos los portátiles actuales incluyes bahías lectoras de SDs). En mi caso tiene este contenido:

    Lista contenido

    Si recordáis, hicimos que el data Logger guardara un registro en un fichero llamado Loggerxx donde xx son números correlativos para no pisar registros previos, pero eso también significa que había más de una prueba y múltiplos intentos de realizar la captura de datos que ha ido dejando rastro visible en la tarjeta y que ya debería haber borrado.

    Si os fijáis Logger01, Logger05 y Logger06 ya contienen información, pero la primera buena fue Logger08 que tuve un par de días pero tomando datos cada segundo lo que la hace impracticable y por ultimo esta Logger10 que es una colección de muestras tomadas cada 20 segundos a lo largo de un par de días y que vamos a usar como base para el resto de la sesión: LOGGER10

    Es un documento de texto simple separado por comas, y podemos abrirlo con cualquier editor de textos:

    INformacion recogida

    La columna Fecha/Hora contiene el sello de tiempo de la medida, pero en el formato de Unix como segundos transcurridos desde la madrugada del año nuevo de 1970, que tendremos que procesar porque la fecha de Excel maneja un formato y clave diferente. La segunda y tercera columna corresponden a las lecturas de temperatura y humedad en cada momento.

    Aunque puede parecer listo para llevarse a Excel, la realidad es que nos daremos de bruces con varios problemas si antes no procesados un poco todo esto.

    La primera razón, al menos en España, es que nosotros usamos la coma como separador decimal y no el punto, por lo que en principio deberíamos sustituir 19.00 por 19,00.

    Claro que a su vez esto tiene otro problema, y es que hemos usado las comas como separadoras de valores y de ahí la extensión CSV del fichero de texto: Valores separados por comas (Coma Separated Values)

    Si lo importásemos así directamente, Excel los asignaría automáticamente a textos y no a números, dando al traste con nuestra intención de usarlos para hacer gráficos.

    Además en realidad los decimales no tienen mucho sentido en las lecturas de temperatura y humedad ya que el sensor tiene una incertidumbre mayor que eso con lo que en principio voy a eliminar las Strings “.00” directamente para simplificarme la vida.

    Si usáis un editor de textos decente, en mi caso Word de Microsoft, podremos hacer con facilidad varios procesos previos para preparar el fichero.

     

    Limpiando los datos en Word

     

    Lo primero es abrir el fichero LOGGER10 en Word:

    Muestras de datos

    Ahora vamos a empezar por eliminar todas las “.00” de nuestros datos. En Word es reemplazar la String buscada por nada:

    Reemplazando datos en Word

     

  • Fijaros que nada es no poner nada y no un espacio en blanco. 
  •  

    Si le dais a reemplazar todos, el resultado será algo como esto:

    Procesando texto csv

    Podemos dejar las comas como separadores, pero no conviene dejar los espacios en blanco porque Excel tiene tendencia a importar los valores como textos en cuanto ve espacios en blanco cerca así que es más seguro eliminarlos.

    De nuevo reemplazar “  “ dos espacios por nada (Dos espacios es lo que había en nuestro programa) y nos quedará poco más o menos así:

    Eliminando decimales

    Guarda este documento procesado como DATALOGGER__.CSV o lo que te parezca y ya podemos importar esto directamente a Excel con ciertas garantías. Para ello abrimos Excel y hacemos:

    [Menú] Datos\Obtener datos externos\desde texto

    Y seleccionáis vuestro fichero modificado:

    Seleccionando fichero CSV

    Ahora es el momento de elegir varias opciones de importación que espero sean automáticas:

    Importando CSV

    Aseguraros de elegir Delimitados por comas o tabuladores como separadores y pinchad en Mis datos tienen encabezados que son los nombres de las columnas y pinchad siguiente.

    Ahora nos pide que le indiquemos cual es el separador. Elegid coma y debajo veréis como os muestra cómo piensa encolumnar los datos.

    Importando CSV a excel

    Pincha en siguiente y aparecerá esto:

    Info 5

    Elegid general, porque las fechas no están en un formato que Excel reconozca y dar a finalizar. Aun os hará otra pregunta idiota más:

    Importando a excel

    Pulsa intro y ya está, te pondrá los datos importados a partir de la posición del cursor. Deberías obtener algo así:

    Resultado de la importacion

    La cosa va bastante bien, pero Excel no utiliza el mismo formato de fechas que Unix y por eso vamos a necesitar hacer una conversión de una a otra. Vamos en primer lugar a insertar una columna en blanco entre fecha y temp para acomodad la fecha Excel.

    Apunta a la columna C en el nombre y pulsando el botón derecho aparecerá la opción insertar. Píncha la y escribe el nombre de esa columna.

    Preparando datos

     

    Convirtiendo el formato de fechas

     

    Vale. Vamos con el tema de la conversión de fechas. Es sencillo, pero requiere entender la diferencia de como calculan las fechas Unix y Excel.

    Ya hemos dicho que el número que en Unix y Arduino representa nuestra fecha y hora es un long que representa el número de segundos transcurridos desde el año nuevo de 1970.

    Pero Excel calcula las fechas de modo diferente. Usa un numero con decimales en que la parte entera representa el número de días transcurridos desde el 1 de enero de 1900, y la parte decimal son los segundos transcurridos desde las 00 horas hasta el momento actual.

    La conversión es bastante fácil cuando entiendes lo de arriba. Como el número de segundos de un día es 60 secs x 60 min x 24 horas, El número de días de la fecha Excel es:

    (Fecha Unix) / (60 x 60 x24)

    Los decimales de esta operación representan los segundos de Excel como porcentaje de un día completo. Pero Unix cuenta desde el 01/01/ 1970 y Excel desde 01/01/1900 por lo que ya basta con sumar esta diferencia de fechas. Si tengo en Excel digamos en la celda A1 un timestamp Unix, para convertirlo al formato de excel tendríamos que hacer:

    +A1 / (60 + 60 +* 24) + ) + "1/1/1970"

    Excel tragará directamente esta formula, pero cuando vamos a convertir un puñado de formulas conviene ayudarle para ahorrarle operaciones escribiendo esto así:

    +A1 / 86400 + 25569

    Donde 25.569 es el número de días desde 1/1/1900 hasta 1/1/1970 y así Excel no tiene que trabajar mucho lo que acelerará el tiempo de calculo de las formulas, algo que puede ser importante si importáis unos cuantos miles de líneas de datos

    El resultado sera como asi:

    adaptando fechas desde unix

    Normalmente, Excel no te muestra los segundos en los formatos normales de fecha/hora y por eso he aplicado un formato personalizado para forzarle a mostralos: Apuntad a una de esas celdas y pulsad boton derecho + Formato celdas.

    personalizando la hora

    EL resto ya es muy facil. Basta con generar un grafico desde estas columnas. Pinchad en la cabecera de Excel Fecha y seleccionad Temp y Humedad. Ahora con CTRL+ SHIFT+ Flecha Abajo, os seleccionará las tres columnas completas.

    Selecciona Insertar en las tiras de opciones y ahora Gráficos recomendados:

    preparando graficos

    Selecciona ahora el grafico que mas te guste. Yo voy a coger uno de lineas para no complicarme la vida y despues puedes modificar el tamaño y la posición donde quieres el gráfico:

    grafico de temp y humedad

    En este ejemplo se aprecia como cae la temperatura entre la zona interior de mi despacho (Donde se esta calentito) y la tejabana exterior donde puse el Data logger y por cierto como se puso a llover en plan Noé, rapdiamente subió la humedad ambiente.

    En abscisas podéis apreciar las horas de las medidas y aquí os dejo una copia del fichero Excel con datos y gráfico, por si queréis echarle una ojeada: final

     

    Consideraciones finales

     

    La idea de esta humilde sesión solo ha sido tratar de disminuir el miedo que solemos tener a tomar valores reales en campo, porque antes o después tendréis que hacerlo y no vale la pena tenerle miedo porque es una cosa muy sencilla, especialmente si cuentas con algún sistema cómodo como un Data Logger Shield.

    Y aunque tenemos pendiente algún sistema de ingresar estos valores en una Base de datos, plotear los valores con un Excel o LibreOffice es una opción muy valida para presentar información de nuestros proyectos o simplemente medir valores reales para nuestra información.

    Animaros y veréis como vuestros proyectos mejoran con rapidez.

     

    Resumen de la sesión

     

  • Vimos cómo preparar los datos en formato CSV de la SD card para importarlos a Excel con comodidad.
  • Aprendimos a cambiar el formato de fechas entre el formato Unix que usa nuestro Arduino y el de Excel.
  • Presentamos un gráfico muy básico con Excel de estos datos conseguidos por el data logger.
  • Vimos cómo preparar los datos en formato CSV de la SD card para importarlos a Excel con comodidad.
  • Aprendimos a cambiar el formato de fechas entre el formato Unix que usa nuestro Arduino y el de Excel.
  • Presentamos un gráfico muy básico con Excel de estos datos conseguidos por el data logger.
  •