Généralités
Les fichiers
Avant de téléverser un programme sur la carte Arduino, il faut d'abord mettre
dans un répertoire de votre ordinateur 3 fichiers :
- Le programme Arduino qui est un fichier de suffixe .ino
- La bibliothèque de fonctions trthtml.cpp
- Le fichier trthtml.h qui fait le lien
avec les 2 fichiers précédents
Il faut aussi copier des fichiers dans le répertoire racine de la carte micro
SD. Selon le programme Arduino, on mettra un ou plusieurs fichiers de suffixe
.htm et éventuellement de suffixe
.css et
.ahp
Pour chacun des programmes Arduino, la liste des fichiers à mettre sur la
carte SD est indiquée.
Remarque : Pour éviter d'avoir à transférer des fichiers sur la carte
SD à chaque essai d'un nouveau programme, vous pouvez mettre directement
tous les fichiers de suffixes
.htm .css et
.ahp
Adresse MAC et adresse IP
Si vous essayez de compiler un programme, vous aboutirez dès les premières
lignes à des erreurs de compilation.
En effet, deux déclarations de variables doivent être modifiées :
// L'adresse MAC du module
byte mac[] = { 0x90, 0xA2, 0xDA, 0xHH, 0xHH, 0xHH };
// L'adresse IP que prendra le module
IPAddress ip (192, 168, n1, n2);
Il faut modifier ces deux déclarations pour les adapter à votre matériel
et à l'environnement réseau dans lequel il est utilisé.
L'adresse MAC
L'adresse MAC est composée de 6 octets. Tous les composants éthernet dans
le monde doivent avoir une adresse MAC différente.
En général, l'adresse MAC est fixée par le constructeur du matériel et
enregistrée dans la mémoire du composant. Le constructeur enregistre une
adresse MAC différente pour chaque exemplaire d'un composant réseau qu'il
vend. Dans ce cas, l'utilisateur n'a pas à s'occuper de l'adresse MAC.
Toutefois, certains composants réseau comme le module éthernet d'une carte
Arduino donnent la possibilité de programmer l'adresse MAC. Dans ce cas, il
faut éviter que deux composants se retrouvent avec la même adresse MAC.
En effet, comme un conflit d'adresse MAC ne devrait jamais se produire, s'il
survient malgré tout, le résultat peut être insolite et d'autant plus
difficile à détecter qu'on ne pense pas forcément à ce genre d'erreur.
Le constructeur des modules éthernet de carte Arduino colle une étiquette
imprimée au dos de la carte. Il suffit d'utiliser l'adresse MAC indiquée.
Les 3 premiers octets de cette adresse MAC sont
90,
A2,
DA. Ils appartiennent au constructeur du matériel. Il faut
remplacer les
HH qui suivent dans la déclaration
byte mac[] = { 0x90, 0xA2, 0xDA, 0xHH, 0xHH, 0xHH };
par les valeurs hexadécimales écrites sur l'étiquette.
Attention : Si vous êtes dans un établissement scolaire et utilisez
des modules éthernet sur plusieurs séances, mais pas forcément le même à
chaque fois, il faudra à chaque séance vérifier et éventuellement corriger
l'adresse MAC, et que tout la classe fasse de même avec son matériel.
L'adresse IP
L'adresse IP est composée de 4 octets. Ceux-ci sont écrits en base 10.
Tous les appareils appartenant à un réseau local, ont le début de l'adresse
IP identique. Pour trouver une adresse IP compatible avec votre ordinateur,
exécutez sur celui-ci la commande
ipconfig ou
ifconfig
selon le système d'exploitation et vous obtiendrez l'adresse IP de votre
ordinateur.
Sur un petit réseau, par exemple à domicile, cette adresse IP commencera
normalement par 192.168 et le 3ème nombre sera souvent 0 ou 1.
Dans ce cas, il vous faudra choisir le 4ème nombre entre 1 et 254 puis
vérifier par la commande
ping adresse_ip qu'aucun
appareil n'utilise déjà cette adresse IP (pas de réponse au ping).
Dans un établissement scolaire ou une entreprise, les adresses IP utilisées
commencent habituellement par 10 ou par 176 et la partie de l'adresse IP
qui peut varier d'un appareil à l'autre concerne les 2 derniers nombres.
On peut choisir pour ces nombres des valeurs entre 0 et 255, mais pas 2
fois 0 ni 2 fois 255.
Encore plus qu'à domicile, il faudra vérifier que l'adresse IP choisie n'est
utilisée par aucun autre appareil.
Remarque : Dans un réseau informatique, habituellement, on ne
configure pas à la main toutes les cartes réseau avec une adresse IP
différente. C'est un serveur DHCP qui se charge d'attribuer une adresse
IP à chaque appareil.
Dans ce cas, tous les appareils du réseau contacteront au démarrage le
serveur DHCP (dont ils connaissent l'adresse IP) pour demander une
adresse IP parmi celles disponibles.
Ce mode de fonctionnement est possible avec une carte Arduino. L'initialisation
de la carte réseau qui est dans la fonction
setup () sera
différente.
Toutefois, l'utilisation d'un serveur DHCP ne garantit pas qu'un appareil
aura toujours la même adresse IP, ce qui est un gros inconvénient pour un
serveur.
C'est pour cette raison que dans les exemples de programme fournis sur ce
site, le module éthernet de la carte Arduino est programmé avec une adresse
IP fixe.
Détails sur les échanges réseau
En plus d'offrir la possibilité de réaliser un serveur web dynamique, la
bibliothèque de fonctions
trthtml permet de récupérer sur le moniteur
série de la carte Arduino des informations plus ou moins détaillées sur les
échanges réseau.
Une directive de compilation présente au début du fichier
trthtml.cpp
permet de choisir entre 4 niveaux de détails. Les 4 possibilités sont
expliquées (en français) dans un commentaire de plusieurs lignes :
/*
Valeurs possibles pour DEBUG
// pas de #define DEBUG : même fonctionnement qu'avec DEBUG à 0
#define DEBUG 0 // pas de messages sur le moniteur série
#define DEBUG 1 // affichage seulement des message indiquant un envoi ou une réception
#define DEBUG 2 // on affiche en plus les caractères reçus par la carte arduino
#define DEBUG 3 // on affiche également les caractères envoyés par la carte arduino
*/
//#define DEBUG 3
La ligne qui définit le niveau de DEBUG étant en commentaire, aucun message
n'est envoyé sur le moniteur série. En décommentant cette ligne, on a le
maximum d'informations avec :
- les messages reçus par le serveur précédés du caractère <
- les messages envoyés par le serveur précédés du caractère >
Longueur des lignes mémorisées
Une autre constante est définie dans le programme :
#define TAILLEMAX_LIGNE 100
Cette constante définit la longueur des lignes des fichiers HTML qui
peuvent être mémorisées en entier par les fonctions de la bibliothèque
trthtml.
La valeur fournie est largement suffisante pour le bon fonctionnement des
fichiers d'exemples. Elles fonctionnera aussi avec vos propres fichiers
HTML si vous n'êtes pas adeptes des lignes de code très longues.
Dans la pratique, cette limitation ne concerne que les lignes des fichiers
HTML dans lesquelles on doit trouver une chaine de caractères particulière
en utilisant les fonctions fonctions
copie_jusque_chaine (...) ,
sauter_jusque_chaine (...) et
coprep_chaine (...)