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
- Essayer le programme joint.
- 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.
- Ajouter dans le programme C++, la déclaration de la chaîne de caractères nommée txt : String txt="";
- 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.
- 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.
- 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.
- Editer la sous-chaîne de caractères txt.substring(1, 10) dans le terminal.
- 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.
- 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
- Tester ce script avec le navigateur et s'assurer que les données sont affectées sur le serveur web.
- 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.
- 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
Déclarations & setup( )
Dans notre établissement, aucun code d'accès n'est demandé pour se connecter au réseau WIFI.
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
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