DS18b20

Iš Žinynas.
Jump to navigation Jump to search

Temperatūros sensorius.

41f5egsLS2L.jpg

RaspberryPI pajungimas naudojant 4.7k Ohm rezistorių

 Standartinis jungimas

35139160190 cea3435a09 b.jpg


Alternatyvus jungimas, kai standartiniai pinai jau yra užimti

Termpo gpio209287.jpg

Termpo gpio43250897.jpg

  • PIN17 - VCC (Raudonas)
  • PIN14 - GND (Juodas)
  • PIN11 - DATA (Geltonas)

Raspbian paruošimas

Įgalinam wire 1 overlay, į /boot/config.txt įrašome šią eilutę:

dtoverlay=w1-gpio,gpiopin=17

Išsaugome ir perkrauname RaspberryPI. Perkrovus turėtų atsirasti šie įrenginiai:

ls /sys/bus/w1/devices

Daugiau apie wire 1 sąsają. DĖMESIO! Jungiant standartiškai kai standartiniai pinai nėra užimti, žiūr. pav. 1, nereikia prirašyti gpiopin parametro, tuomet duomenys eis standartiškai per PIN 7.

Python scriptas temperatūrai nuskaityti

#!/usr/bin/env python
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)