Raspberry Pi y DS1820

Una de las aplicaciones más fáciles e inmediatas a realizar con nuestra Raspberry Pi es convertirla en un termómetro de precisión. Para ello solo tenemos que contar con un sensor modelo DS1820 y unos pocos componentes más. Vamos a comentar esta sencilla práctica que, a buen seguro, animará a practicar con la Raspi y el puerto GPIO  a todos los que aún no se hayan decidido.

En caso de que tengamos problemas para localizar los componentes precisos podemos adquirir el Kit de prácticas de Electrónica Digital que la firma Webtronika publica en su tienda online, y que está especialmente enfocado a nuestra Raspberry Pi.

1c

Los materiales precisos para realizar la práctica son:

1 Tarjeta Raspberry Pi (con s.o. Linux Wheezy instalado)
1 Placa para prototipos
1 Resistencia de 4K7 ohmios
3 Cables para prácticas (macho-hembra)
1 Sensor DS18B20 de la firma Dallas (Maxim)

HARDWARE

La conexión del sensor ha de efectuarse cuidadosamente para evitar problemas (o incluso daños) a nuestra Raspberry. En estas ilustraciones podemos ver el conexionado que ha de efectuarse.

1820_02

Como podemos observar, la alimentación del sensor se toma desde la propia patilla de +5V de nuestra Raspberry (podía hacerse también desde los 3.3 V pero preferimos no sobrecargar esta línea). Referente a la señal y patilla de lectura, hemos de conocer que ,una vez cargados los módulos precisos (lo vemos más adelante) la señal con la información de temperatura se transmite vía protocolo serie 1-Wire y llega a la patilla que gestiona la señal GPIO4 (es la patilla 7 de acuerdo a la numeración estándar). Al sensor DS1820 tan solo ha de añadirse una resistencia de “pull-up” en la línea de datos.

1820_08

Es importante reseñar que los dispositivos 1-Wire se identifican mediante un número (ID) único, razón por la que podríamos conectar varios en cascada,  viajando la señal de todos ellos por la misma línea de datos. El software se encargará de  “interrogar” al sensor/dispositivo adecuado.

Si hacemos uso del kit de Webtronika comentado tenemos la posibilidad de descargar un detallado documento (ficha) que nos resume el proceso completo de montaje.

La secuencia de montaje recomendada en la citada ficha puede ser utilizado también aquí:

  • Apagamos corectamente la tarjeta Raspberry Pi ( sudo halt )
  • Conectamos a la placa de prototipos la resistencia (pull-up) de datos (4K7) y el sensor 18(B)20 de acuerdo al esquema mostrado.
  • Conectamos los 3 hilos desde la placa de prototipos al puerto GPIO de la Raspberry Pi.
  • Nos aseguramos de que el cableado es el correcto
  • Arrancamos la Raspberry Pi.
  • Ejecutamos el software de control del sensor.

SOFTWARE

Describimos a continuación la operativa a llevar a cabo para las primeras pruebas software de nuestro montaje, las cuales pueden efectuarse desde el propio terminal Linux. Posteriormente mostraremos un código desarrollado en Python para el manejo del sensor. Este código puede copiarse, o bien descargarse en forma de fichero al final de esta entrada.

El software preciso para manejar el sensor de temperatura parte de la carga de los módulos que precisa la comunicación 1-Wire y, despues, del lenguaje elegido para su implementación. Si decidimos probar el montaje sin desarrollar un programa específico podemos hacerlo desde el propio terminal Linux, mediante comandos simples. Esto es lo que hemos de hacer :

Accedemos al terminal y tecleamos (con privilegios de root)

sudo modprobe wire
sudo modprobe w1-gpio
sudo modprobe w1-therm

Ahora, – si el sensor DS1820 está correctamente conectado – se habrá creado una carpeta con el ID del dispositivo sensor en /sys/bus/w1/devices/

IMPORTANTE : cada dispositivo DS1820 tiene un ID diferente, por lo que los pasos siguientes han de ejecutarse con el ID de nuestro sensor. Saber el ID de nuestro sensor es imprescindible para desarrollar cualquier aplicación de lectura para el mismo.

Por ejemplo (con el sensor usado por nosotros) si ejecutamos

ls /sys/bus/w1/devices/

obtendremos

10-0008027f3664 w1_bus_master1

por lo que el ID de nuestro sensor DS1820 sería 10-0008027f3664

Ejecutamos ahora el comado “more” para visualizar la lectura del sensor.

(nota : usando el ID del  sensor de Webtronika, deberemos usar el ID de nuestro sensor )

more /sys/bus/w1/devices/10-0008027f3664/w1_slave

28 00 4b 46 ff ff 0d 10 57 : crc=57 YES
28 00 4b 46 ff ff 0d 10 57 t=19937

vemos que la lectura ( en milésimas de grado) es 19937 por lo que sabemos que nuestro sensor está midiendo 19,9 ºC

Podemos también utilizar un lenguaje de alto nivel para “interrogar” al sensor. Comentamos ahora un programa desarrollado en Python y que  puede copiarse tal como está y guardarse en un fichero llamado mide.py en nuestra Raspberry Pi. También puede ser descargado al final de este artículo y copiarse a la carpeta deseada de nuestra Raspberry Pi. Para ponerlo en marcha hemos de seguir cuidadosamente estos pasos:

(1) Tener el sistema operativo Raspbian Wheezy instalado en nuestra Raspberry Pi.

(2) Efectuar correctamente el conexionado del sensor DS1820 a nuestra Raspberry Pi.

(3) ¡¡ IMPORTANTE !!  => Editad el código de mide.py y cambiad la linea ( 24 en el código mostrado) con el ID del dispositivo por el nuestro.

Cambiamos  10-0008027f3664  por ejemplo por  XX-XXXXXXXXXXXX en la línea 24

tfile = open(“/sys/bus/w1/devices/10-0008027f3664/w1_slave”)

( XX-XXXXXXXXXXXX será el ID de nuestro dipositivo, el cual podemos averiguar efectuando los comandos comentados anteriormente en este artículo)

(4) Vamos al directorio del programa y damos al fichero mide.py permisos de ejecución (totales realmente) con

sudo chmod 777 mide.py

(5) En un terminal Linux, desde el directorio donde esté situado el programa, ejecutamos

python mide.py

(6) El programa no recorta los decimales mostrados. Podemos forzar a que muestre – por ejemplo – una sola posición decimal ejecutándolo con el parametro 1, o sea :

python mide.py 1

1820_04

Código del programa mide.py

Descarga del código :

Mide.py

 

 

  Bitcoin Currency Converter
Amount of BTC to convert
To currency:
1BTC =