Module wifi MRF24WB0MA (WiShield) impossible à faire fonctionner

Bonjour à tous,

Voila, j’essaye de faire fonctionner le module wifi MRF24WB0MA avec mon Arduino.

J’ai choisit ce module car il est présent sur le WiShield et possède donc une librairie pour Arduino.
Seulement voila, impossible d’obtenir quoi que ce soit de fonctionnel…

Bon déjà pour la librairie je l’ai trouvée ici:

Avec les correctifs pour Arduino 1.0:

Jusque la, j’arrive à compiler sans erreur.

Pour la partie hardware, j’ai essayer de faire mon propre shield en partant de ça:

Mais j’ai aussi acheté la carte fille proposée par farnell au cas ou mon shield serait mal fait:
http://uk.farnell.com/microchip/ac164136-4/mrf24wb0ma-wi-fi-daughter-board/dp/1841433?MER=en-me-pd-r2-acce-smo

Mais aucune des deux carte ne marche… Je fait pourtant mes branchements exactement comme dans le Wishield:

Je relie le port SPI, l’alim et le reset et je met la pin “hibernate” à l’état bas (encore que ça se fait tout seul sur la carte fille de farnell).

Sur le Wishield il y a une LED d’indication de wifi qui est relié à la pin 8 de l’arduino, j’ai beau en placer une, je n’obtient pas le moindre scintillement.

Bon pour moi je n’ai pas fait de faute sur la partie hardware (du coup ce qui m’étonne c’est que la led ne s’allume pas…) en tout cas je suis sur que mon module est bien alimenté et que tout les contactes se font correctement.

Du coup peut-être que je configure mal mon réseau dans le code… Voila le début du code qui gère les paramètres réseaux:

#include <WiShield.h>

#define WIRELESS_MODE_INFRA	1
#define WIRELESS_MODE_ADHOC	2

