GÉNÉRALITÉS SUR L'EXPÉRIMENTATION


AU MENU

  1. Objet

  2. Logiciels nécessaires
    1. Système d'exploitation
    2. Logiciels de commande du matériel
      1. Mise en oeuvre de lignes de commande suite au chargement de surcouches
      2. Mise en oeuvre du langage python 3

  3. Matériel mis en œuvre

  4. Remarques préliminaires à l’expérimentation
    1. Cathode et anode
    2. Quitter un programme en cours d'exécution
    3. Point décimal
    4. Programmation
    5. Entrées analogiques

1. Objet

L’objet est de programmer les broches GPIO des cartes Raspberry Pi 4B, RTk.GPIO et Raspberry Pi 5 comme interfaces avec des composants électroniques, tels que des LED et des moteurs. C’est de l’informatique physique.

2. Logiciels nécessaires

2.1 Système d'exploitation

Par cohérence avec le système d’exploitation de mon ordinateur portable, j'ai d'abord choisi UBUNTU comme système d'exploitation pour le Raspberry Pi 4B.
Dans un second temps, des difficultés m'ont conduit à choisir Raspberry Pi OS, le système d'exploitaion développé pour Raspberry Pi.
C'est également Raspberry Pi OS qui a été choisi pour expérimenter le Raspberry Pi 5 lorsque celui-ci est arrivé.
En ce qui concerne le module matériel RTk.GPIO, il ne faut pas choisir de système d'exploitation puisque c'est celui d'ordinateur auquel la carte est connectée par interface USB2.

2.2 Logiciels de commande du matériel

L’informatique physique, la programmation des broches GPIO, se fonde ensuite sur la mise en œuvre de différents langages de plus ou moins hauts niveaux.

2.2.1 Mise en oeuvre de lignes de commande suite au chargement de surcouches

https://www.framboise314.fr/un-point-sur-le-device-tree/

La version 12 du Raspberry Pi OS (bookworm), utilise par défaut Device Tree (Arborescence Matérielle) pour gérer certaines allocations des ressources et les chargements de modules. L’objectif de ce changement est de diminuer le problème d’accès concurrent aux ressources du système par plusieurs pilotes, et de permettre la configuration automatique de modules spécifiques.
Des accès simples sont aussi possibles directement sous Linux ou sous forme de fichiers shell .

Il s'agit de surcouches logicielles dans l’arbre des commandes Linux. On les ajoute en cas de besoin. On peut les ajouter directement dans le fichier de configuration ( /boot/firmware/config.txt) et les surcouches ajoutées sont alors toujours disponibles dès le démarrage suivant. Cette pratique, bien que préconisée, présente plusieurs désavantages :

Nous avons donc choisi d'ajouter la surcouche matérielle voulue uniquement pour la session en cours, sachant que la surcouche ajoutée peut être supprimée en cours de session.

Comme on va le voir dans les sections suivantes, le chargement d'une surcouche matérielle conduit souvent à définir des variables dans des répertoires spécifiques Linux.

2.2.2 Mise en oeuvre du langage python 3

En cohérence avec ce qui a été développé pour Raspberry Pi 4 et 5, c'est le langage python3 qui a été choisi pour la prise en charge des composants et modules mis en oeuvre. On aurait pu utiliser Scratch ou mieux C++.

Beaucoup de logiciels sont préinstallés. Pour certaines expérimentations, il faudra cependant installer des bibliothèques complémentaires composées de "classes" python3.

L’ensemble des fonctions python sont rassemblées dans des bibliothèques, des rayonnages et des livres. Mais ce n’est pas le vocabulaire employé. Ici ce sont les termes python, "classe", "sous-classe" et "méthode" qui sont employés.

Qu’importe le système d’exploitation, python3 est lancé depuis un terminal. Si on veut exécuter un programme, l'instruction est plus simple si on accède au terminal par le répertoire où se trouve le programme à exécuter.

