Tout d'abord, voici ce que je suis en train de mettre en place : sur un PC, je démarre un serveur web (NodeJS) qui attend des requêtes UDP sur un port spécifique 5683 (il s'agit du protocole CoAP, similaire à HTTP sur le port 80). De l'autre côté, j'ai un Arduino Mega avec un shield Ethernet Velleman, programmé avec la librairie UIPEthernet.
Quand je branche tout ce petit monde sur ma box Internet (Numericable), tout fonctionne très bien :
l'arduino récupère une IP par le DHCP
l'arduino répond au ping
l'arduino arrive à envoyer les requetes UDP à mon serveur (j'ai des traces)
Mais lorsque j'essaie de remplacer ma box Internet par un routeur classique (TP-Link TL-WR841N) ou un switch (Netgear GS108T), plus rien ne va :
l'arduino n'arrive plus à s'attribuer d'IP en DHCP
il n'arrive plus à démarrer les connexions UDP (udp.begin==false)
rien n'est recu sur mon serveur.
Ma question est donc la suivante : qu'est-ce que fait (ou ne fait pas) ma box Numericable pour me permettre de tout faire communiquer? Par quoi / Comment puis-je la remplacer?
memel182:
Ma question est donc la suivante : qu'est-ce que fait (ou ne fait pas) ma box Numericable pour me permettre de tout faire communiquer? Par quoi / Comment puis-je la remplacer?
Merci beaucoup!
bonjour
attribue une IP fixe hors plage DHCP à ton shield ethernet
edit : j'ai repondu peut etre un peu vite , il s'agit d'un module a base de encj260 et pas d'un shield ethernet
je ne sais pas si la lib permet d'attribuer une IP fixe (ce serait etonnant que non)
apres rapide verif , il semblerait que ce soit possible
memel182:
Mais lorsque j'essaie de remplacer ma box Internet par un routeur classique (TP-Link TL-WR841N) ou un switch (Netgear GS108T), plus rien ne va :
.....
Ma question est donc la suivante : qu'est-ce que fait (ou ne fait pas) ma box Numericable pour me permettre de tout faire communiquer? Par quoi / Comment puis-je la remplacer?
Ta box fait serveur DHCP elle délivre une adresse IP à ton montage. La fonction doit être activée dans ta box tout simplement.
Un switch ne fait pas serveur DHCP. Un switch c'est juste un "aiguillage" pour les paquets transmis.
Ton routeur fait routeur DHCP donc il pourrait allouer une adresse IP à ton montage mais peut être la fonction n'est-elle pas activée.
J’ai le même routeur que vous avec en gros le même matériel, un shield chinois avec la lib fourni en exemple par Arduino
tout ce passe bien tant que je suis sur le réseau, mais je n’arrive pas a ouvrir le serveur Arduino sur la toile,
ni d’ailleurs à me connecter en local avec un smartphone
Je suiss en HTTP sur le port 2000
le shied Ethernet s’appel : WIZnetDFCCE8 MAC adresse : 40-F3-08-DF-CC-E8 IP : 192.168.0.100
Selon le STATU du routeur j’ai :
MAC Address: 30-B5-C2-D9-9C-DB
IP Address: 89.157.157.56
Subnet Mask: 255.255.254.0
Default Gateway: 89.157.156.1
DNS Server: 89.2.0.1 , 89.2.0.2
Avez-vous une idée du paramétrage de ce routeur TP-Link TL-WR841N pour ouvrir le serveur Arduino sur la toile ?
le code est l’exemple WEBSERVER avec mes paramètres :
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0x40, 0xF3, 0x08, 0xDF, 0xCC, 0xE8
};
IPAddress ip(192, 168, 0, 100); // 89.157.157.56:2000/
//IPAddress ip(89,157,157,56);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(2000);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 20"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("
");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}
[code]
merci par avance de vos réponse,
Henri
J'ai le même routeur que vous avec en gros le même matériel, un shield chinois avec la lib fourni en exemple par Arduino
tout ce passe bien tant que je suis sur le réseau, mais je n'arrive pas a ouvrir le serveur Arduino sur la toile,
ni d’ailleurs à me connecter en local avec un smartphone
Je suiss en HTTP sur le port 2000
le shied Ethernet s'appel : WIZnetDFCCE8 MAC adresse : 40-F3-08-DF-CC-E8 IP : 192.168.0.100
bonjour
avec ton smartphone tu es connecté en wifi sur ton routeur ou en xG ?
pour le reste il sufffit (surement) de faire un regle NAT/translation/forward
attention à une chose selon les operateurs le loopback peut etre "exclu"
Le plus terrible c'est que j'ai réussi à le faire fonctionné 1/2 heure avec l'adresse HTTP://89.157.157.56:2000,
comme j’étais super content j'ai essayé de mon smartphone avec cette adresse HTTP://89.157.157.56:2000 qui à bien répondu, donc je suppose que je passe par internet et que c'est accessible de n'importe ou.
J'ai essayé avec un ordi portable(sur le même réseau) avec HTTP://89.157.157.56:2000 et http://192.168.0.100:2000/ qui ont bien répondu aussi toutes les deux
J’éteins mes machines je vais déjeuné . . . . . 2h après je rallume tout, ET LA y a juste l’adresse http://192.168.0.100:2000 qui continu à fonctionner
C'est rageant
Merci Jean-michel pour le lien ç'a a l'air très proche de ma config et de toute façon c'a a fonctionné, y a pas de raison que c'a ne redémarre pas
Merci de vos suggestions(et de vos rires étouffée devant mes manips infructueuse)
Henri
AH AH donc ceci veut dire que mon Arduino + le shield W5100 fonctionne correctement puisque vous pouvez y accéder,
Et surtout que mon routeur est bien configurer.
j'ai changé d'exemple de Webserver pour prendre celui-ci : ICI
Ce qui me permets de vérifier le fonctionnement de la carte SD et de comprendre comment l'utiliser
par contre cet exemple utilise AJAX que je ne connais pas, ni trop le xml.
Je fais tout ceci à titre ludique, sens but bien précis mais je trouve que les cartes Ethernet W5100 ne sont pas fiables, la première que j'ai tester m'a fusillé un routeur.
ce serveur par exemple ne démarre pas systématiquement, il est toujours visible sur mon réseau avec 192.168.0.100:2000 mais exceptionnellement avec HTTP://89.157.157.56:2000
Il n'as pas le même comportement selon que le cordon USB est branché ou pas malgré une alim 9V sur l'Arduino.
Mais c'a progresse ;D
j'ai encore des problèmes avec la carte en simple client.
petite question : Ou trouver une bonne et fiable carte Ethernet ?
une W5100 ou une 5200 ?
Merci Caape d'avoir tester cet url
Cordialement,
Henri