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)

lundi 7 septembre 2015

Alerte: il y a un maker dans l'aéroport!

Samedi soir, un garçon de 15 ans a été accusé de méfait après qu'un réveil-matin en forme de bombe ait été découvert dans ses bagages, ce qui a causé un délai de 2 heures à l'aéroport Pearson de Toronto.


Dans ce cas précis, rien n'indique que le jeune fasse partie de la culture maker, puisque le réveil en question est vendu tel quel un peu partout sur le web.  Mais avouez qu'en regardant cette photographie (diffusée sur le compte Twitter de la police de Peel) vous avez l'irrépressible envie de vous en procurer un exemplaire:  il s'agit bel et bien d'un réveil matin, mais si vous appuyez sur le bouton rouge, ça déclenche un inquiétant compte à rebours qui ne sera interrompu qui si vous déconnectez le "bon" fil...  Le gadget indispensable pour amuser vos amis! (...et du même coup exaspérer votre tendre moitié, probablement).


Au lieu de l'acheter tout fait, je l'aurais probablement construit moi-même (voir par exemple ce projet de fausse bombe à base d'Arduino).

Ce que l'article ne mentionne pas (et qui est à mon avis très important), c'est la raison pour laquelle ce garçon transportait ce réveil-matin dans ses bagages:  était-ce dans le but de faire une blague, en espérant que le dispositif soit réellement confondu avec une vraie bombe par le personnel de l'aéroport?  Si c'est le cas, très mauvaise idée!  Le personnel des aéroports a fait la preuve, au cours des dernières années, qu'ils sont peu sensibles à ce type d'humour (voir par exemple les accusations portées contre un pauvre touriste français en voyage au Canada, qui avait prétendu avoir une bombe dans sa valise).    Leur réaction est sans doute exagérée, mais je comprend un peu:  ces gens-là essaient de contrer les tentatives d'attentats terroristes, et si tout le monde s'amuse à faire semblant de vouloir en commettre un, ça leur complique la tâche.

Mais il est fort possible que le garçon ait transporté son réveil...pour se réveiller le matin! Ou pour l'offrir en cadeau aux gens qu'il partait visiter. Ou peut-être qu'on le lui a offert en cadeau, ou qu'il l'a trouvé dans une boutique de gadgets pendant son voyage...  Bref, il n'a peut-être jamais eu l'intention de faire croire au personnel de l'aéroport qu'il s'agissait d'une bombe.


Mais dans la catégorie "sympathique geek persécuté par le personnel paranoïaque d'un aéroport", le premier prix est remporté par Star Simpson, une jeune étudiante du MIT qui avait causé tout un émoi, en 2007, en se présentant à l'aéroport Logan de Boston dans le but d'y accueillir un ami (fervent d'électronique) qui venait la visiter.  Le problème, c'est qu'elle était vêtue d'un chandail décoré de LEDs clignotantes qu'elle avait elle-même fabriqué, et qu'une employée de l'aéroport complètement paniquée en a conclu que, forcément, elle portait une bombe sur elle! Elle a été arrêtée, interrogée, et accusée d'avoir prétendu porter une bombe (alors qu'elle n'avait jamais prétendu une telle chose!).  Un an plus tard, pour éviter un procès, elle a accepté de faire 50 heures de travaux communautaires et de présenter des excuses officielles à l'aéroport!

Suite à son arrestation, un porte-parole de la police a déclaré, sans rire, qu'elle était extrêmement chanceuse de ne pas avoir été immédiatement abattue!

"She's extremely lucky she followed the instructions or deadly force would have been used,and she's lucky to be in a cell as opposed to the morgue."

La morale de l'histoire:  si vous êtes un geek rigolo (quoiqu'un peu étrange), tenez-vous loin des aéroports.

Yves Pelletier   (TwitterFacebook)