GPIO de l’Orange PI One Plus H6
L’Orange PI One plus est une des nombreuses carte Orange Pi offrant des caractéristiques intéressantes:
- processeur ARM H6 4 coeurs 64 bits
- ethernet 1GB
- USB 2
- HDMI
- OS: ARMBIAN . Voir l’article ici pour l’installation
- prix <30€ avec l’alimentation chez Aliexpress
Pour accéder au GPIO d’un Orange PI, on peut utiliser une des bibliothèque comme OPI.Gpio. Dans le cas de l’Orange Pi One Plus, il faut en tête de programme python faire les déclarations suivantes:
import orangepi.oneplus
from OPi import GPIO
Cette bibliothèque utilise 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. Dans les lignes qui suivent on traitera de ces commandes sans utiliser la bibliothèque OPI.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 Py One Plus
La carte One Plus dispose d’un connecteur 26 pins suivant le schéma ci dessous.
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 One Plus H6. Ainsi si on veut utiliser la pin 26, elle correspond au GPIO 227.
1 | 3.3V | 2 | 5V |
3 | TWI1-SDA / PH6 / GPIO230 | 4 | 5V |
5 | TWI1-SCK / PH5 / GPIO229 | 6 | GND |
7 | PWM1 / PH4 / GPIO228 | 8 | UART2-RTS / PD21 / GPIO117 |
9 | GND | 10 | UART2-CTS / PD22 / GPIO118 |
11 | UART3-RX / PD24 / GPIO120 | 12 | SDC2-D3 / PC9 / GPIO73 |
13 | UART3-TX / PD23 / GPIO119 | 14 | GND |
15 | UART3-CTS / PD26 / GPIO122 | 16 | SDC2-D2 / PC8 / GPIO72 |
17 | 3.3V | 18 | SPI0-WP / PC7 / GPIO71 |
19 | SPI0-MOSI/ PC2 / GPIO66 | 20 | GND |
21 | SPI0-MISO / PC3 / GPIO67 | 22 | UART3-RTS / PD25 / GPIO121 |
23 | SPI0-CLK / PC0 / GPIO64 | 24 | SPI0-CS / PC5 / GPIO69 |
25 | GND | 26 | SPI1-CS / PH3 / GPIO227 |
Exemple Oscillateur sur pin 26
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 26.
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.
- Remote SDR V5 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v5 – Installation manuelle
- Remote SDR v5
- Écoute Satellite QO-100 en direct
- RTTY
- Dépannage
- Émetteur – Récepteur pour QO-100
- SSTV
- WSJT-X – FT8
- Omnirig – Remote SDR
- Ports de communication
- Générateurs de tonalités
- Positionnement sorties GPIO
- Scanning en réception
- Gains et Dynamiques
- Gestion des fréquences
- Lancement de Remote SDR
- Refroidissement CPU
- Autorisation traitement audio et microphone
- Configurations
- Caractéristiques
- Introduction à Remote SDR
- Remote SDR – Canaux Audio
- CW avec Remote SDR
- Bouton Rotatif et Manipulateur Morse pour Remote SDR
- VHF et UHF NBFM Transceiver
- Remote SDR v4
- Gpredict – Remote SDR
- Remote SDR V4 – Installation image Raspberry 4B ou Orange Pi
- Remote SDR v4 – Installation manuelle
- SA818 / RTL-SDR
- Remote SDR – Exemples de Réalisations
- QSO via QO-100 avec un smartphone
- Remote SDR V2 – Architecture Logiciel
- Remote SDR V1 – Approvisionnements
- Remote SDR V1 – Interface Homme Machine
- Remote SDR V1 – Traitement du Signal
- Client Web vers GNU Radio
- GNU Radio vers client Web
- Emetteur BLU distant
- Récepteur BLU distant
- GPIO de l’Orange PI One Plus H6
- Émetteur et récepteur vers Q0-100 avec 2 SDR – Remote SDR V1
- Installation TCXO sur un HackRF
Bonjour cher OM,
Tout d’abord, merci pour ce travail mis à notre disposition.
J’utilise une solution QO-100 à base d’un Adalm-Pluto et SDR Console. Cela fonctionne très bien.
Intéressé par la solution remote avec un Rasberry PI 4 j’ai installé votre solution.
Fonctionnement sans problème sur la réception. Par contre pas d’émission.
Coté logiciel semble fonctionner. Je crains un manque de PTT vers le Pluto.
Il y a t-il un paramètre que j’ai négliger quelque part ?
Merci pour votre aide.
Sotos F6BZQ
Problème résolu, le firmware du Pluto n’étant pas celui d’origine, il ne pouvait communiquer avec Remote SDR et l’interface Soapy.
73