Piloter Arduino depuis un PC avec Python et Boa Constructor Par Hervé Troadec D

Piloter Arduino depuis un PC avec Python et Boa Constructor Par Hervé Troadec Date de publication : 19 janvier 2019 Les platines « Arduino » sont, de par leur conception basée sur un « microcontrôleur », destinées à travailler de manière autonome, embarquées sur un système, quel qu’il soit. Ceci dit, on peut très bien les utiliser comme interface physique sur un ordinateur pour piloter directement des matériels ou récupérer, à fin de traitement, des informations issues de capteurs. Les données, qu’elles soient des commandes ou des informations, transiteront par la connexion USB. C’est de cette façon que sont pilotées les imprimantes 3D, style « RepRap », ou les petites machines « CNC », de gravure de circuit imprimé par exemple. Pour cela, deux programmes sont nécessaires : le « donneur d’ordre », tournant sur l’ordinateur, et le « pilote », animant le microcontrôleur, qui, comme son nom l’indique, pilotera les matériels en réponse aux ordres reçus. Le programme animant le microcontrôleur utilisera le « Langage Arduino » tandis que celui tournant sur l’ordinateur (PC) sera écrit, dans ce tutoriel, en « Python ». Ce tutoriel se propose de vous montrer, à l’aide d’une réalisation très simple, comment réaliser ces deux programmes de façon à les faire interagir. Commentez Piloter Arduino depuis un PC avec Python et Boa Constructor par Hervé Troadec I - Avertissement..........................................................................................................................................................3 I-A - Boa Constructor..............................................................................................................................................3 I-B - Cartes Arduino............................................................................................................................................... 3 II - Avant-propos.......................................................................................................................................................... 3 III - Prérequis............................................................................................................................................................... 4 III-A - Environnement matériel............................................................................................................................... 4 III-B - Environnement logiciel................................................................................................................................. 4 IV - Contexte................................................................................................................................................................5 V - Introduction............................................................................................................................................................ 5 VI - Le programme Arduino.........................................................................................................................................6 VI-A - Structure du sketch Arduino........................................................................................................................6 VI-B - Utilisation de la LED intégrée......................................................................................................................7 VI-C - Changement d’état d’une broche................................................................................................................9 VI-D - Utilisation de la bibliothèque « Serial ».....................................................................................................10 VI-D-1 - Initialisation........................................................................................................................................10 VI-D-2 - Réception des données....................................................................................................................11 VI-D-3 - Traitement du message.................................................................................................................... 13 VII - Programme console Python.............................................................................................................................. 22 VII-A - Structure d’un script Python..................................................................................................................... 22 VII-B - Le programme Python..............................................................................................................................23 VII-B-1 - Importation des bibliothèques.......................................................................................................... 23 VII-B-2 - Établissement de la liaison série..................................................................................................... 24 VII-B-2-a - Nommage de l’instance...........................................................................................................24 VII-B-2-b - Identifiant système du port......................................................................................................24 VII-B-2-c - Vitesse de transmission des données.....................................................................................25 VII-B-2-d - Initialisation.............................................................................................................................. 25 VII-B-2-e - Ouverture du port.................................................................................................................... 26 VII-B-3 - Un premier script opérationnel.........................................................................................................26 VII-B-4 - Intégration du retour d’informations................................................................................................. 29 VII-B-5 - Un script amélioré............................................................................................................................31 VIII - Boa Constructor................................................................................................................................................ 33 VIII-A - RAD Boa Constructor..............................................................................................................................33 VIII-B - Création d’une application.......................................................................................................................35 VIII-C - Réalisation de la maquette......................................................................................................................39 VIII-C-1 - Premiers pas...................................................................................................................................39 VIII-C-2 - Utilisation des composants............................................................................................................. 41 VIII-C-2-a - Sélection et personnalisation des composants......................................................................42 VIII-C-2-b - Les gestionnaires d’évènement..............................................................................................46 VIII-C-2-c - Affichage d’une image à partir d’un fichier.............................................................................50 VIII-D - La liaison série........................................................................................................................................ 53 VIII-E - Traitement du retour d’informations.........................................................................................................54 VIII-F - Pour aller plus loin...................................................................................................................................55 VIII-F-1 - Optimisation du code...................................................................................................................... 56 VIII-F-2 - Style de la fenêtre...........................................................................................................................58 VIII-F-3 - En bonus......................................................................................................................................... 62 IX - Annexe................................................................................................................................................................64 IX-A - Écriture classique du GUI......................................................................................................................... 64 IX-B - Autorisation d’accès au port série.............................................................................................................66 IX-C - Identifiant de port...................................................................................................................................... 66 X - Conclusion........................................................................................................................................................... 68 XI - Remerciements...................................................................................................................................................69 - 2 - Le contenu de cet article est rédigé par Hervé Troadec et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2018 Developpez.com. http://herve-troadec.developpez.com/tutoriels/arduino/initiation-boa/ Piloter Arduino depuis un PC avec Python et Boa Constructor par Hervé Troadec I - Avertissement I-A - Boa Constructor Comme je l’expliquerai dans la section concernant Boa Constructor, l’avenir de ce RAD est incertain, et il peut sembler peu judicieux, comme on m’en a fait la remarque tout à fait justifiée, de l’incorporer à un tutoriel. J’en suis parfaitement conscient, mais il s’agit, pour moi, d’un choix rédactionnel, destiné à essayer de faire connaître cet environnement de développement. Plus il sera téléchargé, plus il y aura de retours, et plus les développeurs seront motivés pour le faire évoluer. Gardez cependant bien à l’esprit que ce tutoriel ne dépend pas de BOA Constructor, lequel n’est là que pour réaliser une interface graphique optionnelle, qui est indépendante des mécanismes de pilotage de l’Arduino UNO depuis un script Python. Toutefois, dans le cas où la réalisation de cette interface graphique serait votre principale motivation pour suivre ce tutoriel mais que l’initiation à Boa Constructor ne vous intéresse pas, ce qui est parfaitement légitime, je joins, au chapitre IX.A.Écriture classique du GUI, un script Python réalisant la même interface que celle réalisée avec Boa Constructor, utilisant également la boite à outils graphique wxPython, mais écrite de manière classique. Comme ce script n’utilise que des bibliothèques parfaitement maintenues, sa pérennité et celle des scripts que vous développerez sur le même modèle est assurée. I-B - Cartes Arduino Les cartes Arduino ciblées en premier lieu par ce tutoriel, sont celles qui sont basées sur le microcontrôleur Atmel ATMega328, présent notamment sur la carte Arduino UNO, carte utilisée ici, et fonctionnent correctement en gardant le paramétrage par défaut de la liaison série (bibliothèque pySerial) dans le script Python. J’ai été informé que les cartes basées sur un autre microcontrôleur, comme l’ATmega32u4, peuvent nécessiter un paramétrage différent sous peine de plantage possible du script. N’ayant que des cartes Arduino UNO à ma disposition, je ne peux pas effectuer les tests de paramétrage avec ces autres cartes, et vous serez donc peut-être contraint à effectuer ces tests vous-même en cas de dysfonctionnement. II - Avant-propos Ce tutoriel s’adresse à des néophytes dans l’univers Arduino ou en programmation Python. L’EDI Arduino et l’interpréteur Python étant multiplateformes, de même que le RAD Boa-Constructor et wxPython, il pourra être utilisé dans les environnements courants, moyennant un petit effort d’adaptation. PRÉCISION : ce n’est pas un cours de programmation. Il faut plutôt voir ce tutoriel comme un mode d’emploi. Je vais toutefois m’efforcer de décrire au moins les instructions utilisées. Vous trouverez sur developpez.com des tutoriels Python et un aperçu de la plateforme Arduino qui vous permettront d’acquérir ou de consolider vos connaissances, sans oublier bien entendu, sur la toile, les incontournables et indispensables Référence Arduino et Documentation Python, en anglais malheureusement. Ce tutoriel, et c’est le cas pour nombre d’entre eux, n’a aucunement la prétention d’inventer quelque chose. Des recherches sur la toile et sur developpez.com permettraient sans aucun doute de s’en passer. Il offre simplement l’opportunité à ceux qui seront intéressés, outre de gagner du temps, d’aborder trois aspects de la programmation regroupés dans un même article pour une réalisation fonctionnelle, peu coûteuse, simple mais extrapolable à l’envi. Il suffira d’un peu d’imagination (et de travail). - 3 - Le contenu de cet article est rédigé par Hervé Troadec et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2018 Developpez.com. http://herve-troadec.developpez.com/tutoriels/arduino/initiation-boa/ Piloter Arduino depuis un PC avec Python et Boa Constructor par Hervé Troadec Si je pars du principe que vous êtes néophyte dans l’univers Arduino ou en programmation Python, je pars également du principe que vous connaissez votre système d’exploitation. Je n’entrerai donc pas (ou peu) dans les détails pour les manipulations liées à ce dernier. III - Prérequis III-A - Environnement matériel Côté PC, plusieurs possibilités s’offrent à vous : • ordinateur de bureau ; • ordinateur portable ; • nano-ordinateur (Raspberry Pi, Orange Pi) ; • et d’une manière générale tout ordinateur tournant, par ordre alphabétique, sous GNU-Linux, macOS© ou Windows©, à base de processeur AMD©, ARM© ou Intel©, également par ordre alphabétique, sur lequel l’EDI (Environnement de Développement Intégré) Arduino et l’interpréteur Python peuvent être installés, et muni d’au moins une prise USB libre. Côté Arduino, vous avez également le choix : • Arduino UNO, carte avec laquelle ce tutoriel a été réalisé, et son câble USB ; • et d’une manière générale toute carte Arduino généraliste, sous réserve d’une éventuelle adaptation du texte. La carte Arduino UNO a été choisie en raison de son utilisation à priori préférentielle par les débutants et son adaptation à une multitude de projets, en raison de son faible coût (on la trouve actuellement pour une dizaine d’euros), et aussi, et surtout, parce que c’est la carte avec laquelle je fais travailler mes neurones. Voici un exemple d’environnement : III-B - Environnement logiciel Outre le système d’exploitation que vous utilisez, vous aurez besoin de : - 4 - Le contenu de cet article est rédigé par Hervé Troadec et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2018 Developpez.com. http://herve-troadec.developpez.com/tutoriels/arduino/initiation-boa/ Piloter Arduino depuis un PC avec Python et Boa Constructor par Hervé Troadec • l’EDI Arduino ; • l’interpréteur Python 2.7 ; • la bibliothèque wxPython 3.0.2 ou supérieure uploads/Geographie/ boarduino.pdf

  • 61
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager