Mise en route ETHERNET SHIELD ?

Bonjour,

Je viens d'enficher le SHIELD ETHERNET. J'ai pris le fichier exemple WebServer. Je l'ai juste modifié avec une adresse IP compatible avec mon réseau et avec l'adresse MAC marquée à l'arrière de ma carte...
C'est bien cela la procédure? D'ailleurs, pourquoi devoir saisir l'adresse MAC?

Voici le code:

/*
  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 4 Sep 2010
 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[] = { 0x90, 0xA2, 0xDA, 0x00, 0x44, 0xD9};
byte ip[] = { 192,168,0,18 };

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
Server server(80);

void setup()
{
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  // listen for incoming clients
  Client client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // 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();

          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(analogRead(analogChannel));
            client.println("
");
          }
          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();
  }
}

Je n'ai pas de message d'erreur immédiatement... Au bout de quelques secondes, j'ai le message d'erreur suivant:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Ou ai-je une erreur?

Sur mon routeur, je ne vois rien de connecté avec l'adresse IP 192.168.0.18.... Je ne vois pas non plus la MAC adress...

Qu'en pensez-vous?

ca sent presque le problème de pins mal cablées çà !
as tu mis des connexions sur toutes les pins, ou bien choisis uniquement celles spécifiées ?

adresse MAC: pour faire des réseaux avec accès restreints.
L'adresse MAC doit être reprise sur la carte ethernet shield ( ou être une bidon, pas doublée) si jamais tu as à plusieurs arduino + ether shield sur un même réseau

ojal:
Je n'ai pas de message d'erreur immédiatement... Au bout de quelques secondes, j'ai le message d'erreur suivant:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Bonjour,

De toute évidence le problème ce situe au niveau de l'upload du code dans votre carte arduino.
Tentez de débrancher puis rebrancher votre carte arduino et relancer l'ide (voir l'ordi si vraiment ça fais rien).

Problème possible si la shield est récente :

Merci skywodd et karistouf,

Ca marche nickel :slight_smile:
J'ai réinstallé le shield, rebooter le système et ça passe...
Bizarrement, mon routeur ne me montre pas l'ARDUINO dans les appareils connectés alors que lorsque j'interroge l'adresse IP, je suis bien le le webserver de l'ARDUINO...?

Une autre question me vient :
Quelle est la procédure pour connaître la version du SHIELD?

Bonjour,

Pour connaitre la version d'une ETHshield le seul moyen c'est de la comparer avec les photos des différentes version.

Pour le routeur qui reconnait pas votre arduino avez vous bien mis l'adresse mac inscrite à l'arrière de votre ETHshield et le bon mask de sous-réseau / gateway .

exemple utilisation avec submask :

skywodd:
Pour le routeur qui reconnait pas votre arduino avez vous bien mis l'adresse mac inscrite à l'arrière de votre ETHshield et le bon mask de sous-réseau / gateway .

Bonjour,

Mon routeur reconnait bien la ETHshield, ce qui m'étonnait c'est qu'il ne l'affichait pas dans les périphériques connectés au réseau...
Je referai un essai... Je trouve quand même très étrange de pouvoir être connecté à un réseau sans que le routeur ne le visualise...?

ojal:
Mon routeur reconnait bien la ETHshield, ce qui m'étonnait c'est qu'il ne l'affichait pas dans les périphériques connectés au réseau...
Je referai un essai... Je trouve quand même très étrange de pouvoir être connecté à un réseau sans que le routeur ne le visualise...?

J'avais eu le même "problème" avec le mien en changeant l'ip ici :

byte ip[] = { 192,168,0,18 };

Il me semble que j'avais pu le faire apparaitre comme un périphérique "normal".

J'avais mis ça :

byte ip[] = { 
  192,168,0,177 };

il vaut mieux verifier qui est présent sur le résea en termes d'adresse IP. Très facile de donner la même adresse sur un parc à plus de deux machines :wink: