Go Down

Topic: RedFly WiFi (neues Layout) an Mega (Read 6372 times) previous topic - next topic

AnNaAF79

Hi!

Hat irgendjmd eine Idee wie man das RedFly WLAN Modul auf einen Mega steckt (also wieherum das drauf muss)?
Kann da keine Anleitung dazu finden; hab das neue Layout des RedFly!

Anbei mal Bilder wie ich die Headerpins verlötet habe (dazu gabs Bilder im Netz)...

https://www.dropbox.com/sh/l5q98e79lm6s54m/zNIwno-gQQ

Danke!

AnNaAF79

Habs nun so angeschlossen wie auf dem letzten Bild ersichtlich.

Outcome:

AT+RSI_FWVERSION?
AT+RSI_FWVERSION?
AT+RSI_FWVERSION?
INIT ERR

Irgendjmd einen Rat?

Megaionstorm

Habe die Position des Reset-Pins markiert, als Orientierung.
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Das RedFly muss ganz links aufgesteckt werden und die ersten 2 Pins an beiden Seiten stehen bei älteren Boards über.

Gruß
Andreas

AnNaAF79

#4
Aug 21, 2012, 10:20 am Last Edit: Aug 21, 2012, 10:24 am by AnNaAF79 Reason: 1
Hi!

Perfekt, jetzt tut es.
Vermutich wäre es aber besser gewesen ich hätte statt so:

[font=Courier]
RESETSCHALTER   6ER-BRÜCKE   8ER-BRÜCKE

               8ER-BRÜCKE   6ER-BRÜCKE
[/font]

so gelötet:

[font=Courier]
RESETSCHALTER   8ER-BRÜCKE   8ER-BRÜCKE

               6ER-BRÜCKE   6ER-BRÜCKE
[/font]

Naja, nicht so schlimm (hoffe ich).

Wer sehen will wie nun alles korrekt aussieht:
https://www.dropbox.com/sh/l5q98e79lm6s54m/zNIwno-gQQ

Samples funktionieren auch.

AnNaAF79

Ich versuche nun gerade HTTP GET/POST Requests zu empfangen.

Code:

Code: [Select]

#include <RedFly.h>
#include <RedFlyServer.h>


byte ip[4]; // set via DHCP
byte netmask[4]; // set via DH

//initialize the server library with the port
//you want to use (port 80 is default for HTTP)
RedFlyServer server(80);


//serial format: 9600 Baud, 8N2
void debugout(char *s)  {
 RedFly.disable();
 Serial.print(s);  
 RedFly.enable();
}
void debugoutln(char *s){
 RedFly.disable();
 Serial.println(s);
 RedFly.enable();
}


void setup()
{
 uint8_t ret;

 //init the WiFi module on the shield
 ret = RedFly.init();

 if(ret)
 {
   debugoutln("INIT ERR"); //there are problems with the communication between the Arduino and the RedFly
 }
 else
 {
   //scan for wireless networks (must be run before join command)
   RedFly.scan();

   //join network
   ret = RedFly.join("x", "x", INFRASTRUCTURE);
   //debugoutln(ret);

   if(ret)
   {
     debugoutln("JOIN ERR");
     for(;;); //do nothing forevermore
   }
   else
   {
     //set ip config
     ret = RedFly.begin(); //DHCP

     if(ret)
     {
       debugoutln("BEGIN ERR");
       RedFly.disconnect();
       for(;;); //do nothing forevermore
     }
     else
     {
       RedFly.getlocalip(ip); //receive shield IP in case of DHCP/Auto-IP
       server.begin();
     }
   }
 }
}


void loop()
{
 //listen for incoming clients
 if(int len = server.available())
 {
   debugoutln("Received data...");      

   char command[len];

   uint8_t *buffer;
   int ret = server.read(buffer, len);
   
   debugoutln("Printing received data...");
   sprintf_P(command, PSTR("%s\n"), buffer);
   debugoutln(command);

   server.flush();
 }
 else if(!server.connected()) //listening port still open?
 {
   server.stop(); //stop and reset server
   server.begin(); //start server
 }
}


Der Scan und das Join funktionieren.
Man sieht auch dass Daten die per HTTP verschickt werden ankommen, denn ich sehe die Ausgabe "Received data..." und in der n. Zeile "Printing received data...".
Doch danach kommt nicht der GET/POST Request wie ich es erwarten würde, sondern eine Leerzeile; nada...

Tipps?

Der Funktion server.read() muss ein Pointer, der auf ein Array zeigt, übergeben werden. Folgendes geht daher nicht:
Code: [Select]

uint8_t *buffer;
int ret = server.read(buffer, len);

Richtig wäre z.B.
Code: [Select]

uint8_t buffer[256];
int ret = server.read(buffer, len);


Gruß
Andreas

AnNaAF79

Okay,  das macht Sinn.
Zu lange kein C mehr programmiert :)

Aber viel geändert hat sich nicht:

Code: [Select]

void loop()
{
  //listen for incoming clients
  if(int len = server.available())
  {
    debugoutln("Received data...");     
   
    uint8_t buffer[256];
    int ret = server.read(buffer, len);
    buffer[len] = 0;
   
    char command[len];
    debugoutln("Printing received data...");
    sprintf_P(command, PSTR("%s\n"), buffer);
    command[len] = 0;
   
    debugoutln(command);

    server.flush();
  }
  else if(!server.connected()) //listening port still open?
  {
    server.stop(); //stop and reset server
    server.begin(); //start server
  }
}


Also Ausgabe erhalte ich nun 2-3 kryptische Zeichen und das wars... *bahnhof*
Mein Request ist ein GET Request.

AnNaAF79

Okay, jetzt geht garnichts mehr.
Am Scan & join Code habe ich nicht verändert; auch nicht an meinen WLAN Einstellungen...

Nur noch JOIN ERR Meldungen:

Code: [Select]

AT+RSI_FWVERSION?
AT+RSI_BAND=0
AT+RSI_INIT
AT+RSI_NUMSCAN=0
AT+RSI_SCAN=0
AT+RSI_NETWORK=INFRASTRUCTURE
AT+RSI_PSK=xxx
AT+RSI_JOIN=xxx,0,2
JOIN ERR


Dieses Bauteil fängt an mich zu nerven :(
Reset, Neustart vom Router, etc., alles probiert - keine Abhilfe...

AnNaAF79

Ohne was geändert zu haben (nur etwas gewartet und paar mal neu hochgeladen) wirs nun noch schlimmer:
Ausgabe wie oben; das ganze hängt sich nun aber in er Zeile vor JOIN ERR auf; das JOIN ERR kommt nichtmal mehr.

Megaionstorm

Du benutzt die Arduino Lib V0.15 für das Redfly Shield ?
https://github.com/downloads/watterott/RedFly-Shield/src_v015.zip
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

AnNaAF79

Version 014.
Nachdem ich nun alle Stecker mal gezogen und eine Weile gewartet habe bekomme ich zumindest wieder eine Connection; aber Daten auslesen immer noch Fehlanzeige.
Kryptische Zeichen oder garnichts :(

Megaionstorm

Hast Du schon die Example-Programme der Library ausprobiert ?
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

AnNaAF79

Ja, die tun (sofern es nicht wieder dieses JOIN ERR Problem gibt bei dem dann garnichts mehr geht).

Megaionstorm

Vielleicht solltest Du eines dieser Example-Programme als Grundgerüst für dein eigenes benutzen, also entsprechend modifizieren !
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Go Up