Main

Débuter avec Arduino : Introduction |Materiel | Logiciel | Installation | Fonctions Pyduino | Dépannage

Introduction à Pyduino


1.  Qu'est-ce que Arduino ?

Je pense que vous savez ce qu'est Arduino : c'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire, compiler et transférer le programme vers la carte à microcontrôleur.

Arduino peut être utilisé pour développer des objets interactifs, pouvant recevoir des entrées d'une grande variété d'interrupteurs ou de capteurs, et pouvant contrôler une grande variété de lumières, moteurs ou toutes autres sorties matérielles. Les projets Arduino peuvent être autonomes, ou bien ils peuvent communiquer avec des logiciels tournant sur votre ordinateur (tels que Flash, Processing ou MaxMSP). Les cartes électroniques peuvent être fabriquées manuellement ou bien être achetées pré-assemblées; le logiciel de développement open-source peut être téléchargé gratuitement.

Le langage de programmation Arduino est une implémentation de Wiring, une plateforme de développement similaire, qui est basée sur l'environnement multimédia de programmation Processing.

2.  Qu'est-ce que Pyduino ?

Depuis peu (2012/2013), il existe de nouvelles cartes électroniques, véritables mini-PC de la taille d'une carte de crédit tournant sous Gnu/Linux et qui disposent de broches d'entrées sorties à la façon Arduino : sorties numériques, entrées numériques, PWM et même entrées analogiques ainsi que les communications sérielles usuelles (UART, SPI, I2C, ...)

Du coup, se pose la question du "comment programmer facilement les broches E/S ? " de ces plateformes ? Plusieurs langages sont possibles (C/C++, Java, Python...) et plusieurs environnements de développement également. Certains proposent même un IDE Arduino adapté pour contrôler les broches E/S de la plateforme : mais cette solution ne permet pas d'interagir simplement avec le système lui-même (vidéo, fichiers, sons, etc...)

D'autre part, les plateformes en question ont des ressources limitées en terme de RAM, de puissance de calcul de la CPU, comparativement à un PC de bureau (mais beaucoup plus qu'une carte Arduino !)

C'est ici que Pyduino intervient : permettre de coder "à la façon Arduino" au sein d'un code Python ! Les avantages sont nombreux :

  • on potentialise ce que l'on connaît déjà (=le langage Arduino), à quelques adaptations mineures près (la syntaxe Python diffère légèrement de la syntaxe C/C++)
  • on peut interagir très facilement avec le système : enregistrement de donnée dans les fichiers, capture vidéo, lecture fichier sons ou bruitages, réseau, etc...
  • on peut même créer de vraies interfaces graphiques interactives interagissant avec les E/S de la plateforme : affichage sous forme graphique d'une valeur numérique
  • tout en optimisant au mieux les ressources disponible sur la carte mini-PC (le langage Python et le logiciel Geany ne prennent que 10Mo de place en mémoire NAND (ou carte SD) contre 200Mo pour Java + suite avr-c + IDE Arduino (!) par exemple... no comment !)

3.  La preuve par l'exemple

En langage Arduino natif :

void loop() {
        digitalWrite(LED,HIGH); // allume la LED
        Serial.println("La LED est allumée !");

        delay(1000) ;  // pause en millisecondes

        digitalWrite(LED,LOW); // eteint la LED
        Serial.println("La LED est éteinte !");

        delay(1000) ; } // pause en millisecondes

En Pyduino:

def loop():
        digitalWrite(LED,HIGH) # allume la LED
        Serial.println("La LED est allumée !")

        delay(1000) # pause en millisecondes

        digitalWrite(LED,LOW) # eteint la LED
        Serial.println("La LED est éteinte !")

        delay(1000) # pause en millisecondes

4.  Pourquoi Pyduino ?

  • Multi-cartes : Potentiellement, Pyduino est indépendant du matériel. Pyduino est porté initialement sur le pcDuino, une plateforme mini-PC performante disposant d'un connecteur "Arduino-like" et surtout de broches analogiques. Pyduino va être prochainement disponible pour le raspberryPi, et d'une manière générale est facile à adapter à toute nouvelle carte mini-PC fonctionnant sous Gnu/Linux.
  • Un environnement de programmation léger, clair et simple: L'environnement de programmation nécessaire pour coder avec Pyduino ne nécessite que des ressources légères parfaitement adaptées au système Gnu/Linux installé sur ces mini-PC. L'éditeur conseillé pour écrire les programmes est à coloration syntaxique intégrée et auto-complétion : il est donc plus puissant que l'IDE Arduino lui-même pour coder.
  • Logiciel Open Source et extensible : Le langage Python sur lequel est basé Pyduino, les logiciels utiles pour développer avec Pyduino ainsi que la librairie Pyduino sont publiés sous licence open source (GPLv3), disponible pour être complété par des programmeurs expérimentés ou motivés. La librairie Pyduino pourra être étendue, adaptée à volonté en fonction de ses besoins.
  • Matériel Open source et extensible : Les cartes utilisés avec Pyduino sont dans la mesure du possible de type "Open-hardware", c'est à dire que leur structure interne est connue. Par contre, la complexité de ces cartes empêche de les créer soi-même facilement : ce sont quand même de vrais mini-PC, des bijoux de technologie et de miniaturisation ! Noter que dans certains cas, tel ou tel aspect des matériels utilisés est sous licence propriétaire, mais dans tout les cas, le système d'exploitation installé est opensource et libre, à savoir Gnu/Linux. Encore une fois, Pyduino n'est pas dépendant de la plateforme : cet aspect donne la garantie de pouvoir rester maître de ses développements.
  • Programmation et interaction dans un même code des broches E/S et des fonctions avancées du système installé : Pyduino est la meilleure solution aussi bien en terme de légèreté d'exécution et de développement que de possibilités d'évolution pour intégrer dans un même code la programmation des broches E/S numériques, analogiques et les fonctions avancées du système. Déclencher la capture d'une photo lors de l'appui sur un bouton poussoir et l'envoyer sur le réseau ? Pyduino peut le faire en quelques lignes de code.
  • Pour apprendre le langage Python en douceur : Pyduino est une excellente façon d'entrer dans le monde du langage Python, un langage extrêmement puissant qui n'a pas de limite : calcul scientifique, librairies graphiques avancées, calcul astronomique, serveur web, traitement d'image... C'est un univers immense qui s'ouvre à vous !

