Hallo,
in meinem vorherigen Projekt habe ich mithilfe des HC-SR04 einen Bewegungsmelder gebaut. Dieser schaltet eine rote LED, sobald sich ein Objekt innerhalb einer bestimmten Distanz befindet. Wenn dieses Objekt nicht in der Distanz liegt, leuchtet eine grüne LED. Nun hatte ich mir überlegt, verschiedene Messdaten Online darzustellen. Diese Daten wären : Wie oft sich innerhalb der letzten 24 h ein Objekt in den Messbereich bewegt und wann sich ein Objekt das letzte mal in dem Messbereich befunden hat.
Das Script für den Bewegungsmelder ist in Python geschrieben. Die frage ist nun, wie ich die Daten darstellen kann und inwiefern ich meinen Script ändern
müsste.
//EDIT// Habe den Script nun so umgeschrieben, dass er im Terminal die Zeit anzeigt, wenn sich ein Objekt im Weg befindet. Außerdem zählt er nun die Anzahl. Diese Daten müssten nun also nur noch ausgegeben und Live in einem Webinterface angezeigt werden.
import RPi.GPIO as GPIO #GPIO importieren#
import time #Time importieren#
GPIO.setmode(GPIO.BCM) #GPIO wird mit BCM importiert#
GPIO.setwarnings(False) #Warnungen werden ausgeschalten#
TRIG = 23 #TRIG PIN des Ultraschallsensors wird auf 23 gelegt#
ECHO = 24 #ECHO PIN des Ultraschallsensor wird auf 24 gelegt#
GPIO.setup(TRIG, GPIO.OUT) #TRIG wird als Output definiert#
GPIO.setup(ECHO, GPIO.IN) #ECHO wird als Input definiert#
Messbereich = input("Messbereich in cm angeben :") #Nutzer wird aufgefordert Messbereich anzugeben#
Messbereich = int(Messbereich) #Die Zahl wird in eine ganze Zahl umgewandelt#
print("Der Bewegungsmelder wird durch STRG + C beendet") #Erklärung wie Bewegungsmelder beendet wird#
def off(): #Funktion für das Ausschalten der LEDs#
GPIO.setup(27, GPIO.OUT) #PIN 27 ist Output für die grüne LED#
GPIO.output(27, GPIO.HIGH) #Grüne LED wird ausgeschaltet#
GPIO.setup(17, GPIO.OUT) #PIN 17 ist Output für die rote LED#
GPIO.output(17, GPIO.LOW) #Rote LED wird ausgeschaltet#
try:
while True:
GPIO.output(TRIG, True) #TRIG wird aktiviert#
time.sleep(0.00001) #Script pausiert für eine Sekunde#
GPIO.output(TRIG, False) #TRIG wird deaktiviert#
while GPIO.input(ECHO) == 0: #Zeitmessung nach absenden des Signals startet#
pulse_start = time.time()
while GPIO.input(ECHO) == 1: #Zeitmessung bei Empfang des Signals wird gestoppt#
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start #Impulsdauer wird berechnet#
distance = pulse_duration * 17150 #Entfernung wird berechnet(hälfte der Schallgeschwindigkeit.)#
distance = round(distance,2) #Distanz wird auf 2 Nachkommastellen gerundet#
if distance <= Messbereich : #Wenn Distanz kleiner als Messbereich : #
GPIO.setup(17, GPIO.OUT) #PIN 17 ist Output für die rote LED#
GPIO.setup(27, GPIO.OUT) #PIN 27 ist Output für die grüne LED#
GPIO.output(27, GPIO.HIGH) #Grüne LED wird deaktiviert#
GPIO.output(17, GPIO.LOW) #Rote LED wird aktiviert#
time.sleep(1) # Script pausiert für eine Sekunde #
GPIO.output(17, GPIO.HIGH) #Rote LED wird deaktiviert#
else: #Wenn kein Objekt im Messbereich ist, passiert folgendes : #
GPIO.setup(27, GPIO.OUT) # PIN 27 ist Output für die grüne LED#
GPIO.output(27, GPIO.LOW) #Die grüne LED wird aktiviert#
except KeyboardInterrupt: #Wenn der Nutzer STRG + C drückt passiert folgendes :#
print("Vom Nutzer beendet") # Die Nachricht „Vom Nutzer beendet" erscheint#
finally:
off() #LEDs werden ausgeschaltet#
Alles anzeigen