Modules Ethernet Arduino et Microchip ENC28J60
Si vous souhaitez connecter votre Arduino à un réseau local filaire, plusieurs possibilités s'offrent à vous :
- Ethernet Shield si vous possédez déjà un Arduino Uno (ou similaire) ou Arduino Mega, et utiliser la librairie standard Ethernet
- Arduino Ethernet (adaptateur USB => série nécessaire) et utiliser la librairie standard Ethernet
- Module Ethernet WIZnet WIZ811MJ (chipset W5100) ou Microchip ENC28J60, disponible à ~6.30 € sur DealExtreme (photo ci-contre), avec une librairie spécifique
L'avantage de la dernière option est qu'elle permet de se passer d'une board Arduino, si l'on souhaite réaliser son propre circuit à base d'ATMega328 par exemple, ce qui est mon cas. Tout comme le chip WIZnet W5100, qui équipe également les shields Ethernet, le chip Microchip ENC28J60 utilise SPI pour communiquer avec un microcontrôleur. Le branchement à un Arduino Uno ou ATMega328 se fait comme suit :
Microchip ENC28J60 | Arduino Uno | ATMega328 |
CLKOUT | Non connecté | Non connecté |
INT | D2 | Pin 4 |
WOL | Non connecté | Non connecté |
SO | D12 | Pin 18 |
SI | D11 | Pin 17 |
SCK | D13 | Pin 19 |
CS | D8* | Pin 14* |
RESET | RESET | Pin 1 |
VCC | +3.3V | +3.3V (via régulateur de tension) |
GROUND | GND | Pin 8 |
* = CS devrait logiquement être connecté à D10 sur un Arduino Uno ou au pin 16 sur un ATMega328 (Slave Select), mais la librairie ci-après utilise le D8 / pin 14 par défaut.
Malheureusement, ce module Ethernet n'est pas compatible avec la librairie Ethernet standard fournie avec l'IDE Arduino. Heureusement, une librairie Arduino (compatible > 1.0) existe, EtherCard.
Pour l'installer, rien de plus simple : téléchargez le ZIP de la librairie, décompressez le dans le dossier "libraries" de votre dossier d'installation Arduino, et renommez le en "EtherCard".
(Re)lancez votre IDE Arduino, vous devriez désormais voir EtherCard apparaître dans Fichier / Exemples.
Vous pouvez tester le bon fonctionnement de votre module en prenant l'exemple "backSoon", qui ne compile toutefois pas dans sa version de base. Si comme moi vous n'utilisez pas DHCP (STATIC à 1, ligne 6), vous pouvez commenter le code suivant lignes 60-63 :
if (!STATIC && ether.dhcpExpired()) {
Serial.println("Acquiring DHCP lease again");
ether.dhcpSetup();
}
Téléversez le sketch sur votre Arduino Uno ou ATMega328, et vous devriez accéder à une page "Back Soon" en visitant l'adresse IP configurée dans votre code.
Edit du 21/04/2013 : Le bug DHCP de la librairie est désormais corrigé.
I'm Michael BOUVY, CTO and co-founder of Click&Mortar, a digital agency based in Paris, France, specialized in e-commerce.
Over the last years, I've worked as an Engineering Manager and CTO for brands like Zadig&Voltaire and Maisons du Monde.
With more than 10 years experience in e-commerce platforms, I'm always looking for new challenges, feel free to get in touch!