Si le système d’exploitation est UBUNTU, il est indispensable de démarrer python3 en administrateur (root) :

sudo python3 # pour la programmation en ligne de commande
sudo python3 prog.py # pour l'exécution du programme prog.py

Des classes python3 spécialisées permettent de gérer les broches GPIO :

Beaucoup d’exemples python3 de la littérature sont proposés à partir de RPi.GPIO. La traduction, le passage de RPi.GPIO à gpiozero est décrit ici: https://gpiozero.readthedocs.io/en/stable/migrating_from_rpigpio.html

En principe, on utilise l'une ou l'autre classe mais gpiozero est plus dans l'esprit "python". RPi.GPIO est cependant en général plus rapide à l'exécution.

La mise en œuvre du module matériel RTk.GPIO exige l'utilisation de la classe RTk.GPIO qui contient les méthodes de base de RPi.GPIO.

3. Matériel mis en œuvre

Voici, liste non exhaustive, le matériel mis en oeuvre en relation avec le connecteur GPIO 40 broches :

1 plaque d’essai (*) Des fils cavalier mâle / femelle Des fils cavalier femelle / femelle Des fils cavalier mâle / mâle Bouton tactile
(*) La platine d’expérimentation ou plaque d’essai est une plaque perforée qui permet un montage des composants électronique sans soudure. C’est une platine de prototypage.
LEDs Mesure de distance + Déclenchement à large tension 3-5.5V IO - Module ultrasonique HC-SR04 Capteur de mouvement infrarouge passif Résistance dépendante de la lumière Moteur 5V
Résistances 330Ω Résistance 470Ω Condensateur 1μF Buzzer Contrôleur de moteur
Pack batterie Potentiomètre Microchip CAN MCP3008 Capteur de température et d'humidité – Module KY-015 Lames magnétiques – Démarreur – Module KY-021
LED bicolore rouge et vert montée en cathode commune – Module KY-011 Interrupteur optique – Module KY-010 Commutateur de vibration – Module KY-002 Photorésistance – Module KY-018 Capteur RGB 4 broches, électronique intelligente, 3 couleurs - Module KY-016
Capteur de Percussion – Module KY-031 3 broches LED clignotante – Module KY-034 Capteur de température – Module KY-001 avec puce DS18B20 Commutateur pour LED par inclinateur à mercure – Module KY-027 Émetteur laser – Module KY-008
Commutateur d'inclinaison – Module KY-020 LED bicolore 3MM cathode commune – Module KY-029 Commutateur au mercure – Module KY-017 Capteur magnétique à effet Hall – Module KY-003 LED RGB SMD – 5050 PWM – Module KY-009
Encodeur rotatif – Module KY-040 Capteur de recherche de ligne – Module KY-033 Capteur infrarouge 4 broches pour éviter les obstacles – Module KY-032 Module bouton commutateur, 50mA AC 250V - Module KY-004 Module optique de mesure de vitesse à fente infrarouge
Relais 5V 1 canal – Module KY-019 + relais SONGLE SRS-05VDC-SL Capteur analogique MPU6050 (accéléromètre et gyroscope dans les 3 axes) – Module GY-521 Module d'alimentation réglable, MP1584EN DC DC 3A, module de sortie 12, LM2596 24V Module de lecteur de carte SD Contrôleur de jeu, joystick PS2 – Module KY-023
DS1302 Module d'horloge Temps Réel Capteur de niveau d'eau(*) Interrupteur magnétique pour tube sec, 4 broches – Module KY-025 Module de mesure accélérométrique ADXL345 Alimentation pour plaque de prototypage – Régulateur de tension 3.3V 5V– Module MB102
(*) Non encore testé
Puce 4N35 – Optocoupleur Puce NE555P – Timer Puce L293D – Commande moteur Puce L293D – Commande moteur Module CAN ADS1115
Capteur de détection d'humidité du sol avec hygromètre LM393(*) Capteur de température analogique – Module KY-013 Détection de rythme cardiaque au doigt – Module KY-014 / KY-039 Capteur magnétique à effet Hall analogique – Module KY-035 Microphone sensible – Module KY-038
Fond rose : avec une sortie analogique (nécessite un CAN en interface avec le GPIO)
Capteur tactile en métal, corps humain – KY-036 Capteur de flamme – Module KY-026 Commutateur de Hall magnétique linéaire, comptage de vitesse – Module KY-024 Microphone haute Sensibilité - Module KY-037 Électroaimant solénoïde CC JF-0530B 6V
Module CAN CJMCU-1808 (Autour de la puce PCM1808 Stéréo ADC)

