GPIO de l’Orange PI Zero 2 H616

L’Orange PI Zero 2 est une des nombreuses carte Orange Pi offrant des caractéristiques intéressantes:

  • processeur ARM H616 4 coeurs 64 bits
  • ethernet 1GB
  • WIFI + BT
  • RAM 512MB ou 1GB
  • USB 2
  • Micro HDMI
  • OS: DEBIAN . Voir l’article ici pour l’installation
  • prix autour de30€ chez Aliexpress

Pour accéder au GPIO d’un Orange PI, on peut utiliser une des bibliothèque (si elle existe) ou utiliser le système de fichier virtuel Sysfs introduit par le noyau Linux qui permet par des commandes système d’activer les pins du GPIO.

Si la méthode par fichier virtuel Sysfs est simple et s’adapte à toute les cartes, elle ne permet pas de positionner les résistance d’entrée en PULLUP ou PULLDOWN. De plus les actions prennent parfois des ms ce qui rend impossible des contrôles de quelques micro secondes.

Connecteur carte Orange Pi Zero2

La carte Pi Zero 2 dispose d’un connecteur 26 pins suivant le schéma ci dessous.

Pinoutt Orange Pi Zero 2

Pour attaquer une des pins en entrée ou en sortie, il faut trouver la référence du GPIO correspondant. Le tableau ci après est valable pour l’Orange Pi Zero 2 H616 . Ainsi si on veut utiliser la pin 10, elle correspond au GPIO 227. Ce tableau est par exemple différent pour Un Orange Pi One Plus H6 ou le GPIO 227 correspond à la pin 26.

Numérotation pin / GPIO

Exemple Oscillateur sur pin 10

Ci dessous un programme en python 3. Attention, contrainte importante. Il faut être en root pour accéder au GPIO.

#!/usr/bin/python3  Python 3 environment
#-- coding: utf-8 --
import os              # To execute system command
from time import sleep # this lets us have a time delay
numgpio=227
numgpio=str(numgpio)
print ("numgpio:"+numgpio)
os.system("sudo echo "+numgpio+" > /sys/class/gpio/export")
os.system("sudo echo out > /sys/class/gpio/gpio"+numgpio+"/direction")

try:
         print ("Square signal around 50Hz . Press CTRL+C to exit")
         while True:
              os.system("echo 0 > /sys/class/gpio/gpio"+numgpio+"/value")
              sleep(0.01)
              os.system("echo 1 > /sys/class/gpio/gpio"+numgpio+"/value")
              sleep(0.01)


except KeyboardInterrupt:
         # set port/pin value to 0/LOW/False
         os.system("echo 0 > /sys/class/gpio/gpio"+numgpio+"/value") 
         # Clean GPIO
         os.system("sudo echo "+numgpio+" > /sys/class/gpio/unexport")
         print ("Bye from F1ATB.")

pour le lancer, si le programme se trouve sur votre bureau:

python3 /home/utilisateur/Desktop/Nom_du_programme.py

On peut rentrer les commandes à la main depuis une fenêtre de terminal.
La commande …export active le GPIO 227 qui correspond à la pin 10.
La commande direction, ici out pour être en sortie.
Les commandes value alternativement à 0 ou 1 pour faire un oscillateur.

Puis en cas de Ctrl-C, on termine proprement en libérant le GPIO 227.

Pour s’affranchir du problème du root, une solution peut être de lancer le programme à la mise en route de l’Orange PI qui dans ce cas est en root avant de passer en mode utilisateur. Il suffit de modifier le fichier /etc/rc.local (sudo nano /etc/rc.local) . Mettre la commande de lancement avec le chemin en absolu (python . /home/……py) avant l’exit 0 du fichier rc.local. Une autre solution est une tache cron.

Articles autour de l’Orange Pi Zero 2

F1ATB André

Radio Amateur - Domotique - Photovoltaïque

Vous aimerez aussi...

4 réponses

  1. Yves Petit dit :

    Merci André pour cette très intéressante réalisation. Je l’utilise en ce moment pour du trafic en 80m :-), après avoir modifié quelques trucs dans les différents fichiers pour faciliter le passage émission-réception et commuter des filtres passe bas suivant les bandes décamétriques. Ton logiciel très ouvert est très clair et permet de découvrir plein de choses en programmation, réseau, et possibilités de GNU radio. Bref un modèle du genre pour de la pédagogie, à recommander dans tous les radio clubs !
    Meilleures 73 et encore bravo
    Yves (F4HSL)

    • F1ATB André dit :

      Merci pour vos encouragements.
      Quel SDR utilisez-vous en émission et réception?
      Que souhaiteriez-vous comme fonctionnalités nouvelles pour répondre à votre besoin?
      73
      F1ATB

      • Yves Petit dit :

        En émission j’utilise le hackrf one. En réception j’utilise une clé rtlsdr précédée d’un up convertisseur qui ajoute 200 MHz et fait aussi office de LNA (convertisseur construit par SV1AFN). La sensibilité de réception est très correcte, pas beaucoup de différence avec un transceiver du commerce.
        L’ampli hf de 100w (50 db de gain) proposé sur eBay par 60dbm.com fait parfaitement l’affaire. Je vais aussi tester ses filtres commutables (par les pins gpio du raspi4), j’ai modifié le fichier python correspondant.
        J’utilise encore la version 2, faut que je me mette à jour 🙂
        Pour les fonctionnalités qui me semblent intéressantes pour le moment :
        Il serait peut-être intéressant d’avoir les bandes déca dans la liste en émission, pour l’instant j’ai modifié le fichier correspondant .
        J’ai modifié le fonctionnement du bouton txaudio dans le fichier correspondant pour qu’il commute en même temps le rxaudio. Peut-être à mettre en option car c’est plus pratique dans le cas d’un fonctionnement type transceiver.
        Il faut aussi que je regarde la BF car on me dit que la modulation est légèrement granuleuse. Peut-être faudrait-il rajouter aussi un niveau de compression plus élevé pour la BLU (il n’y a pas beaucoup de différences entre les niveaux 1 et 2)
        Je n’ai pas tout testé et je découvre au fur et à mesure les possibilités tout en m’amusant à analyser tous les fichiers 🙂 Je vous tiendrais au courant si vous le souhaitez.
        Pour autant le résultat est spectaculaire pour un TX expérimental en vrac sur mon établi !
        Meilleures 73
        Yves

        • F1ATB André dit :

          Ok pour votre configuration. C’est intéressant pour le déca.

          Il faudrait passer en version 4.1, cela répondrait à certaines de vos remarques.
          Pour la modulation entre les niveaux 1 et 2, il y a peu de différence sauf qu’en 2, il y a un plus de distorsion.
          Actuellement je travaille sur la version 4.2 qui aura un equaliser sur l’audio du microphone en émission. En ligne d’ici 1 à 2 semaines.