lunes, 23 de noviembre de 2015

Medida, registro, gráfica de temperatura de 4 tinas de teñido utilizando el Raspberry Pi (RPI)


Hardware y Conexiones

-RPI: Micro SD  y fuente de 5V.
-Sensor DS18B20. Cables, resistencia 4.7k.  El sensor tiene 3 señales. Rojo a 3.3V. Negro a Tierra (GND). Amarillo al GPIO4 (Pin #7 en RPI B+). Conectar resistencia entre rojo y amarillo. Se conectan múltiples sensores a los mismos pines, una resistencia es suficiente.
- Conexión a red, cable o inalámbrico (WiFi).
-Pantalla 7'' 5V con conexión HDMI
Teclado: Se adaptó un antiguo teclado de tablet


Software.
-Raspbian y actualizar el sistema.
-Python
-Habilitar SSH
-Apache2 como servidor web
-mysql como base de datos.
-phpmyadmin para crear y administrar base de datos
-php para acceder, escribir y leer en la base de datos
- Node.js para graficar.
-Descagar librerías D3.JS y ponerlas en servidor local.




Habilitar los sensores de temperatura
Abrir el terminal

  • sudo nano /boot/config.txt
    Añadir la siguiente línea:  dtoverlay=w1-gpio
  • sudo reboot 
  • sudo modprobe w1-gpio
  • sudo modprobe w1-therm

Para probar los sensores ir a: sys/bus/w1/devices  digitar ls para que aparezca el nombre del sensor. Ingresar al sensor con cd 28-NNNNNNNN (Reemplazar NNN.. por nombre del sensor. Luego enviar la orden cat w1_slave

Programación.

Se ha utilizado un archivo python para registrar mediciones en la base de datos y uno php para visualizar y plotear las temperaturas.
El archivo python debe ponerse en el CRON para que el sistema automáticamente haga las mediciones según  indiquemos.

-Descargar archivo python para escribir data en base de datos  
-Descargar archivo php para visualizar y plotear datos (El archivo está en txt. descargarlo y cambiarle la extensión a php)

Manejo de base de datos (BD) con phpmyadmin
Crear dos usuarios: Uno con permisos para escribir en la BD y otro usuario para leer la BD
Crear 2 tablas. Una con 3 columnas: dtg, temperatura y sensor_id. La otra tabla con 2 columnas: sensor_id y tinas, esta tabla la hemos creado para poder asignarle el nombre que querramos a cada sensor DS18B20





Vista de temperatura vía explorador web. Se ha utilizado php, html y D3.JS



Algunas problemas ocurridos: marca temperatuas negativas o muy altas, algunos sensores dejan de ser reconocidos. Estas dos cosas aun no tienen solucion pero no persisten.


Comentarios
-El RPI actualizará fecha y hora desde la internet. Si no se tiene, o no se quiere depender de una conexión a internet se debe instalar un módulo de reloj, puede ser el DS3231.


-Visualizar los datos de temperatura desde la línea de comandos, o ingresando a phpmyadmin no es difícil, pero tampoco es practico. Alojaremos el archivo php en la carpeta del servidor web (var/www/). El acceso será desde cualquier equipo conectado a la red interna a través de IP(aa.bb.cc.dd/temperatura.php

Costo aproximado
RPI = $35
Sensores Ds18b20 x4 = $12
Tarjeta microSD 8gb = $7
Cargador 5V x 2A x 2 salidas = $3
Adaptador USB wifi = $ 9
Pantalla LCD 7" = $25
Cable HDMI = $3




Referencias

https://www.raspberrypi.org/documentation/linux/usage/cron.md