Hitanemi

Hér munt þú setja upp forrit á Raspberry Pi tölvu sem les hitastig af DS18B20 1-wire hitamæli. Fyrsta skrefið er að tengja hitamælinn við tölvuna.
Hitanemi tengdur

Tengdu 3,3 V pinnann við jákvæðu braut brauðbrettisins og einhvern neikvæðu pinnanna við neikvæðu brautina. Stingdu rauðu og svörtu endum hitanemans í jákvæðu og neikvæðu brautirnar, tilsvarandi.
Tengdu gula vírinn í einhverja tóma röð á brauðbrettinu og tengdu svo þá röð við jákvæðu brautina með 4,7 kΩ viðnámi.
Lokaskrefið er að tengja röðina með gula vírnum við GPIO pinna 4. Þá á þetta að vera komið. Tími til að kasta í forrit.
Python forrit
#!/usr/bin/python3
#
# Þetta forrit er gert til að keyra á Raspberry Pi og lesa af
# DS18B20 1-wire hitamæli.
import os
import glob
import time
import datetime
def read_temp_raw(dev):
"""Les hrá gögnin af hitamælinum."""
with open(dev, "r") as f:
lines = f.readlines()
return lines
def read_temp(dev):
"""Les hrá gögn og skilar hitastigi í Celsiusgráðum."""
lines = read_temp_raw(dev)
while lines[0].strip()[-3:] != "YES":
time.sleep(0.2)
lines = read_temp_raw(dev)
equals_pos = lines[1].find("t=")
if equals_pos != -1:
temp_string = lines[1][equals_pos + 2:]
temp_c = float(temp_string) / 1000.0
return temp_c
return None
# Byrjum á því að hlaða 1-wire reklana.
# Ef búið er að hlaða þeim í /etc/modules er þetta óþarfi,
# en það sakar þó ekki.
os.system("modprobe w1-gpio")
os.system("modprobe w1-therm")
# Ef allt er rétt stillt og hitamælirinn er tengdur við pinna 4
# á hann að birtast í skráarsafninu undir /sys/bus/w1/devices/
base_dir = "/sys/bus/w1/devices/"
device_folders = glob.glob(base_dir + "28*")
# Skilgreinum skrána sem við ætlum að safna gögnum í.
filename = "log_temps.log"
# Hér byrjar lykkjan þar sem við endurtökum mælingarnar í sífellu
# þar til forritið er stöðvað.
while True:
try:
timestamp = str(datetime.datetime.now())
temperatures = []
for device_folder in device_folders:
device_file = device_folder + "/w1_slave"
temperatures.append(str(read_temp(device_file)))
line = timestamp + "t" + "t".join(temperatures) + "n"
with open(filename, "a") as logfile:
logfile.write(line)
print(line)
# Bíðum í skilgreinda stund.
time.sleep(10)
except KeyboardInterrupt:
print("end")
raise