Hallo
ich möchte mit einem RPi und einem Arduino Pro mini eine Art autonomen Roboter verwirklichen. Ich weis das wir dieses Thema hier schon oft im forum hatten, nur ich komme auf die schnittschtellen noch nicht so ganz klar
Zu meinem Setup:
der rpi hat ein python script laufen was steuerbefhle durch eine webschnittstelle empfangt und ausführt, klappt auch...allerding soll er selbstständig entscheiden können ob er die gesendetetn befehle auch ausführen kann (zb user sendet befehl vorwährts fahren, allerdings ist ne wand vorm pi (geht mit python und direkt über die gpios gut)) --> der abstand wird per ultraschallsensoren überwacht, die bisher (hier liegt mein haupt problem) direkt an den pi angeschlossen waren, auf grund eines mangels von gpios habe ich mir gedacht, das die us sensoren durch den pro mini überwacht werden sollen.
Ich bin in python halbwegs sicher, hab aber jetzt fast keinen plan von c da ich es bisher nur lesen und nie selber schreiben musste....
Die entscheidende frage ist nun: wenn die sensoren einen zu geringen abstand fest stellen, wie soll das der arduino dem pi sagen? (ich kann nur die TX und RX pins vom pi nutzen, usb ist nicht drin, weil schon voll belegt) Ausserdem wie soll das in das python script eingebettet werden?
ich bin für jeden hinweis dankbar :3
lg Tim
Anhang:
Hauptsteuerscript das bisher vom rpi genutzt wurde:
-der ankomenden webschnittstelle:
<?php
if (isset($_GET) AND !empty($_GET)) {
foreach ($_GET AS $Befehl => $Wert) {
if ($Befehl == "forward") { exec("sudo python '/var/www/py/forward.py'"); }
if ($Befehl == "turn_left") { exec("sudo python '/var/www/py/turn_left.py'"); }
if ($Befehl == "turn_right") { exec("sudo python '/var/www/py/turn_right.py'"); }
if ($Befehl == "pivot_left") { exec("sudo python '/var/www/py/pivot_left.py'"); }
if ($Befehl == "pivot_right") { exec("sudo python '/var/www/py/pivot_right.py'"); }
if ($Befehl == "reverse") { exec("sudo python '/var/www/py/reverse.py'"); }
if ($Befehl == "poweroff") { exec("sudo /sbin/poweroff"); }
}
}
?>
Alles anzeigen
und stellvertretend das vorwärtsfahr script :
import RPi.GPIO as gpio
import time
from sensor import distance
def init() :
gpio.setmode(gpio.BOARD)
gpio.setwarnings(False)
gpio.setup(12, gpio.OUT)
gpio.setup(11, gpio.OUT)
gpio.setup(13, gpio.OUT)
gpio.setup(15, gpio.OUT)
def forward(tf) :
init()
gpio.output(12, True)
gpio.output(11, False)
gpio.output(13, False)
gpio.output(15, True)
time.sleep(tf)
gpio.cleanup()
def halt(tf) :
init()
gpio.output(12, False)
gpio.output(11, False)
gpio.output(13, False)
gpio.output(15, False)
time.sleep(tf)
gpio.cleanup()
init()
abstand = distance()
if abstand < 20:
print abstand
halt(1)
else:
forward(1)
halt(1)
Alles anzeigen