Pour ceux qui veulent utiliser le port série du Raspberry Pi, la chose ne parait pas forcément simple, surtout depuis l’apparition du module Bluetooth qui a entrainé une modification dans la gestion des ports. Cet article traduit avec l’accord d’ABElectronics permet de mieux comprendre le fonctionnement.
Les ports série du Raspberry Pi
Les modèles B, B+ et Pi Zero W de Raspberry Pi 3 contiennent deux contrôleurs UART qui peuvent être utilisés pour la communication série, les mini UART et le PL011. Par défaut, le mini UART est mappé au TXD (GPIO 14) et au RXD (GPIO 15) sur le connecteur GPIO 40 broches et l’UART PL011 est utilisé pour le module Bluetooth/Wireless. Mais ces deux modules peuvent être reliés au port GPIO.
Le mini UART
Le port mini UART est accessible via le périphérique /dev/ttyS0 sous Linux. Un des problèmes rencontrés avec le contrôleur mini UART est que sa vitesse de transmission est liée à la fréquence centrale du CPU. Or la fréquence du CPU change en fonction de la charge du processeur, ce qui fait varier la vitesse de transmission du contrôleur UART. Cela occasionne des problèmes car les appareils connectés au port série attendent une vitesse de transmission constante pendant la communication.
Pour résoudre ce problème, la fréquence du noyau CPU doit être rendue fixe, ce qui peut soit limiter la vitesse du Raspberry Pi, soit augmenter la consommation d’énergie et la chaleur produite (en fonction de la vitesse à laquelle la fréquence d’horlogedu noyau est réglée).
L’UART PL011
Le contrôleur mini UART possède un tampon FIFO plus petit que celui du contrôleur UART PL011 (un vrai contrôleur hardware). Cela peut causer des problèmes à des vitesses de transmission élevées car la perte de caractères devient plus probable.
Le contrôleur UART PL011 n’est pas dépendant de la fréquence du CPU. Cela signifie que la vitesse de transmission reste la même quelle que soit la vitesse CPU. Le contrôleur UART PL011 intègre également d’autres fonctions qui ne sont pas présentes dans le mini UART, comme la détection d’erreur de trame, la détection de perte de connexion, la gestion du temps d’interruption de réception et le support des bits de parité.
Le principal inconvénient lorsqu’on utilise le contrôleur UART PL011, c’est qu’il désactive le module Bluetooth. Il devient alors impossible d’utiliser les fonctions Bluetooth des Raspberry Pi 3 et Zero W.
Il vaut mieux utiliser le contrôleur UART PL011 dans toutes les situations où une connexion de données fiable est nécessaire, ou lorsque la consommation d’énergie et la vitesse du processeur sont une priorité.
Si vous avez besoin d’utiliser le module Bluetooth sur le Raspberry Pi, il faut alors utiliser le mini contrôleur UART.
Utilisation du port Mini UART
Depuis la sortie de Raspbian Stretch en novembre 2018, le mini port UART peut être activé en utilisant l’utilitaire raspi-config.
Etape 1 – Installez Raspbian Stretch ou une version ultérieure sur une carte SD et démarrez le Pi une fois connecté à un réseau.
Connectez vous en terminal (en mode texte ou ouvrez un terminal sur le bureau)
Démarrez l’utilitaire de configuration système avec :
sudo raspi-config
Étape 2 – Sélectionnez “5 options d’interface“.
Etape 3 – Sélectionner “P6 Série”.
Etape 4 – Un écran vous demande si vous souhaitez qu’un écran de login soit accessible via le port série. Si vous voulez contrôler le Raspberry Pi depuis un terminal connecté au port série, sélectionnez Oui. Si vous utilisez le port série pour contrôler d’autres périphériques série, sélectionnez Non.
Etape 5 – Si vous avez sélectionné Non, un autre écran vous demandera si vous souhaitez que le matériel du port série soit activé. Sélectionnez Oui.
Etape 6 – Sur l’écran principal de configuration de raspi-config, sélectionnez “Terminer” et redémarrez votre Raspberry Pi. Le port série mini UART doit maintenant être activé.
Utilisation du port UART PL011
Pour les versions de Raspbianpostérieures au 18 mars 2016, il existe un fichier dans le device tree appelé pi3-miniuart-bt qui ordonne au Raspberry Pi de désactiver le module Bluetooth et de relier l’UART PL011 aux broches 14 et 15 du connecteur GPIO.
Etape 1 – Connectez vous en terminal (en mode texte ou ouvrez un terminal sur le bureau)
Etape 2 : Réglage du device tree comme ci-dessous :
Ajoutez pi3-miniuart-bt au fichier /boot/config.txt pour désactiver le module Bluetooth.
sudo nano /boot/config.txt
Ajouter à la fin du fichier
dtoverlay=pi3-miniuart-bt
Etape 3 : Quittez l’éditeur en sauvegardant vos modifications (CTRL X) et ensuite :
sudo reboot
Désactivation de la console série
La console série sur Raspbian Stretch est activée par défaut. Pour utiliser le port UART avec des périphériques série, vous devez désactiver la console.
Etape 1 : Pour désactiver la console série, vous devez éditer le fichier /boot/cmdline.txt
sudo nano /boot/cmdline.txt
Étape 2 : Trouvez le texte suivant et supprimez-le :
console=serial0, 115200
Etape 3 : Quittez l’éditeur en sauvegardant vos modifications (CTRL X) et ensuite :
sudo reboot
Maintenant que la console série est désactivée, vous pouvez accéder au port série UART via /dev/ttyAMA0.
Conclusion
J’espère que cet article va clarifier les choses pour ceux qui s’arrachent les cheveux quand il faut utiliser le port série du RaspberryPi.
Un grand merci à ABElectronics qui a accepté la traduction de cet article pour les lecteurs de framboise314
Sources
https://www.abelectronics.co.uk/kb/article/1035/raspberry-pi-3-and-zero-w-serial-port-usage
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf
Cet article Utiliser le port série du Raspberry Pi 3 et du Pi Zero a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....