Arduino über Raspberry via PHP ansteuern - Wie?

Moin,

Ich bin ein Anfänger in sachen Arduino und benutze zurzeit ein Arduino Nano zum Einstieg. Ich möchte später für ein Projekt auf den Mega wechseln. So nun zum eigentlich Thema.

Ich habe ein Problem bzw mehr eine Frage, un zwar möchte ich den Arduino via den Raspberry Ansteuern. Ich habe den Arduino so Programmiert das er via InputMassage die Pins auf High u. auf Low. Nun weiß ich aber nicht wie ich das PHP Script machen soll damit der Raspberry via USB auch die "Massage" sendet.
Vielleicht habt ihr ja ein Plan

Mfg.

Also du willst die Gpio Pins mit dem Arduini Koppeln und dann eine Spannung an den Gpios anlegen. Der Arduino soll dann messen ob der Gpio Pin High oder Low ist oder wie hast du des gemeint?

So ein Raspberry möchte ich auch, der mir ne Massage senden kann :smiley: :x
Alles was du brauchst ist:
http://www.renehering.de/2013/12/raspbian-auf-einem-raspberry-pi-installieren/

Gibts natürlich andere Methoden, google spuckt da genung sachen raus.

Nene, ich meine das wir über USB über den Raspberry die Pins auf dem Arduino High oder Low setzen können und das ganze via PHP. Nur ich finde keinen Weg das zu ermöglichen.

Ja ist doch!

Achso also du meinst Pi mit Arduino via USB verbinden und dann aus deinem Webbrowser dem Pi befehle geben um die Arduino Pins zu schalten?

skorpi08:
Ja ist doch!

Oh damn ... Hab nicht bemerkt das ein Github Link darunter ist. Erstmal vielen dank dafür :slight_smile:
Aber anscheinend funktioniert der befehl "usermod -a -G dialout www-data" bei mir nicht. Habe Apache2 auch neu gestartet leider ebenfalls spuckt bei mir bei "php ardudome.php" folgendes aus:

screen /dev/ttyUSB0
PHP Notice:  Undefined offset: 8 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 8 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 9 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 9 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 10 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 10 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 11 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 11 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 12 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 12 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 13 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 13 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 14 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 14 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 15 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 15 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 16 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 16 in /var/www/ardudome.php on line 70
PHP Notice:  Undefined offset: 17 in /var/www/ardudome.php on line 70

Notice: Undefined offset: 17 in /var/www/ardudome.php on line 70
{"02":0,"03":0,"04":0,"05":0,"06":0,"07":0,"08":0,"09":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0}

Mfg.

3 - Put a 10uF capacitor between GND and RESET (this will disable autoreset feature on serial open)
Den Serialport haste angepasst ja?

skorpi08:
3 - Put a 10uF capacitor between GND and RESET (this will disable autoreset feature on serial open)
Den Serialport haste angepasst ja?

Ne, hätte auch nicht gedacht dass das damit zusammen hängt. Leider habe ich kein Widerstand parat, ginge da eine Alternative Testweise?

Ein Kondensator, kein Widerstand!
Such im Elektroschrott nach egal welchen Kondensator, über 10uf und ab 16V.
Steht auf den dingern drauf wieviel es ist.

skorpi08:
Ein Kondensator, kein Widerstand!
Such im Elektroschrott nach egal welchen Kondensator, über 10uf und ab 16V.
Steht auf den dingern drauf wieviel es ist.

Erstmal Sorry das ich so unaufmerksam bin, liegt wohl an die Uhrzeit.
Haben da nun ein Kondensator auf GRD und RST und leider kommt dieser Fehler weiterhin.

usermod -a -G dialout www-data

hat bei mir so auch nicht funktioniert. Da steht aber auch gleich dass der User mit dem man angemeldet ist, keine Rechte hat. Also Root Rechte geben:

sudo usermod -a -G dialout www-data

Das hatte ich nnatürlich auch schon gemacht. Also rechte sollte er haben

Dann versuch sowas "einfaches"

http://www.instructables.com/id/Control-an-Arduino-with-PHP/all/?lang=de

http://peopleorientedprogrammer.com/2013/05/12/raspberry-pi-arduino-and-php-a-home-automation-baby-step/

Hier gibts ne gute Erklärung für PHP und Arduino Sketch:
http://forum.arduino.cc/index.php?topic=102817.0
Habe es bei mir nun auf Serielle Übertragung umgebaut.

Danke für die Links schaue ich mir später mal an.
Aber ich würde gerne wissen wo der Fehler liegt.
Der Fehler kommt, die Zeile ist ja anscheinend Schuld.   $myArray[$pin]=intval(str_replace("\n","",$tempArray[$i-2]));
Also was bedeutet diese Zeile? Ich kenne mich leider da nicht wirklich aus und möchte gerne den Fehler verstehen.

Diese Zeile macht aus einem String einen Integerwert. Da der "umgebende" Code fehlt, kann man leider nicht im Kontext sehen was da passiert. Aber eine der Variablen $i, $pin werden wohl einen Wert haben, der beim Array als Index nicht vorhanden ist.

Mario.

Die "Fehlermeldung" ist garkeine :wink: sondern eine Notiz und die sagt lediglich aus das in der Zeile ein Wert verarbeitet werden soll der nicht gesetzt ist.

Habe mir den Quellcode jetzt nicht extra von Github runtergeladen aber da wird wahrscheinlich eine Schleife laufen die alle werte durchgeht und bearbeitet und einige davon sind einfach nicht gesetzt.

if(!empty($tempArray[$i-2])) {
  $myArray[$pin]=intval(str_replace("\n","",$tempArray[$i-2]));
}

so sollte es funktionieren, ist aber ungetestet :smiley:

skorpi08:

usermod -a -G dialout www-data

hat bei mir so auch nicht funktioniert. Da steht aber auch gleich dass der User mit dem man angemeldet ist, keine Rechte hat. Also Root Rechte geben:

sudo usermod -a -G dialout www-data

Hatte das System neu installiert und es hat bei mir auch erstmal fehler angezeigt.
Hatte dann sudo usermod -a -G dialout pi versucht und ebenfals fehler.
Dann kam mir die idee... reboot.
Und dann liefs.

Bei mir leider keine Lösung aber ich spiele Raspbian die Tage mal neu auf und dann mache ich nochmal alles von vorne und mal gucken ob es dann alles läuft.