PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : M256 WIFI Modul



markus788
25.10.2012, 11:38
Hallo,

ich würde mir gern das M256 WIFI Modul kaufen und wollte sicherheitshalber fragen, ob ich dieses Modul mit meinem Laptop und einem ganz normalen WLAN-Router verwenden kann? also der Laptop besitzt ein Internes WLAN-Modem. Würde eben gerne den RP6 fernsteuern.

Danke für eure Antworten.

radbruch
25.10.2012, 12:08
Hallo

Man kann das m256 entweder über einen WLAN-Router in das lokale Netzwerk einbinden und von jedem anderen Teilnehmer im Netz erreichen oder man verbindet es mit einer ADHOC-Verbindung mit einen einzelnen PC mit Netzwerkkarte/Stick. Dabei ist es aber möglich, dass der Router alle Verbindungen im Netz mit der Geschwindigkeit des m256 versorgt und deshalb das Netz recht lahm wird.

Meine Lösung ist ein AP mit einem WLAN-Stick am PC an dem ich mich mit dem m256 verbinde. An diesem AP kann ich mich dann auch mit dem Mobiltelefon oder meinem Android-Spielzeug anmelden und mit dem m256 kommunizieren. Bei Bedarf öffne ich eine Brigde zu meinem Hausnetz und ermöglich so den AP-Teilnehmern den Zugang zum Internet. Die AP-Funktion haben Windows ab Vista und Linux in den Bordmitteln:

https://www.google.de/search?q=ap+mit+wlan-stick
https://www.roboternetz.de/community/threads/58162-Diskussion-zum-RP6-M256-WIFI-Modul?p=555000&viewfull=1#post555000
https://www.roboternetz.de/community/threads/58162-Diskussion-zum-RP6-M256-WIFI-Modul?p=555052&viewfull=1#post555052
https://www.roboternetz.de/community/threads/58162-Diskussion-zum-RP6-M256-WIFI-Modul?p=555485&viewfull=1#post555485

btw sehe ich in einer Weboberfläche die wahre Berufung des m256, weil es dann mit allem was 'nen Browser hat kommunizieren kann. Aber leider kommen ich zur Zeit überhaupt nicht dazu, ein paar Codezeilen zu schreiben. Schade.

Gruß

mic

markus788
26.10.2012, 06:44
Hat auch jemand erfahrung damit eine PC-Software zu erstellen und den RP6 per Wlan zu steuern? das wäre nämlich mein Ziel. Die PC-Software mit Visual Studio dürfte kein problem sein, nur ich weis noch nicht wie ich die Kommandos übers Wlan an den RP6 bekommen. müsste ja irgendwie mein modem ansprechen können. Hat jemand erfahrung?

Max Web
26.10.2012, 08:16
Ja, da gibt es zwei fertige Projekte: Das bekannte Remotrol, dann das Fernsteuerprojekt mit LabView.

Ich selbst arbeite derzeit auch an solch einer Software.

Das Senden per WLan ist ganz einfach: Öffne ein Socket mit richtiger IP und richtigem Port und sende Deine Daten so an den RP6.

markus788
28.10.2012, 14:10
die Remotrol Software ist doch nir für WLAN sondern fürs kabel oder?
ich hätte auch interesse eine app zu schreiben mit der ich den RP6 per WLAN von meinem smartphone steuern kann, aber hab damit noch keine erfahrung mit apps. Weis jemand ob das prinzipiell geht?

