gpiolib.bbc
gpiolib.bbc
DESCRIPTION.
Le module gpiolib.bbc propose des procédures et des fonctions permettant d'utiliser et gérer les broches du GPIO d'un Raspberry.
SYNTAXE.
INSTALL @lib$ + "gpiolib.bbc"
REMARQUES.
Le module gpiolib.bbc permet d’accéder directement aux registres GPIO via /dev/gpiomem (mémoire mappée). Il s’adapte automatiquement aux modèles : Raspberry Pi 2 / 3 / 4 ou Raspberry Pi 5, qui dispose d'une architecture différente.
Le Raspberry Pi est un nano-ordinateus ultra-performant propulsés par un processeur quadricœur Arm Cortex-A76 à 2,4 GHz, offrant une puissance supérieure. Il innove en intégrant des transferts de données optimisés et une connectique PCIe 2.0 permettant l'ajout facile de disques SSD NVMe ultrarapides. Équipé d'un bouton d'alimentation, d'une horloge temps réel et gérant un double affichage 4K parfaitement fluide, il offre le confort d'un véritable ordinateur compact.
Ses fonctionnalités ouvrent la voie à des possibilités infinies : bureautique, 2d ou 3d, création de serveurs rapides, systèmes de domotique complexes, ou centres multimédias exigeants. Il devient ainsi la plateforme idéale pour explorer l'intelligence artificielle, la robotique avancée et l'émulation de jeux vidéo sans aucun compromis sur les performances.
Le GPIO (General Purpose Input/Output) est l'une des fonctionnalités les plus puissantes du Raspberry Pi. C'est une rangée de 40 broches qui permet à la carte mère de communiquer avec des composants électroniques externes : capteurs, moteurs, LED, écrans, etc. Certaines broches ont des fonctions dédiées ou alternatives lorsqu'elles sont activées.
Alimentation (Power) : Fournit du courant (3.3V et 5V) pour alimenter vos circuits Masse (Ground / GND) : Ferme le circuit électrique (0V).
I2C (Inter-Integrated Circuit) : Protocole de communication synchrone permettant de connecter de multiples capteurs ou écrans en utilisant seulement deux broches (SDA pour les données, SCL pour l'horloge).
SPI (Serial Peripheral Interface) : Protocole de communication plus rapide que l'I2C, idéal pour les écrans ou les lecteurs de cartes SD, nécessitant quatre broches (MOSI, MISO, SCLK, CE).
UART (Serial) : Port série asynchrone (TX et RX) souvent utilisé pour communiquer avec un ordinateur, un module GPS ou un microcontrôleur.
PWM (Pulse Width Modulation) : Bien que toutes les broches puissent simuler du PWM via logiciel, certaines offrent un PWM matériel (Hardware PWM) beaucoup plus précis, indispensable pour contrôler la vitesse d'un moteur ou la position d'un servomoteur avec fluidité.
Important : la gestion du GPIO du modèle Raspberry Pi 5 étant différente des modèles antérieurs, il peut être nécessaire de savoir quel est le modèle sur lequel est exécuté le programme afin d'adapter le script, en particulier pour placé une broche en mode alternatif. Par exemple avec :
kmodele = FN_ModeleRPI
PRINT "Modele detecte : Raspberry Pi "; STR$ ( kmodele )
END
REM --- Detection du modele du Raspberry hote ---
DEF FN_ModeleRPI
LOCAL kfichier% , kmodele$ , kmessage$
REM --- Méthode 1 : device-tree (meilleure) ---
kfichier% = OPENIN( "/proc/device-tree/model" )
IF kfichier% THEN
kmodele$ = GET$#kfichier% BY 100
CLOSE #kfichier%
ELSE
kfichier% = OPENIN( "/proc/cpuinfo" )
IF kfichier% THEN
kmessage$ = GET$#kfichier% BY &ffff
CLOSE #kfichier%
kmodele$ = kmessage$
ENDIF
ENDIF
IF INSTR( kmodele$ , "Raspberry Pi 5" ) THEN = 5
IF INSTR( kmodele$ , "Raspberry Pi 4" ) THEN = 4
IF INSTR( kmodele$ , "Raspberry Pi 3" ) THEN = 3
IF INSTR( kmodele$ , "Raspberry Pi 2" ) THEN = 2
REM --- Méthode 2 : Vérification matérielle (fallback) ---
SYS "open" , "/dev/gpiomem0" , 2 TO kfichier%
IF kfichier% >= 0 THEN
SYS "close" , kfichier%
= 5
ENDIF
SYS "open" , "/dev/gpiomem" , 2 TO kfichier%
IF F% >= 0 THEN
SYS "close" , kfichier%
= 3 : REM - valeur generique pour les modeles Pi 2/3/4
ENDIF
= 0 : REM - ce n'est pas un raspberry ou modele non reconu
REM --- Fin de la fonction FN_ModeleRPI ---
Pour plus de détails, sur les innombrables possibilités des Raspberry, consultez le site raspberry.com.
Le module doit être chargé depuis votre programme à l'aide de l'instruction : INSTALL @lib$ + "gpiolib.bbc"
LISTE DES PROCEDURES DU MODULE.
FN_gpio_all() : retourne l'état de toutes les broche du GPIO.
FN_gpio_get() : retourne l'état d'une broche du GPIO.
FN_gpio_pad() : retourne l'adresse mémoire d'une broche du GPIO. (Pi 5 uniquement)
FN_gpio_setup : initialise le module.
PROC_gpio_alt() : place une broche du GPIO en mode alternative (SPI, I2C, UART, ...).
PROC_gpio_clr() : place une broche du GPIO en mode low, connectée au GND.
PROC_gpio_inp() : place une broche du GPIO en mode entrée.
PROC_gpio_out() : place une broche du GPIO en mode sortie.
PROC_gpio_pud() : permet de configurer la résistance interne d’une broche GPIO.
PROC_gpio_set() : place une broche du GPIO en mode high, connectée au 3,3 v.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.