Like us on google+

Monday, 21 October 2013


Temperature sensor using Pi

While searching for a simple way to measure temperature using my Raspberry Pi I came across the DS18B20 1-wire digital temperature sensor. This promised an accurate way of measuring temperature with a few wires and almost no external components. The device only cost a few pounds and it seemed too good to be true.
So I bought one. Within a few minutes I was measuring the temperature with it. It is so simple to use and the perfect starting point for creating a Raspberry Pi based temperature data logger.
The diagram on the right shows the DS18B20 device. It has three pins and comes in a TO-92 package which means it looks similar to other devices you may have used such as transistors.
DS18B20 Pin-outPin 1 is Ground. Pin 2 is the data pin and Pin 3 is the power pin. The only external component required is a single 4.7Kohm resistor.
In my testing I didn’t have one of these so I used 2 x 2.2Kohm resistors in series. This worked fine..
I used a small piece of breadboard and some jumper cables to connect it to the GPIO header on my Raspberry Pi.
DS18B20 Temperature Sensor
DS18B20 Temperature Sensor
Pin 1 was connected to P1-06 (Ground)
Pin 2 was connected to P1-07 (GPIO4)
Pin 3 was connected to P1-01 (3.3V)
A 4.7Kohm resistor was placed between Pin 2 and Pin 3.
It is important to double check that you don’t confuse Pin 1 and Pin 3 on the device otherwise the power will be applied the wrong way round!
Once you have connected everything together you can power up your Raspberry Pi.
It’s always best to tackle new projects with an updated SD card. I tend to use the latest Raspbian image from the download page and then update it from time to time using the following two commands :
sudo apt-get update
sudo apt-get upgrade
In order to configure the sensor you just need to run the following commands at the command prompt :
sudo modprobe w1-gpio
sudo modprobe w1-therm
Hopefully this will have set up the device to report its temperature via GPIO4. Use the commands below to go to the directory that contains the detected 1-wire devices :
cd /sys/bus/w1/devices
This will list the directories associated with your 1-wire devices. Each one has a unique ID and in my case it is 28-00000482b243. Your ID will be different so be sure to use that in the example code below. Using “cd” we can change to the temperature sensor directory, list the contents and then view the “w1_slave” file :
cd 28-00000482b243
cat w1_slave
The complete command line setup process looks like this :
DS18B20 Command Line Setup
DS18B20 Command Line Setup
The “w1_slave” file contains a bunch of data but the “t=23062″ at the end is the temperature reading. In this example the temperature is 23.062 degrees Celsius (centigrade).
Try touching the sensor with your finger and then using “cat w1_slave” to take another reading …


  • Facebook
  • Twitter
  • Myspace
  • Google Buzz
  • Reddit
  • Stumnleupon
  • Delicious
  • Digg
  • Technorati
About us:
Hi guys Sandesh and Rajesh here ... studing engineering in PESIT started this blog as a google contest and also we love blogging ...Hope u like it ...Encourage us by liking us on g+... Any queries dont hesitate to ask Read More →