Jumptime
31.01.2013, 21:08
Hallo,
dieser Thread ist zwar schon eine Weile her, aber leider nicht weitergeführt.:( Ich hatte mich gerade mit dem gleichen Problem befasst. Nun benutze ich Delphi 6 und nicht Visual Studio, aber das ist ja egal. Ich kann eine Verbindung über das WLAN zum RP6 WiFi Modul herstellen. Auch empfängt es meine Befehlsstrings (das Modul quittiert mit einem blinken der LED WL2. Aber der String ist nicht richtig zusammengestellt, so dass nicht viel passiert.

Sende ich zum Beispiel dass hier:

Client.Socket.SendText('reeboot\LF');
Client.Socket.SendText(CHR(13));

wird das Programm im Bot gestartet, aber alle anderen Varianten bringen nichts?

Client.Socket.SendText('start_program\r');
Client.Socket.SendText('CR');

Client.Socket.SendText('cmd\r\n');

Wie habt ihr ggf. den String zusammengestellt, bzw. was ist hier falsch? :confused:


mfg. Kai

SlyD
05.02.2013, 10:40
Hallo,

ich versteh nicht so ganz was Du machen willst.
"reeboot" wäre wenn dann "reboot" aber egal ohne in den Kommandomodus zu wechseln funktioniert
das sowieso nicht und danach müsstest Du auch die Verbindung neu aufbauen...

Ich glaube auch nicht das \LF oder 'CR' funktionieren.
i.d.R. ist das \r und \n. Falls nicht ist Delphi wohl eine seltsame Angelegenheit ;-)


Das macht so irgendwie keinen Sinn also erklär mal genau was Du machen willst.
Wie sieht Dein Programm für die M256 aus?

MfG,
SlyD

Jumptime
12.02.2013, 10:10
Hallo SlyD,

also mein Programm für die M256 ist nichts anderes als das Beispielprogramm 12 WIFI_Remonte_2 mit einigen Erweiterungen für meinen Roboterarm, die aber nichts an der Funktion ändern. Das sieht so aus:


//**** Roboterarm fernsteuern ******************************************

// Arm rechtsdrehen
else if (strcmp(receiveBuffer_WIFI,"ar")==0)
{
writeString_P_WIFI("\nArm rechts drehen!\n");
ARM_DREHEN_RE();
}
// Arm links drehen
else if(strcmp(receiveBuffer_WIFI, "al")==0)
{
writeString_P_WIFI("\nArm links drehen!\n");
ARM_DREHEN_LI();
}
// Arm in Mittelstellung drehen
else if(strcmp(receiveBuffer_WIFI, "a0")==0)
{
writeString_P_WIFI("\nArm in Mittelstellung drehen!\n");
ARM_DREHEN_OO();
}
// Arm vor ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "av")==0)
{
writeString_P_WIFI("\nArm vor!\n");
ARM_VOR();
}
// Arm zurück ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "az")==0)
{
writeString_P_WIFI("\nArm zurück!\n");
ARM_ZURUECK();
}
// Arm heben ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "ah")==0)
{
writeString_P_WIFI("\nArm senken!\n");
ARM_HEBEN();
}
// Arm senken ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "as")==0)
{
writeString_P_WIFI("\nArm heben!\n");
ARM_SENKEN();
}
// Hand heben ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "hh")==0)
{
writeString_P_WIFI("\nHand heben!\n");
HAND_HEBEN();
}
// Hand senken ---------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "hs")==0)
{
writeString_P_WIFI("\nHand senken!\n");
HAND_SENKEN();
}

// Zange schießen -----------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "zz")==0)
{
writeString_P_WIFI("\nZange zu!\n");
ZANGE_ZU();
}
// Zange öffnen -------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "za")==0)
{
writeString_P_WIFI("\nZange auf!\n");
ZANGE_AUF();
}

// Arm stoppen --------------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "i")==0)
{
ARM_STOP();
}

// Licht an der Zange -------------------------------------------
else if(strcmp(receiveBuffer_WIFI, "zlo")==0)
{
ZLED_ON();
}
else if(strcmp(receiveBuffer_WIFI, "zlf")==0)
{
ZLED_OFF();

Das Ganze funktioniert vom Terminal des RobotLoader recht gut. Die Unterprogrgramme sind in einer extra Datei (Lib).
Jetzt wollte ich ein kleines Programm in Delphi schreiben mit dem ich unabhängig vom RobotLoader den Bot steuern kann.
Netzwerk Verbindung herstellen - klappt,
Programm im Bot starten - start_program\r\n ?
Modus wählen - cmd\r\n ?
und so weiter, das heißt für jede Funktion dann eine Schaltfläche. Gleichzeitig Empfang der Meldungen vom Bot und Auswerten, der Empfang der Meldungen und Daten auf dem PC im Delphi funktioniert übrigens.
Das M256 Modul empfängt den jeweiligen Kommandostring (LED WL1 binkt) , führt ihn aber nicht aus. Deshalb wollte ich wissen, wie der Kommandostring zusammengesetzt sein muss. Da ich das nicht hinbekam und nichts fand was mir weiterhalf, habe dazu auch bereits das Handbuch zum WIFI-Modul bemüht. In den command mode mit $$$ ohne carriage return, komme ich, aber nicht weiter. Es ist das einzige Kommando was tatsächlich ausgeführt wird.
Nun habe ich Delphi im verdacht, und mich bei denen umgeschaut. Noch bin ich mir nicht sicher, aber ich habe offenbar das Trennzeichen zum String so hinzugefügt, so dass es nicht erkannt wird.
:( Daher bin ich mit meiner Frage wohl auch am falschen Platz.
Bei der ganzen Spielerei habe ich jetzt auch irgendetwas verstellt, so dass ich mich nicht mehr mit dem Bot verbinden kann. Mit Ping erreiche ich den Bot, bekomme aber vom RobotLoader ein Time out. Also ersmal Fehleranalyse und Grundproblem lösen.

Aber trotzdem vielen Dank
Kai

SlyD
12.02.2013, 13:39
Hallo,

Nur falls das nicht klar ist: \r\n = Zeilenumbruch = Neue Zeile = Enter drücken.
Ohne das erkennen die Programme nicht das alles fertig übertragen wurde und nun interpretiert werden soll - wäre ja
möglich das noch mehr kommt.

Alle Programme auf dem Mikrocontroller (auch der Bootloader) sind so geschrieben dass es egal ist ob \n, \r\n oder \r ankommt.
Hauptsache mindestens eins davon kommt an!
Das WLAN Modul erwartet entweder \r oder \r\n sonst wird der Befehl nicht ausgeführt.
\n alleine funktioniert nicht!

MfG,
SlyD

Jumptime
12.02.2013, 15:47
Hallo,

mir ist schon klar, dass \r\n = Zeilenumbruch = Neue Zeile an den jeweiligen Befehl drann muss. Vom Terminal aus mit Enter übergeben. Das klappte aber nicht. Daher hatte ich erst vermutet, dass ich das falsch zusammengestellt hatte. Und so war es ja auch, nur suchte ich an der falschen Stelle.
Und so klappt die Sache jetzt aus Delphi heraus:
Text:= 'cmd';
Client.Socket.SendText((Text)+ CHR(13)); // CHR(13) ist der Zeilenumbruch = \r

Nochmal vielen Dank
Kai

radbruch
12.02.2013, 16:12
CHR(13) ist der Wagenrücklauf, CHR(10) ist der Zeilenumbruch...

http://de.wikipedia.org/wiki/Steuerzeichen

Gruß

mic

Jumptime
20.02.2013, 20:30
Hallo,

ja ich korrigiere mal: CHR(13) = Wagenrücklauf und CHR(10) = Zeilenumbruch.

Das das Ganze funktionieren :p kann, kann ich euch hier zeigen:
http://www.home.datacomm.ch/kieszlingdoering/rp-k2.htm

und das Video dazu (wenn auch nicht besonders):
http://youtu.be/2jqyqUIm2gU

mfg
Kai