// Wireless configuration parameters ----------------------------------------
unsigned char local_ip[] = {192,168,2,21};	// IP address of WiShield
unsigned char gateway_ip[] = {192,168,2,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 = {"belkin54g"};		// max 32 bytes

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

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

Déjà j’ai un gros doute pour la première partie:
unsigned char gateway_ip = {192,168,2,1}; // router or gateway IP address

je reçois internet par satellite chez moi, le boitier de réception ne possède qu’une sortie ethernet et cette sortie est relié à un routeur wifi (belkin) pour avoir internet en wifi.

Pour l’adresse IP, si je tape 192,168,2,1 dans ma barre de recherche, j’ai accès aux paramètre de mon routeur, si je tape 192,168,1,1 j’ai accès à mon fournisseur d’accès (Numeo)… Du coup dans le code Arduino, je dois mettre quoi? .2.1 ou .1.1 ?

Ensuite:
unsigned char local_ip = {192,168,2,21}; // IP address of WiShield
La il faut une adresse libre c’est ça? Donc la je devrait être bon.

const prog_char ssid PROGMEM = {“belkin54g”}; /
La je sais pas si je dois mettre le nom de mon réseau internet ou le nom que je veux voir apparaitre pour identifier l’arduino?

Bon ensuite je met pas de clé de sécurité donc je cherche pas à configurer les clés.
Et le dernier point ou je bloque:

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

J’ai déjà essayer les deux mais je n’arrive pas a comprendre la différence. Il y en a un pour se connecter à un réseau wifi existant et un autre pour se connecter juste à une machine?

Bon et enfin je voudrais être sur d’une chose: normalement, je devrait bien être capable de créer mon propre réseau avec ce module, non?
Du coup pourquoi me demander l’adresse de mon routeur? Moi je voudrais être totalement indépendant de mon réseau internet et créer mon réseau avec l’arduino, mais je sais même pas si c’est le bon programme…

Enfin voila, si quelqu’un a déjà utilisé un module wifi et qu’il a réussi à le faire fonctionner, je veux bien un peu d’aide…
Je me demande aussi si il est possible d’utiliser la librairie wifi d’origine directement sur le module. Je n’ai pas réussis mais peut-être que c’est faisable.

LeDahu:
Bonjour à tous,

Voila, j'essaye de faire fonctionner le module wifi MRF24WB0MA avec mon Arduino.
http://www.farnell.com/datasheets/1669496.pdf

J'ai choisit ce module car il est présent sur le WiShield et possède donc une librairie pour Arduino.
Seulement voila, impossible d'obtenir quoi que ce soit de fonctionnel...

Bon déjà pour la librairie je l'ai trouvée ici:
GitHub - asynclabs/WiShield: WiShield library for the Arduino development platform
Avec les correctifs pour Arduino 1.0:
Changes for Arduino 1.0 by jcmuller · Pull Request #3 · asynclabs/WiShield · GitHub

Jusque la, j'arrive à compiler sans erreur.
...
Enfin voila, si quelqu'un a déjà utilisé un module wifi et qu'il a réussi à le faire fonctionner, je veux bien un peu d'aide...
Je me demande aussi si il est possible d'utiliser la librairie wifi d'origine directement sur le module. Je n'ai pas réussis mais peut-être que c'est faisable.

Bonsoir
Je n'ai pas reutilisé de wishield sous arduino depuis l'ide 1.00
mais si il y a une chose de certaine pour moi, je n'ai jamais reussi à fonctionner en Adhoc
en mode AP par contre sans probleme.
Je me souviens que les debuts ont été un peu laborieux avec la lib à commenter, decommenter selon l'appli
voir ce topic

J'ai voulu charger la lib pour l'ide 1.0 et regarder mais ça me renvoi des erreurs de compile
tu peux faire un zip de la librarie que tu utilise en compil OK ?

tu peux faire un zip de la librarie que tu utilise en compil OK ?

Le voila, mais bon j’ai juste téléchargé la librairie dispo sur GitHub en modifiant comme indiqué ici:

Par contre y’a toujours la petite manip des ligne à commenter/décommenter selon chaque exemples pour que la compilation marche.

Bon sinon j’essaye de repasser à une version plus ancienne de l’IDE…

Ha oui aussi, j’ai vu sur ce blog:

En commentaire:

I think there is a bug in WiShield driver. In file g2100.h there a three registers are defined 0x2F, 0x33 and 0x35. But in library files from Micorchip (MFDriverPrv.h) register 0x33 and 0x35 (in g2100.h) are defined there as 0x31 and 0x33. So I’m surprised that this driver works correctly.

J’ai bien essayer de changer les registres mais rien n’y fait.

WiShield - copie.zip (170 KB)

ok
edit , j’etais en train de repondre
bon lib chargée OK
chez moi cet exemple fonctionne parfaitement
je suis en wpa2
adresse IP du server wifi 192.168.1.178

/*
 * 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[] = {192,168,1,178};	// 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 = {"boxartouste"};		// 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 = {"xxxxxxxxxxx"};	// 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("Hello World!");
        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);
}

bon lib chargée OK

Donc sur Arduino 1.0?

Rha rien à faire, ça marche pas.
On est d'accords que sur ton code, j'ai juste le type de clé a changer pour mettre aucune (je me connect à mon routeur sans clé) et je met le nom de mon réseau à la place de "boxartouste"?

Bon peut-être que c'est au niveau de mon routeur que ça déconne, du coup j'ai essayé de partager ma connexion avec mon portable pour créer un réseau local, j'ai changé les adresse IP du code pour me connecter au portable mais pareil, le téléphone ne détecte pas l'arduino.

Mais à quel moment la LED pin 9 doit s'allumer? Une fois que le module est connecté à un réseau? Ou juste lorsqu'il fonctionne? Parceque moi elle s'allume jamais...

C'est quand même pas au niveau du shield que ça plante? C'est vrai que j'ai pas le vrai Wishield mais bon si je relie le port SPI à l'arduino et que j'alimente le module, ça devrait normalement marcher, non?
Voila le schema de la carte fille que j'utilise:

Et je viens de lire le topic que tu m'a indiqué, ça m'enbète un peu, tout ce que devait faire le module à terme à l'air compliqué voir infaisable:

Artouste:
j'ai donc eu l'occasion de disposer de "multiples" objets communicants en WIFI sous OS # (phone, tab, etc ...)
tous "voient" le réseau adhoc ouvert, tous semblent s'y connecter sans plus de problemes.
mais après : "Nada" impossible d'obtenir même la "page web" avec les navigateurs embarqués .
ça semble à priori coincer sur une couche supérieure logicielle, mais là ... je coince aussi

Mon but est justement de me connecter en adhoc avec un portable...

Sais-tu si le problème vient du module, ou de la librairie Arduino?
Et si il existe un autre module Arduino qui lui, est capable de faire adhoc avec portable.

En faite, je dois faire un projet de télécommande wifi via smartphone. Du coup je me suis dit que pour réceptionner le wifi, la solution la plus simple serait d'utiliser une Arduino+Module wifi présent sur un shield et d'utiliser une librairie... Mais j'ai de plus en plus de doute sur l'aspect réalisable de ce projet...

LeDahu:

bon lib chargée OK

Donc sur Arduino 1.0?

Rha rien à faire, ça marche pas.
On est d'accords que sur ton code, j'ai juste le type de clé a changer pour mettre aucune (je me connect à mon routeur sans clé) et je met le nom de mon réseau à la place de "boxartouste"?

Bon peut-être que c'est au niveau de mon routeur que ça déconne, du coup j'ai essayé de partager ma connexion avec mon portable pour créer un réseau local, j'ai changé les adresse IP du code pour me connecter au portable mais pareil, le téléphone ne détecte pas l'arduino.

Mais à quel moment la LED pin 9 doit s'allumer? Une fois que le module est connecté à un réseau? Ou juste lorsqu'il fonctionne? Parceque moi elle s'allume jamais...

C'est quand même pas au niveau du shield que ça plante? C'est vrai que j'ai pas le vrai Wishield mais bon si je relie le port SPI à l'arduino et que j'alimente le module, ça devrait normalement marcher, non?
Voila le schema de la carte fille que j'utilise:

Et je viens de lire le topic que tu m'a indiqué, ça m'enbète un peu, tout ce que devait faire le module à terme à l'air compliqué voir infaisable:

Artouste:
j'ai donc eu l'occasion de disposer de "multiples" objets communicants en WIFI sous OS # (phone, tab, etc ...)
tous "voient" le réseau adhoc ouvert, tous semblent s'y connecter sans plus de problemes.
mais après : "Nada" impossible d'obtenir même la "page web" avec les navigateurs embarqués .
ça semble à priori coincer sur une couche supérieure logicielle, mais là ... je coince aussi

Mon but est justement de me connecter en adhoc avec un portable...

Sais-tu si le problème vient du module, ou de la librairie Arduino?
Et si il existe un autre module Arduino qui lui, est capable de faire adhoc avec portable.

En faite, je dois faire un projet de télécommande wifi via smartphone. Du coup je me suis dit que pour réceptionner le wifi, la solution la plus simple serait d'utiliser une Arduino+Module wifi présent sur un shield et d'utiliser une librairie... Mais j'ai de plus en plus de doute sur l'aspect réalisable de ce projet...

bonjour
oui arduino 1.05 r2
avec mes parametres , le shield passe en connecté (led fixe) en ~30 secondes apres le reset et j'y accede par l'adresse IP 192.168.1.178
ma box est en 192.168.1.1
pour le mode adhoc , j'ai laissé tomber.
pour ce qui est des autres solutions wifi, il me semble avoir lu que le wifishield avait aussi des soucis avec le mode adhoc.
perso pour des applis ethernet/arduino pour le passage en wifi , j'utilise simplement en cas de besoin des micros routeurs usb
derriere la carte ethernet.

petit routeur
http://www.ldlc.com/fiche/PB00125271.html

on trouve maintenant facilement de la carte ethernet à ~ 15€
http://letmeknow.fr/shop/arduino/37-shield-ethernet-arduino.html

Bon je crois enfin avoir trouvé le problème... Il semblerait que la libraire n'est pas compatible avec les derniers modules de MicroChip.

Artouste, ton module est la version 10XX ou 11XX nan?

Je possède un 12XX et même un 13XX (qui n'est même pas répertorié dans la liste des version de microchip....)

Bon je vais déjà essayer de faire marcher le 12XX, je suppose (enfin j'espère) qu'il y moyen d'arriver a quelque chose en modifiant un peu la librairie. :cold_sweat:

Les mise a jour sont répertoriées ici: http://ww1.microchip.com/downloads/en/DeviceDoc/80516C.pdf
Je sais pas si ça peut aider... je sais pas trop comment m'y prendre pour modifier la librairie :confused:
Je suppose qu'il n'y a que certains fichier de la librairie qui configurent le module (du genre g2100.h) ?

D'ou pourrait venir le problème? des registre mal configurés? Dans ce cas, ou est-ce que je peux trouver la configuration à mettre aux registres??

LeDahu:
Bon je crois enfin avoir trouvé le problème... Il semblerait que la libraire n'est pas compatible avec les derniers modules de MicroChip.

Artouste, ton module est la version 10XX ou 11XX nan?

Je possède un 12XX et même un 13XX (qui n'est même pas répertorié dans la liste des version de microchip....)

bonjour
J'ai deux modules ,mais pas sous la main
de plus il s'agit de module à base de ZG2100 donc avant le rachat par Microchip

Oui donc c'est ça, c'est une ancienne version.

... C'est vraiment probable que ce soit une mise a jour du module qui le rende incompatible avec la librairie?

Et sinon, comme cette librairie commence à me poser pas mal de soucis, c'est envisageable d'utiliser le module avec Arduino sans passer par la librairie du WiShield?

LeDahu:
Oui donc c'est ça, c'est une ancienne version.

... C'est vraiment probable que ce soit une mise a jour du module qui le rende incompatible avec la librairie?

Et sinon, comme cette librairie commence à me poser pas mal de soucis, c'est envisageable d'utiliser le module avec Arduino sans passer par la librairie du WiShield?

C'est surement possible d'en developper une avec les bonnes specifs, mais perso comme expliqué plus haut j'ai abandonné les shields wifi pour partir sur une solution ethernet+nanorouter, tu choisi d'ajouter le fonction wifi ou pas sans modif de code.
jusque là j'utilise des WR702N , mais suite à une realisation de kas (un contributeur du forum) je vais tester quand reçu avec ça

Bonjour

J'ai également un 'vieille' carte Wishield 2, puce ZG2100, et librairie d'époque sous Arduino 0.23
J'ai réussi à en tirer une toute petite application qui donne toujours satisfaction depuis décembre 2010 en envoyant des données sur Xively (ex Cosm, ex Pachube) : APP_WISERVER, Mode infrastructure, WPA2, canal 11 maxi, requete POST sur Xively....
pas mal de galère pour sortir des exemples....

Pas surpris d'aprendre que, depuis 2009 (puce ZG2100 de la société ZeroG, carte Asynclabs....) les évolutions dans le giron Microchip aient rendu obsolète la librairie AsyncLabs d'époque...

Actualiser la librairie ? écrire une librairie.... à priori faisable en suivant l'évolution de la 'pile TCP/IP' de Microchip au fur et à mesure des changements de firmware des MRF24WB0......gros investissement, motivation importante à prévoir avec peu de personnes pour partager/dialoguer...

Microchip ne croit peut être pas tant que ça dans cette puce puisqu'il a racheté Roving Networks (RN171, RN-XV....) sans craindre de faire 'doublon''
J'ai eu beaucoup plus de satisfaction avec 2 modules RN-XV,+ librairies diverses plus ou moins issues de celle de Sparkfun.
(Le gentil donateur de cartes Wishield 2 qui s'était manifesté sur ce forum se débarassait de ces puces ZG2100 en faveur de RN171...)

Le WiFi sous Arduino c'était encore récemment 5 ou 6 puces d'origines diverses avec des embryons de librairies , trop de dispersion...
La situation change peut être maintenant avec les cartes WiFi officielles d'Arduino , ça permet peut être de concentrer les énergies sur un ou deux modules.

(Dans mon cas personnel, aujourd'hui, une petite application économique WiFI c'est une Raspberry modèle A + dongle WIFi USB de fond de tiroir avec un chipset supporté)

al1fch:
...
Le WiFi sous Arduino c'était encore récemment 5 ou 6 puces d'origines diverses avec des embryons de librairies , trop de dispersion...
La situation change peut être maintenant avec les cartes WiFi officielles d'Arduino , ça permet peut être de concentrer les énergies sur un ou deux modules.

(Dans mon cas personnel, aujourd'hui, une petite application économique WiFI c'est une Raspberry modèle A + dongle WIFi USB de fond de tiroir avec un chipset supporté)

Bonsoir Al1fch
Content de te (re)voir ici :grin:
Je suis parfaitement en accord
-SI simple petit ehernet avec arduino , je derive "la couche/option wifi"
-Si plus lourd , la solution "gros OS" embarqué (et drivers) style Rpi est aussi une bonne option.
Le plus compliqué là est d'etre pragmatique 8)

Bonsoir Artouste !!
Content également de te retrouver !
La carte WiShield2 en question est associée à plusieurs capteurs dont un MX4115 'tombé du ciel' en 2012 , relié directement à une entrée analogique avec des résultats tout à fait satisfaisants .... sans effort démesuré de calibration !!

pression = analogRead(barometre) + 187; // 187 correction empirique

Le plus compliqué là est d'etre pragmatique

:grin:

Le plus court chemin pour exploiter des MRF24WB0 aujourd'hui est sans doute 'hors univers Arduino' :
PIC18 , PIC24 ou PIC32 + pile TCP/IP !!! (module Microchip, µC Microchip + librairie Microchip + forum Microchip...)

A moins qu'une librairie MRF24WB0 Arduino actualisée sorte de quelque part.....rien d'aussi riche et productif que la communauté Arduino !!

Peut être une solution intermédiaire côté Chipkit32 (mi Arduino mi PIC32)

MRF24WB0 aujourd’hui est sans doute ‘hors univers Arduino’ :
PIC18 , PIC24 ou PIC32 + pile TCP/IP !!! (module Microchip, µC Microchip + librairie Microchip + forum Microchip…)

Du coup j’avais un pic18f sous la main, donc je regardé à cette solution. Mais apparemment il faut au moins un pic32 avec 64kb de RAM et ce, à cause de la pile TCP/IP.

Je comprend plus rien, l’arduino n’as pas de telle caractéristiques…?
J’ai du mal avec la notion de pile TCP/IP, j’ai bien compris que c’était des protocoles, mais pourquoi prend-elle autant de place?
Si j’ai bien compris, elle est intégrée sur certains module wifi mais pas sur le MRF24WB0MA?

Le shield ethernet, j’aurais voulu éviter de passer par ça…

Vous dites que le RN-131 marche bien? Disons que si j’opte pour ce module, vous pouvez me garantir qu’il fonctionnera sous Arduino?? :slight_smile:
Ça me rassure qu’il y’ai pas mal d’article dessus (notamment sur Skyduino) mais bon… il y en avait aussi sur le MRF24WB0MB
Et est-ce que avec module je pourrais être capable de créer mon propre réseau pour communiquer avec un smartphone?

Bon, juste pour vous dire que ça marche carrément mieux avec le module rn-131!

J'ai réussis à faire absolument tout ce que je voulais: server web, liaison smartphone...
J'avais au début fait un shield type wifly avec un convertisseur SPI/UART mais j'arrive finalement à beaucoup plus de chose uniquement en envoyant des ordres au module via le port série! (Et du coup, grâce à la mémoire embarqué du module, l'arduino n'est même pas indispensable)

En tout cas merci de votre aide!