Arduino - Bouclier Ethernet 2

Utiliser Arduino Ethernet Shield 2 est l'un des moyens les plus simples de connecter Arduino à Internet. Vous pouvez voir d'autres options pour connecter Arduino à Internet via Ethernet dans Arduino - Tutoriel Ethernet

Dans ce tutoriel, nous allons apprendre :

Shield Ethernet Arduino 2

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Arduino Ethernet Shield 2
1×Ethernet Cable
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Connaissances de base en réseau pour les débutants

Cette partie fournit des connaissances de base pour les débutants, qui ne savent rien sur le réseau.

Lorsqu'un appareil se connecte à Internet (via Ethernet ou WiFi), il DOIT se connecter à un routeur ou à un point d'accès. Le routeur et le point d'accès sont des dispositifs qui jouent le rôle de passerelle vers Internet. Toutes les données entre un appareil et Internet transitent par le routeur ou le point d'accès.

Lorsqu'un appareil se connecte à Internet, il DOIT :

  • Avoir une adresse MAC
  • Avoir une adresse IP
  • Connaître le masque de sous-réseau du réseau
  • Connaître l'adresse IP de la passerelle (adresse IP du routeur ou du point d'accès)
  • Connaître l'adresse IP du serveur DNS (dans le cas d'une connexion à un nom de domaine)

L'appareil ne fonctionne pas si :

  • Il y a un ou plusieurs autres appareils sur le même réseau qui utilisent la même adresse MAC que l'appareil (adresse MAC en conflit)
  • Il y a un ou plusieurs autres appareils sur le même réseau qui utilisent la même adresse IP que l'appareil (adresse IP en conflit)

Ce tutoriel ne vous surcharge pas de connaissances en réseau. Par conséquent, le tutoriel n'explique pas ces concepts. Cela dépasse le cadre de ce tutoriel. Au lieu de cela, le tutoriel montre comment les utiliser.

L'adresse MAC est généralement intégrée dans les appareils. Nous n'avons pas besoin de nous en préoccuper. Cependant, l'Arduino Ethernet Shield 2 n'a pas d'adresse MAC intégrée. L'adresse MAC est imprimée sur une étiquette collée sur le shield. Nous devons la récupérer et définir l'adresse MAC pour le Shield Arduino dans le code Arduino.

Il existe deux méthodes pour attribuer l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS à un appareil (y compris Arduino) :

  • I. Utilisez l'adresse IP statique :
    • Nécessité de gérer l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS
    • Besoin de définir manuellement l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS (pour Arduino Ethernet Shield 2, définissez ces informations en utilisant le code Arduino)
    • Cela ne fonctionnera PAS si :
      • Vous définissez une adresse IP déjà utilisée par d'autres appareils sur le même réseau LAN → conflit IP
      • Vous définissez un mauvais masque de sous-réseau, l'adresse IP de la passerelle, et l'adresse IP du serveur DNS
    • I. Obtenez une adresse IP automatiquement (DHCP), également appelée adresse IP dynamique
      • L'appareil obtient automatiquement l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS du routeur ou point d'accès utilisant DHCP. Nous n'avons pas besoin de gérer l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS. Le routeur/point d'accès fait ce travail pour nous.

      Lorsque vous connectez votre smartphone à votre réseau Wi-Fi domestique, la deuxième méthode est utilisée.

      Lors de l'utilisation d'Arduino, la première méthode est difficile pour les débutants. La deuxième méthode est facile et recommandée pour les débutants qui ne connaissent rien au réseau.

Comment utiliser Arduino Ethernet Shield 2

Arduino communique avec Ethernet Shield 2 via l'interface SPI. Ce qui suit montre comment utiliser Arduino Ethernet Shield 2.

  • Empilez Ethernet Shield 2 sur Arduino Uno ou Mega
  • Connectez le PC à Arduino Uno/Mega via un câble USB
  • Connectez Ethernet Shield 2 au routeur/point d'accès via un câble Ethernet
  • Ouvrez l'IDE Arduino et écrivez le code
  • Téléchargez le code sur Arduino Uno/Mega

C'est tout à fait simple.

// Code Arduino de base pour Arduino Ethernet Shield 2 lors de l'utilisation de l'adresse IP dynamique

Prérequis

  • Nous devons connaître l'adresse MAC du Shield Ethernet (à obtenir à partir d'une étiquette fournie par le fabricant).

