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

Contexte

​Il s'agit du contexte présenté dans cette activité mais ici, la connexion au réseau est effectuée via une borne WIFI.

L'accès au réseau WIFI SSID Wifi-T203, Service Set Identifier, donne en effet accès au LAN comme au web. Aucun de mot de passe WPA, WIFI Protected Access, n'est nécessaire.

​ Nous utilisons l'environnement ​Arduino 1.0.2 pour ce projet.

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 web. 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 web 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 sous-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 de caractères 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 web.
  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.

Prolongements

Le programme pourra être complété afin de :

  • Remplacer la donnée 12 de la requête par le contenu d'une variable, image d'une acquisition réalisée par la carte Arduino. Voir ​​cette rubrique par exemple.
  • Répéter l'envoi de la donnée à intervalles réguliers. Voir le programme exemple BlinkWithoutDelay.ino accessible depuis le menu de l'IDE Arduino.
  • Déclencher le transfert d'information à l'occasion d'un évènement. Voir cette page.

Ressources

Dispositif

Ethernet Shield /  carte Arduino Uno / cordon USB

Shield Wifi

Broches réservées.

Déclarations & setup( )

​Dans notre établissement, aucun code d'accès n'est demandé pour se connecter au réseau WIFI.

... loop( )

...fonction

Nous plaçons les fonctions à la suite du segment loop.

Terminal

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

Adresses MAC / IP

A  l'initialisation, la carte wifi reçoit une adresse IP par le serveur DHCP selon son adresse MAC. Il sera donc possible de la "pinguer".

78:c4:0e:02:05:d0 / 172.17.74.211
78:c4:0e:01:c4:b7 / 172.17.74.212
78:c4:0e:01:c4:da / 172.17.74.213
78:c4:0e:02:06:c8 / 172.17.74.214