Tuto: Commande de LED via Internet avec Spark Core

Il n'y a pas si longtemps, nous nous penchons sur la commande de LED avec un Spark Core. C'était l'occasion de se rendre compte qu'un Spark Core se programme comme un Arduino!

Contôler des LEDs par le NET

Cette fois-ci, nous allons commander deux LEDs via Internet. Cet exemple ludique permet de comprendre comment envoyer des ordres via le NET jusqu'à notre Spark Core. Une étape importante pour l'Internet des Objets.

Brancher les éléments
Source: notre tutoriel sur Spark-Core

Deux LEDs et deux résistances. Dans l'image nous utilisons une résistance de 1K (Brun Noir Rouge).
Notre précédent tutoriel reprend également la méthode de calcul de la résistance :-)

Le programme
Voici comment fonctionne le programme
  • Activer les broches sur lesquelles sont banchées les LEDs en tant que sortie (output en anglais)
  • Créer et répertorier (register) une fonction Spark (elle sera appelée automatiquement lorsque vous ferez un appel via l'API)
  • Traiter la commande entrante (parse) pour prendre les actions appropriées. 
// -----------------------------------
// Controler des LEDs via Internet
// -----------------------------------

// Donner un nom aux broches
int led1 = D0;
int led2 = D1;

// Cette fonction est appelée une seule fois lors d'un reset
void setup()
{
   // Enregistrez votre fonction Spark ici
   // Le point de contact de l'API est "led" et la 
   // fonction appelée est "ledControl"
   Spark.function("led", ledControl);

   // Configureer les broches en Sortie (output)
   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);

   // Initialiser les deux LEDs pour qu'elles soient éteintes
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
}


// Cette boucle est exécutées continuellement
void loop()
{
   // Rien à exécuter
}


// Cette fonction est appelée lorsqu'il y a un appel correspondant sur l'API
// Le format de la chaine de commande est l,<état>
// Par exemple: l1,HIGH ou l1,LOW  pour allumer ou éteindre la LED1
//              l2,HIGH or l2,LOW  pour allumer ou éteindre la LED2
//
int ledControl(String command)
{
   int state = 0;
   // Trouver le numéro de broche dans la commande ET convertir 
   // la valeur du caractere ASCII en valeur entière (en integer)
   int pinNumber = (command.charAt(1) - '0') - 1;

   // Vérifier que la valeur de la broche est bien dans
   // les limites acceptables SINON on quitte de la fonction ledControl
   if (pinNumber < 0 || pinNumber > 1) return -1;

   // Trouver l'état de la Led dans la commande
   // SI l'état n'est pas identifié ALORS on quitte la fonction ledControl
   if(command.substring(3,7) == "HIGH") state = 1;
   else if(command.substring(3,6) == "LOW") state = 0;
   else return -1;

   // Modifier l'état de la broche 
   digitalWrite(pinNumber, state);
   return 1;
}

Faire une requête d'API
Nous allons interroger l'API pour la tester. Pour faciliter notre tâche, nous allons utiliser l'utilitaire CURL. Si vous ne savez pas ce qu'est CURL, voyez notre petite description ici.

curl https://api.spark.io/v1/devices/0123456789abcdef/led -d access_token=123412341234 -d params=l1,HIGH

Ce qui active la LED l1 mais en plus nous retourne le résultat suivant:

{
  "id": "54ff6xxxxxxxxxxxxx481467",
  "name": "mch-demo",
  "last_app": null,
  "connected": true,
  "return_value": 1
}

Le restant du tutoriel - utiliser un navigateur Internet
Nous avons vu comment tester l'API, il est également possible de le faire par l'intermédiaire d'un navigateur Internet Il faut cependant passer par l'intermédiaire d'un formulaire HTML (pour avoir une requête de type POST).

Tous les détails se trouve dans notre tutoriel LED Internet pour Spark Core.

Après le navigateur Internet (Firefox sur Linux Mint dans mon cas), j'ai même pris le temps de faire un essai avec succès sur mon SmartPhone (Samsung Galaxy S4 sous Android).

Tutoriels Spark Core
MCHobby s'est fixé pour objectif de rendre la technologie accessible à tous à toutes. C'est la raison pour laquelle MCHobby propose de nombreux tutoriels et traductions.... aussi pour le Spark Core qui dispose d'une section entière sur notre tutoriel.
Acheter vos produits chez MCHobby c'est aussi nous soutenir dans notre démarche et faire en sorte que l'aventure continue.