반응형
Raspberry Pi3로 DS1820 온도센서를 사용해서 온도를 측정하는 방법
참고이미지 출처 : http://www.circuitbasics.com/raspberry-pi-ds18b20-temperature-sensor-tutorial/
온도측정 파이선 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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)
|
cs |
온도 데이터를 LCD 에 출력하는 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import os
import glob
import time
from RPLCD import CharLCD
lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])
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
#CELSIUS CALCULATION
def read_temp_c():
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 = int(temp_string) / 1000.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH
temp_c = str(round(temp_c, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING
return temp_c
#FAHRENHEIT CALCULATION
def read_temp_f():
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_f = (int(temp_string) / 1000.0) * 9.0 / 5.0 + 32.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH
temp_f = str(round(temp_f, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING
return temp_f
while True:
lcd.cursor_pos = (0, 0)
lcd.write_string("Temp: " + read_temp_c() + unichr(223) + "C")
lcd.cursor_pos = (1, 0)
lcd.write_string("Temp: " + read_temp_f() + unichr(223) + "F")
|
cs |
반응형
'개발자 > Raspberry Pi3' 카테고리의 다른 글
DORJI DRF1276DM LoRa 모듈 timeout error 발생 해결 방법 (0) | 2018.02.02 |
---|---|
868/915MHz LoRa Sx1276 UART interface Module DRF1276DM (0) | 2018.02.01 |
라즈베리 파이 캐릭터 LCD 사용하기 C언어 HOW TO SETUP AN LCD ON THE RASPBERRY PI AND PROGRAM IT WITH C (0) | 2017.12.20 |
라즈베리 파이 LCD 사용 파이썬 RASPBERRY PI LCD AND PROGRAM IT WITH PYTHON (0) | 2017.10.24 |
미세먼지 측정 센서 Nova PM sensor SDS011 공기 품질 센서 사용법 (0) | 2017.10.18 |
Sunfounder Car for Raspberry Pi 라즈베리 카 조립 시험 착수 (0) | 2017.10.17 |
라즈베리 파이3 부팅이 끝나면 자동으로 실행하게 하는 방법 bash_completion.sh (19) | 2017.09.19 |
라즈베리파이3 에 Q4OS 설치하고 오피스 설치해서 사용하기 (0) | 2017.09.11 |
더욱 좋은 정보를 제공하겠습니다.~ ^^