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)

Étude de CI: le multiplexeur 74153

M'étant procuré, dans le passé, quelques lots de composants électroniques en vrac, je suis l'heureux propriétaire d'une assez grande quantité de circuits intégrés dont j'ignore complètement la fonction.  Occasionnellement, je choisis un de ces mystérieux CI et, armé de sa fiche technique, et d'une breadboard, je tente de comprendre à quoi il sert et comment il fonctionne.

Aujourd'hui, mon étude porte sur un circuit intégré fabriqué par Texas Instruments et portant le numéro SN74ALS153N (d'autres CI portant les numéros 74HC153 et 74HCT153 se comportent de façon très similaires).  Il s'agit d'un double multiplexeur 4 → 1.

Un multiplexeur permet de transmettre sur une même ligne de transmission des signaux provenant de plusieurs sources différentes.  Chacun des deux multiplexeurs qui se trouvent sur le 74153 comporte 4 entrées numériques et une seule sortie numérique.

Voyez le schéma ci-contre (il est tirée de la fiche technique du SN74ALS153):  un premier multiplexeur se trouve du côté gauche.  Ses 4 entrées sont identifiées par les symboles 1C0, 1C1, 1C2 et 1C3, alors que sa sortie est la pin  1Y.  Pour que ce multiplexeur soit actif, la pin 1G soit être à 0 volt (reliée à GND).

De la même manière, du côté droit du circuit intégré, on trouve un deuxième multiplexeur dont les entrées sont 2C0, 2C1, 2C2 et 2C3, dont la sortie est 2Y, et qui est actif à la condition que la pin 2G soit à 0 volt.

Comme nous le disions, chacun des 4 signaux d'entrée pourra être acheminé vers la sortie, mais pas tous en même temps:  un à la fois.  Les pins de contrôle A et B sont des entrées qui nous permettent de choisir lequel des quatre signaux d'entrée sera acheminée vers la sortie.  Ainsi, si la pin A et la pin B sont toutes les deux à 0 volt, c'est le signal de l'entrée C0 qui sera acheminé à la sortie.  Si la pin A est à 5 volts pendant que la pin B est à 0 volt, c'est le signal de l'entrée C1 qui est acheminé à la sortie.   La sortie prendra la même valeur que l'entrée C2 si A est à 0 volt pendant que B est à 5 volts, et c'est l'entrée C3 qui sera acheminée à la sorties si A et B sont toutes les deux à 5 volts.

En résumé:

     Si A = 0 et B = 0, alors Y = C0
     Si A = 5 V et B = 0, alors Y = C1
     Si A = 0 et B = 5 V, alors Y = C2
     Si A = 5 V et B = 5 V, alors Y = C3

Si vous disposez d'un circuit intégré 74153, il est facile de vérifier tout ça.

Bon, je pense que je comprend assez bien comment fonctionne ce machin.  Maintenant, qu'est-ce que je pourrais faire d'amusant avec ça...?

Ha, j'ai une idée:  une carte Arduino Uno ne comporte qu'une seule entrée RX UART pour la communication série (c'est la pin 0).  Un multiplexeur pourrait-il permettre d'acheminer des signaux provenant de 4 sources différentes vers cette unique entrée (qui deviendrait à elle-seule l'équivalent de 4 entrées UART)?

C'est ce que nous allons vérifier dans le prochain article...


Yves Pelletier   (TwitterFacebook)

mercredi 16 septembre 2015

Alerte: il y a un maker à l'école!

Je ne m'attendais pas à produire aussi rapidement une suite à mon précédent article, dans lequel je me moquais de la paranoïa de certains employés d'aéroport face à des circuits électroniques inoffensifs.

Et voilà pourtant qu'Ahmed Mohamed, un jeune texan de 14 ans se fait arrêter, menotter et interroger par la police (en plus d'être suspendu de son école pendant trois jours) pour avoir osé apporter à l'école l'horloge qu'il a lui-même fabriquée.

Déclaration de Larry Boyd, chef de la police d'Irving:   «Il s'agissait d'un dispositif très suspect. Nous vivons à une époque où l'on ne peut pas emporter de telles choses à l'école».



Ouais...nous vivons à une époque où l'on ne peut pas emporter à l'école l'horloge qu'on a fabriquée afin de la montrer à son prof de technologie.  Surtout si on a un nom musulman.  Et même si on vit à un endroit où il y a presque autant d'armes à feu que d'êtres humains.

Où va le monde, je vous le demande?  Ce sera quoi, la prochaine fois?  Des enfants qui se permettent de profiter de leur temps passé à l'école pour apprendre des trucs?



Heureusement, le ridicule de la situation n'est pas passé inaperçu, des milliers d'internautes sont portés à la défense d'Ahmed, incluant le président Obama lui même, qui invite le jeune homme à la Maison Blanche afin de lui présenter son horloge:
Dites, monsieur Obama, j'ai fabriqué tout plein de gadgets avec Arduino et Raspberry Pi qu'il me fera un plaisir de vous montrer, si vous m'invitez à la Maison Blanche.  :)

Mise à jour (28 novembre 2015):  Ahmed poursuit l'école et la municipalité pour rien de moins que 15 millions de dollars, et soudainement je le trouve beaucoup moins sympathique.

Yves Pelletier   (TwitterFacebook)