Arduino mit dem Brower über WLAN ansteuern

vor 1 year 34 weeks von QuerdenkerKonzepte

Hallo zusammen,

hat jemand von euch eine Idee wie ich den Arduino mit dem Browser als Interface, über WLAN oder Funk ansteuern kann?

Xbee ist mir ein Begriff, aber ich möchte nicht die IDE zur Ansteuerung verwenden.

Es darf auch gern ein anderes Interface sein, das dem Browser ähnelt. Ziel ist es eine leicht zu bedienende Oberfläche für Funktionen des Arduinos zur Verfügung zu stellen.

Danke und Gruß
QuerDenker

Ähnliche Posts

19 Antworten auf “Arduino mit dem Brower über WLAN ansteuern”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. QuerdenkerKonzepte sagt:

    Als Ergänzung:

    Ich denke an so etwas in der Art http://www.youtube.com/watch?v=gvgSGivpTzw

    Login or register to post comments

  1. Jan sagt:

    Normal per Netzwerk Shield. Wenn es WIFI sein soll würde ich eher einen WIFI Router/Accesspoint dazwischen schalten. Ich hab mal ein WIFI Shield ausprobiert und fand es sehr kompliziert und schwer zu konfigurieren.

    Login or register to post comments

  1. QuerdenkerKonzepte sagt:

    Okay, aber wie werte ich die vom Arduino an den PC gesendeten Daten so aus, dass sie im Browser erscheinen und wie sende ich Daten vom Browser an den Arduino?

    Hat damit vllt. jemand Erfahrungen gemacht?

    Danke!

    Login or register to post comments

  1. madmax sagt:

    Hi,

    du könntest ja am Arduino einen Webserver starten und mit dem Browser einfach drauf zugreifen.
    Vielleicht hilft dir auch das Open Sound Protocoll weiter.
    Ich steuere meinen Arduino per Ethernet Shield. Der ist im Heimnetzwerk und kann so mittels OSC
    mit meinem iPhone die Lichter ein/ausschalten.
    Jedesmal einen Browser zu öffnen wäre mir da zu umständlich gewesen.

    lg Max

    Login or register to post comments

  1. MoritzK. sagt:

    Hallöchen,
    ich hab grad mal ein bisschen rumgegooglelt, weil ich vorhab mein Arduino über Wlan anzusteuern, und bin anschließend auf diesen Beitrag gestoßen.

    Vor einigen Tagen hab ich mir ein Ethernet Shield bestellt und auch schon ein bisschen rum experimentiert. Es klappt soweit gut, das Webserver Beispiel funktioniert auch.
    Jetzt hatte ich vor mein Ethernet Shield über Lan an einen Router anzuschließen, den ich als WiFi Bridge einsetze, um somit über Wlan kommunizieren zu können.
    Das Projekt von madmax gefällt mir sehr gut.
    Könntest du mir ein Paar genauere Details dazu geben, zum Beispiel wie genau ich OSC mit dem Router verbinde (oder muss ich das über einen PC laufen lassen, der dann in Processing die Befehle auswertet?) und wie ich die Befehle von OSC mit dem Arduino auswerten kann?

    Liebe Grüße

    Login or register to post comments

  1. Spot sagt:

    Hallo

    OSC ist ein Protokoll das du per TCP oder UDP versendest.
    madmax hat sich wohl ein Programm für sein Handy geschrieben das ihm irgendwie Lichtschalter anzeigt und die Aktionen die der Benutzer mit den Schaltern macht ins OSC verpackt und dann über Ethernet(vermutlich per UDP) an den Arduino schickt.

    Schau dir mal den Wiki-Artikelzu OSC an.

    mfg
    Spot

    Login or register to post comments

  1. MoritzK. sagt:

    Erstmal danke für deine Antwort. Hat mir schonmal sehr geholfen :)

    Das OSC ein Protokoll ist wusste ich gar nicht... Ich dachte da an ein App für den iPod Touch (oder auch iPhone) dass TouchOSC heißt, aber das wird dann ja genau das richtige sein. Also ich könnte mir vorstellen, dass es dann auch die Nachrichten in OSC verpackt und verschickt.
    Von UDP hab ich noch nicht so viel gehört, müsste ich mich mal ransetzen :p
    Aber wie kann ich denn sehen, dass mein Arduino die OSC Nachricht überhaupt empfängt? Oder muss ich irgendwas vorher machen mit diesem UDP? Kann ich da irgendwas programmieren, damit mir das in dem Serial Monitor angezeigt wird? Muss auf dem Arduino eine Art Webclient laufen?

    Hier noch ein Tutorial über TouchOSC, Processing und Arduino:
    http://www.sparkfun.com/tutorials/152

    Login or register to post comments

  1. Spot sagt:

    Hallo

    Ich hab mir jetzt kurz die Beschreibung für das TouchOSC angesehen. Das Programm macht OSC-Nachrichten die es per UDP über das WLAN versendet.

    UDP ist wieder ein Protokoll das im Netzwerk eingesetzt wird, es ist verbindungslos das heißt es ist nicht sichergestellt das die Nachricht auch wirklich beim Empfänger ankommt. Bei den kleinen Datenmengen die bei OSC gesendet werden ist es um einiges schneller als TCP da der langwierige Verbindungsaufbau wegfällt.

    Auf dem Serial Monitor kannst du das ganze natürlich auch anzeigen. Du musst einfach nur die Daten die du per Ethernet empfängst wieder über die Serielle raus schicken.

    Auf dem Arduino muss ein Programm laufen das auf dem Ethernet (UDP Port: xxxx) horcht ob er etwas empfängt. Dieses Datenpaket muss er dann auswerten und die entsprechende Aktion ausführen. Für das ganze brauchst du dann keinen PC mehr. In dem Tutorial das du gepostet hast wird der PC als Empfänger in Ethernet und zur Auswertung des OSC verwendet, der Arduino wird per RS232 mit dem PC verbunden und empfängt auf diesem Weg seine Kommandos. Dieses Beispiel ist also eigentlich schlecht geeignet.

    Ich habe nach OSC Library´s gesucht und habe auch gleich einige gefunden, schau mal hier. Wie und ob die funktioniert kann ich dir leider nicht beantworten!

    Da die Standart Ethernet Library UDP nicht unterstützt musst du vielleicht einen andere Library verwenden. Ich habe hier was gefunden. Möglicherweise brauchst du das auch nicht wenn die OSC Library die Sache mit dem UDP macht.

    Login or register to post comments

  1. MoritzK. sagt:

    Hi :)
    Da bekomm ich doch gleich bessere Laune :)
    Danke nochmals, du machst dir echt Mühe mir zu helfen :)

    Dass mein Beispiel schlecht war hab ich mir fast gedacht, über PC das ganze laufen zu lassen wär ja langweilig. :p
    Ich denke mit dem zweiten Link von dir werde ich erstmal ein bisschen rumexperimentieren, um dann hoffentlich auch mal an ein Ergebnis zu kommen :) Die ClientUDP Library Beispiele sehen auf dem ersten Blick recht simple aus, da sollte ich mit klar kommen.
    Erstmal versuch ich jetzt per Knopfdruck auf meinem iPod etwas in den Serial Monitor zu schreiben. Wenn das klappt bin ich erstmal stolz :D
    Ich werde die Tage mal posten, ob es denn dann auch geklappt hat :)

    Vielen Dank aber nochmal für deine Hilfe! Hat mir echt viel gebracht :)
    Liebe Grüße, Moritz

    Login or register to post comments

  1. MoritzK. sagt:

    Also ein Ergebnis hab ich noch nicht wirklich. Die ClientUDP Library funktioniert bei mir leider nicht, beim compilen wird mir immer Error angezeigt. (Könnte an der Arduino IDE liegen..)
    Mir ist aber aufgefallen, dass wenn ich das Webserver Beispiel auf mein Arduino hochlade und ich TouchOSC mit der richtigen IP Adresse anmelde und irgendeinen Knopf drücke die Lampen RX und LINK am Ethernet Shield leuchten, als ob das Shield was empfangen würde... Weiter gekommen bin ich aber damit noch nicht.

    Dann hab ich mich selber auf die Suche gemacht und die z_OSC Library gefunden. Ausprobiert habe diese aber noch nicht.
    Zudem hab ich noch ein Video gefunden, dass genau das macht was ich will :)
    http://www.youtube.com/watch?v=Xk3nfnjy8uQ&feature=related

    und dann die passende Seite, bzw. Forum:
    http://arduino.cc/forum/index.php?topic=70691.0

    Das werd ich die Tage mal ausprobieren :)

    Oh, mir ist aufgefallen, dass du mir die Library auch vorgeschlagen hast. Danke :)

    Login or register to post comments

  1. Spot sagt:

    Hallo

    Klar empfängt der Arduino schon etwas, nur anfangen kann er damit noch nichts.
    Ich will jetzt gar nicht zu weit ausholen aber die untersten Schichten deiner Kommunikation funktionieren ja auch ohne dein Zutun schon.
    Wenn dir mal Langweilig ist kannst du dich ja über das OSI-Schichtenmodell informieren.
    Bei dir funktioniert ja schon alles bis zur Transportschicht und mit dem Webserver sogar bis zur Anwendungsschicht.
    Nur leider funktioniert es eben nicht ganz so wie du es willst. Deine Ethernet Library ist jetzt für TCP ausgelegt das TouchOSC arbeitet aber mit UDP.
    Die Schichten darunter (IP und Ethernet) sind ja die gleichen und funktionieren daher auch schon.

    Such dir mal eine andere Ethernet Library die mit UDP klarkommt und die bei dir auch funktioniert.
    Wenn das geht kannst du dir wie du gesagt hast die Meldungen an den PC schicken und im Seriellen Monitor anschauen. Das schöne beim OSC ist dass das ganze im Klartext übertragen wird und du somit wirklich lesen kannst was du dir vom IPod für ein Kommando schickst. Die Kommandos kannst du eigentlich auch benutzen um dann schon Sachen zu steuern, dazu brauchst du keine OSC-Library.

    mfg
    Spot

    Login or register to post comments

  1. MoritzK. sagt:

    Hallo
    Es gibt erste Erfolgserlebnisse :)

    Spot wrote:
    Wenn das geht kannst du dir wie du gesagt hast die Meldungen an den PC schicken und im Seriellen Monitor anschauen.

    Das klappt jetzt soweit, ich habs erstmal mit der z_OSC Library umgesetzt und anhand dieses Codes hab ich mir dann eine abgespeckte Version gemacht die mir erstmal nur 'empfang' im Serial Monitor anzeigt wenn mein Arduino eine Nachricht empfängt.

    So einfach ist das:

    #include
    #include // version IDE 0022
    #include

    byte myMac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x77, 0xDD };
    byte myIp[] = { 169,254,182, 2 };
    int serverPort = 8000;

    uint16_t i;
    Z_OSCServer server;
    Z_OSCMessage *rcvMes;

    void setup(){
    Serial.begin(19200);
    Ethernet.begin(myMac ,myIp);
    server.sockOpen(serverPort);
    Serial.println("init");
    }

    void loop(){

    if(server.available()){
    Serial.println("empfang");
    }
    }

    Spot wrote:
    Das schöne beim OSC ist dass das ganze im Klartext übertragen wird und du somit wirklich lesen kannst was du dir vom IPod für ein Kommando schickst.

    Wie ich das umsetzen kann weiß ich allerdings noch nicht.
    Im Link steht noch 'rcvMes=server.getMessage();', aber wenn ich dann irgendwas wie Serial.print(rcvMes); mache funktioniert das noch nicht ganz..

    Login or register to post comments

  1. MoritzK. sagt:

    Ich nochmal,

    eine Frage hätte ich noch zu meinem eigenen Code:
    Was bedeutet 'uint16_t i;', bzw. was macht das?

    Danke im vorraus :)

    Login or register to post comments

  1. Spot sagt:

    Hallo

    Erstmal zu deiner letzten Frage, nachdem du dir da den Code zusammen kopiert hast ist das i nur noch ein Überbleibsl das du nicht brauchst. Das war wohl mal irgendein Zähler, die Variablen i und j werden klassischerweise als Zähler verwendet.
    uint16_t ist ein Standart C Integer, u...unsigned(ohne Vorzeichen also nur 0 und positive Zahlen), int...Integer(Ganzzahliger Wert, keine Kommastellen), 16...16Bit breit(Werte von 0 bis 65535) und _t ist nur eine Konvention für ein per typedef definierten Datentyp.
    Falls dich jetzt wundert was eine C Zeile in dem Code verloren hat, kann ich dir nur sagen das Wiring nur ein C Dialekt ist. Dein Projekt läuft ja auch durch eine Standart C Complier(AVR-GCC).

    Serial.print(rcvMes); funktioniert aus einem ganz einfachen Grund nicht. Du hast ja die Zeile Z_OSCMessage *rcvMes; in deinem Code. Ist dir der * aufgefallen? Es handelt sich hierbei um einen Zeiger(Pointer). Um den "Inhalt" auf den der Pointer zeigt zu erhalten brauchen wir wieder einen *. Deine Zeile müsste also: Serial.print(*rcvMes); lauten. Das funktioniert aber auch noch nicht. Bei Z_OSCMessage handelt es sich um eine Klasse in der sich die eigentliche Nachricht mit noch anderen Informationen befindet.
    In der .zip Datei die du dir heruntergeladen hast ist ein Ordner \examples\Z_SimpleRecieve enthalten. Darin ist ein Beispiel wie du zu der Nachricht kommst.

    mfg
    Spot

    Login or register to post comments

  1. MoritzK. sagt:

    Wow, danke :)
    Jetzt versteh ich so ziemlich alles ;)
    Das Beispiel SimpleRecieve hat mir sehr geholfen.
    Und so langsam kann ich auch meine erste LED ansteuern :P

    Vielen Dank nochmal für deine ganze Hilfe :)

    Login or register to post comments

  1. fishey sagt:

    Was für ein board benutzt ihr? Will sowas ähnliches machen und weiß nicht was für mich ausreicht! Oder ob ich ein ethernet-shield brauche, das ja nur mit Arduino Mega kompatibel ist! Bitte um Tipps für den Einstieg!
    Danke...
    MfG

    Login or register to post comments

  1. MoritzK. sagt:

    Hallo,

    also ich benutze ein stink-normales Arduino Uno Board mit dem Ethernet-Shield.
    Das Shield ist nicht nur für den Mega, die neuste Version des Shields ist aber jetzt AUCH kompatibel mit dem Mega.
    Also bei läuft auf dem Uno alles wunderbar. :)

    Login or register to post comments

  1. fishey sagt:

    Alles klar danke UNO schon bestellt mit Ethernet-Shield....
    Danke

    Login or register to post comments

  1. fishey sagt:

    Alles klar danke UNO schon bestellt mit Ethernet-Shield....
    Danke

    Login or register to post comments