Änderungen

KY-001 Temperatur Sensor Modul

2.064 Byte hinzugefügt, 15:26, 25. Apr. 2016
/* Codebeispiel Raspberry Pi */
==Codebeispiel Raspberry Pi==
Damit der Raspberry Pi mit dem One-Wire Bus, mit der Sensor DS18B20 seine Messdaten digital sendet, kommunizieren kann, muss dieser vorerst aktiviert werden. Hierbei muss die Datei "/boot/config.txt" editiert und um folgende Zeile ergänzt werden:
 
<pre class="brush:bash">dtoverlay=w1-gpio,gpiopin=4
</pre>
 
Die Datei können Sie editieren, indem Sie den Befehl...
 
<pre class="brush:bash">sudo nano /boot/config.txt
</pre>
 
... in die Konsole eingeben. Mit der Tastenkombination [STRG+X] können Sie das Editieren beenden und mit [STRG+Y] abspeichern.
 
Nachdem Sie den Raspberry Pi mittels...
 
<pre class="brush:bash">sudo reboot
</pre>
 
... neugestartet haben, können Sie das untenstehende Beispiel anwenden.
 
Programmierbeispiel in der Programmiersprache Python
<pre class="brush:py"># coding=utf-8# Benoetigte Module werden importiert und eingerichtetimport RPi.GPIO as GPIOglob
import time
from time import sleepimport RPi.GPIO as GPIO # An dieser Stelle kann die Pause zwischen den einzelnen Messungen eingestellt werdensleeptime = 1 # Der One-Wire EingangsPin wird deklariert und der integrierte PullUp-Widerstand aktiviert
GPIO.setmode(GPIO.BCM)
# Hier wird der Eingangs-Pin deklariert, an dem der Sensor angeschlossen ist. Zusaetzlich wird auch der PullUP Widerstand am Eingang aktiviertGPIO_PIN = 24GPIO.setup(GPIO_PIN4, GPIO.IN, pull_up_down = GPIO.PUD_UP) print "Sensor# Nach Aktivierung des Pull-Test [druecken Sie STRG+CUP Widerstandes wird gewartet, um den Test zu beenden# bis die Kommunikation mit dem DS18B20 Sensor aufgebaut istprint 'Warte auf Initialisierung...' base_dir = '/sys/bus/w1/devices/'while True: try: device_folder = glob.glob(base_dir + '28*')[0]" break except IndexError: sleep(0.5) continuedevice_file = device_folder + '/w1_slave'  # Diese AusgabeFunktion Funktion wird bei Signaldetektion ausgefuehrtdefiniert, mit dem der aktuelle Messwert am Sensor ausgelesen werden kanndef ausgabeFunktionTemperaturMessung(null): print f = open(device_file, 'r') lines = f.readlines() f.close() return lines # Zur Initialisierung, wird der Sensor einmal "Signal erkanntblind"ausgelesenTemperaturMessung() # Die Temperaturauswertung: Beim Detektieren eines Signals Raspberry Pi werden erkennte one-Wire Slaves im Ordner# /sys/bus/w1/devices/ einem eigenen Unterordner zugeordnet. In diesem Ordner befindet sich die Datei w1-slave# in dem Die Daten, die über dem One-Wire Bus gesendet wurden gespeichert.# In dieser Funktion werden diese Daten analysiert und die Temperatur herausgelesen und ausgegebendef TemperaturAuswertung(fallende Signalflanke) wird die Ausgabefunktion ausgeloest:GPIO lines = TemperaturMessung() while lines[0].add_event_detectstrip(GPIO_PIN, GPIO)[-3:] != 'YES': time.FALLING, callbacksleep(0.2) lines =ausgabeFunktion, bouncetimeTemperaturMessung() equals_pos =100lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 return temp_c 
# Hauptprogrammschleife
# Die gemessene Temperatur wird in die Konsole ausgegeben - zwischen den einzelnen Messungen
# ist eine Pause, deren Länge mit der Variable "sleeptime" eingestellt werden kann
try:
while True: time.sleep print '---------------------------------------' print "Temperatur:", TemperaturAuswertung(1) # Aufraeumarbeiten nachdem das Programm beendet wurdeexcept KeyboardInterrupt:, "°C" GPIOtime.cleanupsleep(sleeptime)
except KeyboardInterrupt:
GPIO.cleanup()
</pre>
'''Anschlussbelegung Raspberry Pi:'''
||Signal
||=
||GPIO24GPIO4||[Pin 187]
|-
||+V
'''Beispielprogramm Download'''
[[Medium:SensorTest_RPiKY-001_RPi_TemperaturSensor.zip|SensorTest_RPiKY-001_RPi_TemperaturSensor.zip]]
Zu starten mit dem Befehl:
<pre class="brush:bash">sudo python SensorTest_RPiKY-001_RPi_TemperaturSensor.py
</pre>
Bürokrat, Administrator
611
Bearbeitungen