Comment programmer étape par étape

  • Inclure la bibliothèque
#include <SPI.h> #include <Ethernet.h>
  • Déclarer l'adresse MAC
// remplacez l'adresse MAC ci-dessous par l'adresse MAC imprimée sur une étiquette sur l'Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  • Déclarez d'autres objets en fonction de votre application.
  • Démarrez l'Ethernet Shield 2
// initialiser le shield Ethernet en utilisant DHCP : Ethernet.begin(mac);
  • (Facultatif) Imprimer l'adresse IP de l'Arduino, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS.
Serial.print("Arduino's IP Address: "); Serial.println(Ethernet.localIP()); Serial.print("DNS Server's IP Address: "); Serial.println(Ethernet.dnsServerIP()); Serial.print("Gateway's IP Address: "); Serial.println(Ethernet.gatewayIP()); Serial.print("Network's Subnet Mask: "); Serial.println(Ethernet.subnetMask());

Notez qu'Arduino ne peut pas obtenir une adresse IP dans les cas suivants :

  • Le routeur ou le point d'accès ne prend pas en charge le DHCP
  • Le câble Ethernet n'est pas branché correctement ou est cassé

Pour détecter ces problèmes, nous pouvons modifier Ethernet.begin(mac); en :

if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // vérifier la présence du matériel Ethernet if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // vérifier la connexion du câble Ethernet if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true); }

※ NOTE THAT:

Si vous ne changez PAS l'adresse MAC, cela pourrait tout de même fonctionner. Cependant, cela pourrait NE PAS fonctionner s'il y a un conflit avec l'adresse MAC d'un autre appareil sur le même réseau LAN. En cas de perte de l'autocollant de l'adresse MAC, utilisez simplement l'adresse MAC ci-dessus pour les tests.

Le code squelette complet lors de l'utilisation de l'adresse IP dynamique

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-ethernet-shield-2 */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // TODO: Declare something depending on your application void setup() { Serial.begin(9600); // initialize the Ethernet shield using DHCP: Serial.println("Obtaining an IP address using DHCP"); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to obtaining an IP address"); // check for Ethernet hardware present if (Ethernet.hardwareStatus() == EthernetNoHardware) Serial.println("Ethernet shield was not found"); // check for Ethernet cable if (Ethernet.linkStatus() == LinkOFF) Serial.println("Ethernet cable is not connected."); while (true); } // print out Arduino's IP address, subnet mask, gateway's IP address, and DNS server's IP address Serial.print("- Arduino's IP address : "); Serial.println(Ethernet.localIP()); Serial.print("- Gateway's IP address : "); Serial.println(Ethernet.gatewayIP()); Serial.print("- Network's subnet mask : "); Serial.println(Ethernet.subnetMask()); Serial.print("- DNS server's IP address: "); Serial.println(Ethernet.dnsServerIP()); // TODO: initialize something depending on your application } void loop() { // TODO: do something depending on your application }

Téléchargez le code ci-dessus sur Arduino. Si cela réussit, le moniteur série affichera quelque chose comme ci-dessous :

COM6
Send
Obtaining an IP address using DHCP - Arduino's IP address : 192.168.0.5 - Gateway's IP address : 192.168.0.1 - Network's subnet mask : 255.255.255.0 - DNS server's IP address: 8.8.8.8
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Si le moniteur série ne s'affiche pas comme ci-dessus, vérifiez votre câble Ethernet. Si cela ne fonctionne toujours pas, passez à la partie suivante pour essayer d'utiliser l'adresse IP statique.

Code source Arduino pour Arduino Ethernet Shield 2 lors de l'utilisation d'une adresse IP statique

Prérequis

Comment programmer étape par étape

  • Inclure la bibliothèque
#include <SPI.h> #include <Ethernet.h>
  • Déclarer l'adresse MAC
// remplacez l'adresse MAC ci-dessous par l'adresse MAC imprimée sur une étiquette sur l'Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  • Déclarez une adresse IP non utilisée, un masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS.
// changer l'adresse IP, le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS IPAddress ip(192, 168, 0, 5); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); IPAddress myDns(8, 8, 8, 8);
  • Déclarez d'autres objets en fonction de votre application.
  • Démarrez l'Ethernet Shield 2
// initialiser le shield Ethernet en utilisant l'adresse IP statique : Ethernet.begin(mac, ip, myDns, gateway, subnet);
  • Facultatif, vérifier l'état de la liaison réseau
if (Ethernet.linkStatus() == LinkON) Serial.println("Link status: On"); else Serial.println("Link status: Off");

※ NOTE THAT:

Si vous ne changez pas l'adresse MAC, cela peut toujours fonctionner. Cependant, cela peut ne pas fonctionner s'il y a un conflit avec l'adresse MAC d'un autre appareil sur le même réseau LAN. En cas de perte de l'autocollant de l'adresse MAC, utilisez simplement l'adresse MAC ci-dessus pour les tests.

Le code squelette complet lors de l'utilisation de l'adresse IP statique

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-ethernet-shield-2 */ #include <SPI.h> #include <Ethernet.h> // replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // change the IP address, subnet mask, gateway's IP address, and DNS server's IP address depending on your network IPAddress ip(192, 168, 0, 5); IPAddress gateway(192, 168, 0, 1); IPAddress subnet(255, 255, 255, 0); IPAddress myDns(8, 8, 8, 8); // TODO: Declare something depending on your application void setup() { Serial.begin(9600); // initialize the Ethernet shield using the static IP address: Ethernet.begin(mac, ip, myDns, gateway, subnet); // TODO: initialize something depending on your application } void loop() { // optional, check link status if (Ethernet.linkStatus() == LinkON) Serial.println("Link status: On"); else Serial.println("Link status: Off"); // TODO: do something depending on your application }

Téléchargez le code ci-dessus sur Arduino. Si cela réussit, le moniteur série affichera quelque chose comme ci-dessous :

COM6
Send
Link status: On Link status: On Link status: On
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Si le moniteur série ne s'affiche pas comme ci-dessus :

  • Vérifiez votre câble Ethernet
  • Assurez-vous que l'adresse IP appartient à votre réseau
  • Assurez-vous que l'adresse IP ne entre pas en conflit avec d'autres dispositifs sur le même réseau
  • Assurez-vous que le masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS sont correctement configurés

Connaissances supplémentaires en réseau pour les débutants

Dans le cas de l'utilisation d'une IP statique, vous devez obtenir une adresse IP inutilisée, un masque de sous-réseau, l'adresse IP de la passerelle et l'adresse IP du serveur DNS. Voici comment les obtenir.

Si Arduino et votre PC sont connectés au même réseau

  • Ouvrez l'invite de commande sur votre PC
  • Tapez la commande suivante dans l'invite de commande :
ipconfig
Command Prompt
C:\Windows\system32>ipconfig Ethernet adapter Ethernet 2: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . : Wireless LAN adapter Wi-Fi: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::d559:ae92:8dff:a604%20 IPv4 Address. . . . . . . . . . . : 192.168.0.14 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.0.1
  • Depuis le dessus, vous pouvez obtenir le masque de sous-réseau et l'adresse IP de la passerelle
  • Vous pouvez voir l'adresse IP de votre PC à partir de la sortie ci-dessus. Nous essaierons de trouver une adresse IP inutilisée basée sur l'adresse IP du PC
    • Augmentez ou diminuez un par un, en partant de l'adresse IP du PC.
    • Envoyez la commande ping à cette adresse IP sur l'invite de commande. Répétez ces deux étapes jusqu'à ce que l'IP soit injoignable. Si l'adresse est injoignable, c'est une adresse IP inutilisée et nous pouvons l'utiliser pour Arduino. Par exemple :
    ping 192.168.0.16
    Command Prompt
    C:\Users\youruser>ping 192.168.0.16 Pinging 192.168.0.16 with 32 bytes of data: Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Reply from 192.168.0.14: Destination host unreachable. Ping statistics for 192.168.0.16: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

    ※ NOTE THAT:

    Dans certains cas, même si l'adresse IP est inaccessible, elle peut être utilisée par un autre appareil. Cependant, ce cas ne se produit généralement pas dans votre réseau domestique.

    • Pour l'adresse IP du serveur DNS, nous pouvons simplement utiliser 8.8.8.8.

    Vous pouvez maintenant utiliser ces boucliers pour connecter Arduino à Internet. Voir un autre exemple dans la partie Voir Aussi.

    WARNING

    Veuillez noter que ce tutoriel est incomplet. Nous publierons sur notre Page Facebook lorsque le tutoriel sera complet. Aimez-la pour rester informé.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!