Skyduino:~#
Articles
arduino, programmation, test, tutoriel

[Test] Arduino BlackWidow et Shield WiShield de Async Labs

Bonjour tout le monde !

Aujourd’hui je vous est préparé un test hardware un peu spécial portant sur du matériel arduino wifi.

Mais avant de commencer ce test je tient à remercier du fond du cœur l’équipe realDIYmate, Benvenuto et Artouste qui mon offert le matériel que je vais vous présenter aujourd’hui.

C’est noël avant l’heure pour moi 🙂

Alors pourquoi un test « un peu spécial » ?
Et bien aujourd’hui je vais vous présenter deux cartes, mais en réalité ces deux carte sont quasiment identique.

Je vais vous présenter la shield wifi « wishield » et la carte arduino « BlackWidow », tout deux fabriquer par Async Labs.

Petite précision sur Async Labs, ils ont fermé leurs portes il y a déjà quelque temps mais leur forum est toujours actif, les cartes que je vais vous présenter ne sont donc plus produite par Async Labs, mais vous savez bien que ebay et les chinois sont nos amis 😉

Arduino BlackWidow et Shield WiShield

La BlackWidow

La blackwidow est une carte arduino classique avec en supplément une shield wishield intégré, elle est basé sur l’arduino Duemilanove/Diecimila avec un ATmega328p tournant à 16MHz, le port série usb utilise une puce de FTDI, la on ne peut plus connut puce FT232RL.
Pour les info technique : http://asynclabs.com/wiki/index.php?title=BlackWidow_1.0

(Remarque: l’interrupteur sur la gauche semblent avoir était endommagé lors de la fabrication, je le remplacerai avec un nouveau des que j’aurai reçu ma commande de composants)

La blackwidow utilise un module wifi 802.11b (le ZG2100MC) avec une vitesse maximum de 2Mbps soit 250Ko/s, pas mal !
La société ZeroG qui produisait le module ZG2100M a été racheté par Microchip, seul la référence du module a été changé, maintenant le module s’appelle MRF24WB0M (quel nom barbare …)

On remarquera que ce n’est pas l’antenne « on board » qui est utilisé mais une antenne externe, il faut donc faire attention à ne pas maltraiter le connecteur !

L’avantage d’utiliser une antenne externe à la place de l’antenne « on board » est de pouvoir capter un signal wifi de bien meilleur qualité et de pouvoir émettre beaucoup plus loin.
J’aurai bien tenté un petit test de porté mais les murs épais (et en pierre) de chez moi ne le permette pas …

Voici une petite vu zoomé de la partie « arduino » :

Comme vous pouvez le voir cela ressemble en tout points à une carte arduino Duemilanove, c’est du reste sous le nom de « Arduino Duemilanove w/ Atmega328 » que se programme la carte avec l’ide arduino.

Je vais m’attarder un instant sur led différentes led/boutons de la blackWidow. Il y a trois led, un bouton poussoir et une switch.
Le bouton poussoir permet de « reset » la carte (comme sur une carte arduino classique), le switch quand à lui permet de choisir la broche digital sur laquelle se retrouvera le signal d’interruption du module wifi, au choix D2 ou D8.
La led « L » (broche 13) permet de voir l’activé sur le port SPI, ou de manière plus basique de faire un « blink pin13 », la led « wifi » donne l’état de la connexion du module wifi, allumé si le wifi est connecté, éteinte si ce n’est pas le cas, et pour finir la led « PWR » indique que la carte est alimenté.

Au passage je trouve le skillscreen noir super classe, et ça va bien avec le nom de « blackwidow » 🙂

Remarque : Le module wifi dépasse de la carte, il faut donc être très prudent lorsqu’on la manipule, le pcb du module n’étant pas super épaix, si la carte tombe vous aurez de grande chance que le module wifi se casse.

De même faite attention a ne pas casser/perde l’antenne wifi externe, contrairement à la wishield que je vais vous présenter sous peu il n’y as pas de possibilité d’utiliser l’antenne « on board » seul.

La wishield

La wishield est en tout point identique à la blackwidow à l’exception faite qu’il s’agit de la shield wifi « seul » sans base arduino.
Le module wifi est le même, les led aussi, mais petite chose en plus il y a un certain nombre de « jumper » permettant de choisir le brochage du module wifi.

Il y a aussi une différence de taille avec la blackwidow, sur la wishield il n’y as pas d’antenne externe ni même de connecteur miniature, le signal wifi est directement émis/reçu en utilisant l’antenne « on board », la « force » de réception du signal wifi est donc plus faible et la porté moins grande qu’avec une antenne externe, mais on ne peut pas tout avoir 😉

Reparlons un peu des jumpers,
le jumper LED_OFF permet (si il est ouvert) de ne pas alimenter la led de statut du wifi, utile si on veut rendre le montage discret,
le jumper FSH_SS_N (quel nom barbare :)) permet de choisir la broche à utiliser pour le signal SS du port SPI, soit D7, soit D10,
le jumper INTX permet de choisir sur quel broche doit se retrouver le signal interruption du module wifi, soit D2, soit D8.

