Projet | ​​Mini projet - Arduino | ​​​​​​​​​​​​​​​​​​​​​Réseau WWW - client ethernet - échange de données​

Contexte

La structure simplifiée du réseau est illustrée ci-contre. Elle permet le dialogue avec le système à partir d'une page hébergée par un serveur web. Ainsi il est possible de commander le système depuis tout client.

Importation de données enregistrées sur le web

Nous essayons le programme ci-contre compte tenu du dispositif joint. Il importe dans la carte Arduino, les données enregistrées sur la page http://sti6.zz.mu/led38/led38.txt hébergée sur le serveur distant. Ces données sont affectées par le script http://sti6.zz.mu/led38/led38.4.php
 
  1. ​Essayer le programme joint.
  2. S'assurer que les 4 octets de la page web s'affichent dans le terminal Arduino.

Enregistrement des données dans une chaîne de caractères

Nous enregistrons la chaîne retournée par le serveur dans une variable afin d'en extraire les données utiles pointées en vert dans le terminal.
 
  1. Ajouter dans le programme C++, la déclaration de la chaîne de caractères nommée txt : String txt="";
  2. Modifier le programme comme indiqué ci-contre et s'assurer que le terminal affiche encore les données correctement.

Extraction des données

Nous utilisons pour cela 3 méthodes (fonctions) appliquées à la chaîne de caractères nommée txt. Suivre le lien String-object dans la référence Arduino. Il s'agit d'isoler la première des données enregistrées dans la chaîne txt et pointées en vert dans le terminal.

  1. Editer le nombre de caractères contenus dans la chaîne avec l'instruction txt.length(). Vérifier l'exactitude du résultat. Note : il y a 2 caractères par saut de ligne contenus dans la chaîne.
  2. Editer la position du mot DATA inclus dans la chaîne txt et retournée par l'instruction txt.indexOf("DATA"). S'assurer que le résultat est exact.
  3. Editer la chaîne de caractères txt.substring(1, 10) dans le terminal.
  4. Proposer un segment de programme afin d'éditer la première donnée située après le mot DATA. Enregistrer ce résultat dans une chaîne nommée data1.
  5. Convertir et éditer cette chaîne en un nombre entier avec l'instruction data1.toInt()

Remontée des données vers le serveur web

Pour cela nous exploitons le script http://sti6.zz.mu/led38/StoreRgbdTxt.php?r=12&v=34&b=56. Il enregistre les valeurs 12, 34 et 56 dans le fichier http://sti6.zz.mu/led38/led38.txt

  1. Tester ce script avec le navigateur et s'assurer que les données sont affectées sur le serveur distant.
  2. Dans le programme C++, adapter l'instruction client.println("GET http://sti6.zz.mu/led38/led38.txt HTTP/1.1"); compte tenu de l'URL du script StoreRgbTxt.php que l'on fera suivre des données.
  3. S'assurer que la carte Arduino affecte les données enregistrées sur le serveur web distant.

Dispositif

Ethernet Shield /  carte Arduino Uno / cordon ethernet / cordon USB.

void setup()...

Ce programme prend en compte le proxy, porte d'accès unique de notre réseau vers le web.

... void loop()

Terminal

L'entête et les données à la fin retournés par le serveur sont entourés en rouge.

Adresses Mac : IP

Le serveur DHCP affecte notre carte d'une adresse IP correspondant à l'adresse MAC enregistrée dans le programme. ​
DE.AD.BE.EF.FE.ED  : 172.17.74.242
DE.AD.BE.EF.12.34 : 172.17.74.244
DE.AD.BE.EF.34.56 : 172.17.74.245
DE.AD.BE.EF.78.9A : 172.17.74.246
DE:AD:BE:EF:87:A9  : 172.17.74.247
DE:AD:BE:EF:43:65 : 172.17.74.248
DE:AD:BE:EF:87:A6 : 172.17.74.249