
GPIO and Python (7/9) - Temperature Sensor
In this project you will learn how to wire and program a temperature sensor. Let’s see how hot the room is.
Things you will need:
Raspberry Pi + SD Card
Keyboard + Mouse
Monitor + HDMI Cable
Power Supply
Breadboard
1x Red LED
1x Blue LED
2x 330? Resistor
5x M/M Jumper Wire
7x M/F Jumper Wire
1x Button
1x Buzzer
1x DS18B20 Temperature Sensor
1x 4k7? Resistor
Prerequisites:
Latest version of Rasbian installed on your SD Card
Raspberry Pi setup with a keyboard, mouse and monitor

1. First we need to enable I2C on our Raspberry Pi. We do this by opening
the raspi-config menu.
sudo raspi-config

2. We then need to go to the Interfacing Options menu.

3. Select I2C and then Yes to enable it.

4. Next we need to enable the 1-wire I2C library. To do this we need to edit the boot config.txt file
sudo nano /boot/config.txt
5. Scroll down to the bottom of the file and add the following line:
dtoverlay=w1-gpio

6. Now reboot
sudo reboot
7. Change the current directory to our gpio_python_code directory:
cd gpio_python_code
8. Create a file for our temperature script:
touch 7_temperature.py

9. Edit the 7_temperature.py script using nano 7_temperature.py and add the following code:
#!/usr/bin/python
import glob
from time import sleep
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
def read_temp_raw():
f = open(device_file, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
sleep(1)

10. Execute your 7_temperature.py script
sudo python 7_temperature.py

