[Résolu] Qui utilise ce shield wifi ? Wizfi210

Salut à tous !

Je vais bientôt recevoir mon shield wifi, et je cherche à avancer sur mon programme avant de le recevoir.

Il s’agit du modèle en pièce jointe, copie chinoise du modèle proposé par dfrobot.

Le shield communique avec le port série donc.

Pour le transfert de donnée PHP → ARDUINO, je ne pense pas rencontrer de problème majeur, en revanche je ne comprends pas comment faire le trajet inverse du moins comment envoyer des données vers l’extérieur avec l’arduino.

En gros je veux juste envoyer un “String” vers ma page php pour qu’il la traite ensuite.

Quelqu’un ayant utilisé cette carte pour le même type d’application pourrait il m’éclairer sur la marche à suivre ?

Merci

Bonjour

Qui utilise ce shield wifi ?

Pas moi !! Cette carte utilise un module WiFi "WizFi-210" de Wiznet plutôt performant, mais assez récent et peu utilisé à ce jour dans le monde Arduino. ça devrait changer et je crois qu'ne librairie Arduino est en préparation chez Wiznet :
GitHub - Wiznet/Arduino_WiFi_Shield: WiFi shield for Arduino (seul le hardware est mis en ligne pour l'instant, le software est pour l'instant vide)

Une description des fonctionalités du module WizFi-210 indique 'Client HTTP / HTTPS)' , il est donc envisageable d'envoyer la chaine en GET ou PUT. Avec un shield utilisant un module aussi récent il faut prévoir de mettre le nez dans la documentation. Il n'y a peut être aujourd'hui aucun sketch pret à l'emploi pour la fonction désirée.

Merci pour l'info !

En faite je cherchais pas au bon endroit.
Les sites donne juste le .pdf pour démarrer rapidement, mais là je viens de mettre la main sur le manuel complet qui décrit les commandes dispos.

Résolu en partie car maintenant va falloir essayer tout ça ^^

Fais nous un retour quand tu auras joué avec
Ca nous interresse...

Oui je comptais le faire, mais en gros ça marche en ligne de commande avec Serial.print().

J'attends de faire les premiers essais pour déposer un exemple.

Salut !

Je reviens vers vous car j'ai reçu le shield aujourd'hui.

La configuration en suivant le tuto c'est déroulé sans problème.

Mais après minimum 4h de recherche impossible de communiquer avec le shield.

Je souhaiterais lui envoyer des commandes mais aucune réaction de sa part à toute mes tentatives, alors que le manuel indique que dans tout les cas il devrait au moins me retourner un message d'erreur.

Pour initialiser une commande je dois la précéder de la chaîne "+++", mais comment lui envoyer ?

Serial.print("+++") ou Serial.print('+++') ou alors Serial.write("+++") ?

Salut,

elriri:
Pour initialiser une commande je dois la précéder de la chaîne "+++", mais comment lui envoyer ?

Serial.print("+++") ou Serial.print('+++') ou alors Serial.write("+++") ?

Serial.print("+++")
ou si il faut un retour ligne (surement le cas) :
Serial.println("+++")

Moment culturel :wink: :
"+++" -> chaine de caractére ASCIIZ (le Z n'est PAS une faute de frappe ;)) = { '+', '+', '+', '\0' }
'+++' -> erreur de syntaxe, quelque chose entre simple quote (exemple 'x') = un caractére ASCII
Serial.print() affiche une chaine de caractére ASCIIZ exemple "xxxx"
Serial.write() envoi un octet brute ou par extension un caractére seul exemple 'x'

Merci, mais toujours aucun résultat et je trouve zéro exemple sur le net.

La seule chose que j’arrive à faire, utiliser putty pour envoyer des données vers l’arduino, là aucun problème les caractères sont lisible avec un simple Serial.read().

Mais quand je veux démarrer une connexion TCP par exemple ou plus simplement dissocier le module wifi de mon réseau là aucune commande ne fonctionne ni ne retourne aucun message d’erreur, j’ai l’impression qu’un
Serial.println("+++") ne suffit pas à activer le système de commande.

Enfin une commande qui passe !

Le script :

void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
delay( 10000 );

Serial.print("+"); //put in command mode
delay(300);
Serial.print("+");
delay(300);
Serial.print("+");

delay( 5000 ); //hang round on command mode for a bit - no reason
Serial.println("ATH"); // dissocier wifi
Serial.flush();
}

void loop() // run over and over
{

}

ouf ! J'en suis à 5h de recherche ^^

S'ils se sont inspirés de l'API de Roving Networks, il y a peut-être un piège du genre : si il y a un autre caractère que '+' 250ms avant ou 250ms après, il ignore le "+++", du coup le '\n' de ton Serial.println("+++") empêche ta commande de fonctionner.

Ok je vais chercher de ce côté car à part "ATH" je n'arrive pas à exécuter une commande plus longue tel que "AT+HTTPCOPEN=ndd.fr,80"...

