vendredi 16 août 2013

Envoyer des données à carriots.com avec un Arduino (et un shield Ethernet)

Note:  Si vous préférez utiliser un module WiFi ESP8266 plutôt qu'un shield Ethernet, voir cet autre article.

Carriots est une compagnie spécialisée dans l'internet des objets ("internet of things" ou IoT). Tout comme Xively (anciennement Pachube), vous pouvez y envoyer des données émises par un Arduino ou un Raspberry Pi.  Vous pouvez ensuite accéder à vos données sur internet, même si vous êtes très éloigné de l'Arduino.  Le service est totalement gratuit pour vos 10 premiers appareils.

Dans cet article, je présente une adaptation d'un tutoriel présenté sur le site web de Carriots.   dans ce tutoriel, l'Arduino agit comme un système d'alarme:  il est muni d'une photorésistance et, si quelqu'un allume la lumière dans la pièce où se trouve l'Arduino, un email est envoyé au propriétaire pour l'aviser de la présence d'un intrus.

Pour me familiariser avec Carriot, j'ai apporté quelques modifications à ce projet:  tout d'abord, j'ai utilisé un potentiomètre à la place d'une photorésistance, car c'est plus simple de varier sa résistance à la valeur désirée (mon but pour l'instant est d'expérimenter, et non de produire immédiatement un dispositif qui sert véritablement à quelque chose).

Ce potentiomètre permet d'allumer ou d'éteindre une LED.  Chaque fois que l'état de la LED change (lorsqu'elle s'allume ou lorsqu'elle s'éteint), deux informations sont envoyées à Carriots:  la valeur du potentiomètre (entre 0 et 1053) et l'état de la LED ("ON" ou "OFF") (le sketch proposé par carriots n'envoyait qu'une seule donnée).

J'ai profité de la possibilité de régler automatiquement l'adresse IP du shield ethernet au moyen du protocole DHCP (disponible depuis la version 1.0 de l'IDE, je crois):  donc pas besoin de choisir soi-même une adresse IP à inscrire dans le sketch.

Finalement, dans le sketch d'origine toutes les données apparaissaient sur Carriots comme si elles avaient été enregistrées le 24 décembre 2012 à 18h00:  dans mon sketch elle s'affichent à l'heure correcte.

Marche à suivre:

1)  Ouvrir un compte chez Carriots.  Comme je l'ai déjà mentionné, c'est gratuit.

2)  Dans le "control panel" de Carriots, cliquer sur le bouton "SETTINGS", puis "Apikeys". et prendre en note votre "Automatic apikey default".  Cet interminable code formé de 64 caractères sera nécessaire dans votre sketch.

3)  Allez ensuite dans la section "Devices" et notez le nom de l'appareil (device developer ID).  Vous avez droit de brancher jusqu'à 10 appareils gratuitement sur Carriots.  Si vous utilisez l'appareil qui a été créé par défaut lors de votre inscription,  cet ID sera de la forme  "defaultDevice@votre_nom_d'utilisateur".

4)  Vous avez besoin d'un Arduino muni d'un shield Ethernet.  Pour ma part, j'ai utilisé un shield Ethernet chinois bon marché acheté sur eBay, et un Duemilanove chinois bon marché acheté sur eBay.  Le seul inconvénient, c'est que je suis obligé d'alimenter mon Arduino avec une alimentation externe aussitôt que je lui ajoute le shield Ethernet, sinon ça tire trop de courant du port USB et mon PC annule la connexion (à ma connaissance, je suis propriétaire du seul shield Ethernet au monde qui agit de cette façon).

5)  Ne pas oublier de brancher votre shield ethernet à un routeur au moyen d'un câble ethernet (je le précise, parce que ça m'est déjà arrivé d'oublier ce détail...).

6)  Le circuit d'essai n'a rien de compliqué:  un potentiomètre dont le curseur est branché à A3, et une LED (avec résistance de 150 Ω ou un peu plus) branchée à la sortie numérique 7.

7)  Voici mon sketch.  Avant de l'uploader dans l'Arduino, n'oubliez pas d'inscrire aux endroits appropriés votre APIKey et l'ID de votre appareil.  Vous pouvez également modifier l'adresse MAC si votre shield ethernet dispose d'une étiquette qui la mentionne.



8)  Ouvrez le moniteur série, tournez le potentiomètre de façon à allumer et éteindre la LED à quelques reprises.  Si le moniteur série affiche une erreur, je suis vraiment désolé pour vous.

9)  Vous pouvez accéder aux données acheminées à Carriots en cliquant sur le lien "Data streams" dans le control panel (une ligne pour chaque fois que vous avez allumé ou éteint la LED).

10)  Vous pouvez également cérer sur Carriots un "listener" qui se chargera de vous envoyer un email, un texto ou un tweet chaque fois que la LED changera d'état:  vous cliquez sur Wizard Create Listener et suivez les indications.

Dans une prochaine rubrique, je prévois faire un exemple de datalogging en explorant les possibilités d'accéder aux données sous forme de graphique.

Yves Pelletier (Twitter: @ElectroAmateur)

2 commentaires:

  1. [...] Le seul inconvénient, c'est que je suis obligé d'alimenter mon Arduino avec une alimentation externe aussitôt que je lui ajoute le shield Ethernet, sinon ça tire trop de courant du port USB et mon PC annule la connexion (à ma connaissance, je suis propriétaire du seul shield Ethernet au monde qui agit de cette façon).[...]
    Non, on est deux maintenant. ;-) Comment fais tu pour alimenter l'arduino et de le connecter en même temps au pc par l'usb pour avoir acces à la console serie pour le debug? J'ai essayé avec une pile 9V sur le jack mais ça ne fonctionne pas. J'utilise un CPL pour le RJ45, je vais essayé en direct sur le routeur. Car l'usb se déconnecte dès que je branche le cable RJ45.

    RépondreSupprimer
    Réponses
    1. J'utilise un bloc d'alimentation murale de 9 V branché sur le jack tout en laissant le câble USB qui relie l'Arduino à l'ordinateur.

      L'Arduino Uno désactive automatiquement l'alimentation par USB quand cette alimentation externe est présente, mais ça n'affecte en rien la communication par USB: je peux sans problème communiquer avec le moniteur série.

      Supprimer