Arduino Uno et Wifi

Bonjour,

Je viens vers vous un peu en désespoir de cause…
Cela fait plusieurs soirées que je me bat pour connecter mon arduino uno au wifi et lui faire transmettre des données en vain.

J’ai tout d’abord tester avec un esp8266 (le moins cher, faut pas se leurrer :slight_smile: ) mais le fait que le Uno n’ai qu’un port série matériel ne facilite pas le debuguage du coup, je suis passé au Wifi Shield V1.1 de chez seeedStudio pensant qu’un shield avec une librairie serait plus simple à manipuler.
Malheureusement ce n’est pas aussi simple que je l’espérais, la aussi les exemples glanés sur le web présentent souvent un exemple avec plusieurs ports série matériel.
Pour l’instant j’ai beau changer les jumpers du shield pour le lié à différentes GPIO de l’arduino (d’aprés ce que j’ai compris…) j’ai toujours la même réponse en utilisant le code de l’exemple fourni par seeed studio :

#include <Debug.h>
#include <WizFi250.h>

#define SSID      "STEST"   //Set your SSID
#define KEY       "87654321" //Set your phrase
#define AUTH       "WPA2" //Set the encrypt type

#define TSN_HOST_IP        "74.125.128.103" //google.com server
#define TSN_REMOTE_PORT    80
#define LOCAL_PORT     9000

#define spi_CS  8

//SoftwareSerial sprintSerial(4,5);   // The software serial port is not stable.
WizFi250 wizfi250(&Serial);
void setup() {
 
Serial.begin(115200);
Serial.begin(115200);
while (!Serial);
pinMode(spi_CS,OUTPUT);
digitalWrite(spi_CS,HIGH);
Serial.println("--------- WIZFI250 TEST --------");
// wait for initilization of Wizfi250
  delay(1000);
  Serial.println("Join " SSID );
  delay(10);
  if (!wizfi250.join(SSID, KEY, AUTH)) {
    Serial.println("Failed join " SSID); 
  } else {
    Serial.println("Successfully join  "  SSID);
 
  wizfi250.clear();
  
  wizfi250.connect(TSN_HOST_IP,TSN_REMOTE_PORT,LOCAL_PORT);
  delay(10);
  wizfi250.send("GET / HTTP/1.1\r\n\r\n");
}
   char c; 
   for(int i=0;i<320;i++){
   if (wizfi250.receive((uint8_t *)&c, 1, 100) > 0) {
    Serial.print((char)c);
   }
   } 
}
void loop() {
   while (wizfi250.available()) {
    Serial.write(wizfi250.read());
  }
  while (Serial.available()) {
    wizfi250.write(Serial.read());
}
}

réponse éloquente de l’arduino :

--------- WIZFI250 TEST --------
Join STEST
CMD: AT

AT
Timeout! Failed to run: AT

Si quelqu’un a une idée pour me dépanner,
Merci d’avance… :smiley:

Bon ben je me réponds :
Avec le shield, pour le Uno il faut bien mettre les deux jumpers sur les premières positions, donc le WIFI_TX sur le D0 et WIFI_RX sur le D1. Ensuite, le code fournit à l'adresse suivante fonctionne : Arduino as a wireless HTTP client

J'ai quand même une vraie question :
Durant mes expérimentations, je me suis heurté au problème de n'avoir qu'un seul port série hardware comme je l'ai déjà dit. Je n'ai pas bien compris le fonctionnement, si je ne dis pas de bêtises, j'écris les commandes sur le bus, le module en face les receptionnent, les traitent et il répond, sauf que sa réponse est écrite sur le même bus du coup, il prend ses réponses pour des commandes c'est bien cela ?

Merci d'avance.

Bonjour,

Le port série n'est pas un bus. C'est une connexion point à point (sauf à travailler en RS485, mais ça demande d'implémenter un protocole pour le gérer).
Tu émets sur tx et le module reçoit sur son rx, il émet sur son tx et l'arduino reçoit sur son rx.

Le problème de n'avoir qu'un seul port hardware est que celui ci est utilisé pour le téléchargement (sauf sur certaines cartes comme la leonardo), donc il y a conflit entre les deux utilisations du port.