Bon j'avance un peux, j'arrive à l'aide d'un SoftwareSerial qui m'affiche les réponses du module wifi à voir que mes commandes sont bien prises en compte mais retourne une erreur : [ERROR] sans plus de précision pourtant j'exécute une bête commande "AT+DNSLOOKUP=google.com" prise dans le manuel car utilisé comme exemple mais ça ne fonctionne pas...

Précision, mes commande sont seulement prises en compte quand j'utiliser print(), mais pas quand je les rentre dans mon terminal...

Salut,

Une idée bête, mais si tu ne dit pas à la carte sur qu’elle borne wifi se connecter, peut-être qu’elle attend que tu lui donne avant de faire un ping.
Si cela fonctionne comme un carte wifi standard bien sur.

Bonne chance.

Justement je me posais la question mais les voyants indiquent que la carte est bien associé à mon Wifi, de plus quand j'envoi la commande "ATH" pour me dissocier, la led s'éteint et je suis obligé de redémarrer le module pour me reconnecter.

elriri:
Justement je me posais la question mais les voyants indiquent que la carte est bien associé à mon Wifi, de plus quand j'envoi la commande "ATH" pour me dissocier, la led s'éteint et je suis obligé de redémarrer le module pour me reconnecter.

En langage Hayes (commande modem) 'AT' ATH signifie ATtention Hold et est en général (pas toujours) suivi de quelque chose. Exemple ATH0 (ATHzéro = raccrocher la ligne). Donc à mon avis il manque quelque chose. C'est sans doute pour cela que ton module se bloque.

En mode commande modem, la commande la plus utile est ATZ ( = reset). À envoyer dès qu'on perd la main ou qu'on veut commencer un autre essai, car le modem ou assimilé conserve toute les commandes précédentes sauf redémarrage (sans sauvegarde)

PS. DFRobot est lui-même un fabricant Chinois
PS2 Tu devrais changer l'état [resolu] du topic, car visiblement le problème ne l'est pas encore :relaxed:

Voila une photo, le module utilise la carte WizFi210 avec le firmware 1.1.0.3(E).

La doc : http://www.dfrobot.com/image/data/TEL0047/WizFi210%20datasheet%20V101.pdf

Mais les commandes indiqué par un * ne sont pas prises en compte par wizfi210, pour les implémenter il faut faire appel un firmware modifié fournit par le revendeur…

Je viens de télécharger Tera Term Pro pour envoyer des commandes séries et ça fonctionne ! Les commandes qui ne sont pas reconnus par print("") le sont avec le terminal, je suis persuadé que tout le problème réside dans les caractères d'échappement...

Bon, j'investigue un peu pour toi :open_mouth:

As-tu fait ce qui est écrit page 7 de 9 du Quick Reference Guide ?
www.wiznettechnology.com/wizfi210 Section Download WizFi210/220 QuickStartGuide(EN) V1.0

  1. Using WizFi210 at the AT Command mode

(1) AT+WWPA=12345678
This command sets WPA Passphrase as “12345678”
(2) AT+NDHCP=0
This command sets WizFi210 as using fixed IP address (not DHCP). When the IP address is acquired by DHCP, the command “AT+NDHCP=1” is used.
(3) AT+NSET=192.168.3.123,255.255.255.0,192.168.3.1
This command sets the module with IP address (192.168.3.123), Subnet Mast (255.255.255.0), and Gateway Address (192.168.3.1).

etc...

À transcrire en langage Arduino par quelque chose de ce style

Serial.begin(9600)
...etc

Serial.println("AT+WWPA=12345678"); // à adapter selon le protocole de cryptage configuré sur ta box
delay(500);
Serial.println("AT+NDHCP=0")

etc
Oui, un petit delay() entre chaque envoi car la gestion des périphérique série a souvent besoin de 'digérer' chaque ligne.

Note qu'une fois configuré via un terminal et sauvegardé (AT&W0) ce processus n'est plus à refaire via l'Arduino: celui-ci se reconnectera tout seul. Ta seule programmation Arduino consistera à utiliser les commandes séries classiques. (en pensant bien à temporiser chaque envoi)

Un grand merci ! Je pensais que AT+WWPA n’était pas utile car déjà associé…

A première vue ce code fonctionne :

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{


  // set the data rate for the SoftwareSerial port
  Serial.begin(9600);
  Serial.println("Hello !");
  
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
  
  delay(300);
  Serial.print("+");
  delay(300);
  Serial.print("+");
  delay(300);
  Serial.print("+");
  delay(1500);
  Serial.println("AT+WWPA=DAFARJEENKOALETFEIK3");  // à adapter selon le protocole de cryptage configuré sur ta box
  delay(500);
  Serial.println("AT+NDHCP=0");
  delay(500);
  Serial.println("ATO");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
  delay(10);

}

Fausse joie, quand j’envoi des commandes au terminal un coup ça passe un coup ça passe pas et il me renvoi ma commande tronqué avec des caractères bizarres.

J’en peux plus de ce truc !