
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.

Tengdu 3,3 V pinnan 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:
#!/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):
''' Þetta fall les hrá gögnin af hitamælinum.
'''
f = open(dev, 'r')
lines = f.readlines()
f.close()
return lines
def read_temp(dev):
''' Þetta fall les hráu gögnin með read_temp_raw(), dregur hitastigs-
upplýsingarnar úr þeim og skilar sem tölu með einum aukastaf.
'''
# Lesum inn línurnar í lista:
lines = read_temp_raw(dev)
while lines[0].strip()[-3:] != 'YES':
lines = read_temp_raw(dev)
# Finnum stöðu strengsins þar sem hitastigið er gefið upp:
equals_pos = lines[1].find('t=')
# Ef hitastigið finnst, þá:
if equals_pos != -1:
# Setjum hitastigið í breytu.
temp_string = lines[1][equals_pos+2:]
# Hitaneminn gefur hitastigið upp í þúsundustu hlutum úr Celsiusgráðu:
temp_c = float(temp_string) / 1000.0
# Skilum svo hitastiginu:
return temp_c
# 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 í. Hin leiðin væri að keyra forritið í skel og
# veita útkomunni yfir í skrá með verkfærum skeljarinnar.
filename = 'log_temps.log'
# Hér byrjar while-lykkjan þar sem við endurtökum mælingarnar í sífellu þar til forritið er stöðvað:
while True:
try:
# Opnum gagnaskrána. Við viljum ekki skrifa yfir fyrri gögn svo við opnum hana í „append“ ham:
logfile = open(filename, 'a')
# Athugum hvað klukkan er:
d = str(datetime.datetime.now())
# Setjum upp lista til að geta lesið af öllum hitanemunum í einu:
ts = []
# Lykkjum nú yfir alla hitamælana í device_folders og bætum hitastigunum í ts:
for device_folder in device_folders:
device_file = device_folder + '/w1_slave'
ts.append(str(read_temp(device_file)))
# Skrifum svo tímann og hitastigin í gagnaskrána:
logfile.write(d + '\t' + \t'.join(ts) + '\n')
print(d + '\t' + \t'.join(ts) + '\n')
# Lokum skránni ef svo kunni að fara að við ákveðum að hætta áður en við skrifum næstu mæligildi:
logfile.close()
# Bíðum svo í einhverja skilgreinda stund (þetta þarf að meta fyrir hverjar aðstæður):
time.sleep(10)
except KeyboardInterrupt:
print("end")
raise