Chargement de la figure…
Un ordinateur Linux quadricœur sur une carte de 85 x 56 mm : Python avec gpiozero sur 40 broches GPIO, et ROS 2 pour les robots
Chaque leçon fait tourner votre propre code sur la carte. Réussissez ses vérifications pour la valider.
Montez la carte dans le bon ordre, puis mettez-la sous tension et vérifiez-la, comme sur l'établi.
0 étapes sur 11Dépouillez le Pi jusqu'à son circuit imprimé nu : une carte de 85 x 56 mm avec quatre trous de fixation de 2,7 mm sur une grille de 58 x 49 mm et l'empreinte du connecteur 40 broches le long du bord supérieur. Les deux faces portent des composants.
Chaque panne se produit vraiment dans la simulation. Déclenchez-en une, regardez la figure, puis lisez pourquoi.
Les ordinateurs monocartes de Raspberry Pi. Le Raspberry Pi 5 porte un Broadcom BCM2712 (quatre cœurs Arm Cortex-A76 à 2,4 GHz et un GPU VideoCore VII) avec 1 à 16 GB de LPDDR4X, et confie chaque port à RP1, la puce d'E/S maison de Raspberry Pi, par un lien PCIe : l'USB, l'Ethernet, les voies caméra et écran et les broches GPIO du connecteur se trouvent toutes dans RP1. Un PMIC DA9091 à huit régulateurs à découpage produit chaque rail à partir du 5 V de l'USB-C et entretient une horloge temps réel avec un connecteur de pile. Le Raspberry Pi 4 Model B a le même contour et le même connecteur 40 broches, mais une disposition plus ancienne : un BCM2711 (quatre cœurs Cortex-A72 à 1,8 GHz), de la LPDDR4, un contrôleur USB 3 VL805, une prise A/V de 3,5 mm et pas de bouton d'alimentation. Aucune des deux cartes n'a de flash où téléverser : un programme est un fichier sur la carte microSD, et on le lance sous Linux, en général par SSH. Chaque GPIO fonctionne en 3,3 V, ne fournit pas plus de 16 mA et ne tolère pas le 5 V. Les broches 5 V du connecteur sont directement sur le rail d'entrée, sans rien entre les deux : une alimentation branchée là doit être propre et dans le bon sens.
| Connecteur | Broche | Nom | Fonctions | Niveau | Courant max | Remarques |
|---|---|---|---|---|---|---|
| J8 | 1 | 3V3 | 3.3 V power | 3,3 V | – | Le rail 3,3 V du PMIC, partagé avec le banc GPIO. Bon pour des capteurs et de petits HAT, pas pour des moteurs. |
| J8 | 2 | 5V | 5 V power (the input rail itself) | 5 V | – | Directement sur le rail d'entrée 5 V, sans protection. En sortie, elle donne ce que donne l'alimentation USB-C ; en entrée, elle alimente tout le Pi : ce doit donc être un 5 V propre, dans le bon sens. |
| J8 | 3 | GPIO2 | I2C1 SDA | 3,3 V | 16 mA | I2C1 SDA, avec un pull-up fixe de 1,8 kΩ vers 3,3 V sur la carte : elle lit donc l'état haut quand rien ne la pilote. |
| J8 | 4 | 5V | 5 V power (the input rail itself) | 5 V | – | Directement sur le rail d'entrée 5 V, sans protection. En sortie, elle donne ce que donne l'alimentation USB-C ; en entrée, elle alimente tout le Pi : ce doit donc être un 5 V propre, dans le bon sens. |
| J8 | 5 | GPIO3 | I2C1 SCL | 3,3 V | 16 mA | I2C1 SCL, avec un pull-up fixe de 1,8 kΩ. La mettre à l'état bas réveille un Pi 4 arrêté ; un Pi 5 a son bouton d'alimentation pour ça. |
| J8 | 6 | GND | – | – | – | |
| J8 | 7 | GPIO4 | GPCLK0, 1-Wire (w1-gpio) | 3,3 V | 16 mA | |
| J8 | 8 | GPIO14 | UART0 TXD | 3,3 V | 16 mA | UART0 TXD (/dev/ttyAMA0 sur un Pi 5). Sur un Pi 4, elle transporte la console série quand enable_uart=1 est réglé ; un Pi 5 a un connecteur UART séparé pour ça. |
| J8 | 9 | GND | – | – | – | |
| J8 | 10 | GPIO15 | UART0 RXD | 3,3 V | 16 mA | UART0 RXD. Sa partenaire est GPIO14 sur la broche 8. |
| J8 | 11 | GPIO17 | SPI1 CE1 | 3,3 V | 16 mA | |
| J8 | 12 | GPIO18 | PCM CLK, PWM0 | 3,3 V | 16 mA | L'une des quatre broches PWM matérielles (12, 13, 18, 19). Le PWMLED de gpiozero utilise quand même un PWM logiciel via lgpio, sur n'importe quelle broche. |
| J8 | 13 | GPIO27 | – | 3,3 V | 16 mA | |
| J8 | 14 | GND | – | – | – | |
| J8 | 15 | GPIO22 | – | 3,3 V | 16 mA | |
| J8 | 16 | GPIO23 | – | 3,3 V | 16 mA | |
| J8 | 17 | 3V3 | 3.3 V power | 3,3 V | – | Le rail 3,3 V du PMIC, partagé avec le banc GPIO. Bon pour des capteurs et de petits HAT, pas pour des moteurs. |
| J8 | 18 | GPIO24 | – | 3,3 V | 16 mA | |
| J8 | 19 | GPIO10 | SPI0 MOSI | 3,3 V | 16 mA | |
| J8 | 20 | GND | – | – | – | |
| J8 | 21 | GPIO9 | SPI0 MISO | 3,3 V | 16 mA | |
| J8 | 22 | GPIO25 | – | 3,3 V | 16 mA | |
| J8 | 23 | GPIO11 | SPI0 SCLK | 3,3 V | 16 mA | |
| J8 | 24 | GPIO8 | SPI0 CE0 | 3,3 V | 16 mA | |
| J8 | 25 | GND | – | – | – | |
| J8 | 26 | GPIO7 | SPI0 CE1 | 3,3 V | 16 mA | |
| J8 | 27 | GPIO0 | ID_SD (HAT EEPROM, reserved) | 3,3 V | 16 mA | Réservée à l'EEPROM d'identification des HAT (I2C0 SDA). Laissez-la libre, sauf si vous savez que vous n'en avez pas besoin. |
| J8 | 28 | GPIO1 | ID_SC (HAT EEPROM, reserved) | 3,3 V | 16 mA | Réservée à l'EEPROM d'identification des HAT (I2C0 SCL). |
| J8 | 29 | GPIO5 | – | 3,3 V | 16 mA | |
| J8 | 30 | GND | – | – | – | |
| J8 | 31 | GPIO6 | – | 3,3 V | 16 mA | |
| J8 | 32 | GPIO12 | PWM0 | 3,3 V | 16 mA | |
| J8 | 33 | GPIO13 | PWM1 | 3,3 V | 16 mA | |
| J8 | 34 | GND | – | – | – | |
| J8 | 35 | GPIO19 | PCM FS, PWM1, SPI1 MISO | 3,3 V | 16 mA | |
| J8 | 36 | GPIO16 | SPI1 CE2 | 3,3 V | 16 mA | |
| J8 | 37 | GPIO26 | – | 3,3 V | 16 mA | |
| J8 | 38 | GPIO20 | PCM DIN, SPI1 MOSI | 3,3 V | 16 mA | |
| J8 | 39 | GND | – | – | – | |
| J8 | 40 | GPIO21 | PCM DOUT, SPI1 SCLK | 3,3 V | 16 mA |
Les capteurs et actionneurs que pilote cette carte, avec les vrais branchements.
Anode (patte longue) vers GPIO17 sur la broche 11 à travers une résistance de 330 Ω, cathode vers GND sur la broche 9 : environ 4 mA depuis 3,3 V. gpiozero l'appelle LED(17).
| Broche du composant | Broche de la carte |
|---|---|
| A | GPIO17Couleur du fil : orange |
| K | GNDCouleur du fil : noir |
Ne branchez jamais une LED sans sa résistance : la broche essaierait de fournir bien plus de 16 mA.
Une patte vers GPIO27 sur la broche 13, l'autre vers GND sur la broche 14. Le Button de gpiozero active le pull-up interne, donc aucune résistance n'est nécessaire : la broche lit l'état haut jusqu'à ce que vous appuyiez.
| Broche du composant | Broche de la carte |
|---|---|
| 1 | GPIO27Couleur du fil : jaune |
| 3 | GNDCouleur du fil : noir |
VCC vers 5V sur la broche 2, GND vers la broche 6, TRIG vers GPIO23 sur la broche 16 (3,3 V suffisent pour le déclencher), ECHO vers GPIO24 sur la broche 18 à travers un diviseur : 1 kΩ en série, 2 kΩ vers GND.
| Broche du composant | Broche de la carte |
|---|---|
| VCC | 5VCouleur du fil : rouge |
| TRIG | GPIO23Couleur du fil : jaune |
| ECHO | GPIO24Couleur du fil : vert |
| GND | GNDCouleur du fil : noir |
ECHO est une sortie 5 V. Branchée directement sur une broche GPIO, elle pousse du courant à travers la diode de protection du pad vers le rail 3,3 V et peut tuer la broche ou toute la puce d'E/S.
Signal vers GPIO18 sur la broche 12, rouge vers 5V, marron vers GND. Les Servo et AngularServo de gpiozero génèrent les impulsions à 50 Hz en logiciel : attendez-vous à un peu de tremblement ; une carte PCA9685 donne des impulsions stables.
| Broche du composant | Broche de la carte |
|---|---|
| signal | GPIO18Couleur du fil : orange |
| V+ | 5VCouleur du fil : rouge |
| GND | GNDCouleur du fil : marron |
Le courant de blocage d'un servo sort du rail 5 V du Pi. Un SG90 passe ; pour plus, donnez-leur leur propre alimentation 5 V avec une masse commune.
VCC vers 3V3, GND vers GND, SDA vers GPIO2 (broche 3), SCL vers GPIO3 (broche 5). Les pull-ups de 1,8 kΩ de la carte sont déjà sur ces broches. Activez l'I2C avec raspi-config et vérifiez avec i2cdetect -y 1 : il répond à 0x68.
| Broche du composant | Broche de la carte |
|---|---|
| VCC | 3V3Couleur du fil : rouge |
| GND | GNDCouleur du fil : noir |
| SCL | GPIO3Couleur du fil : jaune |
| SDA | GPIO2Couleur du fil : bleu |
GND, VCC vers 3V3, SCL vers GPIO3, SDA vers GPIO2 : le même bus I2C que les autres capteurs, en général à l'adresse 0x3C.
| Broche du composant | Broche de la carte |
|---|---|
| GND | GNDCouleur du fil : noir |
| VCC | 3V3Couleur du fil : rouge |
| SCL | GPIO3Couleur du fil : jaune |
| SDA | GPIO2Couleur du fil : bleu |
Plus vers GPIO22 sur la broche 15, moins vers GND. Un buzzer actif n'a besoin que du Buzzer(22) de gpiozero ; un buzzer passif a besoin d'une tonalité, avec TonalBuzzer.
| Broche du composant | Broche de la carte |
|---|---|
| + | GPIO22Couleur du fil : orange |
| - | GNDCouleur du fil : noir |