Différences entre versions de « Arduino W5100 web server »
Ligne 78 : | Ligne 78 : | ||
} | } | ||
</source> | </source> | ||
− | Si vous avez une réponse de votre | + | Si vous avez une réponse de votre serveur DHCP, vous devriez obtenir, dans le terminal série, le résultat suivant: |
<pre> | <pre> | ||
Requesting ip... | Requesting ip... |
Version du 30 décembre 2016 à 12:57
Partie électronique
Le composant
Le Shiled Ethernet embarque un contrôleur Wiznet 5100 qui est plus fiable que son homologue le contrôleur ENC28J60. Il existe principalement en shield mais peut également se trouver en platine.
Wiznet 5100 version shield pour Mega/Uno | Wiznet 5100 version shield pour Nano | Wiznet 5100 version platine |
Les versions shield sont intéressantes car elles embarquent également un lecteur de carte micro SD qui, dans notre cas de figure, va nous servir à héberger les pages du site Web.
Le montage
Le montage suivant requiert le shield, un câble Ethernet qui le relie à un switch et un ordinateur relié au même switch.
Shield Wiznet 5100 sur un Mega | Shield Wiznet 5100 sur un Uno | Shield Wiznet 5100 sur un Nano |
N'oubliez pas que la communication entre l'Arduino et le shield se fait a travers certaines broches qu'il ne faut donc pas utiliser !
Comme vous pouvez le constater, le protocole SPI (Serial Port Interface) est utilisé ici pour communiquer avec la carte SD et le contrôleur Ethernet (SPI = pas en simultané).
Partie logicielle
Les librairies
Les librairies utilisées sont déjà inclues de base et sont :
- SPI.h
- Ethernet.h
- SD.h
Utilisation du shield Ethernet
Dans un premier temps, nous allons découvrir comment utiliser le shield Ethernet...
Adressage IP dynamique
Le plus simple, si votre réseau possède un serveur DHCP (normalement votre box est dotée de cette fonctionnalité...), est de demander la configuration OSI de niveau 3. Les seuls paramètres qui nous intéresserons vraiment sont l'adresse IP et le masque. La passerelle ne sera pas utile dans notre cas...
#include <SPI.h>
#include <Ethernet.h>
/**
Adresse MAC du module, doit être unique sur le réseau !
Ici 00:01:02:03:04:05
*/
byte mac[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
void setup() {
// Démarrage du port série
Serial.begin(9600);
Serial.println(F("Requesting ip..."));
/**
Démarrage du shield Ethernet sans spécifier d'adresse IP
Cela oblige le contrôleur Ethernet à demander une configuration OSI 3
*/
if (Ethernet.begin(mac) == 0) {
// Si c'est un échec, pas la peine de pousuivre...
Serial.println(F("DHCP failure !"));
while (true);
}
// Affichage des informations obtenues
Serial.print(F("IP : "));
Serial.println(Ethernet.localIP());
Serial.print(F("Mask : "));
Serial.println(Ethernet.subnetMask());
Serial.print(F("Gateway : "));
Serial.println(Ethernet.gatewayIP());
Serial.print(F("DNS : "));
Serial.println(Ethernet.dnsServerIP());
}
void loop() {
}
Si vous avez une réponse de votre serveur DHCP, vous devriez obtenir, dans le terminal série, le résultat suivant:
Requesting ip... IP : 192.168.1.26 Mask : 255.255.255.0 Gateway : 192.168.1.254 DNS : 192.168.1.254