DS18B20 Temperature Sensing LAB2
รายการอุปกรณ์
-ชุด Raspberry pi
-SD Card 4G Class4 ขั้นต่ำ
-OS Raspbian "2013-09-25-wheezy-raspbian.zip" http://www.raspberrypi.org/downloads
-DS18B20 Temperature
-WIFI USB / LAN Wires
-Breadboard+Jumper Wires
-Mount+Keyboard
ds18b20 เป็นอุปกรณ์เซ็นเซอร์วัดอุณหภูมิโดยเอาต์พุตที่ได้จะเป็น digital การเชื่อมต่อนนั้นเราสามารถเชื่อมต่อพอร์ต GPIO ของ Raspberry pi
การเชื่อมต่อ raspberry pi กับ ds18b20 โดยใช้ตัวต้านทานอีตัว ค่า 4.7K หรือใกล้เคียง
gpio ขา 1 (3.3v) >> ds18b20 ขาบนสุด
gpio ขา 4 (gpio4 in) >> ds18b20 ขากลาง
gpio ขา 1 (gnd) >> ds18b20 ขาล่างสุด
ส่วนตัวต้านทาน คร่อมระหว่าขา ds18b20 ระหว่าขา ขาบนสุด และ ขากลาง
การต่อขาอ้างอิงจากภาพนี้เป็นหลัก
หรือ
ต่อมาเปิด terminal ขึ้นมาจากนั้นทำตามคำสั่งเหล่านี้เพื่อ
#sudo modprobe w1-gpio
#sudo modprobe w1-therm
#cd /sys/bus/w1/devices
#ls
#cd 28-xxxx (change this to match what serial number pops up)
#cat w1_slave
ดังรูป
จากนั้นเพิ่ม python script โดยสร้างไฟล์ชื่อ thermometer.py
#sudo nano thermometer.py
จากนั้นเพิ่ม code ข้างล่างนี้ไปแล้ว save ด้วย ctrl+x กด y กด enter
import os
import glob
import time
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
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':
time.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())
time.sleep(1)
สุดท้ายทดสอบการทำงานของ python script ด้วย
#sudo python thermometer.py
ผลลัพธ์จะได้ดังรูป http://learn.adafruit.com/assets/3786
**การหยุดไฟลืที่รันอยู่โดยกด ctrl+c หรือ ctrl+z**
DS18B20 Temperature Sensing LAB2