Impossibilité d'établir connexion Wifi

Bonjour,

Pour un projet scolaire, je suis amené à contrôler deux moteurs via une application.
Il me manque plus qu'à établir la connexion wifi qui permettra à l'information de transiter de l'application à la carte arduino. J'ai donc acquis un shield wifi de la marque seeeduino ( http://www.seeedstudio.com/depot/Wifi-Shield-p-1220.html (je suis désolé, ce n'est pas un officiel mais cette décision ne vient pas de moi...)). Enfin bref, j'ai téléchargé la bibliothèque fournie par la fiche technique du produit ( Wifi Shield Library) et essayé de faire tourner le code fourni également (Wifi Shield V1.1 | Seeed Studio Wiki). Malheureusement il ne marche pas car WiFlyClass n'existe pas dans la bibliothèque... (le code ne se compile pas). J'ai essayé de modifier le code mais sans grand succès :-/ j'ai également modifié l'emplacement des cavaliers en 0 et 1 ( initialement en 2 et 3).
J'ai également essayé les exemples fournis avec la librairie Wifi_shieldmaster : et ça n'a pas marché non plus (par contre le code pouvait se compiler dans ce cas).

Pouvez vous m'aider s'il vous plait ?
Un immense merci par avance ! :slight_smile:

Bonne soirée !

Salut,

As-tu fais attention a ça?

Only WEP-128, WPA-PSK (TKIP) and WPA2-PSK (AES) authentications are supported

As tu essayé de modifié la configuration de ton wifi sur ta box.

Commance par une clef wep sans mot de passe etc....

Alors, j'ai fais tellement de test qu'au final je ne sais plus ^^
je vais essayer merci !

Mais pour ce qui concerne la WiFlyClass, sais tu où je peux trouver la bonne class où comment modifier le code afin que celui-ci fonctionne ?

Merci pour ta réponse aussi rapide :slight_smile:

Peut tu me donné un lien de la library utilisé?

C'est celle qu'on demande de télécharger sur le lien wiki si jamais tu n'arrives pas à l'ouvrir avec ce lien.

J'ai donc essayé comme tu me l'as conseillé de changer la sécurité de ma box et sans succès. Voici les autres "avancées" de la journée :

#include <Arduino.h>
#include <SoftwareSerial.h>
#include "WiFly.h"

#define SSID "wiik@sunrise"
#define KEY "76AD2FD8A62A458F28836178EE"
#define AUTH 0

// Pins' connection
// Arduino WiFly
// 2 <----> TX
// 3 <----> RX
SoftwareSerial uart(2, 3);
WiFly wifly(&uart);

void setup() {
uart.begin(9600);

Serial.begin(9600);
Serial.println("--------- WIFLY TEST --------");

// wait for initilization of wifly
delay(3000);

uart.begin(9600); // WiFly UART Baud Rate: 9600

wifly.reset();

Serial.println("Join " SSID );
if (wifly.join(SSID, KEY, AUTH)) {
Serial.println("OK");
}
else {
Serial.println("Failed");
}

// get WiFly params
wifly.sendCommand("get everthing\r");
char c;
while (wifly.receive((uint8_t *)&c, 1, 300) > 0) {
Serial.print((char)c);
}

if (wifly.commandMode()) {
Serial.println("Enter command mode. Send "exit"(with \r) to exit command mode");
}
}

void loop() {
while (wifly.available()) {
Serial.write(wifly.read());
}

while (Serial.available()) {
wifly.write(Serial.read());
}
}

Ce code est disponible dans les, exemples de la librarie mais je n'arrive pas à la faire marcher, je reçois à chaque fois le message "failed"...

#include <Debug.h>
#include <WiFly.h>

class WiFly Wifly (2, 3);
void setup ()
{
Serial.begin (9600);
Wifly.init ();
Wifly.setConfig ("wiik@sunrise", "76AD2FD8A62A458F28836178EE");
Wifly.join ("wiik@sunrise");
Wifly.isAssociated ();
while (!Wifly.connect("192.168.1.10","90"));
Wifly.writeToSocket ("Connected!");
}

void loop ()
{
if (Wifly.canReadFromSocket));
{
Serial.print (Wifly.readFromSocket ());
}
if (Serial.available ())
{
Wifly.print ((char)Serial.read ());
}
}

Et voici le code fourni sur le wiki, j'ai essayé de le réécrire mais certaines commandes ne marchent pas et je ne trouve pas leur équivalent dans la librairie

Personne pour m'aider ? :frowning:

Désolé je me sert pas du Shield wiifly, mais je peux peut-être aidé comme même.

Tu peux nous donné le résult de la compilation.

Peut être que le @ du SSID n'est pas reconnu dans le driver?

Tu utilises la dernière version de l'IDE de l'arduino?

Sinon il faut peut être commancé par mettre à jour ton IDE, car la carte WIFI est récente! Elle à peut être besoin d'une mise à jour également!