5.  Comment faire pour utiliser Pyduino ?

Voir le guide pour débuter.

6.  Avantages de pyDuino s'exécutant sur un mini-PC

  • Un avantage majeur concerne la puissance de calcul : il n'y a pour ainsi dire pas de limite en précision des nombre à virgules, des valeurs entières, il est possible d'utiliser des constantes physiques complexes dans des calculs, etc... relativement facilement. Ainsi, pour toutes les situations où la précision ou la complexité des calculs est importante (traqueur solaire, etc...), l'avantage de pyDuino est évident.
  • Dès lors que l'on souhaite faire interagir des dispositifs de "bas niveau" avec des fonctions avancées du système (réseau, vidéo, sons, fichier, etc..), exécuter pyDuino est l'idéal !
  • Pour tous les projets mettant en jeu des manipulations de chaînes de caractère, de fichier texte important (serveur http avec réponse html, serveur Ajax + javascript, etc... ), utiliser un mini-PC est la solution idéale : vous n'aurez plus à vous soucier de l'espace disponible et vous allez pouvoir vous concentrer sur votre code et vos fichiers.

7.  Limites de pyDuino s'exécutant sur un mini-PC

  • Le système s'exécute sans être au contact direct du matériel et cette "distance" logicielle entraîne des lenteurs de réactivité. Donc pour toutes les situations où une précision du contrôle hardware est essentielle ou primordiale (interruptions, nombreux servomoteurs, etc...), la plateforme Arduino simple est préférable. L'autre alternative est l'utilisation d'un circuit électronique dédié de contrôle qui sera contrôlé simplement par les broches E/S du mini-PC.
  • Sur une carte miniPC, qui intègre un système d'exploitation ayant de nombreuses tâches à gérer, il ne faut pas espérer obtenir une fréquence d'écriture sur une broche aussi élevée que sur une carte à micro-contrôleur telle que l'Arduino. On pourra sans difficulté écrire de 100 à 5000 fois sur une broche par seconde (hors PWM) : au-delà, soit utiliser une impulsion PWM (produite par un module dédié du processeur), soit basculer sur une carte Arduino. J'ai envie de dire que si l'on a de tels besoins, alors que l'on utilise un mini-PC, c'est probablement que le projet est mal pensé...

En clair, un miniPC offre des fonctionnalités avancées non disponibles sur une carte à microcontrôleur (capture vidéo, fichiers texte-son-image-vidéo, serveur Apache, puissance et précision de calcul, programmation distante, contrôle sans fil ou par réseau...) alliée à des fonctionnalités typiquement fournies par un microcontrôleur, mais de qualité moindre, tout en étant largement acceptables. Si les besoins de performance de "bas niveau" sont prioritaires :

  • soit utiliser une carte Arduino couplée au mini-PC (communication USB),
  • soit se rabattre sur une carte Arduino seule si on n'a pas besoin des fonctionnalités avancées,
  • soit utiliser une carte externe dédiée qui communiquera avec le mini-PC par I2C ou SPI.""

L'intérêt majeur d'un miniPC réside davantage dans l'alliance sur un même système des fonctionnalités avancées de "haut niveau" avec des fonctionnalités de "bas niveau", certes limitées mais satisfaisantes, permettant de mixer à loisir dans un même programme les fonctionnalités de tout type : c'est çà la nouveauté très intéressante !

8.  Commentaires utilisateurs

  • Comparativement à Processing, Pyduino est beaucoup plus léger en utilisation des ressources système, y compris pour le codage d'interface graphique, et permet une évolution de codage beaucoup plus grande. Pyduino pourra s'utiliser avec opencv, opengl, etc... assez simplement.

Page d'accueil de la section "Pour Debuter" Pyduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur à l'adresse support_at_mon-club-elec.fr

Cette page a été créée réalisée par Xavier HINAULT (2013) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.