Une liste plus complète des composants à disposition est donnée dans le lien https://docs.sunfounder.com/projects/superkit-v3-pi/en/latest/components_List.html ou le document Super_Kit_V3.0_for_Raspberry_Pi_4_Model_B.pdf.

Il est parfois possible de relier directement les composants ou modules électroniques expérimentés aux broches GPIO mais il est plus aisé d’utiliser une plaque d’essai reliée elle-même aux broches GPIO par

Attention :

Bien que la connexion de composants simples aux broches GPIO soit parfaitement sûre, il est important de faire attention à la façon dont les composants sont câblés.

Les LED doivent avoir des résistances pour limiter le courant qui les traverse.

Ne pas utiliser 5V pour les composants 3.3V.

Ne pas connecter les moteurs directement aux broches GPIO, plutôt utiliser un circuit en pont en H ou une carte contrôleur de moteur.

Si on suit les instructions, jouer avec les broches GPIO est sûr et amusant. Cependant, le branchement aléatoire de fils et de sources d'alimentation sur le Raspberry Pi 4B peut le détruire, surtout si on utilise les broches 5V. Il faut éviter de connecter au Raspberry Pi 4B des éléments qui consomment beaucoup d'énergie; les LED sont bien, les moteurs ne le sont pas.

4. Remarques préliminaires à l’expérimentation

4.1. Cathode et anode

Quelques notions d’électricité sont indispensables ainsi que la connaissance de quelques termes comme "cathode" et "anode"

La lettre k indique la cathode. La lettre a indique l'anode.

On a : Vk ≤ Va


Symbole d'une diode à vide

4.2. Quitter un programme en cours d'exécution

Pour quitter un programme en cours d'exécution, il faut cliquer sur Crtl + c.
Crtl + c est une interruption de l’exécution du corps du programme qui peut déclencher une série d'instructions avant la sortie. Pour cela, il faut précéder le corps du programme dans lequel l'interruption se produira, par le mot clé
try:
Les instructions finales suite à l'interruption commencent par l’instruction clé
except KeyboardInterrupt:

4.3. Point décimal

Pour faciliter la lecture du site, c’est la convention anglo-saxonne du point décimal qui est utilisée à la place de la virgule. Cette disposition assure aussi la cohérence avec la présentation des résultats assurée par les logiciels utilisés comme Python.

4.4. Programmation

Pour faciliter la compréhension, la programmation est volontairement la plus simple possible, quitte à sacrifier l'élégance, les vérifications de cohérence et la prise en compte des possibilités d'interruption.

4.5. Entrées analogiques

Les broches GPIO du Raspberry Pi sont des broches numériques, on ne peut donc régler les sorties que sur niveau HAUT ou BAS, ou lire les entrées comme étant à un niveau HAUT ou BAS. Cependant, en utilisant une puce CAN (Convertisseur Analogique-Numérique) ou en anglais DAC ( Analogue-to-Digital Converter ), on peut lire la valeur des périphériques d'entrées analogiques tels que les potentiomètres et les transformer en signal numérique.

Les valeurs analogiques numérisées sont communiquées au Raspberry Pi à l'aide du protocole SPI. Bien que cela fonctionne en principe dans gpiozero, on obtient de meilleurs résultats si on active la prise en charge complète de SPI.