lundi 22 juin 2015

Firmata (1): l'Arduino comme périphérique d'un ordinateur

Vous désirez contrôler des relais à partir d'un ordinateur?  Interroger des capteurs afin d'accumuler les données dans un ordinateur (datalogging)?  Dans ce genre d'application, où l'Arduino est utilisé comme un périphérique USB plutôt que comme un dispositif autonome, Firmata peut s'avérer très utile.

Firmata est un protocole qui vise à faciliter la communication entre un ordinateur et un microcontrôleur.   Les messages échangés par l'ordinateur et le microcontrôleur sont similaire à ceux du protocole MIDI, utilisé dans le domaine des instruments de musique électroniques.

Dans ce premier article, je  vous invite à effectuer une petite expérimentation qui, en moins de 5 minutes, devrait vous convaincre de la pertinence, de l'efficacité et de la simplicité du protocole.

1) Préparation de l'Arduino

Sans grande surprise, votre Arduino doit être branché à l'ordinateur hôte, au moyen d'un câble USB.

Nous n'avons pas à installer la bibliothèque Firmata, puisqu'elle est incluse dans l'IDE Arduino. Notre tâche consistera simplement à téléverser dans la carte Arduino l'exemple "StandardFirmata" (Menu Fichier - Exemples - Firmata - StandardFirmata).


Votre Arduino est maintenant prêt à recevoir des messages en provenance de l'ordinateur, et à les interpréter correctement.

2) Préparation de l'ordinateur

Rendez-vous ensuite sur cette page web consacrée à Firmata et téléchargez le logiciel "Firmata Test Program" dans la version appropriée pour votre système d'exploitation (Linux, MacOS ou Windows).

Au démarrage, cette application vous demandera de sélectionner le port série correspondant à votre carte Arduino (menu "Port").  Une fois ce port sélectionné, la fenêtre affiche la liste des entrées/sorties de votre Arduino (sauf les pins 0 et 1, qui sont déjà  utilisées pour la communication série par USB entre l'ordinateur et la carte).



3)  Communication entre l'ordinateur et l'Arduino

À partir de ce logiciel, vous pouvez régler individuellement chaque pin de l'Arduino en entrée numérique (Input) ou en sortie (Output).  Lorsqu'elles en sont capables, certaines pins peuvent également être réglées en entrée analogique (Analog), pour émettre un signal en modulation de largeur d'impulsion (PWM) ou pour commander un servomoteur (Servo).

  • Si vous avez réglé la pin en entrée numérique (Input), son état logique (Low ou High) est affiché.
  • Si vous avez réglé la pin en sortie numérique (Output), un bouton vous permet de régler son état logique à Low ou High (par exemple, la LED de la carte Arduino s'allumera si vous réglez la pin 13 à High).
  • Si vous avez réglé la pin en entrée analogique (possible pour les pins 14 à 19, qui sont les entrées A0 à A5), leur valeur entre 0 et 1023 est affichée.
  • Si vous avez réglé la pin en mode "Servo", un curseur vous permet de régler la position du servomoteur.
  • Si vous avez réglé la pin en mode "PWM", un curseur vous permet de régler le rapport cyclique du signal émis.
Admettez que ce petit programme peut se révéler très pratique, ne serait-ce que pour tester le bon fonctionnement de toutes les pins de votre Arduino, vérifier le fonctionnement correct d'un servomoteur, etc.

Dans un prochain article, nous verrons comment utiliser Firmata dans nos propres programme en Python, qui s'exécuteront sur l'ordinateur hôte.


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire