🛠 Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
Objectifs
Le Teensy 4.1 intègre un contrôleur Ethernet 10/100 Mbit avec DMA et PHY TI DP83825I sur la carte : il ne manque que le connecteur RJ45 à magnétiques, vendu en kit à souder. Ce tutoriel monte un serveur HTTP qui expose les mesures de la carte au réseau local — sans shield, sans SPI, sans chip-select.
Matériel
- 1 Teensy 4.1 (le variant TEENSY41_NE n'a PAS de puce Ethernet : vérifiez votre référence)
- 1 kit connecteur RJ45 : https://www.pjrc.com/store/ethernet_kit.html (soudure fine)
- Câble Ethernet, routeur DHCP
Points clés
- Le PHY étant interne, aucun
Ethernet.init(cs)n'est nécessaire :Ethernet.begin(mac)suffit. - La bibliothèque officielle Ethernet (WebServer, ChatServer, SMTP...) tourne telle quelle sur le 4.1.
Ethernet.hardwareStatusdétecte l'absence de matériel — indispensable pour distinguer un variant NE d'un câble débranché.Ethernet.maintainrenouvelle le bail DHCP : appelez-le dans la boucle.- 10/100 seulement, pas de gigabit : pour de la télémétrie et de l'API légère, largement suffisant.
Code complet
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC unique !
EthernetServer server(80);
void setup {
Serial.begin(9600);
Ethernet.begin(mac); // DHCP ; (mac, ip) pour statique
if (Ethernet.hardwareStatus == EthernetNoHardware) {
Serial.println("Pas de matériel Ethernet (variant -NE ?)");
while (true) delay(1);
}
server.begin;
Serial.print("serveur a ");
Serial.println(Ethernet.localIP);
}
void loop {
Ethernet.maintain;
EthernetClient client = server.available;
if (!client) return;
bool lineDone = false;
while (client.connected && !lineDone) {
if (client.available) {
char c = client.read;
if (c == '\n') lineDone = true; // fin des en-tetes HTTP
}
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println;
client.println("<html>A0 = ");
client.print(analogRead(14));
client.println("</html>");
client.stop;
}
Vérification attendue
L'IP attribuée par DHCP s'affiche sur le port série ; en la tapant dans un navigateur, la page affiche la valeur de A0, rafraîchie à chaque rechargement.
Erreurs fréquentes
- Oublier de souder le kit RJ45 (ou acheter le variant NE par erreur) :
hardwareStatusrenvoieEthernetNoHardware. - Cloner l'exemple sans changer l'adresse MAC : deux machines avec la même MAC créent des pannes réseau fantômes.
- Ne pas appeler
Ethernet.maintain: le bail DHCP expire et le serveur devient injoignable après quelques heures. - Alternatives si vous n'avez pas le kit : un shield W5500/Wiz820 sur SPI fonctionne sur tous les Teensy — moins élégant, mais sans soudure.
Autres tutoriels pour cette carte
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Logger sur carte SD via le port SDIO natif du Teensy 4.1
- Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
- Ingénierie mémoire du Teensy 4.1 : TCM, DMAMEM, EXTMEM, flash QSPI et EEPROM
Exemples de code pour cette carte
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino