RedFly WiFi (neues Layout) an Mega

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!

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?

Habe die Position des Reset-Pins markiert, als Orientierung.

Redfly_Shield_2.bmp (1.25 MB)

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

Gruß
Andreas

Hi!

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

RESETSCHALTER 6ER-BRÜCKE 8ER-BRÜCKE

8ER-BRÜCKE 6ER-BRÜCKE

so gelötet:

RESETSCHALTER 8ER-BRÜCKE 8ER-BRÜCKE

6ER-BRÜCKE 6ER-BRÜCKE

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.

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

Code:

#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:

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

Richtig wäre z.B.

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

Gruß
Andreas

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

Aber viel geändert hat sich nicht:

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.

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:

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 :frowning:
Reset, Neustart vom Router, etc., alles probiert - keine Abhilfe...

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.

Du benutzt die Arduino Lib V0.15 für das Redfly Shield ?
https://github.com/downloads/watterott/RedFly-Shield/src_v015.zip

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 :frowning:

Hast Du schon die Example-Programme der Library ausprobiert ?

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

Vielleicht solltest Du eines dieser Example-Programme als Grundgerüst für dein eigenes benutzen, also entsprechend modifizieren !

Das versuche ich gerade.

Bei Auftreten der JOIN ERR bekomme ich als Errorcode übrigens abwechselnden einen 253 (Deregistering from AP) und 235 (Auth Error).
Wenn ich dann alles mögliche Resette tut es wieder womit klar ist dass es kein Problem mit den Credentials sein kann.

Es gibt wohl nich mehr Leute mit solchen JOIN ERR Problemen; extrem nervig.

Redfly De-Authentication Error:
http://www.watterott.net/forum/topic/285

RedFly Wifi-Shield -> JOIN_ERR:
http://www.watterott.net/forum/topic/161

Vielleicht steht was drin !

Das Webserver Sample funktioniert übrigens auch nicht.
Man kann den Server auf dem Shield zwar zum Laufen bringen; bei dem mitkommenden HTML zur Ausführung auf dem PC kommt danach aber nur ERROR als Response.
Die IP die ich in besagtes HTML EIngabefeld eingebe stimmt 100%.

Wenn nichtmal das Sample geht wird es langsam schwierig.

Das WLAN Scan Sample hat funktioniert.

Megaionstorm:
Redfly De-Authentication Error:
http://www.watterott.net/forum/topic/285

RedFly Wifi-Shield -> JOIN_ERR:
http://www.watterott.net/forum/topic/161

Vielleicht steht was drin !

Leider nicht.
Mein WLAN Pwd hat eine Länge von <30 zeichen.
MAC Filter hab ich auch bereits abgeschltet.
WPA+WPA2 ist verfügbar.

Das Problem welches ich habe ist exakt das im zweiten Thread beschriebene.
Auch ich nutze eine Fritzbox.
Gleiches Verhalten und auch keine Lösung.
Da wir aber 2 Smartphones, 1 Tablet und 2 Laptops regelmäßig am Netz haben gehe ich nicht von einem Problem der Fritzbox aus.
Alle Lösungsvorschläge aus dem Thread (delays setzen, etc. probiert - keine Besserung; ganz selten, bei ca. 1 von 10 Versuchen geht es mal)...

Weiterhin öfter 235 Fehler als Erfolg.
Keine Lust mehr - 24h verballert und 65 EUR bezahlt - super :frowning:

Sorry, Maximalfrust macht sich breit.

Version 014.

Probier mal die Version 015. Vielleicht hat sich da was wichtiges geändert !