Passons à la programmation, Let’s Go !

Tout d’abord opération empilage !

Il va falloir maintenant télécharger la librairie Wishield de Async Labs dispo ici :
https://github.com/asynclabs/WiShield/zipball/v1.3.0

Une fois la librairie installé dans votre dossier /arduino/libraries/ il va falloir modifier le fichier « apps-conf.h », celui ci permet de définir quelle type d’application nous allons développer avec la wishield.

Dans mon exemple je vais faire un « bête » serveur web, je vais donc choisir APP_WISERVER :

//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

Il faudra modifier ce fichier pour chacun de vos projet, c’est assez lourd, le mieux serait de le faire depuis le skecth directement, bref passons.

Remarque : Suite aux changements réalisé sur la classe Print lors du passage en arduino 1.0 la librairie wishield ne compile plus, il faut donc utiliser l’ide Arduino-0023 (ou plus ancien).

Personnellement je suis en WPA2, voici mes paramètres :

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {10,0,0,10};	// IP address of WiShield               // une adresse ip libre de mon réseau
unsigned char gateway_ip[] = {10,0,0,1};	// router or gateway IP address         // adresse ip de mon routeur
unsigned char subnet_mask[] = {255,255,255,0};	// subnet mask for the local network    // submask réseau
const prog_char ssid[] PROGMEM = {"Weefi"};		// max 32 bytes                 // le nom de mon wifi

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

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"hackmeifyoucan"};	 // oui je me suis fait plaisir pour mon mdp wifi ^^

Edit: Voici le code complet, il s’agit de l’exemple SimpleServer avec une petite modif perso 😉

/*
 * A simple sketch that uses WiServer to serve a web page
 */


#include <WiServer.h>

#define WIRELESS_MODE_INFRA	1
#define WIRELESS_MODE_ADHOC	2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {10,0,0,10};	// IP address of WiShield
unsigned char gateway_ip[] = {10,0,0,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 = {"Weefi"};		// max 32 bytes

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

// WPA/WPA2 passphrase
const prog_char security_passphrase[] PROGMEM = {"hackmeifyoucan"};	// 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 ----------------------------------------


// This is our page serving function that generates web pages
boolean sendMyPage(char* URL) {
  
    // Check if the requested URL matches "/"
    if (strcmp(URL, "/") == 0) {
        // Use WiServer's print and println functions to write out the page content
        WiServer.print("<html>");
        WiServer.print("<h1>F*ck Yeah ! It's working !</h1>");
        WiServer.print("</html>");
        
        // URL was recognized
        return true;
    }
    // URL not found
    return false;
}


void setup() {
  // Initialize WiServer and have it use the sendMyPage function to serve pages
  WiServer.init(sendMyPage);
  
  // Enable Serial output and ask WiServer to generate log messages (optional)
  Serial.begin(57600);
  WiServer.enableVerboseMode(true);
}

void loop(){

  // Run WiServer
  WiServer.server_task();
 
  delay(10);
}

Jumpers : LED_OFF fermé, INTX sur D2, FSH_SS_N sur D10

Upload sur la carte, et après quelque secondes d’attente …

Et coté ordi …

EPIK WIN !

Conclusion : La wishield (et par extension la blackwidow) est vraiment sympa et facile à utiliser (si ce n’est qu’il faille modifier app-config avant de compiler un sketch …), niveau performance elle semble plus rapide qu’une wifly de sparkfun, en tout cas je vais bien m’amuser avec 🙂
Si vous voulez plus d’info technique, de l’aide ou des idées de projets wifi je vous conseil de faire un tour sur le wiki de async labs et sur leur forum 😉

Advertisements

Discussion

9 réflexions sur “[Test] Arduino BlackWidow et Shield WiShield de Async Labs

  1. Salut
    Est-ce que les shields de chez reaDIYmate sont toujours disponible gratuitement ? Je crois qu’il fallait les récupérer à paris ? Je les ai contactés mais je n’ai pas eu de réponse.

    Publié par ahamedbacar | 10 décembre 2011, 16 h 06 min
  2. Salut skywodd!

    J’ai pas encore eu le temps de tester ma carte, reçue ce matin… Mais j’ai bien aimé ton test 🙂
    Par contre, aurais-tu un bout le bout de code que tu as utilisé pour ce test?

    Merci d’avance 🙂

    Publié par schizophrene | 10 décembre 2011, 19 h 48 min
  3. Une précision qui peut être pas mal: la carte BlackWidow permet le protocole IMAP4, soit la connexion à des serveurs de messagerie. Ce n’est précisé nulle part 🙂

    Publié par schizophrene | 11 décembre 2011, 15 h 36 min
  4. Hey skywodd! Tu saurais comment, avec une BlackWidow, accéder à cette page: « http://hd1.freebox.fr/pub/remote_control?code=&key=" (adresse de ma freebox pour ma télécommande universelle :) )?

    Publié par schizophrene | 4 février 2012, 20 h 38 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.