Python Language
IoT-Programmierung mit Python und Himbeer-PI
Suche…
Beispiel - Temperatursensor
Schnittstelle des DS18B20 mit Himbeer-Pi
Anschluss des DS18B20 mit Himbeer-Pi
Sie können sehen, dass es drei Terminals gibt
- Vcc
- Gnd
- Daten (Ein-Draht-Protokoll)
R1 ist ein Widerstand von 4,7 kΩ, um den Spannungspegel zu erhöhen
- Vcc sollte an einen der 5-V- oder 3,3-V-Pins von Raspberry Pi (PIN: 01, 02, 04, 17) angeschlossen werden.
- Gnd sollte mit einem der Gnd-Pins von Raspberry Pi verbunden werden (PIN: 06, 09, 14, 20, 25).
- DATA sollte verbunden sein (PIN: 07)
Aktivieren der Ein-Draht-Schnittstelle von der RPi-Seite
Melden Sie sich mit Putty oder einem anderen Linux / Unix-Terminal bei Raspberry Pi an.
Öffnen Sie nach dem Login die Datei /boot/config.txt in Ihrem bevorzugten Browser.
nano /boot/config.txt
dtoverlay=w1–gpio
nun diese Zeiledtoverlay=w1–gpio
am Ende der Datei hinzu.Starten Sie nun den Raspberry Pi
sudo reboot
.sudo modprobe g1-gpio
bei Raspberry Pi an und führen Siesudo modprobe g1-gpio
Führen Sie dann
sudo modprobe w1-therm
Gehen Sie nun in das Verzeichnis / sys / bus / w1 / devices
cd /sys/bus/w1/devices
Nun werden Sie ein virtuelles Verzeichnis Ihres Temperatursensors ausgehend von 28 - ******** gefunden.
Gehe in dieses Verzeichnis
cd 28-********
Nun gibt es einen Dateinamen w1-Slave . Diese Datei enthält die Temperatur und andere Informationen wie CRC.
cat w1-slave
.
Schreiben Sie nun ein Modul in Python, um die Temperatur abzulesen
import glob
import time
RATE = 30
sensor_dirs = glob.glob("/sys/bus/w1/devices/28*")
if len(sensor_dirs) != 0:
while True:
time.sleep(RATE)
for directories in sensor_dirs:
temperature_file = open(directories + "/w1_slave")
# Reading the files
text = temperature_file.read()
temperature_file.close()
# Split the text with new lines (\n) and select the second line.
second_line = text.split("\n")[1]
# Split the line into words, and select the 10th word
temperature_data = second_line.split(" ")[9]
# We will read after ignoring first two character.
temperature = float(temperature_data[2:])
# Now normalise the temperature by dividing 1000.
temperature = temperature / 1000
print 'Address : '+str(directories.split('/')[-1])+', Temperature : '+str(temperature)
Über dem Python-Modul wird die Temperatur gegen Adresse für unendliche Zeit gedruckt. Der Parameter RATE ist definiert, um die Frequenz der Temperaturabfrage vom Sensor zu ändern oder anzupassen.
GPIO-Pin-Diagramm