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