Ethernet Shield / Exemple d'utilisation avec Pachube

Les cartes Arduino, les platines

Ethernet Shield / Exemple d'utilisation avec Pachube

Message non lude Lionel » Jeu 14 Avr 2011 15:29

Bonjour,

Suite à une demande ce jour, je viens de re-dérouler la procédure d'envoi de données sur internet récoltées grâce au couple arduino + ethernet shield officiel

Image

je m'appuie sur la page http://community.pachube.com/node/112 avec une traduction libre et les modifs que j'ai apporté pour que l'ensemble fonctionne

A. Publication et récupérations de données sur Pachube depuis Arduino + Ethernet Shield

    1. Il faut se rendre sur Pachube et créer un compte.
    Une clé API est crée et associée au compte, elle servira dans le code

    2. Ensuite, il faut créer deux flux de données (manual feeds), et noter les FEED_ID qui serviront dans le code (on est pas obligé de remplir tous les champs)

      - Un qui servira a stocker les données envoyées (nommé SHARE_FEED dans le code)
      - L'autre qui servira de source de données à récupérer* (nommé REMOTE_FEED dans le code).

      *Par exemple si on veut récupérer des données postées sur pachube par quelqu'un d'autre et les afficher sur l'arduino. Mettons que votre cousine habite à Papeete et que vous vouliez avoir dans votre salon un afficheur à aiguille qui vous donnerait en temps réel la température chez cette veinarde.

    3. Le code a uploader dans l'arduino (ethernet_Pachube_input_output_1_1) se récupère ici, ou bien on peut le trouver en pièce jointe a ce post

    Quelques modifications sont a apporter au code (testé avec Arduino 21) :

    Tout d'abord, ajouter la ligne
    Code: Tout sélectionner
    #include <SPI.h>

    avant les include
    Code: Tout sélectionner
    #include <Ethernet.h>
    #include <string.h>


    Puis, dans le bout de code suivant :
    Code: Tout sélectionner
    #define SHARE_FEED_ID              1872     // this is your Pachube feed ID that you want to share to
    #define REMOTE_FEED_ID             256      // this is the ID of the remote Pachube feed that you want to connect to
    #define REMOTE_FEED_DATASTREAMS    4        // make sure that remoteSensor array is big enough to fit all the remote data streams
    #define UPDATE_INTERVAL            10000    // if the connection is good wait 10 seconds before updating again - should not be less than 5
    #define RESET_INTERVAL             10000    // if connection fails/resets wait 10 seconds before trying again - should not be less than 5

    #define PACHUBE_API_KEY            "ENTER_YOUR_API_KEY_HERE" // fill in your API key

    byte mac[] = { 0xCC, 0xAC, 0xBE, 0xEF, 0xFE, 0x91 }; // make sure this is unique on your network
    byte ip[] = { 192, 168, 0, 144   };                  // no DHCP so we set our own IP address
    byte remoteServer[] = { 209,40,205,190 };            // pachube.com


      * Renseigner le SHARE_FEED_ID avec le manual feed ID attribué précédemment

      * Renseigner le REMOTE_FEED_ID avec l'autre manual feed ID crée (ou celui que vous voulez récupérer). Tel quel, le sketch fonctionne avec n'importe quel flux de données (feed) qui utiliserait des float ou integer; mais il peux être modifié pour accepter d'autres formats.

      * Renseigner REMOTE_FEED_DATASTREAMS avec le nombre de datas que l'on souhaite extraire du flux de données qu'on récupère remote feed (température de l'air et humidité relative à Tahiti, mettre 2)

      * Renseigner la clé API

      * Renseigner l'intervalle de prise de données et celui du reset de la connection, ne pas descendre en dessous de 5s (interval = 5000) sous peine de bannissement temporaire de Pachube, j'ai testé pour vous ;)

      * Renseigner une adresse mac (qui identifie votre équipement, on peux laisser celle par défaut, mais si on a deux équipements, il faut une adresse mac unique par équipement)

      * Renseigner votre IP

    L'adresse ayant changé depuis la publication du code, changer l'adresse du serveur pachube par
    Code: Tout sélectionner
    byte remoteServer[] = { 173,203,98,29 };

    4. Ensuite, on peux éditer son code a l'intérieur du loop() et il fonctionnera en continu, avec des pauses occasionnelles lorsque la fonction pachube_in_out() doit faire quelque chose d'intensif (comme lire/écrire sur le shield ethernet ou faire un reset en cas de problème). Par exemple, le code pour écrire sur une pin analogique (AnalogWrite) une donnée proportionnelle a la température relevée au beau milieu du pacifique, et faire un bel afficheur, doit être placé ici.
    Cependant, ça fonctionne tel quel pour des tests c'est bien pratique
    Code: Tout sélectionner
    void loop()
    {

      // call 'pachube_in_out' at the beginning of the loop, handles timing, requesting
      // and reading. use serial monitor to view debug messages

      pachube_in_out();

      // then put your code here, you can access remote sensor values
      // by using the remoteSensor float array, e.g.:

      analogWrite(3, (int)remoteSensor[3] * 10); // remoteSensor is a float
      analogWrite(5, (int)remoteSensor[1]);

      // you can have code that is time sensitive (e.g. using 'delay'), but
      // be aware that it will be affected by a short pause during connecting
      // to and reading from ethernet (approx. 0.5 to 1 sec).
      // e.g. this code should carry on flashing regularly, with brief pauses
      // every few seconds during Pachube update.

      digitalWrite(6, HIGH);
      delay(100);
      digitalWrite(6, LOW);
      delay(100);

    }


    5. Enfin, on peux connecter ses capteurs, vérifier que l'équipement est relié au réseau et uploader le code dans l'arduino.
    La méthode utilisée étant un PUT, ça doit passer à travers les firewall, pas de souci.

    On peux aller voir ses flux sur sa page Pachube, votre statut va passer de frozen à live. Et ça devrait ressembler à ça : http://www.pachube.com/feeds/1872

    snap_pach.png
    snap_pach.png (45.11 Kio) Vu 4183 fois


    Les six premières données sont les entrées Analog-in 0 à 5 et les deux dernières indiquent le nombre d'update réussi sur Pachube et le nombre d'échecs (ça je l'ai traduit, mais franchement, je ne comprends pas ces datas, et a la rigueur, on peut les retirer du code dans l'onglet pachube_functions)

    On peux éditer les noms des tags à l'envi et indiquer à ses amis que l'on est maintenant en train de poster sur Pachube et ils pourront ainsi accéder à vos données publiées.

Photos du montage test (testé avec les deux versions de shield ethernet officiels en circulation)

xIMG_0089.jpg
xIMG_0089.jpg (75.58 Kio) Vu 4183 fois


xIMG_0090.jpg
xIMG_0090.jpg (70.09 Kio) Vu 4183 fois



Image
Fichiers joints
ethernet_Pachube_input_output_1_1.zip
(4.58 Kio) Téléchargé 206 fois
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité