Raspberry Pi One Wire GPIO: Anslut Sensorer och Mer!
Raspberry Pi är en otroligt mångsidig liten dator som kan användas för en mängd olika projekt. En av dess mest användbara funktioner är dess GPIO-stift (General Purpose Input/Output), som möjliggör anslutning av externa enheter och sensorer. I denna artikel kommer vi att fokusera på hur du kan använda One Wire-protokollet med din Raspberry Pi för att ansluta och läsa av data från enheter som temperatursensorer, specifikt DS18B20.
Vad är One Wire?

One Wire är ett kommunikationsprotokoll designat av Dallas Semiconductor (nu Maxim Integrated). Det tillåter kommunikation med enheter över en enda dataledning, vilket gör det idealiskt för applikationer där du behöver ansluta flera sensorer till en mikrokontroller som Raspberry Pi. Detta minskar antalet kablar och förenklar kretsdesignen.
Ansluta DS18B20 Temperatursensor
DS18B20 är en populär digital temperatursensor som använder One Wire-protokollet. Den ger exakta temperaturavläsningar och är enkel att ansluta till din Raspberry Pi. Här är stegen:
- Anslutning av Sensor:
- Anslut VDD (röd kabel) till 3.3V på Raspberry Pi.
- Anslut GND (svart kabel) till GND på Raspberry Pi.
- Anslut DQ (gul eller vit kabel) till en GPIO-stift (t.ex. GPIO 4).
- Anslut en 4.7kΩ resistor mellan DQ och VDD.
- Aktivera One Wire:
För att aktivera One Wire-stödet på din Raspberry Pi, behöver du redigera konfigurationsfilen /boot/config.txt.
sudo nano /boot/config.txt
Lägg till följande rad i slutet av filen:
dtoverlay=w1-gpio,gpiopin=4
Spara och stäng filen, och starta om din Raspberry Pi.
sudo reboot
- Läsa av Temperatur med Python:
Skapa ett Python-skript för att läsa av temperaturen från DS18B20.
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.1) 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 return temp_c
while True: print(read_temp()) time.sleep(1)
Spara skriptet och kör det med Python.
python ditt_skript.py

Andra One Wire Enheter

Förutom DS18B20 finns det många andra enheter som använder One Wire-protokollet, inklusive:
- DS2408: 8-kanals adresserbar switch.
- DS2413: Dual-channel adresserbar switch.
- DS2431: 1024-bitars EEPROM.
Tips och Tricks
- Använd kablar av god kvalitet: För att undvika problem med signalintegritet, använd skärmade kablar om möjligt.
- Kontrollera resistorn: Se till att du använder en 4.7kΩ resistor för att säkerställa korrekt kommunikation.
- Felsökning: Om du har problem med att läsa av data, kontrollera dina anslutningar och se till att One Wire är aktiverat korrekt.
Slutsats
Att använda One Wire GPIO med din Raspberry Pi öppnar upp en värld av möjligheter för att ansluta och läsa av data från olika sensorer och enheter. Med denna guide kan du enkelt komma igång med att ansluta och programmera dina egna One Wire-projekt. Utforska och experimentera för att upptäcka de oändliga möjligheterna med din Raspberry Pi!