🛠 Serveur web sur le port Ethernet 10/100 embarqué
Objectifs
La Portenta H7 n'a pas que le Wi-Fi : un PHY Ethernet 10/100 est soudé sur la carte, exposé via la paire de connecteurs 80 broches (les porteuses Max/Mid Carrier apportent le connecteur RJ45). En atelier industriel, le câble bat le radio : latence stable, pas d'association à gérer. Tu vas monter un mini-serveur HTTP filaire, dans l'esprit du tuto officiel « Ethernet avec l'IDE » de la gamme Portenta.
Matériel
- 1 × Arduino Portenta H7 + porteuse avec RJ45 (Max Carrier, Mid Carrier) ou câblage du PHY sur connecteurs 80 broches
- Câble Ethernet vers un switch/box avec DHCP
- Core « Arduino Mbed OS Portenta Boards »
- Un navigateur sur le même LAN
- Console série 115200 bauds (pour lire l'IP)
Code complet
// serveur_web_eth.ino — mini serveur HTTP sur Ethernet filaire
// >
// inits pins) pour le core Mbed — la base documentaire ne donne pas le
// code exact ; suis le tuto officiel ethernet-with-ide de docs.arduino.cc
// pour la config materielle de ta porteuse.
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer serveur(80);
void setup {
Serial.begin(115200);
while (!Serial) {}
if (Ethernet.begin(mac) == 0) {
Serial.println("DHCP Ethernet échoue");
while (true) {}
}
Serial.print("Serveur sur http://");
Serial.println(Ethernet.localIP);
}
void loop {
EthernetClient client = serveur.available;
if (client) {
String requête = client.readStringUntil('\r');
client.flush;
String page = "<h1>Bonjour depuis ma Portenta H7</h1>"
"<p>Ethernet 10/100 embarque</p>";
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.print("Content-Length: ");
client.println(page.length);
client.println("Connection: close");
client.println;
client.print(page);
client.stop;
Serial.println("requête servie : " + requête);
}
}
Vérification attendue
La série affiche l'IP attribuée par DHCP ; le navigateur pointe dessus et affiche la page. Chaque rechargement trace la requête GET sur la console. Le combo officiel « caméra Vision Shield + Ethernet » (tuto ethernet-with-ide) pousse plus loin : streaming d'images sur le LAN filaire.
Erreurs fréquentes
- Chercher un RJ45 sur la carte seule : le PHY est embarqué mais le connecteur vient des porteuses (Max/Mid Carrier) ou des 80 broches — sans porteuse, pas de prise !
- DHCP expiré ou IP fixe manquante en atelier : en production, fixe l'IP (statique) plutôt que d'attendre un DHCP parfois absent sur les réseaux industriels isolés.
- Confondre les deux piles réseau : Wi-Fi (
WiFi.h) et Ethernet (Ethernet.h) peuvent coexister ; vérifie quelle interface porte ton trafic (la table de routage du core choisit la passerelle par défaut). - Isolation client sur le switch/box (AP isolation, VLAN) : la carte est « en ligne » mais injoignable — teste le ping avant de debugger le code.
- Réponse HTTP sans
Content-Length: certains navigateurs restent ouverts et bloquent le client suivant — ferme toujours proprement avecclient.stop. - >
Autres tutoriels pour cette carte
- Premier programme : installer le core et faire clignoter la LED (M7 à 480 MHz !)
- Se connecter au Wi-Fi avec le module Murata 1DX (station WPA2)
- Apprivoiser les connecteurs 80 broches : bouton, LED et entrée analogique
- Dual-core M7 ↔ M4 : appels de fonctions distants avec la bibliothèque RPC
- Client HTTPS/TLS : interroger une API sécurisée via le Murata 1DX
- MicroPython + machine vision : le firmware OpenMV sur un cœur, C++ sur l'autre
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinopwm-respiration.inoArduinoentree-analogique.inoArduinomulti-uart.inoArduinocapteur-i2c-bmp280.inoArduino