ich hätte da eine Frage und zwar habe ich ein Projekt am laufen das relativ ähnlich ist mit diesem Post. Es geht um einen Raspberry Pi mit einem Ultraschallsensor in Verbindung mit einer Raspberry Pi Kamera.Es geht halt darum das die Kamera ein Bild aufnehmen soll, sobald eine Bewegung durch den Ultraschallsensor in einer bestimmten Distanz erkannt wird. Anschließend sollte dieses Foto dann auf einen Server hochgeladen werden. Es würde mich sehr freuen wenn mir jemand bei der Interaktion helfen könnte.
Das Programm läuft nun, es macht ein Foto mit einem Zeitstempel sobald die Entfernung weniger als 20 cm beträgt.
Der Code sieht folgendermaßen aus:
CODE: SELECT ALL
Code: Alles auswählen
#Bibliotheken einbinden
import RPi.GPIO as GPIO
import time
#GPIO Modus (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#GPIO Pins zuweisen
GPIO_TRIGGER = 18
GPIO_ECHO = 24
#Richtung der GPIO-Pins festlegen (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def distanz():
# setze Trigger auf HIGH
GPIO.output(GPIO_TRIGGER, True)
# setze Trigger nach 0.01ms aus LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
StartZeit = time.time()
StopZeit = time.time()
# speichere Startzeit
while GPIO.input(GPIO_ECHO) == 0:
StartZeit = time.time()
# speichere Ankunftszeit
while GPIO.input(GPIO_ECHO) == 1:
StopZeit = time.time()
# Zeit Differenz zwischen Start und Ankunft
TimeElapsed = StopZeit - StartZeit
# mit der Schallgeschwindigkeit (34300 cm/s) multiplizieren
# und durch 2 teilen, da hin und zurueck
distanz = (TimeElapsed * 34300) / 2
return distanz
if __name__ == '__main__':
try:
while True:
abstand = distanz()
print ("Gemessene Entfernung = %.1f cm" % abstand)
time.sleep(1)
# Beim Abbruch durch STRG+C resetten
except KeyboardInterrupt:
print("Messung vom User gestoppt")
GPIO.cleanup()
CODE: SELECT ALL
Code: Alles auswählen
# -*- coding: utf-8 -*-
import sys
import os
import picamera
import sensor
import RPi.GPIO as GPIO
import time
import subprocess
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
## hier die Distanz eingeben
leer=20
def main():
trig_pin = 18 ##GPIO Trigger
echo_pin = 24 ##GPIO ECHO
while True:
value = sensor.distanz()
print("Gemessene Entfernung =%.1f cm" % value)
time.sleep(2)
if value <= 20:
timestr = time.strftime("%Y%m%d-%H%M%S")
camera = picamera.PiCamera()
camera.start_preview()
time.sleep(5)
camera.capture('bild_{}.jpg'.format(timestr))
camera.stop_preview()
camera.close()
##p = subprocess.Popen(["./foto2.sh"])
##time.sleep(2)
if __name__ == "__main__":
main()
Ein Php-code habe ich dazu schon vorbereitet komme aber nicht weiter
CODE: SELECT ALL
[codebox=php file=Unbenannt.php]<?php
$error=0;
// Prüfen ob GET Variable vorhanden
if (isset($_GET)) {
//Daten auslesen
$ts = $_GET[ 'timestamp' ];
//Eingaben überprüfen
// Timestamp Format 2016-05-23-14-54-12
$tsRegex = "/^[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}-[0-9]{2}$/";
if (preg_match($tsRegex, $ts)) {
//echo "timestamp in ordnung<br>";
} else {
//echo "timestamp fehlerhaft<br>";
$error=1;
}
}
// Wenn Eingaben in Ordnung CSV Datei schreiben
// Rückgabewert 0 = ok , 1 = Error
if ($error == 0){
$Logdatei='sensordaten.csv';
$Ausgabe="$ts;$ip\n";
$fh=fopen($Logdatei,"a");
fwrite($fh,$Ausgabe);
fclose($fh);
//echo "Kein Error -> $ts log: $Logdatei - $fh - $Ausgabe";
return 0;
} else {
//echo "Error";
return 1;
}
?>[/code]
Fazit
Das PHP-Skript wird über das Python-Programm von dem Raspberry Pi aufgerufen. Der Webservice empfängt über einen Query-String (GET-Methode) eine Zeile mit den Daten. Weiß nicht so genau wie ich es hinbekommen soll.
Danke schonmal