Bonjour à tous,
Pour me présenter rapidement, je suis débutant en Arduino mais je trouve ça tellement cool que je me suis lancé dans un projet d'utiliser le Wifi pour communiquer avec mon Arduino (chacun ses délires :p)
J'ai donc regardé comment communiquer en Wifi, j'ai vu qu'il y avait des shield et de simples modules tels que le ESP8266. Mon choix s'est porté sur ce module pour me faire la main (je ne sais pas si c'est mieux).
J'ai connecté mon module sur une Arduino Uno R3, le Gnd sur le Gnd, Tx vers Rx et Rx vers Tx et CH_PD et VCC sur 3.3V
Le module fonctionne, la petite LED bleue s'allume au démarrage. J'ai donc testé les AT command pour me connecté ce que j'arrive parfaitement à faire.
Pour le moment je suis plutôt content, mais voilà pour la suite de mon projet j'aimerai envoyé des HTTP Request sur un serveur Apache hébergé sur une de mes VM (Linux Mint).
J'ai fais quelques tests, j'ai ping sur mon Windows l'IP de l'ESP8266 qui répond nickel puis celle de ma VM qui répond elle aussi. J'ai utilisé AT+PING pour effectué les mêmes tests à partir du module, je ping mon Windows qui répond mais ma VM ne répond pas...
Alors pour ce qui est des IP :
-Windows: 192.168.1.23
-Linux: 192.168.137.128
-Module ESP: 192.168.1.200
En faisait d'autres tests, j'ai remarqué que je pouvais ping tous mes appareils (NAS, Routeur) qui ont une IP de la forme 192.168.1.xx
Voici le code que j'utilise :
ESP8266.begin(9600);
delay(500);
ESP8266.println("AT+RST");
/* INIT */
delay(1000);
ESP8266.println("AT");
done = ESP8266.find("OK");
if(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* CLIENT MODE */
delay(1000);
ESP8266.println("AT+CWMODE=1");
done = ESP8266.find("OK");
if(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* */
delay(1000);
ESP8266.println("AT+CIPSTA=\"192.168.1.200\",\"192.168.92.254\",\"255.255.255.0\"");
//ESP8266.println("AT+CIPSTA=\"192.168.137.10\"");
done = ESP8266.find("OK");
while(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* FIND WIFI */
delay(1000);
ESP8266.println("AT+CWLAP");
done = ESP8266.find("OK");
while(!done) {
delay(1000);
done = ESP8266.find("OK");
delay(3000);
break;
}
/* CONNECTION WIFI SSID */
ESP8266.println("AT+CWJAP=\""+ssid+"\",\""+password+"\"");
done = ESP8266.find("OK");
while(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* MULTIPLE CONNECTION */
ESP8266.println("AT+CIPMUX=1");
done = ESP8266.find("OK");
if(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* DISPLAY IP */
ESP8266.println("AT+CIFSR");
done = ESP8266.find("STAIP");
if(!done) {
delay(1000);
done = ESP8266.find("OK");
}
/* PING SERVER */
delay(1000);
ESP8266.println("AT+PING=\"192.168.1.10\"");
done = false;
if(!done) {
delay(1000);
done = ESP8266.find("OK");
}
Dans ce code je ping mon Windows j'obtiens donc une réponse : "AT+PING="192.168.1.10"+8 OK"
Mais lorsque je remplace par l'IP de Linux: "AT+PING="192.168.137.128"+timeout ERROR"
Je viens donc vous demander vos conseils, je ne sais plus trop vers quoi m'orienter pour régler ce problème, si je n'arrive pas à ping vers ma VM je ne pense pas pouvoir envoyer de données pour la suite.
Si quelqu'un à une solution ou même une piste je suis preneur !
Merci d'avance