bonjour,
déjà quelle box utilises tu?
si c'est une lb2, il faut changer le type de cryptage, WPA de mémoire, sinon (sauf si le firm a été changé depuis) elle ne fonctionne qu'en wifi N. donc pas glop avec ce shield qui est en b/g
vire le @ du SSID, mets un - ou _ à la place
reboot la lb pour être certain que tout soit pris en charge.

as tu vérifié les cavaliers? config (2,3)

quel IDE? prends le dernier, la lib SoftwareSerial pourrait poser pb

Bonsoir,

J'ai réussi à régler le problème merci !

Cependant, j'aurais une autre question : pouvez-vous m'expliquer à quoi correspondent les ports que l'on me demande de renseigner au début du code ? enfin dans l'ensemble j'ai un peu de mal à cerner le fonctionnement de ce code :frowning:
Merci d'avance !

#include <Arduino.h>
#include <SoftwareSerial.h>
#include "WiFly.h"

#define SSID      "WiFly-Ad-Hoc"

#define UDP_HOST_IP        "255.255.255.255"      // broadcast
#define UDP_REMOTE_PORT    55555
#define UDP_LOCAL_PORT     55555

// Pins' connection
// Arduino       WiFly
//  2    <---->    TX
//  3    <---->    RX
SoftwareSerial uart(2, 3);
WiFly wifly(uart);

char cmd[32];
char ip[24];
char packet[64];
int id;          // WiFly's ID, between 1 and 100
unsigned long time_point = 0;

void setup() {

  Serial.begin(9600);
  Serial.println("--------- WiFly Ad-Hoc --------");
  
  uart.begin(9600);     // WiFly UART Baud Rate: 9600
  
  wifly.reset();
  
  if (wifly.version() >= 2.45) {
     Serial.println("The version of this WiFly's firmware is >= 2.45.");
     Serial.println("Warnning! This WiFly's firmware does not support Ad-Hoc mode. Try Ad-Hoc anyway"); 
  }
  
  // set up Ad-Hoc mode
  wifly.sendCommand("set w j 4\r", "AOK");
  wifly.sendCommand("set w s " SSID "\r", "AOK");
  wifly.sendCommand("set w c 1\r", "AOK");
  
  // get random id
  randomSeed(analogRead(3));
  id = random(1, 100);
    
  snprintf(ip, sizeof(ip), "10.0.0.%d\r", id);
  snprintf(cmd, sizeof(cmd), "set i a %s\r", ip);
  wifly.sendCommand(cmd, "AOK");
//  wifly.sendCommand("set i a 10.0.0.10\r", "AOK");

  wifly.sendCommand("set i n 255.255.255.0\r", "AOK");
  wifly.sendCommand("set i d 0\r", "AOK");
  
  // set up UDP
  wifly.sendCommand("set i p 1\r", "AOK");
  snprintf(cmd, sizeof(cmd), "set i h %s\r", UDP_HOST_IP);
  wifly.sendCommand(cmd, "AOK");
  snprintf(cmd, sizeof(cmd), "set i r %u\r", UDP_REMOTE_PORT);
  wifly.sendCommand(cmd, "AOK");
  snprintf(cmd, sizeof(cmd), "set i l %u\r", UDP_LOCAL_PORT);
  wifly.sendCommand(cmd, "AOK");
  
  // set up time
 // wifly.sendCommand("set t a 202.155.212.78\r", "AOK"); // 2.pool.ntp.org
  wifly.sendCommand("set t e 0\r", "AOK");
  wifly.sendCommand("set t r 1\r", "AOK");
  
  wifly.sendCommand("save\r");
  wifly.sendCommand("reboot\r");
  
  delay(1000);
  wifly.clear();
  Serial.print("IP: ");
  Serial.println(ip);
  Serial.println("SSID: " SSID);
}

char line_buf[64];
int index = 0;

void loop() {
  while (wifly.available()) {
    Serial.print((char)wifly.read());
  }

#if 1
  while (Serial.available()) {
    wifly.write(Serial.read());
  }
#endif
  
  // send an UDP packet in every 10 second
  if ((millis() - time_point) > 10000) {
    time_point = millis();
    
    snprintf(packet, sizeof(packet), "\r\nI'm WiFly NO %d. My IP is %s. I'm living\r\n", id, ip);
    wifly.send(packet);
  }
}

J'ai réussi à régler le problème merci !

c'est bien, mais pour tout le monde, ca serait encore mieux de dire ce qui posait problème.

Alors, bizarrerie : la page wiki proposait deux liens pour télécharger la bibliothèque et l'une fonctionne, l'autre moins ...
Et après en grand pas doué, j'avais complètement oublié de souder le shield et effectivement ça peut aider....

Excusez moi de remettre ça sur le tapis, mais personne ne peut m'expliquer le fonctionnement du code précédent s'il vous plait ?
Cela m'aiderait énormément à comprendre comment mon shield marche et donc le faire marcher correctement.
Merci d'avance !