Kommunikation Raspberry <-> Arduino via USB Schnittstelleund PHP

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hi,

    kurze Info zur Situation/dem Projekt:
    Ein Arduino ist an den Rasp per USB angeschlossen. (ttyUSB0)
    [OK]

    Auf dem Arduino werden entsprechend änderbarer Parameter Datengesammelt und Steuerfunktionen ausgeführt.
    [OK, funktioniert seit 3 Jahren]

    Startet der Arduino aus irgendwelchen Gründen neu, soll er vom Raspberry die aktuellen Parameter anfordern.
    [OK]

    Der Raspberry sendet Parameter(Zeitschaltuhr, veränderte Referenzparameter)
    bzw. fordert in regelmäßigen abständen LOGDaten an.
    [OK, funktioniert, ist aber noch nicht komplett fertig]

    Das ganze soll via PHPScript ablaufen.
    Dazu habe ich vorerst als testzweck folgendes Script erstellt:

    [Funktioniert ... aber]:denker:

    Jetzt zu meinem Problem:
    Alles funktioniert nur, wenn ich zuvor

    Code
    cu -l /dev/ttyUSB0 -s 9600

    ausführe, die Konsole schliesse und nach erneuter anmeldung

    Code
    sudo -u root php -f /var/www/test.php

    ausführe.:wallbash:

    Hat jemand einen Tip, was ich machen muss, damit das Script auf anhieb läuft?

  • Kommunikation Raspberry <-> Arduino via USB Schnittstelleund PHP? Schau mal ob du hier fündig wirst!

  • Soll der Smilie ein Problem markieren? Dein vorletzter Satz: "Alles funktioniert nur, wenn ich zuvor ausführe, die Konsole schliesse und nach erneuter anmeldung ausführe. :wallbash: " Und daraus soll man deine Problemdarstellung raus filtern? :s


    Ich glaube nicht das du über PHP und dem von dir gewählten Weg glücklich wirst.

    Worüber hast du denn all deine anderen Sachen laufen? Python?

  • was ist an php so schlimm?

    bisher habe ich mehr erfahrung mit php gesammelt, als mit phyton, welches ich auf dem raspberry auch nicht installiert habe.

    klar, kann man das ganze auch in perl, c++, java und vielen anderen sprachen erledigen, aber warum nicht in php?

    und vor allem, wie löse ich das problem?

    Einmal editiert, zuletzt von arduino mattes (23. Januar 2015 um 06:47)

  • Öffne mal die php_serial.class.php

    suche :

    Code
    $ret = $this->_exec("stty -F " . $this->_device . " " . (int) $rate, $out);

    und ändere das nach

    Code
    $ret = $this->_exec("stty -F " . $this->_device . " -s " . (int) $rate, $out);

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • bisher habe ich mehr erfahrung mit php gesammelt, als mit phyton, welches ich auf dem raspberry auch nicht installiert habe.

    Python 2.x ist auf dem PI standardmäßig bereits installiert ;)

    Ich hab sowas ebenfalls programmiert, also eine Schnittstelle zwischen Web-Interface und Arduino. Anfangs wollte ich auch lieber PHP verwenden da ich das zu der Zeit besser kannte als Python, musste aber dann feststellen das es über PHP nicht wirklich komfortabel war auch nicht wirklich flexibel und durch ständige reloades der PHP Datei auch sehr viel Last erzeugt wurde bzw eben auch viel ins Logfile des Webservers geschrieben wurde...

    Somit habe ich bereits nach wenigen Tagen eine andere Lösung versucht und kam letztlich dazu Javascript mit WebSocket zu verwenden, welches sich zu einem Python-Script verbindet. Das Python-Script wiederum hat den USB Port geöffnet und empfängt sowie sendet gleichzeitig. Das Python Script empfängt größtenteils ungefragt, also der Arduino verschickt es einfach und das python Script speichert es zwischen (in eine art Array), was dann der WebSocket alle 500ms abfragen kann, ohne das jedesmal eine PHP Datei ausgeführt werden muss. Und diese Daten wiederum aktualisiere ich on-the-fly mithilfe innerHTML direkt in der WebSeite ebenfalls ohne diese ständig vollständig neu laden zu müssen.

    Das finde ich irgendwie besser und bequemer :fies:

    Das Web-Interface habe ich > hier < erklärt und die Python Scripts siehst du > hier < ... wobei ich mittlerweile natürlich eine neuere/verbesserte Version hab..

  • sorry, das ich mich erst jetzt melde, aber gesundheitlich bin ich zur zeit platt.
    danke für die beiträge, das geschriebene hört sich gut an und ist teilweile so wie ähnlich, wie das was ich noch vor habe.

    mein php script wird nur einmal geladen.
    gesteuert wird das script über datenbankeinträge.

    die logdaten landen nur einmal pro minute in der datenbank, aber von diversen "usb quellen", welche vermutlich alle eigene script daemons bekommen werden.

    ich hoffe, ich kann diese woche mal den rest testen, dann melde ich mich wieder.[/b]


  • Öffne mal die php_serial.class.php

    suche :

    Code
    $ret = $this->_exec("stty -F " . $this->_device . " " . (int) $rate, $out);

    und ändere das nach

    Code
    $ret = $this->_exec("stty -F " . $this->_device . " -s " . (int) $rate, $out);

    funktioniert nicht, liefert:

    Code
    PHP Warning:  Unable to set baud rate: stty: ung▒ltiges Argument ▒-s▒

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!