blackwidow "duemilanova wifi"

bonjour
certains habitués ici vont bientôt jouer avec, grâce au geste symphatique de bienvenuto.
et dans la mesure où selon l'adage ancien "charité bien ordonnée..." :grin:
j'ai commencé à jouer avec

mon environnement : XP IDE022
j'ai dézippé ça
https://github.com/asynclabs/WiShield/zipball/v1.3.0

dans (chez moi)
C:\arduino\libraries\WiShield

et bien sur j'ai voulu tester les exemples
(board duemilanova W at328 et serial FTDI ok, test blink ok )
tous les exemples plantent déjà à la compil sauf celui qui suit et qui fonctionne d'ailleurs tip-top 8)

Je crois que je me suis planté (encore :smiley: ) sur où et comment bien installer les librairies
suggestion(s) ?
merci
Artouste

/*
 * Web Server
 *
 * A simple web server example using the WiShield 1.0
 */

#include <WiShield.h>

#define WIRELESS_MODE_INFRA	1
#define WIRELESS_MODE_ADHOC	2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192,168,1,166};	// IP address of WiShield
unsigned char gateway_ip[] = {192,168,1,1};	// router or gateway IP address
unsigned char subnet_mask[] = {255,255,255,0};	// subnet mask for the local network
const prog_char ssid[] PROGMEM = {"artouste"};		// max 32 bytes

unsigned char security_type = 2;	// 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"opendailyathome"};	// max 64 characters et c'est pas le mien 

// WEP 128-bit keys
// sample HEX keys
prog_uchar wep_keys[] PROGMEM = {	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,	// Key 0
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 1
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 2
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00	// Key 3
								};

// setup the wireless mode
// infrastructure - connect to AP
// adhoc - connect to another WiFi device
unsigned char wireless_mode = WIRELESS_MODE_INFRA;

unsigned char ssid_len;
unsigned char security_passphrase_len;
//---------------------------------------------------------------------------

void setup()
{
	WiFi.init();
}

// This is the webpage that is served up by the webserver
const prog_char webpage[] PROGMEM = {"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<center><h1>ARTOUSTE BW 1.0 BY Bienvenuto</h1><form method=\"get\" action=\"0\">Toggle LED:<input type=\"submit\" name=\"0\" value=\"LED1\"></input></form></center>"};

void loop()
{
	WiFi.run();
}

Je crois que je me suis planté (encore smiley-grin ) sur où et comment bien installer les librairies

Tout est là : http://arduino.cc/en/Guide/Environment#libraries

On pourra galérer ensemble quand je l'aurai reçue d'un gentil envoyeur ^^

Bonjour
J'ai récupéré aujourd'hui un Wishield 2.0 offert.
Merci encore à Benvenuto et à toute l'équipe reaDIYmate !!
Ayant eu les mêmes symptomes de compilation qu'Artouste (librairie installée comme il faut) j'ai parcouru rapidement le forum Asynclabs....en particulier ce fil :

Après avoir changé l'application active dans apps-conf.h j'arrive à compiler et exécuter le sketch SimpleServer.pde (sous Arduino 022)

//Here we include the header file for the application(s) we use in our project.
//#define APP_WEBSERVER
//#define APP_WEBCLIENT
//#define APP_SOCKAPP
//#define APP_UDPAPP
#define APP_WISERVER

-> veiller à sélectionner la bonne application (une seule) dans ce fichier

define_APP.jpg

Bonjour,

Des que j'aurai reçu ma blackwidow je ferai le test, ya pas de raison que la librairie bug sur tout les exemples :grin:

@al1fch: je garde ton lien de coté il va m'être utile sous peu ^^

Merci encore Benvenuto et Artouste, c'est noël avant l'heure !

al1fch:
Après avoir changé l'application active dans apps-conf.h j'arrive à compiler et exécuter le sketch SimpleServer.pde (sous Arduino 022)

//Here we include the header file for the application(s) we use in our project.
//#define APP_WEBSERVER
//#define APP_WEBCLIENT
//#define APP_SOCKAPP
//#define APP_UDPAPP
#define APP_WISERVER

-> veiller à sélectionner la bonne application (une seule) dans ce fichier

bonsoir al1fch
ok
vu
ça roule avec la modif dans apps-conf.h
et encore merci à bienvenuto

Merci d'avoir crée ce topic ça nous évitera des soucis !
Je testerai ça à la réception :slight_smile:

bonjour,
j'ai hate de faire mumuse aussi.
j'ai vu hier soir ce sketch, par contre je ne vois pas à quoi sert ceci ou comment l'utiliser.
je vois bien le SSID, le passphrase, le WEP utilisé, à moins que ca ne sert à l'encodage du passphrase?

