Publié le 1 février 2019 - par

Utiliser le port série du Raspberry Pi 3 et du Pi Zero

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 :

É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.

Ajouter à la fin du fichier

Etape 3 : Quittez l’éditeur en sauvegardant vos modifications (CTRL X) et ensuite :

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

Étape 2 : Trouvez le texte suivant et supprimez-le :

Etape 3 : Quittez l’éditeur en sauvegardant vos modifications (CTRL X) et ensuite :

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 🙂

Vous pouvez relire mon précédent article à ce sujet sur https://www.framboise314.fr/le-port-serie-du-raspberry-pi-3-pas-simple/

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

Le port série du Raspberry Pi 3 : pas simple !

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

21 réflexions au sujet de « Utiliser le port série du Raspberry Pi 3 et du Pi Zero »

  1. damien

    Bonjour Francois,

    Merci pour cet article très interessant, comme d’habitude 😉

    Je ne comprend pas très bien la derniere partie : « Désactivation de la console série »

    Ceci est vrai si on l’a activé dans raspi-config, afin de controler le Raspberry Pi avec un autre pc relié en série, non ?

    J’avais suivi ton tuto sur la nadhat, il y a quelques mois, et il n’y avait pas des details la dessus, mais tout fonctionne parfaitement.

    Une idée ?

    Merci par avance 🙂

    Bonne continuation

    Répondre
  2. damien

    Bonjour,

    Merci pour votre reponse.

    Je comprend mieux.

    Si on ne le desactive pas, le raspberry risque donc d’envoyer des infos au peripherique connecté ?

    Répondre
  3. MOREAU julien

    Bonjour,
    Dans un projet pour le partage d’alectricité entre particuliers (sunshare), nous essayons de développer un shield pour décoder la téléinformation linky avec le raspberry. j’avais deja une extension en usb mais voulais simplifier le montage……pa ta tra….le signal est mal décodé par le port série meme avec la modif proposée. grosse déception.
    merci de l’info qui m’a beaucoup aidé. Merci aussi pour l’article sur sunshare.
    A bientot.

    Répondre
  4. Gordon

    Salut à tous.

    Si je comprends bien, le port série s’utilise avec un câble RS232.
    Sur PC, c’est ce que l’on nomme « port com ».
    N’est-ce pas en voie de disparition et est remplacé par du USB ?

    @+

    Répondre
  5. damien

    Oui et non

    Pour le grand public, l’USB remplace tout (ou presque)

    Mais en electronique, on aime les choses simple, qui fonctionnent à tous les coups. Et on a rarement besoin de gros debits.

    Les protocoles les plus simples sont presque toujours utilisés pour quasiment tous les equipements.

    Répondre
  6. Tom

    Bonjour,
    est-il possible de gérer deux ports séries ?
    par exemple, si on veut mettre un GPS et un module Sigfox. Les deux communicants avec le raspi sur le port série, comment gérer tout ça ?
    avec un adaptateur USB ?

    on a un ballon à envoyer et à récupérer surtout !! 😉

    Merci !
    Et bravo pour le site !!

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      a ma connaissance il y a un seul port RxTx UART sur le Raspberry Pi
      il est possible d’utiliser des adaptateurs USB – Série comme celui ci
      https://www.amazon.com/dp/B0007T27H8/?tag=stackoverfl08-20
      c’est à tester
      ou cette carte qui convertit un bus spi ou i2c en port série
      https://www.sparkfun.com/products/retired/9981
      mais je n’ai pas testé non plus

      encore ceci
      https://www.kickstarter.com/projects/202549516/uart-hat-extra-124-uart-for-raspberry-pi-zero-b-2b/posts/1752029
      http://www.pridopia.co.uk/rs-pi-i2c-uart.html
      http://www.pridopia.co.uk/rs-pi-i2c-4uart-v2.html

      tenez moi au courant

      Répondre
  7. Panoramique

    Bonjour,
    Je cherche depuis un petit bout de temps comment faire communiquer ma RPi zero w avec une Arduino, et cet article m’a l’air de bien résumer ce que j’ai trouvé au cours de mes recherches.
    Mais même en suivant ces consignes, cela ne fonctionne pas… Est-ce bien le bon protocole pour faire communiquer ces deux cartes entre elles, ou est-ce que je me serais trompé d’article ?
    Merci d’avance !

    Répondre
    1. damien

      Bonjour,

      En effet, c’est bien le bon protocole.

      Pour te simplifier la vie, je te conseil dans un premier temps de connecter le Raspberry Pi Zero et l’Arduino avec un câble usb (et un adaptateur si c’est un zero) àfin d’eviter les conversions 3.3v-5v et les possibles problèmes.

      Et je te conseil de lire cet article : https://www.framboise314.fr/envoyer-de-lhexadecimal-sur-le-port-serie-du-raspberry-pi/
      Il suffit d’adapter un peu le code python et de choisir le port serie de l’arduino sur le Pi.

      Et tu peux chercher sur Qwant : arduino raspberry rs232 ou arduino raspberry uart

      Il y a pleins d’exemples

      Don courage

      Répondre
  8. Ping : Montage d'une interface Zeta | F5NLG – SvxLink –

  9. Razorbake

    Ah ! Voilà un article fort utile !
    J’utilisais le Mini UART sans le savoir depuis le début et j’avais un comportement…inconsistant.
    Pas étonnant au vu de ce que je viens de lire.
    Merci pour l’info !

    Répondre
  10. La Grandière

    Bonjour Monsieur, merci pour votre article très instructif, j’aurais néanmoins une petite question. J’utilise une raspberry pi Zero WH, et je voudrais savoir si la commande : « dtoverlay=pi3-miniuart-bt » doit être modifié pour la partie pi3.

    Dans l’attente de votre réponse, je vous souhaite une bonne journée.

    Répondre
    1. fafadou

      J’ai la même question tu as la réponse ?
      Sinon pour j’ai mis dtoverlay=pi0-miniuart-bt et si fonctionne pas je ferai un essai avec dtoverlay=pi3-miniuart-bt et encore après si besoin dtoverlay=pi0w-miniuart-bt

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.