Problème Ethernet shield

Bonjour,

Je débute dans l'utilisation du shield Ethernet pour arduino et pour le moment je cherche simplement à communiquer avec le shield.

Il n’y a pas d’adresse Mac sur mon Ethernet shield mais j’ai lu à plusieurs reprises que je pouvais laisser celle de l’exemple.
En revanche pour l’adresse IP il faut la changer mais je ne suis pas sur de savoir comment faire ou du moins laquelle utiliser.

J’ai un Macbook Pro et pour connaître son adresse IP je vais dans :
-Préférences système
-Réseau
-Je sélectionne Wifi
-Avancé
-TCP/IP --> Adresse IPv4 : 192.168.1.11
Sous-réseau : 255.255.255.0
Routeur : 192.168.1.1

Pour l’adresse IP de mon shield je pensais donc mettre 192.168.1.15 mais ça ne fonctionne pas. Quand je tape cette adresse IP dans mon navigateur je n'ai rien. (J'ai essayé d'autres nombres que le 15 et même problème)
Mon shield est branché directement sur mon ordinateur mais je ne sais pas si le câble que j'utilise est un droit ou un croisé (est-ce que cela à une importance ?).

Je m'y prend peu-être mal donc je viens vers vous pour savoir quoi faire.

Merci

Voici mon code


#include <SPI.h>
#include <Ethernet.h>

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// IP address, may need to change depending on network
IPAddress ip(192, 168, 1, 15);

// create a server at port 80
EthernetServer server(80);

void setup()
{
Ethernet.begin(mac, ip); // initialize Ethernet device
server.begin(); // start to listen for clients
}

void loop()
{
EthernetClient client = server.available(); // try to get client

if (client)
{ // got client?
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available())
{ // client data available to read
char c = client.read(); // read 1 byte (character) from client
// last line of client request is blank and ends with \n
// respond to client only after last line received
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");
client.println();
// send web page
client.println("");
client.println("");
client.println("");
client.println("Arduino Web Page");
client.println("");
client.println("");
client.println("

Hello from Arduino!

");
client.println("

A web page from the Arduino server

");
client.println("");
client.println("");
break;
}
// every line of text received from the client ends with \r\n
if (c == '\n')
{
// last character on line of received text
// starting new line with next character read
currentLineIsBlank = true;
}
else if (c != '\r')
{
// a text character was received from client
currentLineIsBlank = false;
}
} // end if (client.available())
} // end while (client.connected())
delay(1); // give the web browser time to receive the data
client.stop(); // close the connection
} // end if (client)
}

Bonjour,

Je ne sais pas si vous pourrez faire comme j'ai fait, mais je vais vous expliquer comment j'ai procédé. Moi je dispose d'un modem/routeur qui me permet des connections Wifi ainsi que 4 connexions Ethernet. J'ai connecté à ce modem/routeur mon Ethernet Shield, puis en utilisant le navigateur de mon portable (qui y est aussi connecté) j'ai tapé "home" dans la barre d'adresse pour accéder à la page d'acceuil du modem. J'y ai trouvé que l'Ethernet shield y était bien connecté puis j'ai cliquer sur "Détails du périphérique". Ainsi j'ai pu y voir toutes les infos pertinente pour configurer mon sketch Arduino. Malheureusement chaque page est un peu différente donc il va falloir chercher, mais en gros l'info est sur la page d'accueil de votre modem.

Sur cette même page il est aussi possible d'attitrer un IP public à l'Ethernet Shield, ainsi même nos amis peuvent suivre de chez eux le progrès que l'on fait ou contrôler nos DELs ou même nourrir notre chat à distance. :smiley: :stuck_out_tongue:

Moi j'ai utilisé un cable ethernet droit avec succès pour mon Ethernet Shield. Je n'ai aucune idée si le croisé pourrait fonctionner aussi.

Bonne chance.

Cedric_EPC:
Mon shield est branché directement sur mon ordinateur mais je ne sais pas si le câble que j'utilise est un droit ou un croisé (est-ce que cela à une importance ?).
Je m'y prend peu-être mal donc je viens vers vous pour savoir quoi faire.
..
IPAddress ip(192, 168, 1, 15);
...
Ethernet.begin(mac, ip); // initialize Ethernet device
server.begin(); // start to listen for clients

cette config est faite pour un shield raccordé au réseau de la box et pas a un PC (qui semble être en wifi)
il faut regarder la plage DHCP de ta box et choisir une adresse (le dernier chiffre) en dehors de cette plage et raccorder ton arduino sur une prise de ta box

Merci pour vos réponse.

J'ai connecté mon shield sur mon modem, j'ai été sur la page d'accueil de mon modem je n'ai pas trouvé mon shield.

Sur mes port ethernet j'ai juste mes 2 décodeurs TV mais pas mon shield.

J'ai trouvé les infos DHCP :
Gateway IP : 192.168.1.1
Subnet Mask : 255.255.255.0
IPv4 Pool Start : 192.168.1.2
IPv4 Pool End : 192.168.1.63
IPv4 TV Pool Start : 192.168.1.64
IPv4 TV Pool End : 192.168.1.127

Est-ce que c'est normal que mon shield n'apparaisse pas ?

À mon avis vous auriez dû y voir le module Ethernet...

J'imagine que vous avez utilisé un câble droit.

Est-ce que vous voyez des témoins lumineux flasher sur le module Ethernet et sur les prises du câble Ethernet signalant une communication entre les appareils ?

Sur ma page j'ai une section périphériques dans mes infos concernant l'état de mon réseau local.

et si tu branches ton ethernet shield à la box (cables droit ou croisé normalement pas de différence)
tu charge l'exemple DhcpAddressPrinter

normalement dans ton serial, tu peux voir si ta box te fournit une adresse ip

apres tu fais un ping sur l'ip de l'adresse récupéré pour tester la communication ordi / arduino

Bonjour,

Un peu hors sujet, mais cela m'intrigue.

@rjnc38
Cela fait plusieurs fois que tu conseille de mettre l'adresse IP de l'Arduino en dehors de la plage DHCP de la box.
Peux-tu en donner la raison?
Pour éviter que la box donne cette adresse à un périphérique si l'Arduino n'est pas allumé. Ce qui provoquerait un conflit d'adresse ensuite ?

Merci pour tes explications.

bilbo83:
@rjnc38
Cela fait plusieurs fois que tu conseille de mettre l'adresse IP de l'Arduino en dehors de la plage DHCP de la box.
Peux-tu en donner la raison?
Pour éviter que la box donne cette adresse à un périphérique si l'Arduino n'est pas allumé. Ce qui provoquerait un conflit d'adresse ensuite ?
Merci pour tes explications.

oui c'est un peu la règle si on se fou de l'@ IP on fait du DHCP complet (donc sans IP), si on veut une ip fixe on se met en dehors de la plage; et souvent on utilise un schield ethernet pour faire un serveur accessible depuis l' exterieur il faut donc faire une redirection de port avec cette adresse IP fixe

J'ai essayé l'exemple DhcpAddressPrinter et dans le moniteur j'ai une adresse IP qui apparait :
192.168.1.57

Avec cette exemple je vois le shield qui apparait sur ma page d'accueil de mon modem avec la même adresse IP et le status "Connected" :smiley:
J'ai fais un ping dans le terminal avec l'IP et j'ai différents messages:
Premièrement ping : sendto : No route to host
Ensuite ping : sendto : Host is down

Je suppose que la communication ne se fait pas :confused:

J'ai ensuite essayé le sketch de mon premier post et la le status du shield dans la page de mon modem passe de "Connected" à "Disconnected"

J'ai également regardé les différentes LED:
LED à coté du quartz : Allumé
LED TX : Eteinte
LED RX : Clignote quelques fois
LED COLL : Eteinte
LED FULLD : Allumé
LED 100M : Allumé
LED LINK : Allumé

Voilà se que j'ai observé