XIII. Annexes▲
XIII-A. Intallation de l'IDE Arduino▲
Le site officiel de l'Arduino est [http://www.arduino.cc/]. C'est là qu'on trouvera l'IDE de développement pour les Arduinos [http://arduino.cc/en/Main/Software] :
Le fichier téléchargé [1] est un zip qui une fois décompressé donne l'arborescence [2]. On pourra lancer l'IDE en double-cliquant sur l'exécutable [3].
XIII-B. Intallation du pilote (driver) de l'Arduino▲
Afin que l'IDE puisse communiquer avec un Arduino, il faut que ce dernier soit reconnu par le PC hôte. Pour cela, on pourra procéder de la façon suivante :
- brancher l'Arduino sur un port USB de l'ordinateur hôte ;
- le système va alors tenter de trouver le pilote du nouveau périphérique USB. Il ne va pas le trouver. Indiquez alors que le pilote est sur le disque à l'endroit <arduino>/drivers où <arduino> est le dossier d'installation
XIII-C. Tests de l'IDE▲
Pour tester l'IDE, on pourra procéder de la façon suivante :
- lancer l'IDE ;
- connecter l'Arduino au PC via son câble USB. Pour l'instant, ne pas inclure la carte réseau ;
- en [1], choisissez le type de la carte Arduino connectée au port USB ;
- en [2], indiquez le port USB sur lequel l'Arduino est connectée. Pour le savoir, débranchez l'Arduino et notez les ports. Rebranchez-le et vérifiez de nouveau les ports : celui qui a été rajouté est celui de l'Arduino ;
Exécutez certains des exemples inclus dans l'IDE :

L'exemple est chargé et affiché :
Les exemples qui accompagnent l'IDE sont très didactiques et très bien commentés. Un code Arduino est écrit en langage C et se compose de deux parties bien distinctes :
- une fonction [setup] qui s'exécute une seule fois au démarrage de l'application, soit lorsque celle-ci est " téléversée " du PC hôte sur l'Arduino, soit lorsque l'application est déjà présente sur l'Arduino et qu'on appuie sur le bouton [Reset]. C'est là qu'on met le code d'initialisation de l'application ;
- une fonction [loop] qui s'exécute continuellement (boucle infinie). C'est là qu'on met le coeur de l'application.
Ici,
- la fonction [setup] configure la pin n° 13 en sortie ;
- la fonction [loop] l'allume et l'éteint de façon répétée : la led s'allume et s'éteint toutes les secondes.

Le programme affiché est transféré (téléversé) sur l'Arduino avec le bouton [1]. Une fois transféré, il s'exécute et la led n° 13 se met à clignoter indéfiniment.
XIII-D. Connexion réseau de l'Arduino▲
L'Arduino ou les Arduinos et le PC hôte doivent être sur un même réseau privé :

S'il n'y a qu'un Arduino, on pourra le relier au PC hôte par un simple câble RJ 45. S'il y en a plus d'un, le PC hôte et les Arduinos seront mis sur le même réseau par un mini-hub.
On mettra le PC hôte et les Arduinos sur le réseau privé 192.168.2.x.
- l'adresse IP des Arduinos est fixée par le code source. Nous verrons comment ;
- l'adresse IP de l'ordinateur hôte pourra être fixée comme suit :
- prendre l'option [Panneau de configuration\Réseau et Internet\Centre Réseau et partage] :
- en [1], suivre le lien [Connexion au réseau local]
- en [2], visualiser les propriétés de la connexion ;
- en [4], visualiser les propriétés IP v4 [3] de la connexion ;
- en [5], donner l'adresse IP [192.168.2.1] à l'ordinateur hôte ;
- en [6], donner le masque [255.255.255.0] au réseau ;
- valider le tout en [7].
XIII-E. Test d'une application réseau▲
Avec l'IDE, chargez l'exemple [Exemples / Ethernet / WebServer] :
Cette application crée un serveur web sur le port 80 (ligne 30) à l'adresse IP de la ligne 25. L'adresse MAC de la ligne 23 est l'adresse MAC indiquée sur la carte réseau de l'Arduino.
La fonction [setup] initialise le serveur web :
- ligne 34 : initialise le port série sur lequel l'application va faire des logs. Nous allons suivre ceux-ci ;
- ligne 41 : le noeud TCP-IP (IP, port) est initialisé ;
- ligne 42 : le serveur de la ligne 30 est lancé sur ce noeud réseau ;
- lignes 43-44 : on logue l'adresse IP du serveur web ;
La fonction [loop] implémente le serveur web :
- ligne 50 : si un client se connecte au serveur web [server].available rend ce client, sinon rend null ;
- ligne 51 : si le client n'est pas null ;
- ligne 55 : tant que le client est connecté ;
- ligne 56 : [client].available est vrai si le client a envoyé des caractères. Ceux-ci sont stockés dans un buffer. [client].available rend vrai tant que ce buffer n'est pas vide ;
- ligne 57 : on lit un caractère envoyé par le client ;
- ligne 58 : ce caractère est affiché en écho sur la console de logs ;
- ligne 62 : dans le protocole HTTP, le client et le serveur échangent des lignes de texte.
- le client envoie une requête HTTP au serveur web en lui envoyant une série de lignes de texte terminées par une ligne vide,
- le serveur répond alors au client en lui envoyant une réponse et en fermant la connexion ;
Ligne 62, le serveur ne fait rien avec les entêtes HTTP qu'il reçoit du client. Il attend simplement la ligne vide : une ligne qui contient le seul caractère \n ;
- lignes 64-67 : le serveur envoie au client les lignes de texte standard du protocole HTTP. Elles se terminent par une ligne vide (ligne 67) ;
- à partir de la ligne 68, le serveur envoie un document à son client. Ce document est généré dynamiquement par le serveur et est au format HTML (lignes 68-69) ;
- ligne 71 : une ligne HTML particulière qui demande au navigateur client de rafraîchir la page toutes les 5 secondes. Ainsi le navigateur va demander la même page toutes les 5 secondes ;
- lignes 73-80 : le serveur envoie au navigateur client, les valeurs des 6 entrées analogiques de l'Arduino ;
- ligne 81 : le document HTML est fermé ;
- ligne 82 : on sort de la boucle while de la ligne 55 ;
- ligne 97 : la connexion avec le client est fermée ;
- ligne 98 : on logue l'événement dans la console de logs ;
- ligne 100 : on reboucle sur le début de la fonction loop : le serveur va se remettre à l'écoute des clients. Nous avons dit que le navigateur client allait redemander la même page toutes les 5 secondes. Le serveur sera là pour lui répondre de nouveau.
Modifiez le code en ligne 25 pour y mettre l'adresse IP de votre Arduino, par exemple :
IPAddress ip
(
192
,168
,2
,2
);
Téléversez le programme sur l'Arduino. Lancez la console de logs (Ctrl-M) (M majuscule) :
- en [1], la console de logs. Le serveur a été lancé ;
- en [2], avec un navigateur, on demande l'adresse IP de l'Arduino. Ici [192.168.2.2] est traduit par défaut comme [http://198.162.2.2:80];
- en [3], les informations envoyées par le serveur web. Si on visualise le code source de la page du navigateur, on obtient :
On reconnaît là, les lignes de texte envoyées par le serveur. Du côté Arduino, la console de logs affiche ce que le client lui envoie :
- lignes 2-9 : des entêtes HTTP standard ;
- ligne 10 : la ligne vide qui les termine.
Etudiez bien cet exemple. Il donne des indications qui vous seront utiles pour construire un serveur Arduino pour le TP.
XIII-F. La bibliothèque aJson▲
Dans le TP à écrire, les Arduinos échangent des lignes de texte au format JSON avec leurs clients. Par défaut, l'IDE Arduino n'inclut pas de bibliothèque pour gérer le JSON. Nous allons installer la bibliothèque aJson disponible à l'URL [https://github.com/interactive-matter/aJson].
- en [1], téléchargez la version zippée du dépôt Github ;
- décompressez le dossier et copiez le dossier [aJson-master] [3] dans le dossier [<arduino>/libraries] [3] où <arduino> est le dossier d'installation de l'IDE Arduino ;
- en [4], renommez ce dossier [aJson] ;
- en [5], son contenu.
Maintenant, lancez l'IDE Arduino :
Vérifiez que dans les exemples vous avez désormais des exemples pour la bibliothèque aJson. Exécutez et étudiez ces exemples. Vous en aurez besoin.