prog_uchar wep_keys[] PROGMEM = {	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,	// Key 0
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 1
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00,	// Key 2
									0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	0x00	// Key 3

Bonjour

A première vue la librairie veut qu'un tableau wep_keys[] soit déclaré. (même si on n'est pas en WEP)
En WPA/WPA2 son contenu n'est pas exploité, un tableau vide convient !!

Pour faire quelques essais de serveur avec un poil d'interactivité voici un pde qui permet de gérer 3 leds (trouvé sur le forum AsyncLabs qui est assez riche et continue d'etre utilisé malgré la cessation d'activité d'AsyncLabs) : asynclabs.com - This website is for sale! - asynclabs Resources and Information.
Il utilise WiServer, il faut donc décommenter la bonne ligne (n° 43) dans le fichier apps-conf.h
Testé sous IDE 022 avec un WiShield V2.0 'from Benvenuto' !

Plein de choses à tester dans ce forum !!!
-projets WiFi 'terminés' http://asynclabs.com/forums/viewforum.php?f=18
-projets WiFi 'en cours' http://asynclabs.com/forums/viewforum.php?f=19
-sketches & applications asynclabs.com - This website is for sale! - asynclabs Resources and Information.
un fil de discussion Pachube semble particulièrement bien fourni...

define_APP.jpg

3 Leds.jpg

Trouvé une librairie 'contribution utilisateur' (GregEigsti) avec DNS et DHCP sur le GitHub d'AyncLabs :

Pas encore utilisée mais ça ne saurait tarder !!
Dans les exemples : un scanner (qui fonctionne...)!!

Une info si certains d'entre vous possèdent un routeur Wifi Linksys WRT54G.
D'après le Wiki d'async Labs la version 1.1 de ce routeur ne fonctionne pas avec le Wishield. Personnellement je n'ai eu aucun problème. Et la connexion a fonctionné du premier coup.
J'ai commencé a jouer avec le sketch simple server pour essayer.
Je l'ai ensuite modifié pour commander une LED avec un bouton sur la page web présentée.
L'appli occupe 14k sur les 30k disponibles de l'atMega328. Cela laisse quand même pas mal de place pour mettre du code. Je n'ai pas encore vérifié l'occupation en RAM.

Par contre j'ai un problème avec la flash. Je n'arrive pas à la lire. Mais bon j'ai juste fait un essai rapide et je n'ai pas trop creusé le problème.

Je crois que grâce à Benvenuto (à cause de Benvenuto, dirait ma femme) je vais être occupé pendant les vacances de Noël.

Edit:
Je me réponds à moi même pour la flash.
Il semblerait que les librairies ne soient pas très clean d'après le forum d'AsyncLabs. Le chip SS des composants n'est pas toujours désactivé après un accès. C'est pour cela que je n'arrivait pas à lire ma flash. Dans le setup avant de fait dflash.init il faut définir en sortie la broche SS utilisée par le Wifi et la positionner à 1 afin de déselectionner le composant. Ensuite c'est bon.

Je viens de tester ma wishield et ma blackwidow, ça marche nikel !
Je vais m'amuser pendant un bon bout de temps tient :grin:

Carte reçue ce matin, je suis super content! Comme pour skywodd, c'est Noël avant l'heure :smiley:

Je n'ai pas encore eu le temps de testé, j'ai fait les magasins pour les cadeaux de Noël (et à Strasbourg, vive les touristes pour le marché de Noël !)...
Par contre je suis déjà entrain de lire le test de skywodd sur son blog, donc tests et retours très bientôt :slight_smile:

Bonjour

-> çi joint le schéma de la carte Wishield 2.0 au format pdf
-> lien vers le pdf du module WiFi utilisé (ZeroG ZG2100M)

Microchip a racheté ZeroG. Le module 'remplaçant' porte maintenant la référence Microchip MRF24WB0M

asynclabs_wishield_v2.pdf (13.9 KB)

Bon, il m'est pour l'heure impossible de connecter ma BlackWidow à mon réseau! En effet, Free utilise un chiffrement TKIP + AES en WPA2, alors que la librairie WiShield utilise le chiffrement PSK:

If you selected WPA/WPA2, it takes slightly more than 30 seconds as the WiFi device needs to calculate the PSK from the passphrase for use in the security handshake.

Donc pour l'instant je suis bloqué, sauf si quelqu'un a une solution? (je ne souhaite pas passer en simple WPA sur ma box :))

