mardi 27 octobre 2015

Contrôler les pins GPIO de l'OrangePi PC

Mise à jour (1er janvier 2017): Dans cet article, je fais référence à l'OS Rasbpian pour OrangePi PC, qui semblait la meilleure option à l'époque. De nos jours, il est nettement préférable d'utiliser Armbian).

Je vous présente aujourd'hui quelques conseils pour interagir avec les pins GPIO de l'OrangePi PC par l'intermédiaire d'un script en python. Nous allons d'abord faire clignoter une LED, puis lire l'état d'un bouton poussoir.

Tout d'abord, je précise que j'ai fait tous mes tests en utilisant Raspbian (version pour OrangePi PC disponible ici). En principe, je suppose que ça devrait fonctionner avec n'importe quelle distro conçue pour l'OrangePi PC, mais la semaine dernière j'avais essayé sans succès sous Linux Vivid Mate (version Loboris), et l'installation de la bibliothèque avait échoué.

Installation de la bibliothèque OrangePi PC GPIO pyH3

Pour interagir avec les pins GPIO en python, j'ai installé la bibliothèque "OrangePi PC GPIO pyH3" qui a été mise au point par un utilisateur de l'OrangePi PC à partir d'une bibliothèque mise au point chez Olymex pour une autre carte utilisant le même processeur.  Tout d'abord, vous téléchargez le fichier sur votre OrangePi (bouton "Download Zip" à droite de la page), vous le décompressez, et vous exécutez le script d'installation en écrivant "python setup.py install" dans le terminal.


Numérotation des pins

Tout comme pour le Raspberry Pi, il existe deux façons de numéroter les pins GPIOs de l'OrangePi PC.  En mode "connector", les pins sont numérotées dans le même ordre que leur disposition sur la carte.  Il s'agit des mêmes numéros que pour le Raspberry Pi en mode "board".  En mode "port", les pins sont numérotées en fonction de leur disposition sur le processeur.

Le schéma ci-dessous montre le numéro des 40 pins en mode "connector" (en bleu) et en mode "port" (en jaune).


Par exemple, vous pouvez constater que la pin qui porte le numéro 3 en mode "connector" est désignée "PA12" en mode "port".  Ainsi, vous pouvez accéder à cette pin en l'appelant "port.PA12" ou encore "connector.gpio1p3".

La pin qui porte le numéro 40 en mode "connector" est désignée "PG7" en mode "port".  Vous pouvez donc l'appeler "port.PG7" ou "connector.gpio1p40".

J'ai toutefois remarqué que les pins 11 et 13 sont interverties en mode "connector", dans la bibliothèque:  "connector.gpio1p11" fait référence à la pin 13, et "connector.gpio1p13" fait référence à la pin 11! (Ce sera certainement réparé dans une future version de la bibliothèque).

Autre bizzarerie: pour faire fonctionner la pin 13, je dois l'appeler "port.PA0", mais d'après le manuel d'utilisateur de l'OrangePi PC, elle devrait s'appeler PA2.

Pin en sortie:  clignotement d'une LED

Voici, comme premier exemple, l'utilisation de la pin 3 (PA 12) en sortie, pour faire clignoter une LED.



Ce script utilise la désignation "port":


Ce script fait la même chose, mais utilise le mode "connector":


Pin en entrée: lecture d'un bouton poussoir

Voici maintenant un exemple d'utilisation de la pin 3 (PA 12) en entrée, afin de lire l'état d'un bouton poussoir.



Voici le script en version "port":


Et voici le script en version "connector":


Un message nous indique l'état du bouton chaque fois qu'il change:



Yves Pelletier   (TwitterFacebook)

2 commentaires:

  1. Merci pour cet article ! génial !

    RépondreSupprimer
  2. Fantastique ! J'attends avec impatience mes 2 cartes !
    Mes tes articles mettent l'eau à la bouche, merci

    RépondreSupprimer