Arduino Mega - Ethernet
Bienvenue dans ce tutoriel complet sur le module Ethernet Arduino Mega ! Dans ce guide détaillé, vous découvrirez comment connecter votre Arduino Mega à internet et aux réseaux locaux en utilisant le puissant module Ethernet W5500, transformant votre microcontrôleur en un dispositif entièrement connecté au réseau, capable de communiquer avec des serveurs web, des plateformes IoT et d'autres appareils connectés au réseau dans le monde entier.
Le module Ethernet W5500 représente l'un des moyens les plus fiables et les plus directs d'ajouter une connectivité réseau filaire aux projets Arduino. Contrairement aux modules WiFi qui peuvent souffrir d'interférences de signal et d'instabilité de connexion, l'Ethernet fournit des connexions réseau rock-solid, haute vitesse avec des performances déterministes—parfait pour l'automatisation industrielle, les systèmes domotiques, les serveurs de journalisation de données, les applications de surveillance à distance, et tout projet nécessitant une connectivité internet fiable. La puce W5500 gère toute la complexité de l'implémentation de la pile de protocoles TCP/IP, laissant votre Arduino libre de se concentrer sur la logique applicative.

Tout au long de ce tutoriel Arduino Mega W5500 Ethernet, nous explorerons tout ce dont vous avez besoin pour maîtriser la connectivité réseau filaire :
- Comprendre le module Ethernet W5500 : Caractéristiques matérielles, interface de communication SPI, et capacités réseau
- Câblage et connexion : Connecter correctement le module Ethernet à l'Arduino Mega via les broches SPI
- Configuration réseau : Configurer les adresses IP, masques de sous-réseau, passerelles et adresses MAC
- Programmation client HTTP : Effectuer des requêtes HTTP GET et POST vers des serveurs web et des API
- Implémentation serveur web : Créer des serveurs web basés sur Arduino qui répondent aux requêtes de navigateur
- Programmation socket TCP/IP : Établir des connexions socket directes pour des protocoles personnalisés
- Configuration DHCP : Attribution automatique d'adresses IP depuis les routeurs réseau
- Résolution DNS : Convertir les noms de domaine en adresses IP
- Dépannage réseau : Problèmes courants et techniques de diagnostic
- Considérations de sécurité : Meilleures pratiques pour les appareils Arduino connectés au réseau
Ce projet Arduino Mega Ethernet ouvre d'incroyables possibilités réseau ! Créez des réseaux de capteurs IoT qui téléchargent des données vers des plateformes cloud, construisez des interfaces web domotiques accessibles depuis n'importe quel navigateur, développez des systèmes de contrôle à distance pour équipements industriels, implémentez des enregistreurs de données qui envoient des rapports par email, créez des clients d'API REST pour services tiers, construisez des systèmes de jeux en réseau, développez des tableaux de bord de surveillance en temps réel, implémentez des clients MQTT pour l'intégration maison intelligente, et toute application nécessitant une connectivité réseau fiable et haute vitesse.
Matériel requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À propos du module Ethernet W5500
Le module Ethernet W5500 est un contrôleur d'interface réseau câblé qui fournit une connectivité TCP/IP fiable et haute vitesse pour les projets de microcontrôleurs. Construit autour de la puce WIZnet W5500, ce module implémente une pile de protocoles TCP/IP matérielle complète, gérant toute la complexité de communication réseau en interne et communiquant avec l'Arduino Mega via une simple connexion SPI (Serial Peripheral Interface).
Caractéristiques principales et spécifications :
- Pile TCP/IP matérielle : La puce W5500 contient une pile de protocoles TCP/IP complète implémentée en matériel, éliminant le besoin de bibliothèques de protocoles logicielles qui consomment de la précieuse mémoire et puissance de traitement Arduino
- Vitesse réseau : Supporte Ethernet 10/100 Mbps (auto-négociation)
- Connexions simultanées : Gère jusqu'à 8 connexions socket indépendantes simultanément
- Mémoire interne : 32KB de mémoire tampon pour la gestion et mise en file d'attente des paquets
- Consommation électrique : Conception basse consommation, typiquement 132mA @ 100Mbps, 78mA @ 10Mbps
- Tension de fonctionnement : Logique 3.3V avec entrées tolérantes 5V, la rendant compatible Arduino Mega
- Interface SPI : Communication SPI haute vitesse (jusqu'à 80MHz d'horloge)
- Couche physique : PHY Ethernet intégré (couche physique) avec connecteur RJ45
- Support protocole : TCP, UDP, IPv4, ICMP, ARP, IGMP, PPPoE
Interfaces physiques :
Le module Ethernet W5500 fournit deux types d'interfaces distincts :
1. Interface Ethernet RJ45 (connexion réseau) :
- Connecteur RJ45 standard pour câbles Ethernet Cat5/Cat5e/Cat6
- Se connecte aux routeurs réseau, commutateurs, ou directement aux ordinateurs
- Indicateurs LED : statut de liaison (connecté/déconnecté) et activité (transmission de données)
- Support Auto-MDI/MDIX : fonctionne avec les câbles droits et croisés
- Longueur de câble : jusqu'à 100 mètres (328 pieds) pour câble Cat5e standard
2. Interface SPI (connexion Arduino) :
- Connecteur 10 broches pour connexion au microcontrôleur
- Utilise le protocole SPI standard : signaux MOSI, MISO, SCK, CS
- Compatible broche avec la plupart des shields Arduino basés SPI
Description détaillée des broches :
Comprendre la fonction de chaque broche est essentiel pour un câblage et fonctionnement appropriés :
- Broche NC : No Connection (pas de connexion). Cette broche n'est pas connectée en interne et doit être laissée non connectée dans votre câblage. Elle sert d'espace réservé mécanique dans le connecteur.
- Broche INT : Broche de sortie d'interruption. Ce signal d'interruption actif-bas peut alerter l'Arduino quand des événements réseau se produisent (paquet reçu, connexion établie, etc.). Pour les applications de base, cette broche peut être laissée non connectée. Les applications avancées peuvent la connecter à une broche d'interruption Arduino pour une gestion réseau pilotée par événements.
- Broche RST : Entrée de reset matériel (actif bas). Cette broche remet à zéro la puce W5500 quand elle est mise à LOW. Connectez-la à une broche numérique de l'Arduino Mega pour les resets contrôlés par logiciel, ou connectez-la à la broche RESET de l'Arduino pour remettre à zéro le module Ethernet chaque fois que l'Arduino redémarre. Peut aussi être laissée non connectée pour les applications simples, car le module a un reset interne à la mise sous tension.
- Broche GND : Référence de masse. Connectez-la à la broche GND de l'Arduino Mega pour établir une masse commune entre les deux appareils. Ceci est essentiel pour une communication SPI appropriée.
- Broche 5V : Entrée d'alimentation. Connectez-la à la broche de sortie 5V de l'Arduino Mega pour fournir l'alimentation de fonctionnement au module. Le régulateur de tension embarqué convertit le 5V en 3.3V requis par la puce W5500. Le tirage de courant est d'environ 140-200mA pendant l'utilisation active.
- Broche 3.3V : Sortie d'alimentation 3.3V. Cette broche fournit une sortie 3.3V régulée depuis le régulateur embarqué du module. Peut être utilisée pour alimenter d'autres appareils 3.3V, mais vérifiez la capacité en courant du régulateur (typiquement 150-300mA). Pour la connexion Arduino Mega, laissez cette broche non connectée.
- Broche MISO : Master In, Slave Out (ligne de données SPI). Cette broche transporte les données du module W5500 (esclave) vers l'Arduino Mega (maître). Connectez à la broche SPI MISO de l'Arduino Mega (broche numérique 50).
- Broche MOSI : Master Out, Slave In (ligne de données SPI). Cette broche transporte les données de l'Arduino Mega (maître) vers le module W5500 (esclave). Connectez à la broche SPI MOSI de l'Arduino Mega (broche numérique 51).
- Broche SCS : Slave Chip Select (ligne de sélection SPI). Ce signal actif-bas active la puce W5500 pour la communication SPI. Connectez à la broche SPI SS/CS de l'Arduino Mega (broche numérique 53) ou toute autre broche numérique disponible (doit être définie dans le code).
- Broche SCLK : Serial Clock (ligne d'horloge SPI). Cette broche transporte le signal d'horloge qui synchronise la transmission de données SPI. Connectez à la broche SPI SCK de l'Arduino Mega (broche numérique 52).

Avantages du W5500 par rapport à d'autres solutions réseau :
- Pile TCP/IP matérielle : Contrairement aux solutions basées logiciel, la pile matérielle du W5500 ne consomme pas de RAM Arduino ni de cycles de traitement
- Connexion fiable : L'Ethernet filaire est immunisé contre les interférences WiFi, les problèmes de force de signal et les préoccupations de sécurité sans fil
- Latence plus faible : Les connexions filaires ont typiquement 1-5ms de latence contre 50-100ms pour le WiFi
- Meilleur pour l'industriel : L'Ethernet est standard dans les environnements industriels où la fiabilité est critique
- Pas de gestion de mots de passe : Contrairement au WiFi, l'Ethernet ne nécessite pas de configuration SSID et mot de passe
- Efficace énergétiquement : Une fois configuré, les modules Ethernet consomment moins d'énergie que le WiFi qui transmet constamment
- Protocoles multiples : Supporte TCP, UDP et d'autres protocoles simultanément
Quand utiliser Ethernet vs. WiFi :
Choisissez Ethernet (W5500) quand :
- Le projet est stationnaire avec accès à une infrastructure réseau filaire
- La fiabilité et les performances déterministes sont critiques
- Environnement industriel ou commercial
- Un haut débit de données est requis
- La sécurité par contrôle d'accès physique est désirée
- Le budget énergétique est limité (après configuration initiale)
Choisissez WiFi quand :
- Le projet est mobile ou fréquemment déplacé
- Aucune infrastructure Ethernet disponible
- La commodité sans fil l'emporte sur les besoins de fiabilité
- Le projet est orienté consommateur où le WiFi est attendu
Schéma de câblage entre Arduino Mega et module Ethernet W5500
Connecter le module Ethernet W5500 à votre Arduino Mega nécessite une attention particulière aux broches de l'interface SPI. L'Arduino Mega possède des broches SPI matérielles dédiées qui fournissent une communication optimisée, haute vitesse avec les appareils SPI comme le W5500.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Tableau de connexion détaillé :
Le tableau ci-dessous montre le câblage complet entre le module Ethernet W5500 et l'Arduino Mega :
| Broche W5500 | Fonction | Broche Arduino Mega | Nom/Numéro broche |
|---|---|---|---|
| GND | Masse | GND | Masse |
| 5V | Alimentation | 5V | Alimentation 5V |
| MISO | Données SPI Out | MISO | Broche numérique 50 |
| MOSI | Données SPI In | MOSI | Broche numérique 51 |
| SCLK | Horloge SPI | SCK | Broche numérique 52 |
| SCS | Chip Select | SS | Broche numérique 53 |
| NC | Pas de connexion | - | (Laisser non connecté) |
| INT | Interruption | - | (Optionnel, laisser non connecté pour usage de base) |
| RST | Reset | - | (Optionnel, peut connecter à n'importe quelle broche numérique) |
| 3.3V | Sortie 3.3V | - | (Laisser non connecté) |
Notes de câblage critiques :
1. Emplacements des broches SPI sur Arduino Mega :
Les broches SPI matérielles de l'Arduino Mega sont différentes des cartes Arduino plus petites :
- MOSI : Broche 51 (PAS broche 11 comme sur Uno)
- MISO : Broche 50 (PAS broche 12 comme sur Uno)
- SCK : Broche 52 (PAS broche 13 comme sur Uno)
- SS/CS : Broche 53 (PAS broche 10 comme sur Uno)
Utiliser les mauvaises broches est l'erreur de câblage la plus courante. Vérifiez toujours que vous utilisez les broches SPI dédiées du Mega !
2. Broche Chip Select (SCS/SS) :
Bien que le Chip Select par défaut soit la broche 53, vous pouvez utiliser N'IMPORTE quelle broche numérique pour CS si vous la configurez correctement dans votre code. Cependant, même en utilisant une broche CS alternative, la broche 53 doit être configurée comme OUTPUT dans votre fonction setup(), sinon le mode maître SPI ne fonctionnera pas correctement :
3. Considérations d'alimentation :
Le module W5500 tire 140-200mA pendant le fonctionnement. Lorsqu'alimenté via USB, l'Arduino Mega peut fournir jusqu'à 500mA au total. Si votre projet inclut des composants gourmands en énergie (moteurs, beaucoup de LED, etc.), considérez :
- Utiliser une alimentation externe 5V pour l'Arduino
- Connecter la broche 5V du module à une source 5V régulée externe (assurer une masse commune)
4. Connexion du câble Ethernet :
Après avoir câblé l'interface SPI :
- Connectez un câble Ethernet (Cat5/Cat5e/Cat6) au jack RJ45 du W5500
- Connectez l'autre extrémité à votre routeur réseau, commutateur, ou directement à un ordinateur
- La LED de liaison doit s'allumer quand correctement connectée à un port réseau actif
- La LED d'activité doit clignoter pendant la transmission de données
5. Exigences d'infrastructure réseau :
- Routeur/Commutateur : La plupart des réseaux domestiques et de bureau ont un routeur ou commutateur avec des ports Ethernet libres
- Serveur DHCP : Pour l'attribution automatique d'IP, votre routeur doit avoir DHCP activé (défaut typique)
- IP statique : Alternativement, configurez une IP statique dans le code Arduino (doit être dans le sous-réseau du réseau)
- Accès Internet : Pour les applications client web, votre réseau a besoin de connectivité internet
Vérification de connexion :
Après câblage, vérifiez votre configuration :
- LED d'alimentation : Le module W5500 doit avoir une LED indicatrice d'alimentation allumée
- LED de liaison : Doit s'allumer quand le câble Ethernet est connecté au réseau actif
- Alimentation Arduino : La LED d'alimentation de l'Arduino Mega doit être allumée
- Pas de courts-circuits : Vérifiez qu'aucun fil SPI n'est croisé ou en court-circuit
- Connexions sécurisées : Tous les câbles de liaison doivent être fermement insérés
Erreurs de câblage courantes :
- Utiliser les broches SPI de l'Uno (11, 12, 13) au lieu des broches du Mega (50, 51, 52)
- Oublier de définir la broche 53 comme OUTPUT même en utilisant une broche CS alternative
- Inverser les connexions MOSI et MISO
- Câbles de liaison de mauvaise qualité causant des connexions intermittentes
- Alimentation insuffisante pour l'Arduino et le module Ethernet
- Ne pas connecter la masse entre Arduino et module Ethernet
Code Arduino Mega pour module Ethernet - Effectuer une requête HTTP via Ethernet
Ce programme d'exemple démontre comment utiliser votre Arduino Mega comme client HTTP—un appareil qui demande et reçoit des données depuis des serveurs web à travers internet. Le code établit une connexion TCP à example.com (un serveur web de démonstration), envoie une requête HTTP GET, reçoit la réponse HTML, et l'affiche dans le moniteur série.
Ce que fait ce code :
- Configuration réseau : Configure Ethernet avec adresse MAC et attribution IP automatique DHCP
- Résolution DNS : Convertit le nom de domaine "example.com" en son adresse IP
- Connexion TCP : Établit une connexion socket au serveur web sur le port 80 (HTTP)
- Requête HTTP : Envoie une requête HTTP GET correctement formatée avec les en-têtes requis
- Gestion de réponse : Reçoit et affiche la réponse HTTP complète incluant en-têtes et contenu HTML
- Gestion de connexion : Ferme correctement la connexion après avoir reçu toutes les données
Comprendre le fonctionnement du client HTTP :
Quand vous naviguez sur le web, votre ordinateur agit comme un client HTTP. Ce code Arduino effectue la même fonction :
- Se connecter au serveur web via socket TCP
- Envoyer une requête HTTP spécifiant ce que vous voulez (GET /path)
- Recevoir la réponse HTTP contenant les données demandées
- Fermer la connexion
Ce modèle permet à Arduino d'interagir avec des API web, télécharger des données, soumettre des relevés de capteurs aux plateformes cloud, vérifier les mises à jour firmware, et communiquer avec n'importe quel service basé HTTP.
Ce programme fonctionne comme un client web. Il envoie des requêtes HTTP au serveur web à http://example.com/.
Étapes rapides
Suivez ces instructions détaillées étape par étape pour faire effectuer des requêtes HTTP à votre Arduino Mega via Ethernet :
1. Câblage physique : Connectez le module Ethernet W5500 à votre Arduino Mega en suivant le schéma de câblage fourni ci-dessus. Vérifiez toutes les connexions SPI : MISO à la broche 50, MOSI à la broche 51, SCK à la broche 52, SCS à la broche 53, plus les connexions 5V et GND.
2. Connexion réseau : Utilisez un câble Ethernet standard (Cat5/Cat5e/Cat6) pour connecter le jack RJ45 du module W5500 à un port disponible sur votre routeur réseau ou commutateur. Vérifiez que la LED de liaison sur le module s'allume, indiquant une connexion physique réussie.
3. Connexion USB : Connectez votre carte Arduino Mega à votre ordinateur en utilisant un câble USB. Attendez que le système d'exploitation reconnaisse l'appareil et installe tous les pilotes nécessaires.
4. Ouvrir Arduino IDE : Lancez le logiciel Arduino IDE sur votre ordinateur.
5. Sélection de carte : Naviguez vers Outils → Carte et sélectionnez "Arduino Mega or Mega 2560" dans la liste des cartes disponibles.
6. Sélection de port : Allez à Outils → Port et choisissez le port COM (Windows) ou port /dev/ttyUSB ou /dev/ttyACM (Mac/Linux) correspondant à votre Arduino Mega.
7. Installation de bibliothèque : La bibliothèque Ethernet est requise pour la communication W5500 :
- Cliquez sur l'icône Bibliothèques (icône livre) dans la barre latérale gauche d'Arduino IDE
- Tapez "Ethernet" dans la boîte de recherche
- Localisez la bibliothèque Ethernet par Various (bibliothèque Arduino officielle)
- Cliquez sur le bouton Install pour ajouter la bibliothèque à votre IDE
- Attendez que l'installation soit terminée

8. Ouvrir le moniteur série : Avant de télécharger le code, ouvrez le moniteur série (Outils → Moniteur série ou Ctrl+Shift+M) et réglez le débit en bauds à 9600. Cela vous permet de voir la sortie du programme immédiatement après le téléchargement.
9. Copier et télécharger le code : Copiez le code client HTTP fourni ci-dessus et collez-le dans un nouveau sketch Arduino IDE. Cliquez sur le bouton Télécharger (icône flèche droite) pour compiler et télécharger vers votre Arduino Mega.
10. Vérifier la connexion réseau : Après que le téléchargement soit terminé, l'Arduino redémarrera automatiquement et commencera l'exécution. Regardez le moniteur série pour la sortie :
- "Arduino Mega - Ethernet Tutorial" devrait apparaître en premier
- Si DHCP réussit, vous verrez "Connected to server"
- La réponse HTTP complète d'example.com suivra
11. Interpréter les résultats : Dans le moniteur série, vous devriez voir une sortie similaire à ceci :
Comprendre la sortie :
- Statut HTTP : "HTTP/1.1 200 OK" indique une requête réussie (200 = code de succès)
- En-têtes de réponse : Les lignes avant la ligne vide contiennent les métadonnées sur la réponse
- Contenu HTML : Tout après la ligne vide est le HTML réel de la page web
- "disconnected" : Indique que la connexion a été correctement fermée
Conseils de dépannage :
- "Failed to configure Ethernet using DHCP" : Vérifiez la connexion réseau physique, vérifiez que DHCP du routeur est activé
- Rien ne s'affiche : Vérifiez que le débit en bauds du moniteur série est réglé à 9600
- "Connection failed" : Vérifiez la connectivité internet, vérifiez que DNS fonctionne
- Erreurs de timeout : Le pare-feu peut bloquer les connexions sortantes sur le port 80
- Caractères aléatoires : Mauvais débit en bauds dans le moniteur série
※ Note:
Avertissement de conflit d'adresse MAC : Chaque appareil réseau doit avoir une adresse MAC unique. Si un autre appareil sur votre réseau utilise la même adresse MAC que celle configurée dans votre code Arduino, les deux appareils connaîtront des problèmes de connectivité intermittents, perte de paquets, ou panne réseau complète.
L'adresse MAC dans le code d'exemple (DE:AD:BE:EF:FE:ED) est uniquement pour démonstration. Pour les déploiements en production, utilisez une adresse MAC correctement attribuée de la plage allouée de votre organisation, ou générez une adresse MAC locale aléatoire (le deuxième chiffre hexadécimal doit être 2, 6, A, ou E).
Code Arduino Mega pour module Ethernet - Serveur Web
Cet exemple démontre comment transformer votre Arduino Mega en un serveur web entièrement fonctionnel qui répond aux requêtes HTTP des navigateurs et autres clients HTTP. Quand un navigateur se connecte à l'adresse IP de l'Arduino, le serveur renvoie une page web HTML simple qui s'affiche dans le navigateur.
Ce que fait ce code :
- Initialisation serveur : Crée un serveur HTTP écoutant sur le port 80 (port HTTP standard)
- Configuration réseau : Configure Ethernet avec adresse MAC et obtient une adresse IP via DHCP
- Détection client : Surveille continuellement les connexions HTTP entrantes
- Réponse HTTP : Envoie des en-têtes HTTP correctement formatés et du contenu HTML aux clients se connectant
- Gestion de connexion : Gère de multiples connexions client séquentielles
- Rapport de statut : Affiche l'adresse IP attribuée dans le moniteur série pour un accès facile
Comprendre le fonctionnement du serveur web :
Un serveur web suit ce cycle requête-réponse :
- Écouter : Attendre les connexions HTTP entrantes sur le port 80
- Accepter : Quand le navigateur se connecte, accepter la connexion
- Recevoir : Lire la requête HTTP du navigateur
- Traiter : Déterminer quel contenu envoyer (dans ce cas, HTML simple)
- Répondre : Envoyer les en-têtes HTTP et le contenu HTML
- Fermer : Déconnecter le client
- Répéter : Retourner à l'écoute pour la prochaine connexion
Ce modèle permet à Arduino de servir des panneaux de contrôle web, afficher des données de capteurs dans les navigateurs, créer des interfaces de configuration, fournir des API REST, et agir comme un affichage d'informations en réseau.
Applications pratiques :
- Tableau de bord domotique : Contrôler les lumières, lire les températures, voir les flux caméra
- Surveillance de capteurs : Afficher les relevés de capteurs en temps réel dans les navigateurs web
- Configuration d'appareil : Interface de configuration basée web pour les paramètres Arduino
- Affichage de statut : Montrer la santé système,