DS18b20: Skirtumas tarp puslapio versijų
Jump to navigation
Jump to search
| 8 eilutė: | 8 eilutė: | ||
== RaspberryPI pajungimas naudojant 4.7k Ohm rezistorių == | == RaspberryPI pajungimas naudojant 4.7k Ohm rezistorių == | ||
| + | === Standartinis jungimas === | ||
[[Vaizdas:35139160190 cea3435a09 b.jpg]] | [[Vaizdas:35139160190 cea3435a09 b.jpg]] | ||
| − | |||
| − | PIN17 - VCC (Raudonas) | + | === Alternatyvus jungimas, kai standartiniai pinai jau yra užimti === |
| − | PIN14 - GND (Juodas) | + | |
| − | PIN11 - DATA (Geltonas) | + | [[Vaizdas:Termpo gpio209287.jpg|600px]] |
| + | |||
| + | [[Vaizdas:Termpo gpio43250897.jpg|600px]] | ||
| + | |||
| + | * PIN17 - VCC (Raudonas) | ||
| + | * PIN14 - GND (Juodas) | ||
| + | * PIN11 - DATA (Geltonas) | ||
== Raspbian paruošimas == | == Raspbian paruošimas == | ||
Įgalinam wire 1 overlay, į /boot/config.txt įrašome šią eilutę: | Įgalinam wire 1 overlay, į /boot/config.txt įrašome šią eilutę: | ||
| − | dtoverlay=w1-gpio | + | dtoverlay=w1-gpio,gpiopin=17 |
Išsaugome ir perkrauname [[RaspberryPI]]. Perkrovus turėtų atsirasti šie įrenginiai: | Išsaugome ir perkrauname [[RaspberryPI]]. Perkrovus turėtų atsirasti šie įrenginiai: | ||
ls /sys/bus/w1/devices | ls /sys/bus/w1/devices | ||
| + | Daugiau [https://pinout.xyz/pinout/1_wire 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 === | ||
| + | <syntaxhighlight lang="python"> | ||
| + | #!/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) | ||
| + | </syntaxhighlight> | ||
[[Category:Hardware]] | [[Category:Hardware]] | ||
[[Category:RaspberryPI]] | [[Category:RaspberryPI]] | ||
[[Category:OrangePI]] | [[Category:OrangePI]] | ||
16:25, 15 liepos 2019 versija
Temperatūros sensorius.
RaspberryPI pajungimas naudojant 4.7k Ohm rezistorių
Standartinis jungimas
Alternatyvus jungimas, kai standartiniai pinai jau yra užimti
- 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)

