mardi 29 septembre 2015

Multiplexer plusieurs signaux sur l'entrée RX de l'Arduino Uno

Dans mon précédent article, nous avons exploré les caractéristiques du circuit intégré 74153, qui est un multiplexeur 4  → 1.  Nous allons maintenant voir s'il est possible d'utiliser ce circuit intégré pour que plusieurs canaux de communication série de sources différentes soient acheminées à l'unique pin Rx de l'Arduino Uno.

Pour les besoins de cette petite expériences je vais utiliser 3 cartes Arduino Uno:
  • La carte "émetteur 1" va continuellement envoyer le message "Bonjour, je suis le numéro 1" par sa pin Tx.
  • La carte "émetteur 2" va continuellement envoyer le message "Salut, je suis le numéro 2" par sa pin Tx.
  • La carte "récepteur" écoutera alternativement les messages de l'émetteur 1 et ceux de l'émetteur 2 sur sa pin Rx.
(Puisque le multiplexeur comporte 4 entrées, j'aurais pu ajouter deux émetteurs supplémentaires).

Le sketch des émetteurs

Rien de spécial à signaler ici:  chaque émetteur diffuse à répétition un même message deux fois par seconde.  Les messages émis par les deux émetteurs sont légèrement différents afin qu'on puisse les distinguer l'un de l'autre lorsqu'ils sont reçus.



Le sketch du récepteur

Du côté du récepteur, la seule subtilité consiste à contrôler la source du message au moyen de la pin 8 de l'Arduino, qui est elle-même branchée à la pin "A" du multiplexeur 74153:  cette pin sera au niveau logique bas pendant 5 secondes afin d'écouter les messages provenant de l'émetteur 1, puis au niveau logique haut pendant 5 autres secondes afin d'écouter les messages provenant de l'émetteur 2. Les messages reçus sont immédiatement relayés au moniteur série de l'IDE Arduino, pour que nous puissions vérifier le déroulement correct de l'expérience.



Le circuit

L'Arduino récepteur doit être branché par USB à un ordinateur pour qu'on puisse afficher sa progression au moyen du moniteur série.  Les deux Arduino émetteurs s'alimentent directement sur l'Arduino récepteur (par leur entrée VIN) et n'ont donc pas besoin d'être branchés à un ordinateur (fils rouges sur le schéma ci-dessous).

Tous les GND sont reliés ensemble (ce sont les fils noirs sur le schéma ci-dessous).




Les broches du multiplexeur 74153 sont branchées de la façon suivante:
  • Pin 1 (1G):  GND (nécessaire pour activer le multiplexeur numéro 1)
  • Pin 2 (B):  GND (nécessaire pour sélectionner les entrées 1C0 et 1C1)
  • Pin 5 (1C1):  Pin 1 (TX) de l'Arduino émetteur numéro 2.
  • Pin 6 (1C0):  Pin 1 (TX) de l'Arduino émetteur numéro 1.
  • Pin 7 (1Y):  Pin 0 (RX) de l'Arduino récepteur
  • Pin 8 (GND):  GND
  • Pin 14 (A):  Pin 8 de l'Arduino récepteur, et reliée indirectement à GND par l'entremise d'une résistance pull-down de 100 K.  (Sans cette résistance, la tension de la pin 14 ne descendait pas en-dessous de 1,5 V même quand la pin 8 de l'Arduino était au niveau logique bas).  C'est cette pin qui permet de sélectionner le signal de l'Arduino émetteur numéro 1 (quand elle est à 0 V) ou le signal de l'Arduino émetteur numéro 2 (quand elle est à 5 V).
  • Pin 16 (VCC):  5 volts.

Résultat

Ça fonctionne!  Pendant 5 secondes, l'Arduino récepteur reçoit uniquement  les messages qui proviennent de l'Arduino émetteur numéro 1, et pendant les 5 secondes suivantes, il écoute plutôt les messages qui lui sont envoyés par l'Arduino émetteur numéro 2.





Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire