Raspberry Pi öl kylskåp av Awesomeness (7 / 10 steg)
Steg 7: Temperaturgivare
Nästa, låt oss testa temperaturgivare. Den aktuella versionen av Raspbian från och med skrivandet av denna handledning (kernel 3.18) kräver ett tillägg till din /boot/config.txt fil för Pi-att kommunicera med DS18B20. Kör följande för att redigera den här filen:
$ sudo nano /boot/config.txt
Om följande rad inte är redan i denna fil (om det är, det är sannolikt längst ned i filen), lägga till den och spara filen.
dtoverlay = w1-gpio, gpiopin = 4
Starta om din Pi för att ändringarna ska börja gälla.
$ sudo omstart
För att starta temperatur läsa sensor gränssnitt måste vi köra två kommandon. Gå till kommandotolken på Pi eller SSH in din Pi. Skriv följande kommandon:
$ sudo modprobe w1-gpio
$ sudo modprobe w1-therm
Produktionen av din temperatursensor är nu skrivet till en fil på din Pi. Att hitta filen:
$ cd /sys/bus/w1/devices
I den här katalogen, kommer det att finnas en sub-katalog som börjar med "28-". Vad kommer efter "28-" är serienumret på din sensor. CD till den katalogen. Inuti denna katalog innehåller en fil med namnet w1_slave utdata från din sensor. Innehållet i denna fil kommer att se ut så här (du kan använda nano att visa innehållet i filen):
a2 01 4b 46 7f ff 0e 10 d8: crc = d8 Ja
a2 01 4b 46 7f ff 0e 10 d8 t = 26125
Numret efter "t =" är det nummer vi vill. Detta är temperaturen i 1/1000 grader Celsius (i exemplet ovan, temperaturen är 26.125 C). Vi behöver bara en enkel Python-skript som läser filen och tolkar ut numret.
Tips: om du inte ser en sub-katalog som börjar med "28-" men se flera underkataloger som startar med "00-", kanske du har motståndet inkopplad i marken i stället för till makten. Om din krets är wired korrekt och du fortsätter att få "00-" underkataloger, du kanske har en dålig temperaturgivare.
Förutsatt att du körde kommandot "git klon https://github.com/InitialState/beerfridge.git beerfridge" i del 2, har du ett skript som heter temperature_test.py i katalogen ~/beerfridge. https://github.com/InitialState/beerfridge.git
< p > Importera os < br > Importera glob
Importera tid < /p >< p > os.system ("modprobe w1-gpio)
OS.system ("modprobe w1-therm) < /p >< p > BASE_DIR = ' / sys/buss/w1/enheter /"
DEVICE_FOLDER = glob.glob (BASE_DIR + ' 28 *') [0]
DEVICE_FILE = DEVICE_FOLDER + ' / w1_slave'< /p >< p > def readTempRaw():
f = öppna (DEVICE_FILE, "r")
rader = f.readlines()
f.Close()
återvändande linjer < /p >< p > def readTemp():
rader = readTempRaw()
medan lines[0].strip() [-3:]! = "Ja":
Time.Sleep(0.2)
rader = readTempRaw()
equalsPos = lines[1].find('t=')
om equalsPos! = -1:
tempString = linjer [1] [equalsPos + 2:]
tempC = float(tempString) / 1000.0
återgå tempC < /p >< p > samtidigt sant:
tempC = readTemp()
tempF = tempC * 9.0 / 5.0 + 32,0
skriva ut str(tempF) + "F"
Time.Sleep(.5) < /p >
Detta skript kommer att helt enkelt läsa siffran efter "t =" i filen w1_slave, konvertera detta antal till Fahrenheit och returnera resultatet till prompten. Kör följande kommandon i en Pi terminal:
$ cd ~
$ cd beerfridge
$ sudo python temperature_test.py
72.331 F
72.331 F
73.248 F
73.913 F
74.612 F
Om du ser giltig temperatur avläsningar utdata till prompten, arbetar temperaturgivare. Värma upp sensorn genom att hålla det i handen eller kyla ner genom att hålla det i is (det är vattentät).
NCE du är klar spelar, döda skriptet med CTRL + C. plats i slutet av sonden inne i kylskåpet. Jag använde längre hoppare ledningar så att dörren kunde nära på smalare jumper trådarna i stället för tjockare DS18B20 kabeln. Vi är nu redo att sätta allt ihop.