Sie sind auf Seite 1von 9

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

1 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Carlini's Blog
Viajando al futuro a un segundo por segundo

Sensor de temperatura DS18B20 en la


Raspberry Pi
Posted on 19/03/2015
El sensor DS18B20 es un termmetro digital que se puede utilizar con la Raspberry Pi de
forma muy sencilla. Consulta sus especificaciones aqu.
Est disponible en varios formatos: como transistor suelto, como mdulo (con la resistencia
incorporada, listo para ser usado) o en su versin sumergible.

Transistor DS18B20

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

2 de 9

Sensor DS18B20 como mdulo

Sensor DS18B20 sumergible

Sensores DS18B20: transistor suelto, en mdulo y

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

sumergible

Vamos a empezar con el transistor suelto. Es necesario que coloquemos una resistencia
pull-up de 4K7 ohmios, y lo conectemos a la Raspberry Pi segn el siguiente esquema:

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

3 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Esquema de conexin de DS18b20 a la Raspberry Pi (tomado de REUK.co.uk)

DS18B20 conectado a la Raspberry Pi B

Una vez conectado, la lectura de la temperatura es muy sencilla; se hace leyendo un


fichero. Basta seguir los siguientes pasos (el primer paso es necesario slo si tienes un
Kernel superior al 3.18 que sali para dar soporte a la Raspberry Pi 2). Primero, hay que
editar el siguiente fichero:

sudo nano /boot/config.txt

Y aadir al final del mismo:

# 1-wire settings
dtoverlay=w1-gpio,gpiopin=4

Salimos del editor nano (pulsando CTRL-X y luego S, y luego ENTER, para salir guardando
el fichero).

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

4 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Tras esto hay que reiniciar la Raspberry Pi. Una vez ha reiniciado, ejecutamos los siguientes
comandos:

sudo modprobe w1-gpio


sudo modprobe w1-therm

A continuacin tenemos que ir al siguiente directorio, y listar su contenido:

cd /sys/bus/w1/devices
ls

Aparecern varios directorios, entre ellos uno (o varios, si tenemos varios termmetros
conectados), con el nombre 28-XXXXX. 28-XXXXX es el nmero de serie de nuestro
termmetro, diferente para cada transistor. Por ejemplo, este termmetro es
28-0000052cd55d. Entramos en ese directorio (reemplazando XXXXX por nuestro cdigo), y

leemos el fichero w1_slave:

cd 28-XXXXX
cat w1_slave

La salida ser algo as:

87 01 4b 46 7f ff 09 10 48 : crc=48 YES
87 01 4b 46 7f ff 09 10 48 t=24437

La temperatura viene expresada en mC. En la salida anterior dice t=24437, que tenemos
que dividir por 1000 para tener la temperatura en C, es decir: 24.437 C.
Con los otros sensores se procede de la misma manera. El mdulo se conecta
directamente, sin necesidad de aadir la resistencia (ya la lleva incluida); el sumergible sin
embargo s necesita la resistencia.

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

5 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Mdulo DS18B20 conectado a la Raspberry Pi B

Sensor DS18B20 sumergible conectado a la Raspberry Pi B

Podemos colocar muchos sensores en paralelo, con una sola resistencia para todos ellos.
Como cada sensor tiene un cdigo diferente, aparecern carpetas para cada uno de ellos, y
no tendremos ms que leer el que queramos.

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

6 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Esquema de conexin de varios DS18B20 a la Raspberry Pi (tomado de REUK.co.uk)

Dos sensores DS18B20 conectados a la Raspberry Pi

Este procedimiento para obtener la temperatura es un poco rupestre, as que vamos a


optimizarlo, creando un pequeo script bash y luego otro en python.
Tomar la temperatura desde un script bash
Para el script en bash, leer el fichero y quedarnos con la temperatura es fcil. El problema
es que ese nmero tenemos que dividirlo por 1000, y, aunque sorprenda, en bash no se
puede dividir As que instalamos el pequeo programa bc:

sudo apt-get install bc

Y ya podemos editar un pequeo bash, que he llamado temp.sh:

#!/bin/bash
tempsenso=$(grep "t=" /sys/bus/w1/devices/28-00000560a4e2/w1_slave |
echo "scale=3; $tempsenso/1000" | bc

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

7 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

Podemos modificar el nmero de decimales modificando scale=. Lo he puesto igual a 3


decimales, que es la precisin con la que muestra los resultados el sensor DS18B20.
Tomar la temperatura en pyhton
En python procederamos de forma muy similar:

# -*- coding: utf-8 -*def get_temp_sens():


tfile = open("/sys/bus/w1/devices/28-00000560a4e2/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
return float(temperature)
mensaje = str(get_temp_sens()) + " C"
print(mensaje)

(La primera lnea es para que salga bien el smbolo ).

Un ltimo comentario y es que usar estos termmetros junto con la cmara de la Raspberry
Pi puede dar algn problema.

Referencias
Adafruit
REUK.co.uk
University of Cambridge Computer Laboratory
Diverteka
Esta entrada fue publicada en Raspberry Pi por carlini. Guarda el enlace permanente
[http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/] .
6 PENSAMIENTOS EN SENSOR DE TEMPERATURA DS18B20 EN LA RASPBERRY PI

Pingback: Display de 4 dgitos de 7 segmentos en la Raspberry Pi |


Carlini's Blog
Pingback: Sensores de humedad y temperatura DHT11 y DTH22 en

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

8 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

la Raspberry Pi | Carlini's Blog

Mariano
en 02/04/2016 en 16:26 dijo:

Buenas tarde Carlini:


Si ya tengo ocupado el GPIO 4 con el modulo Real time Clock DS3231. Qu
GPIO puedo utilizar para conectar este sensor de temperstura?
Gracias. Un Saludo

carlini
en 02/04/2016 en 21:22 dijo:

Hola, Mariano:
Creo que slo puedes utilizar el GPIO 4 Es posible que mientras no hagas
lecturas de los dos mdulos al mismo tiempo puedan compartir el GPIO 4 sin
problemas. Has probado a ver si funciona?

Mariano
en 03/04/2016 en 10:05 dijo:

Gracias por interesarte Carlini:


Manteniendo conectado el modulo Real time Clock DS32312 prob, utilizando para
el sensor DS18B20 el GPIO 27, logicamente cambiando en el fichero /boot
/config.txt lo que tu habas escrito por:
# 1-wire settings
dtoverlay=w1-gpio,gpiopin=27
y funciona perfectamente.
Un Saludo. Gracias de nuevo.

09/12/2016 11:31

Sensor de temperatura DS18B20 en la Raspberry Pi | Carlini's Blog

9 de 9

http://carlini.es/sensor-de-temperatura-ds18b20-en-la-raspberry-pi/

carlini
en 03/04/2016 en 11:12 dijo:

Buena idea. Gracias por compartir la solucin!

09/12/2016 11:31

Das könnte Ihnen auch gefallen