Moin auch
Ich habe an meinem Raspi auch einen Arduino hängen.
Die GPIO-Pin`s des Raspi habe ich direkt mit den Pin`s
des Arduino verbunden, also ohne Opto-Koppler.
Nur ein 1k Wiederstand dazwischen und alles gut.
Posts by jojouhr
-
-
Moin zusammen
ich habe die Motorsteuerung und die Kamerasteuerung über eine
Web-Site hinbekommen.
Für die Motorsteuerung habe ich eine L298N H-Bridge verwendet
und für die Kamerasteuerung habe ich einen Arduino genommen.
Für den Arduino habe ich ein Programm geschrieben, mit dem ich
2 Servo-Motoren ansteuern kann.
Den Arduino kann man direkt an die GPIO-PINs des Raspi anschließen, ohne
Opto-Koppler.
Ich habe nur einen 1k Wiederstand dazwischen den Pin`s geschaltet.
Die Stromversorgung für den Arduino kommt auch vom Raspi.
Jetzt aber mal zum Problem:
Bis jetzt habe ich für die Motorsteuerung und für die
Kamerasteuerung 2 Html-Seiten geschrieben.
für mich wäre es besser, wenn ich nur eine Html-Seite hätte,
also muß ich zwischen den Functionen im Java-Scrpt
umschalten können. Leider funzt das nicht.
Ich habe hier mal nur einen Ausschnitt des Progamm`s
eingestellt:HTML
Display More<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>GPIO-Test</title> </head> <body> <br> <br> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: middle; text-align: center;"> <br> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/vor.png" id="vor" onmouseout="camstop()" type="image"> <br> </td> <td style="vertical-align: middle; text-align: center;"> <br> </td> </tr> <tr> <td style="vertical-align: middle; text-align: center; " id="cam" > <big><big><big style="font-weight: bold;" >CAM</big></big></big> <br> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/back.png" id="back" onmouseout="camstop()" type="image"> <br> </td><td style="vertical-align: middle; text-align: center; " id="drive" > <big><big style="font-weight: bold;"> <big>DRIVE</big></big> </big><br> </td> </tr> </tbody> </table> <br> <script language="Javascript"> // umschalten zwischen "drive" und "cam" var umschalten ; // umschalten = "driveon" ; //"drive" eingeschaltet // umschalten = "camon" ; //"cam" eingeschaltet document.getElementById('cam').addEventListener('mousedown', function (e) { document.getElementById('cam').style.backgroundColor = '#33FF33' document.getElementById('drive').style.backgroundColor = '#FFFF66' umschalten = "camon" ; // "cam" eingeschaltet } ) document.getElementById('drive').addEventListener('mousedown', function (e) { document.getElementById('drive').style.backgroundColor = '#33FF33' document.getElementById('cam').style.backgroundColor = '#FFFF66' umschalten = "driveon" ; // "drive" eingeschaltet } ) // "cam" steuerung if(umschalten == "camon" ){ document.getElementById('vor').addEventListener('mouseup', function (e) { document.location="cgi-bin/camstop.cgi"; } ) document.getElementById('vor').addEventListener('mousedown', function (e) { document.location="cgi-bin/camup.cgi"; } ) document.getElementById('back').addEventListener('mouseup', function (e) { document.location="cgi-bin/camstop.cgi"; } ) document.getElementById('back').addEventListener('mousedown', function (e) { document.location="cgi-bin/camdown.cgi" ; } ) } // "drive" steuerung if(umschalten == "driveon" ){ document.getElementById('vor').addEventListener('mouseup', function (e) { document.location="cgi-bin/stop.cgi"; } ) document.getElementById('vor').addEventListener('mousedown', function (e) { document.location="cgi-bin/vor.cgi"; } ) document.getElementById('back').addEventListener('mouseup', function (e) { document.location="cgi-bin/stop.cgi"; } ) document.getElementById('back').addEventListener('mousedown', function (e) { document.location="cgi-bin/back.cgi" ; } ) } </script> </body> </html>
Die Variable "umschalten" sollte eigendlich in der java-scirpt Function
als global definiert sein, aber irgendwie klappt das nicht.
Kann mir jemand helfen.
Schonmal danke. -
Moin zusammen
Ich habe heute die H-Bridge L 298 NH, ohne PiFace-Modul, an
meinen Raspi ngeschlossen. Läuft alles super.
Leider bekomme ich das bearbeitete Bild hier nicht eingefügt.
Die Html-Seite und die cgi-Codes habe ich auch nochmal angepasst.
Hier der cgi-Code für rechts:Bash
Display More#!/bin/bash gpio -g write 10 1 gpio -g write 24 1 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
Die anderen cgi-Dateien müssen demendsprechend angepasst werden.
Hier die Html-Seite.HTML
Display More<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Pi-Roboter</title> <script language="Javascript"> function vor(GrafikID,BildURL) { document.location="cgi-bin/vor.cgi"; document.getElementById(GrafikID).src = BildURL; } function rechts(GrafikID,BildURL) { document.location="cgi-bin/rechts.cgi"; document.getElementById(GrafikID).src = BildURL; } function lings(GrafikID,BildURL) { document.location="cgi-bin/links.cgi"; document.getElementById(GrafikID).src = BildURL; } function back(GrafikID,BildURL) { document.location= "cgi-bin/back.cgi"; document.getElementById(GrafikID).src = BildURL; } function stop(GrafikID,BildURL) { document.location= "cgi-bin/stop.cgi"; document.getElementById(GrafikID).src = BildURL; } </script> </head> <body> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <a href="http://192.168.178.58:8081/"> <img style="border: 0px solid ; width: 100%; height: 100%;" id="webcam" alt="" src="http://192.168.178.58:8081/" align="middle"> </a><br> </td> </tr> </tbody> </table> <br> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/links.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="lings('webcam','http://192.168.178.58:8081/')" type="image"> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/vor.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="vor('webcam','http://192.168.178.58:8081/')" type="image"> <br> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/rechts.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="rechts('webcam','http://192.168.178.58:8081/')" type="image"> </td> </tr><tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/back.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="back('webcam','http://192.168.178.58:8081/')" type="image"> <br> </td> <td style="vertical-align: top;"><br> </td> </tr> </tbody> </table> <br> </body> </html> -
Ich habe den Html-Code nochmal überarbeitet.
Eine "function" war falsch deklariert und die Steuer-Buttons
funktionieren jetzt besser.
Hier der Html-Code:HTML
Display More<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Pi-Roboter</title> <script language="Javascript"> function vor(GrafikID,BildURL) { document.location="cgi-bin/vor.cgi"; document.getElementById(GrafikID).src = BildURL; } function rechts(GrafikID,BildURL) { document.location="cgi-bin/rechts.cgi"; document.getElementById(GrafikID).src = BildURL; } function lings(GrafikID,BildURL) { document.location="cgi-bin/links.cgi"; document.getElementById(GrafikID).src = BildURL; } function stop(GrafikID,BildURL) { document.location= "cgi-bin/stop.cgi"; document.getElementById(GrafikID).src = BildURL; } </script> </head> <body> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <a href="http://192.168.178.58:8081/"> <img style="border: 0px solid ; width: 100%; height: 100%;" id="webcam" alt="" src="http://192.168.178.58:8081/" align="middle"> </a><br> </td> </tr> </tbody> </table> <br> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/links.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="lings('webcam','http://192.168.178.58:8081/')" type="image"> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/vor.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="vor('webcam','http://192.168.178.58:8081/')" type="image"> <br> </td> <td style="vertical-align: top; text-align: center;"> <input style="width: 64px; height: 64px;" alt="" src="icon/rechts.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="rechts('webcam','http://192.168.178.58:8081/')" type="image"> </td> </tr> </tbody> </table> <br> </body> </html> -
Moin forum
Ich wollte hier auch noch meinen Senf dazugeben.
Meinen RasPi habe ich auf ein Chassis von Arexx geschraubt,
mit dem PiFace, USB-Wlan Stick und einer USB-Cam.
Die USB-Cam hat noch keine Halterung,
ich warte noch auf den Servo-Motor. Der Roboter läuft soweit .
Der RasPi läuft mit Rasbian, Motion und Apache2.
Es ist alles sehr einfach aufgebaut. Einige Leute werden
vieleich die Hände über den Kopf zusammen schlagen.
Macht nichts, es funtz.:thumbs1:
Hier den Steuer-Code:HTML<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>Pi-Roboter</title><script language="Javascript">function vor(GrafikID,BildURL){ document.location="cgi-bin/vor.cgi"; document.getElementById(GrafikID).src = BildURL;}function rechts(GrafikID,BildURL){ document.location="cgi-bin/rechts.cgi"; document.getElementById(GrafikID).src = BildURL;}function lings(GrafikID,BildURL){ document.location="cgi-bin/links.cgi"; document.getElementById(GrafikID).src = BildURL;}function stop(GrafikID,BildURL){ document.location= "cgi-bin/clear01.cgi"; document.getElementById(GrafikID).src = BildURL;}</script> </head> <body> <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <br> </td><td style="vertical-align: top; text-align: center;"> <a href="http://192.168.178.58:8081/"> <img id="webcam" style="border: 0px solid ; width: 640px; height: 480px;" alt="" src="http://192.168.178.58:8081/"> </a><br> </td> </tr> </tbody></table> <br><table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top; text-align: center;"> <img style="width: 64px; height: 64px;" alt="" src="icon/links.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="lings('webcam','http://192.168.178.58:8081/')"> </td> <td style="vertical-align: top; text-align: center;"> <img style="width: 64px; height: 64px;" alt="" src="icon/vor.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="vor('webcam','http://192.168.178.58:8081/')"> <br> </td> <td style="vertical-align: top; text-align: center;"> <img style="width: 64px; height: 64px;" alt="" src="icon/rechts.png" onmouseout="stop('webcam','http://192.168.178.58:8081/')" onmouseup="stop('webcam','http://192.168.178.58:8081/')" onmousedown="rechts('webcam','http://192.168.178.58:8081/')"> </td> </tr> </tbody></table><br></body></html>
Hier noch die cgi-Datei für vor:Bash#!/bin/bashgpio -p write 200 1gpio -p write 201 1echo "Status: 204 No Content"echo "Content-type: text/plain"echo ""
und die cgi-Datei für links:Bash#!/bin/bash gpio -p write 200 1 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
und die cgi-datei für rechts:Bash#!/bin/bash gpio -p write 201 1 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
und die cgi-Datei für stop:Bash
Display More#!/bin/bash gpio -p write 200 0 gpio -p write 201 0 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
Bei den cgi-Dateien muß man aufpassen. Wenn sie auf einem
Windows-Rechner geschrieben werden und auf den RasPi
übertragen werden, kann es sein, das sie nicht funktionieren,
weil der Zeilenumbruch ein anderer ist.
Unter Mozilla funktioniert das ganze.
Auf meinem Smartphone leider noch nicht. Ich denke die Buttons
müssen anders deviniert werden. Neben dem Web-Cam Bild habe ich noch eine
Zelle freigelassen, um dort dien Servo für die Web-Cam anzusteuern; ich weiss nur
noch nicht wie. Ein Schieber macht da wohl Sinn. (für hoch und runter)
Zurück fahren braucht der Roboter nicht, weil die Web-Cam nur nach vorn schaut.
Hier noch der Link für das Chassis:Arexx-Chassis
Der Html-Code ist sicher noch Verbesserungswürdig. Für Anregungen bin ich gerne zu haben.
Ich möchte den Code aber so einfach wie möglich halten.
Noch was: Die beiden Motoren werden natürlich über
die PiFace Relais angesteuert. Später über eine H-Bridge,
dann kann ich das PiFace-Modul weg lassen. -
Moin zusammen
Ich habe das Problem anders gelöst. AJAX scheint wohl eine Reflexreaktion bei
einigen Leuten zu sein. es geht auch ohne.:thumbs1:HTML
Display More<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <script Language="Javascript"> function io10on() { document.location="cgi-bin/io10on.cgi"; } function io10off() { document.location= "cgi-bin/io10off.cgi"; } </script> </head> <body> <div style="text-align:center"> <h1>Raspberry Pi GPIO</h1> <img src="/Button.jpeg" id="10" onmousedown="io10on()" onmouseup="io10off()"> <br> </div> </body> </html>
und hier die cgi-Datei io10off.cgiBash#!/bin/bash gpio -g write 10 0 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
und die io10on.cgiBash#!/bin/bash gpio -g write 10 0 echo "Status: 204 No Content" echo "Content-type: text/plain" echo ""
Es muß Apache und WiringPi instaliert und passent konfiguriert sein
Achtung: Wenn die cgi-Dateien auf einem Windows-Rechner geschrieben werden
und auf den Raspi übertragen werden, kann es sein, das sie nicht verarbeitet werden.
Der Zeilenumbruch ist unterschiedlich.
Ich mach jetzt weiter mit meiner Robotersteuerung.
Webcam-Steam und Steuertasten habe ich schon hinbekommen.
Läuft noch nicht richtig rund, aber ich bin auf dem richtigen Weg.
Melde mich wieder und Tschüs oder so.:thumbs1: -
Hallo F4Icon
Dein Tip mit dem PHP war gut.
Ich habe auch etwas dazu im Net gefunden, und an meine Bedürfnisse angepasst.
Aber es läuft immer noch nicht rund.
Der erste Code funzt.PHP<html><head><?php if(isset($_GET['Befehl'])) {//GPIO 10 EINSCHALTEN if($_GET['Befehl'] === 'io10on') { $val = trim(@shell_exec("/usr/local/bin/gpio -g write 10 1")); }//GPIO 10 AUSSCHALTEN elseif($_GET['Befehl'] === 'io10off') { $val = trim(@shell_exec("/usr/local/bin/gpio -g write 10 0")); }}?></head><body><a href="<?php print($_SERVER['PHP_SELF']); ?>?Befehl=io10on" <form> <input type="submit" value=" GPIO_10_on "> </form></a> <a href="<?php print($_SERVER['PHP_SELF']); ?>?Befehl=io10off" <form> <input type="submit" value=" GPIO_10_off "> </form> </a></body></html>
Der zweite Code funzt leider nicht. Kann der PHP-Code im Event-Handler
(onmousedown bzw. onmouseup ) so nicht ausgeführt werden?
Hier der zweite CodePHP<html><head><?php if(isset($_GET['Befehl'])) {//GPIO 23 Einschalten if($_GET['Befehl'] === 'io10on') { $val = trim(@shell_exec("/usr/local/bin/gpio -g write 10 1")); }//GPIO AUSSCHALTEN elseif($_GET['Befehl'] === 'io10off') { $val = trim(@shell_exec("/usr/local/bin/gpio -g write 10 0"));}}?></head><body> <input type="button" value="GPIO-10" onmousedown="<?php print($_SERVER['PHP_SELF']); ?> Befehl=io10on ;" onmouseup="<?php print($_SERVER['PHP_SELF']); ?> Befehl=io10off ;"></body></html>
Ich denke, so ganz falsch kann ich nicht liegen
Ich bin für jede Hilfe dankbar.[/php] -
Hallo olek07
Ich habr auf meinem Raspi Apache 2 und wiringPI instalilert
Auf dem Raspi wierd die Seite korrekt angezeigt, nur die Scripte
werden nicht ausgeführt.Ich such erstmal im Forum, wie es mit
AXAJ gemacht wird.
Danke erst mal. -
Hallo zusammen
Javascript soll ein Shell script starten, über das ein GPIO-Pin angesteuert wird.
Der GPIO-Pin ist auf out gestellt und das Shell script hat Ausführungsrechte.
Wenn ich das Shell script über die Shell starte, funktioniert es. Wenn ich das Shell script
über Javascript ansteuer, wird mir im Browser(Firefox) das Shell script zum öffnen bzw.
speichern angeboten.Wird also nicht ausgeführt.HTML
Display More<html><head> <script language="Javascript"> function set1() { document.location="/script/io10on.sh"; } function set0() { document.location= "/script/io10off.sh"; } </script></head><body> <div style="text-align: center;"> <h1>Raspberry GPIO</h1> <img style="width: 64px; height: 64px;" alt="back" src="../icon/back.png" id="10" onmousedown="set1()" onmouseup="set0()"> <br> </div> </body></html>
Hier noch die beiden Shell scripte (io10off und io10on)