schizophrene:
Bon, il m'est pour l'heure impossible de connecter ma BlackWidow à mon réseau! En effet, Free utilise un chiffrement TKIP + AES en WPA2, alors que la librairie WiShield utilise le chiffrement PSK:

Donc pour l'instant je suis bloqué, sauf si quelqu'un a une solution? (je ne souhaite pas passer en simple WPA sur ma box :))

C'est bizarre :fearful: mon routeur (un netgear WNR2000) est en "WPA-PSK [TKIP] + WPA2-PSK [AES]" en mode 802.11b,g,n est la shield ce connecte sans probléme.

If you selected WPA/WPA2, it takes slightly more than 30 seconds as the WiFi device needs to calculate the PSK from the passphrase for use in the security handshake.

Dans mon cas ça prend plus de 40-45 secondes avant de ce connecter :sweat_smile:

Ouais mais si tu regardes bien, dans le chiffrement de ma box (TKIP+AES), le programme de la librairie essaie de chiffrer en PSK à partir de la passphrase:

the WiFi device needs to calculate the PSK from the passphrase

à moins que comme le suggère la configuration de ton routeur, les clés TKIP et AES sont tirées de la clé PSK?

mon routeur (un netgear WNR2000) est en "WPA-PSK [TKIP] + WPA2-PSK [AES]"

Si c'est le cas, c'est sûrement que ton routeur fait lui même la conversion PSK -> TKIP/AES. Possible?

Ma box (Freebox 5 ou 6, celle juste avant la Révolution de Starck) permet 4 chiffrements pour la sécurité du réseau, mais je ne vois pas de PSK:

WEP
WPA (TKIP)
WPA (AES/CCMP)
WPA (TKIP + AES)

EDIT: j'ai essayé de me connecté en Ad-hoc (même si ma configuration réseau ne l'est pas), et là j'obtiens une connexion Wifi (led bleue allumée sur BlackWidow). Par contre, je ne peux pas pinger la carte.

Ok, je me prends la tête depuis hier pour pas grand chose: je ne suis pas en WPA2, mais en WPA simple! Du coup, ça fonctionne beaucoup mieux bien configuré :slight_smile:

Par contre, je perds assez vite la connexion, sans pouvoir la retrouver, même en resetant :confused:

schizophrene:
Ok, je me prends la tête depuis hier pour pas grand chose: je ne suis pas en WPA2, mais en WPA simple! Du coup, ça fonctionne beaucoup mieux bien configuré :slight_smile:

Par contre, je perds assez vite la connexion, sans pouvoir la retrouver, même en resetant :confused:

EDIT: bon, si j'me réveillais moi?! J'utilisais mon port USB récalcitrant, qui faisait reseter la carte toutes les 20 secondes (donc pas le temps d'avoir la connection!)

schizophrene:

  • Ok, je me prends la tête depuis hier pour pas grand chose: je ne suis pas en WPA2, mais en WPA simple! Du coup, ça fonctionne beaucoup mieux bien configuré :slight_smile:

  • Par contre, je perds assez vite la connexion, sans pouvoir la retrouver, même en resetant :confused:

bonjour

  • ceci explique cela :grin:
  • Attention, c'est peut être du à l'ouverture de l'IDE (reset par ouverture du FTDI) , a tu essayé une alim complétement indépendante ?
    j'ai été un peu surpris par le reset, mais la connexion revient ensuite seule en 30/40" (livebox orange chez moi)

Je n'ai pas joué encore beaucoup plus , mais petit ajout au sketch indiqué par Al1fch (toggle 3 led + recup ANA0 )
c'est pas beau , mais c'est fonctionnel ! :grin:
A0 sur GND = 0
A0 sur +5V = 1023
A0 sur 3.3V legere fluctuation = 705/707

 /*
    * A simple sketch that uses WiServer to serve a web page !! that kim messed with.
    */


    #include <WiServer.h>
    #include <string.h>

    #define WIRELESS_MODE_INFRA   1
    #define WIRELESS_MODE_ADHOC   2

    #define ledPin1 5
    #define ledPin2 6
    #define ledPin3 7

    int sensorPin = A0;    // select the input pin for the potentiometer
    int sensorValue = 0;  // variable to store the value coming from the sensor


    // Wireless configuration parameters ----------------------------------------
    unsigned char local_ip[] = { 192,168,1,166};   // IP address of WiShield
    unsigned char gateway_ip[] = { 192,168,1,1};   // router or gateway IP address
    unsigned char subnet_mask[] = { 255,255,255,0};   // subnet mask for the local network
    const prog_char ssid[] PROGMEM = { "ARTOUSTE"};      // max 32 bytes
    unsigned char security_type = 2;   // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2

    // WPA/WPA2 passphrase
    const prog_char security_passphrase[] PROGMEM = { "opendailyathome"};   // max 64 characters

    // WEP 128-bit keys
    // sample HEX keys
    prog_uchar wep_keys[] PROGMEM = {
      0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,   // Key 0
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   // Key 1
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   // Key 2
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // Key 3
    };

    // setup the wireless mode
    // infrastructure - connect to AP
    // adhoc - connect to another WiFi device
    unsigned char wireless_mode = WIRELESS_MODE_INFRA;

    unsigned char ssid_len;
    unsigned char security_passphrase_len;

    // End of wireless configuration parameters ----------------------------------------

    boolean states[3]; //holds led states
    char stateCounter; //used as a temporary variable
    char tmpStrCat[64]; //used in processing the web page
    char stateBuff[4]; //used in text processing around boolToString()
    char numAsCharBuff[2];
    char ledChange;

    void boolToString (boolean test, char returnBuffer[4])
    {
      returnBuffer[0] = '\0';
      if (test)
      {
        strcat(returnBuffer, "On");
      }
      else
      {
        strcat(returnBuffer, "Off");
      }
    }

    void printStates()
    {
            for (stateCounter = 0 ; stateCounter < 3; stateCounter++)
            {
                boolToString(states[stateCounter], stateBuff);
               
                Serial.print("State of ");
                Serial.print(stateCounter);
                Serial.print(": ");
                Serial.println(stateBuff);
            }
    }

    void writeStates()
    {
            //set led states
            digitalWrite(ledPin1, states[0]);
            digitalWrite(ledPin2, states[1]);
            digitalWrite(ledPin3, states[2]);
    }

    // This is our page serving function that generates web pages
    boolean sendPage(char* URL) {
     
      Serial.println("Page printing begun");
     
        printStates();
        writeStates();
       
      //check whether we need to change the led state
      if (URL[1] == '?' && URL[2] == 'L' && URL[3] == 'E' && URL[4] == 'D') //url has a leading /
      {
        ledChange = (int)(URL[5] - 48); //get the led to change.
       
        for (stateCounter = 0 ; stateCounter < 3; stateCounter++)
        {
          if (ledChange == stateCounter)
          {
            states[stateCounter] = !states[stateCounter];
                Serial.print("Have changed ");
                Serial.println(ledChange);
          }
        }
       
        //after having change state, return the user to the index page.
        WiServer.print("<HTML><HEAD><meta http-equiv='REFRESH' content='0;url=/'></HEAD></HTML>");
        return true;
      }
     
      if (strcmp(URL, "/") == false) //why is this not true?
       {
          WiServer.print("<html><head><title>Led switch</title></head>");
       
          WiServer.print("<body><center>Please select the LED state:<center>\n<center>");
          for (stateCounter = 0; stateCounter < 3; stateCounter++) //for each led
          {
            numAsCharBuff[0] = (char)(stateCounter + 49); //as this is displayed use 1 - 3 rather than 0 - 2
            numAsCharBuff[1] = '\0'; //strcat expects a string (array of chars) rather than a single character.
                                     //This string is a character plus string terminator.
           
            tmpStrCat[0] = '\0'; //initialise string
            strcat(tmpStrCat, "<a href=?LED"); //start the string
            tmpStrCat[12] = (char)(stateCounter + 48); //add the led number
            tmpStrCat[13] = '\0'; //terminate the string properly for later.
       
            strcat(tmpStrCat, ">Led ");
            strcat(tmpStrCat, numAsCharBuff);
            strcat(tmpStrCat, ": ");
           
            boolToString(states[stateCounter], stateBuff);
            strcat(tmpStrCat, stateBuff);
            strcat(tmpStrCat, "</a> "); //we now have something in the range of <a href=?LED0>Led 0: Off</a>
       
            WiServer.print(tmpStrCat);
          }
          WiServer.print("<p>");
            sensorValue = analogRead(sensorPin);  
            WiServer.print("VALEUR A0 ");  
            WiServer.print(sensorValue);
            WiServer.print("</p>"); 
            WiServer.print("</html> ");
            return true;
       }
    }

    void setup() {
      // Initialize WiServer and have it use the sendMyPage function to serve pages
      pinMode(ledPin1, OUTPUT);
      pinMode(ledPin2, OUTPUT);
      pinMode(ledPin3, OUTPUT);

      Serial.begin(9600);
      WiServer.init(sendPage);
      states[0] = false;
      states[1] = false;
      states[2] = false;
    }

    void loop(){
      // Run WiServer
      WiServer.server_task();

      delay(10);
    }