Elektor France - Mars-Avril 2022

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 116

ISSN 0181-7450 F : 15,50 €

(B) 16,50 €
(CH) 29,00 FS
(CAN) 20.99 $ca

494 MARS & AVRIL 2022 (And) 15,50 €


ELEKTORMAGAZINE.FR DOM surface 16,50 €
DOM avion 16,90 €
N Cal/S 2000 cfp

Construisez votre
Processor Open-Source RISC-V

FOCUS SUR

Systèmes
embarqués
Embedded
dans numéro :
> Tracer des graphiques avec Arduino
> Surveillance et débogage sans fil
> Identification des composants – trucs & astuces
p. 52 Quoi de neuf dans > Réparation des batteries au lithium
le développement de l’embarqué ? > Approche DIY de la sécurité
Rust et mises à jour des déploiements IoT et de l’espionnage électronique
> Programmation d’automates
avec le Raspberry Pi et le projet OpenPLC
> Lévitation magnétique : version compacte
p. 86 Sous votre radar > Questions d‘éthique :
Des microcontrôleurs trois questions fondamentales

que vous devriez connaître et bien d'avantage !


L 19624 - 494 - F: 15,50 € - RD

Station de mesure de Carte tampon pour le Interrupteur sans contact DIY


température et d’humidité p. 96 Raspberry Pi 400 p. 24 Il interprète les gestes p. 42
Utilisation de modules Protection des entrées/sorties de la main !
prêts à l’emploi
e-zine
Your dose of electronics

Chaque semaine où vous n’êtes pas abonné à l’e-zine


d’Elektor est une semaine de grands articles et de projets
électroniques qui vous manquent !

Alors, pourquoi attendre plus longtemps ? Abonnez-


vous dès aujourd’hui à www.elektor.fr/ezine et recevez
également le livre gratuit du projet Raspberry Pi !

À quoi pouvez-vous vous attendre ?


Éditorial Promotionnel Envoi des partenaires
Chaque vendredi, vous recevrez Ne manquez pas les promotions Vous souhaitez rester informé des
les meilleurs articles et projets de notre magasin, chaque mardi activités en cours dans le secteur ?
de la semaine. Nous couvrons les et jeudi nous avons une promotion Alors ce courriel vous donnera
projets basés sur les MCU, l’IdO, spéciale pour vous. les meilleures informations. Non
la programmation, l’IA, et plus régulier, mais toujours le mercredi.
encore !
édito

45ème année
n° 494 – mars-avril 2022

ISSN 0181-7450
rédacteur en chef d’Elektor Magazine
Dépôt légal : mars 2022
CPPAP 1125 T 83713
Directeur de la publication : Donatus Akkermans

Elektor est édité par :


PUBLITRONIC SARL

Reporter, ce n’est pas annuler


c/o Regus Roissy CDG
1, rue de la Haye
BP 12910
FR - 95731 Roissy CDG Cedex
Pour de nombreux professionnels de l’électronique, la fin de l’hiver est traditionnellement marquée
Pour toutes vos questions : par le salon embedded world, qui a eu lieu les années précédentes fin février ou début mars. Cet
[email protected] événement bien connu a tendance à être plus informel que l’énorme salon electronica, ce qui en
fait un rendez-vous incontournable pour tous ceux qui manipulent à titre professionnel des micro-
www.elektor.fr | www.elektormagazine.fr
contrôleurs et du logiciel. (Et quels concepteurs ne s’occupent pas des deux de nos jours ?) J’aurais
Banque ABN AMRO : Paris aimé pouvoir vous dire que vous pourrez nous rendre visite sur le stand Elektor en mars de cette
IBAN : FR76 1873 9000 0100 2007 9702 603 année, mais le Coronavirus a encore contrecarré nos plans. Heureusement, les organisateurs du
BIC : ABNAFRPP salon embedded world ont récemment annoncé que l’événement est « reporté mais pas annulé ».
Publicité : Avec de nouvelles dates (du 21 au 23 juin 2022), le parc d’exposition de Nuremberg fait une deuxième
Raoul Morreau tentative. Touchons du bois !
Tél. : +31 (0)6 4403 9907
Courriel : [email protected] En 2021, en pensant au salon embedded world, nous avions choisi le thème « systèmes embarqués »
pour notre deuxième numéro de l’année 2022. Nous ne pouvions pas et ne voulions pas changer
DROITS D’AUTEUR : cela. Ainsi, pour le numéro de mai/juin, nous nous concentrerons sur l’Internet des Objets, dont
© 2022 Elektor International Media B.V. la publication coïncidera probablement avec le salon embedded world désormais prévu en juin.
Ce numéro sur l’IoT comprendra également des articles fouillés sur les nouveaux produits et les
Toute reproduction ou représentation intégrale
ou partielle, par quelque procédé que ce nouvelles tendances qui seront présentés à Nuremberg.
soit, des pages publiées dans la présente
publication, faite sans l’autorisation de l’éditeur Que pouvez-vous attendre du numéro que vous avez entre les mains ? Nous vous présentons un
est illicite et constitue une contrefaçon. Seules assortiment de projets et d’articles de fond sur les petites puces informatiques. À la page 52, mon
sont autorisées, d’une part, les reproductions collègue Stuart Cording fait le point sur deux nouvelles tendances dans le monde de l’embarqué,
strictement réservées à l’usage privé du le langage de programmation sécurisé Rust et la gestion des micrologiciels à la Toit. À partir de la
copiste et non destinées à une utilisation col- page 6, Mathias Claussen, ingénieur au labo d’Elektor, explique comment « construire » et faire
lective, et, d’autre part, les analyses et courtes fonctionner votre propre processeur RISC-V. Pour les débutants et les makers, nous proposons un
citations justifiées par le caractère scientifique
aperçu pratique des cartes bon marché basées sur la puce Raspberry Pi RP2040 (p. 28), ainsi qu’un
ou d’information de l’oeuvre dans laquelle elles
petit atelier sur le traceur série de l’EDI Arduino (p. 15). Nous proposons également des projets tels
sont incorporées (Loi du 11 mars 1957 -art. 40
qu’une carte tampon pour le Raspberry Pi (p. 24), un interrupteur d’éclairage sans contact (p. 42) et
et 41 et Code Pénal art. 425).
Certains circuits, dispositifs, composants, etc. une interface sans fil/série (p.91). Bon travail !
décrits dans cette revue peuvent bénéficier de
droits propres aux brevets; la Société éditrice
n’accepte aucune responsabilité du fait de l’ab-
sence de mention à ce sujet. Conformément
à l’art. 30 de la Loi sur les Brevets, les circuits
et schémas publiés dans Elektor ne peuvent
notre équipe
être réalisés que dans des buts privés ou
scientifiques et non commerciaux. L’utilisation Rédacteur en chef : Jens Nickel
des schémas n’implique aucune responsabilité Rédaction : Eric Bogers, Jan Buiting, Rolf Gerstendorf, Thomas Scherer,
de la part de la Société éditrice. La Société Clemens Valens, Mariline Thiebaut-Brodier (coordination)
éditrice n’est pas tenue de renvoyer des ar- Service aux lecteurs : Ralf Schmiedel
Correcteur technique : Malte Fischer
ticles qui lui parviennent sans demande de sa
Laboratoire : Mathias Claussen, Ton Giesberts, Luc Lemmens, Clemens Valens (responsable)
part et qu’elle n’accepte pas pour publication.
Maquette : Giel Dols, Harmen Heida
Si la Société éditrice accepte pour publication
un article qui lui est envoyé, elle est en droit de
l’amender et/ou de le faire amender à ses frais;
la Société éditrice est de même en droit de
traduire et/ou de faire traduire un article et de Elektor est membre de la FIPP, une organisation qui « se développe depuis presque 100 ans pour réunir
l’utiliser pour ses autres éditions et activités, des propriétaires de médias et des créateurs de contenu du monde entier ».
contre la rémunération en usage chez elle.

Elektor est membre de VDZ (association d’éditeurs de magazines allemands) qui « représente les
Imprimé aux Pays-Bas par
intérêts communs de 500 éditeurs allemands grand public et B2B. »
Senefelder Misset – Doetinchem
Distribué en France par M.L.P. et en Belgique par A.M.P.

lektor mars/avril 2022 3


DANS CE NUMÉRO
Elektor n° 494
mars - avril 2022

Construisez votre
contrôleur RISC-V
Débuter sur le noyau logiciel RISC-V
NEORV32 pour FPGA à faible coût

Rubriques
3 Édito 68 Voyage dans les réseaux neuronaux
4e partie : les neurones embarqués
37 Zone D
FOCUS
Identification des composants 86 Sous votre radar
49 Démarrer en électronique... (12) Des microcontrôleurs que vous devriez connaître
Adaptation d’impédance et transformateurs 101 Réparation des batteries au lithium
62 Drôles de composants Économisez de l’argent et augmentez la puissance !
Relais à bobine mobile 106 Création d’interfaces graphiques en Python
66 Visite à domicile 3e partie : générateur de mèmes
Chacun son tour
84 Sur le vif
Emballé, c’est pesé
112 Questions d‘éthique
Industrie
Trois questions fondamentales FOCUS
52 Quoi de neuf dans le développement de l’embarqué ?
114 Hexadoku
Rust et mises à jour des déploiements IoT
Casse-tête pour elektorniciens

Articles de fond
FOCUS
58 Elektor infographie
Comment se porte le marché mondial de l'embarqué ?

FOCUS
15 Tracer des graphiques avec Arduino 60 Les bénéfices de la 5G pour l’industrie et l’automobile
C’est facile avec le traceur sériel d’Arduino
18 Carte CLUE d’Adafruit
Une solution intelligente pour les projets IoT Cartes
FOCUS
Raspberry Pi
28 Cartes Raspberry Pi RP2040 à gogo
à gogo
32 Approche DIY de la sécurité et de l’espionnage électronique
Chauffez ou refroidissez la SRAM
28
4 mars/avril 2022 www.elektormagazine.fr
identification des Interrupteur sans
co mposants contact DIY

trucs & astuces 37 42

Réalisations Bientôt dans ces pages


FOCUS
Le numéro de mai-juin 2022 d’Elektor
6 Construisez votre contrôleur RISC-V Vous retrouverez dans le prochain magazine Elektor l’habituel
Débuter sur le noyau logiciel RISC-V NEORV32 mélange stimulant de réalisations originales, de circuits
pour FPGA à faible coût soigneusement étudiés, d’articles de fond, de sujets nouveaux,
de trucs et d’astuces pour les électroniciens actifs. Ce numéro
FOCUS
24 Carte tampon pour le Raspberry Pi 400 s'intéressera tout particulièrement à l'Internet des Objets.
Protection des entrées/sorties Quelques-uns des points forts :
FOCUS > Premiers pas avec l’ESP32-C3 et l’Internet des Objets
42 Interrupteur sans contact DIY > Double capteur de rayonnement à tube Geiger-Müller pour
Arduino
74 Lévitation magnétique
Troisième version : la plus compacte
> Instrument de mesure de CO2 avec connexion au réseau
> Commutateur de lumière précis
FOCUS
> Cloud IoT à la sauce Arduino
79 Programmation d’automates avec le Raspberry Pi
> Outils de conception des filtres audio
et le projet OpenPLC
> WinUI 3 : nouvelle bibliothèque d'interface utilisateur pour les
Visualisation des programmes PLC avec AdvancedHMI
applications Windows
FOCUS
> NB-IoT par la pratique
91 Surveillance et débogage sans fil et bien d’autres choses encore !
Une solution pour Arduino, ESP32 et Cie
96 Station de mesure de température et d’humidité, Le numéro de mai-juin 2022 du magazine Elektor sera publié aux alentours
au format de poche du 5 mai 2022. La date d’arrivée du magazine papier chez les abonnés dépend des aléas
Utilisation de modules prêts à l’emploi d’acheminement. Le contenu et les titres des articles peuvent être modifiés.

Station de FOCUS SUR

Systèmes
mesure de
température et
d’humidité, au
format de poche embarqués
Systèmes
96
lektor mars/avril 2022 5
projet

construisez votre
contrôleur RISC-V
r lab • Elekto
to
Débuter sur le noyau logiciel RISC-V NEORV32

k
Ele

r la
pour FPGA à faible coût

b
O R IG IN A L

Ele

la b
or r

kt
la b to
• Ele k
Mathias Claußen (Elektor)

Expérimenter le RISC-V vous tente ?


C’est possible, sans puce câblée « en
dur », avec le noyau logiciel RISC-V
NEORV32 pour FPGA à faible coût.

Pour expérimenter avec un microcontrôleur RISC-V, il existe désor- FPGA, synthèse, softcore, RISC-V et compilateur
mais des processeurs utilisant cette architecture de jeu d’instructions Si vous devez choisir un µcontrôleur polyvalent pour une application
standard ouverte, par ex. le nouveau ESP32-C3. Mais il y a des alter- donnée, différents facteurs peuvent influencer votre décision. L’une
natives à l’emploi d’une puce câblée « en dur » : NEORV32 aborde des considérations de base est la gamme de périphériques intégrés
par ex. le concept d’un softcore (noyau logiciel) RISC-V réalisable à proposée par le µcontrôleur. Celle-ci est figée dans le matériel par la
l’aide d’un FPGA. Un tel processeur est un peu moins puissant qu’un version de la puce et ne peut être modifiée. Cette approche permet de
processeur câblé, mais il est beaucoup plus souple et vous permet de fabriquer des puces peu coûteuses aux performances optimisées. Il en
tester différents projets et d’intégrer tout périphérique développé en va différemment si vous basez votre propre contrôleur sur un FPGA.
interne dans votre matériel. Cette voie, riche d’enseignements, vous Un FPGA est constitué d’un ensemble de cellules logiques dites tables
fera par ex. entrer dans les rouages intimes d’un processeur. de consultation (LUT = LookUp Table) interconnectables à volonté via
une matrice. La figure 1 illustre les blocs existant dans une telle LUT.
Une application pratique On a ici un élément LUT-4 avec 4 signaux d’entrée, une table de vérité,
Même ceux qui ont déjà expérimenté les FPGA feront vite face à des une bascule et un multiplexeur en sortie. La table de vérité permet
obstacles dès qu’il s’agira de configurer leur propre projet de petit de former toute porte élémentaire telle qu’un ET, un OU, un NON ou
processeur. L’ensemble du processus est assez complexe, même pour un OU EXCLUSIF. Associés à la matrice du FPGA, ces composants
un ingénieur expérimenté, comme l’a montré notre série sur le projet servent à créer des structures plus grandes comme des mémoires,
SCCC de Martin Oßmann [1]. Heureusement, il n’est pas nécessaire additionneurs ou multiplexeurs, qui à leur tour peuvent être combinés
de partir de zéro. On peut exploiter certaines solutions (quasiment pour former un système encore plus complexe tel qu’un processeur ou
clés en main) déjà développées par des experts qui les ont mises à un système complet sur puce. Le FPGA peut être vu comme un jeu de
disposition gratuitement. briques de construction que l’on assemble à volonté pour construire
L’une d’elles, également sous licence open source, sera utilisée ici. par ex. un château, puis le démonter pour construire un pont ou toute
Cet article n’est pas du tout un cours complet sur le RISC-V ou les autre structure, en réutilisant les mêmes briques.
FPGA, mais il devrait accélérer le cycle d’apprentissage en montrant Pour que le FPGA exécute une fonction spécifique, il doit être configuré
comment construire et faire fonctionner une 1ère application pratique de manière adéquate. Cependant, la fastidieuse tâche de création des
aussi vite que possible. LUT et de leur connexion à la matrice ne vous incombe pas. C’est celle

6 mars/avril 2022 www.elektormagazine.fr


des outils de synthèse FPGA. Il suffit de décrire la fonction souhaitée
dans des langages tels que Verilog ou VHDL. Les outils de synthèse
comprennent généralement ces deux langages de description du Figure 1. Flux de signaux dans une LUT-4.
matériel. L’outil de synthèse connaît les caractéristiques du FPGA
et, d’après le langage de description, il crée une suite de données
binaires (ou flux de bits = bitstream) qui sert ensuite à configurer le
FPGA. La figure 2 montre la séquence de synthèse simplifiée d’un
FPGA. La plupart des fabricants de FPGA offrent des outils gratuits NEORV32
fonctionnant sous Windows et Linux. Des solutions open source effec- Le projet NEORV32 de Stephan Nolting [4] montre qu’il n’y a pas
tuent ce processus de synthèse pour certains FPGA. Elles s’exécutent besoin d’un FPGA coûteux pour construire son propre système sur
en général sur système d’exploitation Unix, par ex. Linux ou macOS. puce (SoC = System on Chip). C’est un processeur compatible RISC-V
Un FPGA peut réaliser des fonctions logiques simples, des processeurs, avec tous les périphériques nécessaires pour fonctionner comme un
voire des systèmes de processeurs... S’il abrite assez de LUT ! Verilog SoC de type MCU sur un FPGA. Ce projet est entièrement implémenté
et VHDL savent aussi décrire ces derniers. Puisque le processeur n’est en VHDL et n’est donc pas lié aux fabricants de FPGA. NEORV32
pas irréversiblement câblé dans le silicium du FPGA, on peut adapter est entièrement open source et est aussi doté d’une documentation
sa fonction ou son comportement en modifiant la description matérielle. complète, d’un cadre logiciel et d’outils.
Un tel processeur est appelé softcore (noyau logiciel). Il en existe pour La figure 3 montre les modules périphériques présents. Pêle-mêle on
diverses architectures logicielles. Parfois, ces noyaux contiennent aussi a des interfaces SPI, I²C et des UART, une interface WS2812, des GPIO,
des périphériques (interfaces de bus, etc.). L’architecture de proces- des unités MLI (PWM). Les utilisateurs débutants et avancés disposent
seur RISC-V à code source ouvert remporte un vif succès comme ainsi d’un système complet avec environnement de développement
softcore. À l’heure où nous écrivons, le choix des MCU RISC-V câblés intégral pour le NEORV32 incluant toutes les bibliothèques pour le
est encore gérable. Une première expérience de cette architecture peut matériel et les périphériques. De plus, des configurations types existent
ainsi être acquise en softcore en créant votre propre MCU RISC-V pour certaines cartes FPGA : vous êtes tout de suite opérationnel. Mais
pour le tester et l’étudier. quelles sont ces cartes « prêtes à l’emploi » ? Est-ce difficile d’instal-
Avec RISC-V, il n’y a ni frais de licence, ni accord de non-divulga- ler NEORV32 sur une carte FPGA non directement prise en charge ?
tion (NDA) ou autre accord de licence, tous généralement associés à
l’exploitation des MCU des fabricants. RISC-V implique aussi la disponi- Choix du FPGA
bilité de compilateurs de code source en C, notamment le compilateur En théorie, toute carte équipée d’un FPGA avec suffisamment de
GNU C (GCC). Et donc, les bibliothèques de base sont aussi en place. ressources convient, puisque NEORV32 n’utilise pas d’extensions

Figure 2. Étapes du processus de synthèse d’un FPGA.

Figure 3. Schéma de
principe des blocs
fonctionnels de
NEORV32 (source :
Github / Nolting,
S. [20]).

lektor mars/avril 2022 7


Figure 4. L’iCE40UP5K en format QFN mesurant 7×7 mm. Figure 5. Carte iCEBreaker avec connecteur PMOD.

spécifiques au fabricant. Le FPGA iCE40UP5K de Lattice [5] équipe une chaîne d’outils adéquate (similaire à celle du Kendryte K210 [10]).
plusieurs cartes bon marché. Il existe un compilateur GNU C (GCC) et des bibliothèques complé-
Le FPGA iCE40UP5K de Lattice est actuellement le plus puissant des mentaires pour les périphériques NEORV32.
iCE40 Ultra-Plus. Au total, il dispose de : 5280 LUT, 120 Kbits (15 Ko)
de RAM EBR, de 1024 Kbits (128 Ko) de SPRAM et d’unités fonction- Mise en place
nelles câblées SPI et I²C. C’est une solide plate-forme pour construire Comme mon collègue Clemens Valens l’expose dans sa vidéo [11],
vos propres projets. Ses caractéristiques, le type de boîtier de la puce travailler avec des FPGA, c’est un peu comme cuisiner. Assurez-vous
et son faible coût contribuent à rendre ce FPGA intéressant. Le format d’abord que tous les ingrédients et ustensiles (outils) nécessaires sont
QFN-48 de 7 × 7 mm (fig. 4) est beaucoup plus facile à exploiter que là. Pour éviter tout risque d’affecter l’installation principale de votre
le BGA et son prix d’environ 5 € par puce le place dans une fourchette OS, vous pouvez travailler sur une machine virtuelle. Ici, nous suppo-
de prix intéressante. Aujourd’hui (octobre 2021), ce FPGA est proposé sons qu’une version 20.04 d’Ubuntu a été fraîchement installée sur un
autour de 5 à 6 € l’unité chez tous les distributeurs, mais il est en système AMD64. L’utilisation d’un Raspberry Pi devrait être possible,
rupture de stock et le délai de livraison peut atteindre 46 semaines. puisqu’Ubuntu 20.04 et l’OS du Raspberry Pi sont tous deux basés
Pour notre projet, vous n’aurez pas à concevoir un circuit imprimé pour sur Debian, mais l’architecture peut engendrer de petites différences.
le FPGA. Les FPGA iCEBreaker (fig. 5) et iCEBreaker Bitsy (fig. 6) de Pour ce projet, je n’ai utilisé qu’Ubuntu 20.04 sur une machine AMD64.
1BitSquared [6] sont deux cartes de développement en matériel ouvert Pour synthétiser le « matériel » du FPGA, la version à jour de la suite
sur lesquelles le FPGA iCE40UP5K est déjà monté. En matériel ouvert, OSS CAD [12] doit être téléchargée dans le dossier de base. Ce fichier
la carte UPduino V3.0 [7] de tinyVision.ai est une alternative (fig. 7). s’appelle oss-cad-suite-linux-x64-xxxxxxxx.tgz. Dans un terminal, décom-
Le projet NEORV32 est 100 % compatible avec l’UPduino V3.0 et pressez ce fichier en utilisant tar -xvzf oss-cad-suite-linux-
comprend d’autres projets types. Les modifications requises sur la carte x64-xxxxxxxx.tgz et ensuite déplacez-le vers /opt avec sudo mv
FPGA iCEBreaker sont très rapides à effectuer. Pour commencer, nous ~/oss-cad-suite /opt/. Afin que le dossier soit accessible ultérieu-
utiliserons l’UPduino V3.0, puis nous indiquerons comment adapter rement, définissez les droits avec chmod 777 /opt/oss-cad-suite
notre projet d’exemple pour qu’il fonctionne sur la carte iCEBreaker. -R. La bibliothèque libgnat-9 est également requise, installez-la avec
Avec ce FPGA, vous avez un SoC avec 64 Ko d’espace pour les appli- sudo apt install libgnat-9. Les outils FPGA sont alors en place.
cations, 64 Ko de RAM, une interface SPI, une I²C, une UART, 4 broches
d’entrée, 4 de sortie, 3 MLI, ainsi que le cœur RV32IMAC fonction- Compilateur
nant à 18 MHz. Nous avons ensuite besoin des fichiers associés à NEORV32 [4] depuis
le dépôt GitHub. À cet effet, nous allons installer git en entrant sudo
La chaîne d’outils apt install git. Puis : git clone https://github.com/stnol-
Vous pouvez prendre deux voies pour sélectionner la chaîne d’outils ting/neorv32.git ~/neorv32 clône le dépôt de NEORV32.
pour le Lattice iCE40up5k : soit les outils de Lattice [8], soit la suite OSS Pour communiquer plus tard avec le NEORV32, un programme
CAD entièrement basée sur des outils open source de YosysHQ [9]. de terminal sera nécessaire. En général, j’utilise un programme
Pour ce projet, nous choisirons la 2e voie, celle de l’open source. Cela éprouvé : HTerm de Tobias Hammer. Il peut être téléchargé depuis
signifie que notre système d’exploitation sera Ubuntu 20.04 LTS et sa page d’accueil [13] avec wget www.der-hammer.info/termi-
que la suite OSS CAD sera utilisée pour synthétiser le NEORV32 nal/hterm-linux-64.tgz. Ensuite mkdir ~/hterm && tar -xvf
pour l’iCE40UP5K. hterm-linux-64.tgz -C ~/hterm extrait le contenu du fichier tgz
Outre les outils du FPGA, un programme de démonstration du proces- dans le dossier ~/hterm. Pour qu’un utilisateur puisse ensuite accéder
seur RISC-V synthétisé sera aussi compilé ultérieurement : ce sera aux interfaces série, il faut l’ajouter comme membre du groupe dialout.
notre version du classique message « Hello World », envoyé à l’aide de À cet effet, utilisez le terminal et entrez sudo adduser $(whoami)
l’UART. Là encore, des outils open source sont utilisés pour produire dialout.

8 mars/avril 2022 www.elektormagazine.fr


Figure 6. iCEBreaker Bitsy (source : https://cdn.shopify.com/s/ Figure 7. L’UPduino V3.0 avec les barrettes de broches installées.
files/1/1069/4424/products/IMG_3859_large.jpg / 1BitSquare).

Le compilateur C doit maintenant lui-même subir une compilation. Dans rules.d/53-lattice-ftdi.rules. Un nouveau fichier s’ouvre en
les exemples pour iCE40up5k, NEORV32 est configuré en RV32IMAC, écriture ; il faut y entrer :
les commandes de multiplication et de division d’entiers sont donc
disponibles (cf. l’encadré Convention de nomenclature RISC-V). Le ACTION=="add", ATTR=="0403", ATTR=="6010",
compilateur doit être compilé selon cette architecture particulière et MODE:="666"
les extensions de commandes ; la documentation de NEORV32 [14] ACTION=="add", ATTR=="0403", ATTR=="6014",
indique pourquoi cette adaptation est importante. MODE:="666"
Avec un terminal, tapez cd ~ pour aller dans le dossier de base puis
tapez git clone https://github.com/riscv/riscv-gnu-tool- Puis enregistrez le fichier. Les préparatifs sont terminés et on peut
chain --recursive pour cloner la chaîne d’outils RISC-V. Il faudra commencer la synthèse puis le téléchargement de notre premier
encore installer quelques compléments logiciels comme suit : programme de test. Pour que tous les paramètres prennent effet, il
faut redémarrer. Pour une utilisation avec VHDL et Verilog, il est préfé-
sudo apt-get install autoconf automake autotools- rable d’utiliser un éditeur avec coloration syntaxique.
dev curl python3 libmpc-dev libmpfr-dev libgmp-
dev gawk build-essential bison flex texinfo gperf NEORV32 pour le FPGA
libtool patchutils bc zlib1g-dev libexpat-dev À l’état hors tension, le FPGA n’est pas configuré. À la mise sous
tension, le iCE40UP5K lit la description des connexions internes sur
Enfin, le compilateur et les bibliothèques peuvent être compilés. une flash SPI externe. Celle-ci doit donc d’abord être stockée dans la
Avec les processeurs RISC-V, les commandes prises en charge sont flash SPI de l’UPDuino V3.0 ou de l’iCEBreaker.
hiérarchisées. Cela signifie, par ex., que le code compilé pour un modèle Ici, nous créons un projet type pour la carte UPduino V3.0 contenant
RV32I sera exécutable sur un modèle RV32IMAC, mais pas l’inverse. le processeur et les périphériques. Le système créé devrait pouvoir
C’est pourquoi il vaut mieux compiler d’abord la chaîne d’outils pour fonctionner directement sur le FPGA.
qu’elle soit compatible avec le modèle de plus petit dénominateur Via un terminal, tapez cd ~/neorv32/setups/osflow/ pour vous
commun. À l’aide du terminal, tapez cd ~/riscv-gnu-toolchain rendre dans le dossier d’exemples des outils open source. Pour démar-
pour aller au répertoire de la chaîne d’outils clonée puis ./configure rer la synthèse et donc la création du bitstream pour le FPGA, tapez
--prefix=/opt/riscv --with-arch=rv32i --with-abi=ilp32 make BOARD=UPduino UP5KDemo. C’est tout ! Mais il faut patien-
pour préconfigurer la chaîne d’outils de compilation. Dès lors, nous ter, le processus de synthèse peut prendre du temps... Le dossier ~/
pouvons lancer la tâche de compilation avec sudo make. La chaîne neorv32/setups/osflow/ contient désormais un fichier nommé neorv32_
d’outils sera sur /opt/riscv. Pour que tout le monde accède au compi- UPduino_v3_UP5KDemo.bit. Le flux binaire interne du fichier décrit les
lateur, il faut modifier les droits de /opt/riscv. Accordez l’accès à tout interconnexions des blocs logiques de base à réaliser dans le FPGA.
le monde en tapant chmod 777 /opt/riscv -R sur un terminal. C’est ce flux binaire qu’il faut maintenant écrire dans la flash SPI de
Pour la suite OSS CAD et la chaîne d’outils RISC-V GCC, il faut effec- la carte FPGA.
tuer une modification de la variable path du fichier /etc/environment. Pour cela, nous pouvons relier la carte UPduino au PC par un câble
Tapez sudo nano /etc/environment pour ouvrir le fichier et après USB. Dans le terminal, tapez iceprog ~/neorv32/setups/osflow/
PATH=» entrez la chaîne /opt/oss-cad-suite/bin:/opt/riscv/ neorv32_UPduino_v3_UP5KDemo.bit pour lancer la programmation
bin:, ensuite enregistrez le fichier. de la flash SPI externe, et la configuration est ensuite chargée dans le
La plupart des cartes FPGA gère l’interface de programmation FPGA. Cela signifie que notre système RISC-V est maintenant confi-
avec une puce FT232H de FTDI. Pour qu’un utilisateur puisse y guré dans l’UPduino V3.0, et que nous pouvons lui confier des logiciels.
accéder sans droits root, il faut créer une règle udev appropriée Comme indiqué au début, 64 Ko de mémoire sont disponibles pour les
pour la puce FTDI. Via le terminal, entrez sudo nano /etc/udev/ applications et 64 Ko en RAM. Comme périphériques, nous avons trois

lektor mars/avril 2022 9


Figure 8. Modifications de configuration de la taille de la RAM.

1
5V

2
VCC

CH340

3
MOD2
3V3

USB

4
TXD

5
RXD

6
GND

48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
R
28
38
42
36
43
34
37
31
35
32
27
26
25
23
GND
3V3
5V
B
G

DONE
RST

GND
VIO
Figure 10. Raccordement

Upduino 3.0
MOD1

USB
de l’UPduino à l’adaptateur 50

Figure 9. L’exécutable NEORV32_exe.bin est créé. USB/série.


5V
49

210175-029
GND

GND

SCK
12M
46
47
45
48

44

18
19
13
21
12

10
20
50
51

55
11
2

3
4

6
9
11
1
2
3
4
5
6
7
8
9
10

12
13
14
15
16
17
18
19
20
21
22
23
24
interfaces (SPI, I²C, UART), quatre entrées et quatre sorties, ainsi que sur la carte à l’aide du bootloader intégré. Il reçoit les données via
trois sorties MLI. Le CPU synthétisé ici est un modèle RV32IMAC qui l’UART (19200 bauds, 8 bits de données, 1 bit d’arrêt, sans parité ni
fonctionne à 18 MHz. Le SoC dans le FPGA a aussi un petit chargeur contrôle de flux). Si une carte UPduino V3.0 est utilisée, un convertis-
d’amorçage accessible via l’UART. seur USB-série externe est nécessaire, par ex. le convertisseur CH340
de la boutique d’Elektor. (Reportez-vous à l’encadré Produits.) Il doit
Hello World être connecté comme indiqué à la figure 10.
Le FPGA est maintenant équipé du NEORV32 et la première démo Hello HTerm est utilisé pour le téléchargement lui-même. On peut le lancer
World peut être compilée et téléchargée sur le RISC-V. Le NEORV32 depuis un terminal avec ~/hterm/hterm ; une fenêtre comme sur
est configurable, la taille réelle de la RAM doit donc être définie dans la figure 11 devrait apparaître. Il faut sélectionner le convertisseur
le script du linker. Pour ce faire, entrez nano ~/neorv32/sw/common/ USB-série comme port, en général il s’appelle /dev/ttyUSB0 ; cela
neorv32.ld avec le terminal et à la ligne 62 : peut toutefois dépendre de la configuration matérielle et de l’adap-
tateur sélectionné.
ram (rwx) : ORIGIN = 0x80000000, LENGTH = Après raccordement de l’adaptateur série USB, l’UPduino peut être
DEFINED(make_bootloader) ? 512 : 8*1024 alimenté en tension et le message du bootloader doit apparaître
(fig. 12). Si aucun caractère n’est envoyé à temps (en moins de 8 s)
à la place de : au bootloader, il tente de démarrer automatiquement à partir de la
flash SPI qui ne contient encore aucun logiciel. Sinon, le bootloader
ram (rwx) : ORIGIN = 0x80000000, LENGTH = passe en mode commande. Tapez u pour activer le téléchargement
DEFINED(make_bootloader) ? 512 : 64*1024 (fig. 8) dans le bootloader et cliquez sur le bouton Select File dans HTerm.
Comme on peut le voir sur la figure 13, il faut sélectionner le fichier
Le compilateur RISC-V est maintenant prêt à l’emploi. Dans un termi- neorv32_exe.bin dans le dossier ~/neorv32/sw/example/hello_world
nal ouvert, vous pouvez aller dans le dossier du programme Hello puis le télécharger. Une fois tout terminé, le bootloader renvoie OK (cf.
World en tapant : fig. 14) et il suffit d’entrer e pour exécuter le programme.
Le résultat apparaît à la figure 15. En fait, le programme a été stocké
cd ~/neorv32/sw/example/hello_world dans la « ROM » basée sur la RAM du NEORV32 et non dans la flash
SPI. Cela prolonge la durée de vie de la flash SPI en y réduisant le
Pour produire un fichier exécutable pouvant être chargé dans le nombre de cycles d’écriture. L’inconvénient c’est que le programme
NEORV32, il suffit d’entrer make exe. Ce fichier s’appellera neorv32_ doit être rechargé à chaque redémarrage de NEORV32. Pour charger
exe.bin (fig. 9). Pour pouvoir exécuter NEORV32, il faut alors le charger le programme automatiquement, il faut que le bootloader le mette

10 mars/avril 2022 www.elektormagazine.fr


Figure 11. Aperçu d’une fenêtre HTerm. Figure 12. Chargeur de démarrage NEORV32.

Figure 14. Téléchargement réussi.

Figure 13. Fenêtre de téléchargement upload neorv32_exe.bin.

Figure 15. « Hello World » de NEORV32.

lektor mars/avril 2022 11


Convention de nomenclature RISC-V identique à celui des fichiers neorv32_UPduino_BoardTop_UP5KDemo.
RISC-V est un terme générique pour les diverses variantes de vhd et neorv32_UPduino_BoardTop_MinimalBoot.vhd, copions d’abord
l’architecture. Notre collègue d’Elektor Stuart Cording a écrit un ceux-ci en les renommant. Par ex. utilisons un terminal et entrons :
excellent article (« RISC-V quesaco », Elektor 7-8/2021, [2]) qui
donne de plus amples détails. RISC-V décrit une architecture de cp ~/neorv32/setups/osflow/board_tops/neorv32_
jeu d’instructions (en anglais ISA = Instruction Set Architecture) qui UPduino_BoardTop_MinimalBoot.vhd
classe les processeurs en versions 32, 64 ou 128 bits. Un proces- ~/neorv32/setups/osflow/board_tops/neorv32_
seur à 32 bits a un nom commençant par RV32 pour 32 bits, et iCEBreaker_BoardTop_MinimalBoot.vhd
donc RV64 indique un processeur à 64 bits. En outre, un certain
nombre de lettres viennent s’ajouter pour indiquer les commandes et :
et extensions que le processeur peut gérer. Ces lettres vont de A
à Z ; elles sont explicitées dans la spécification RISC-V actuelle [3]. cp ~/neorv32/setups/osflow/board_tops/neorv32_
Les performances des processeurs sont fonction des commandes UPduino_BoardTop_UP5KDemo.vhd
et extensions prises en charge. ~/neorv32/setups/osflow/board_tops/neorv32_
iCEBreaker_BoardTop_UP5KDemo.vhd

Il faut apporter quelques modifications aux deux fichiers neorv32_


iCEBreaker_BoardTop_UP5KDemo.vhd et neorv32_iCEBreaker_
dans la flash SPI. En plus de la démo « Hello World » de base, il y BoardTop_MinimalBoot.vhd. Dans le fichier neorv32_iCEBreaker_
a d’autres exemples à découvrir, dont un FreeRTOS complet déjà BoardTop_UP5KDemo.vhd, changez la ligne 42 en entity neorv32_
présenté dans Elektor [15]. Cela vaut la peine d’aller voir le dossier iCEBreaker_BoardTop_UP5KDemo is et la ligne 68 en architec-
~/neorv32/sw/example, où plusieurs autres exemples figurent dans ture neorv32_iCEBreaker_BoardTop_UP5KDemo_rtl of neorv32_
des dossiers individuels. iCEBreaker_BoardTop_UP5KDemo is. Dans le fichier neorv32_
iCEBreaker_BoardTop_MinimalBoot.vhd, changez la ligne 42 en entity
Un nouvel environnement FPGA iCE40UP5K neorv32_iCEBreaker_BoardTop_MinimalBoot is et la ligne 54 en
L’utilisation de la carte iCEBreaker montrera comment adapter architecture neorv32_iCEBreaker_BoardTop_MinimalBoot_rtl
NEORV32 à d’autres cartes iCE40up5k. Les caractéristiques du SoC of neorv32_iCEBreaker_BoardTop_MinimalBoot is.
lui-même ne sont pas modifiées, seule l’affectation des broches sur
le FPGA est adaptée de sorte qu’une carte iCEBreaker soit utilisable En dernière étape, placez le fichier de contraintes iCEBreaker.pcf dans
et qu’un bitstream adéquat soit produit. ~/neorv32/setups/osflow/constraints/. Le listage 1 donne le contenu
Pour ce faire, il faut éditer le Makefile dans ~/neorv32/setup/osflow. de ce fichier. ICEBreaker.pcf affecte les fonctions à diverses broches
Le fichier s’ouvre avec l’éditeur de texte de votre choix et on ajoute la du FPGA. Il englobe aussi directement le convertisseur USB/série
nouvelle carte comme cible. Pour la carte iCEBreaker, il faut écrire ce présent sur la carte iCEBreaker, et achemine les boutons et les LED
qui suit à la ligne 72 : sur les broches d’E/S de NEORV32. Une chose manque : un bouton
reset. Bien qu’il soit défini dans le fichier de contraintes, sa fonction
iCEBreaker: n’est pas référencée ici.
$(MAKE) \ Une fois les changements nécessaires effectués, il ne reste qu’à
BITSTREAM=neorv32_$(BOARD)_$(DESIGN).bit \ produire le bitstream comme avec la carte UPduino. Pour cela, tapez
cd ~/neorv32/setups/osflow sur un terminal pour atteindre le
NEORV32_MEM_SRC="devices/ice40/neorv32_imem.ice40up_
dossier osflow ; ensuite, make BOARD=iCEBeaker UP5KDemo démarre
spram.vhd devices/ice40/neorv32_dmem.ice40up_
le processus qui produit les bitstreams ; pour les télécharger vers
spram.vhd" \
l’iCEBreaker (comme avec l’UPduino), nous utilisons iceprog ~/
run
neorv32/setups/osflow/neorv32_iCEBreaker_UP5KDemo.bit.
Le chargement du logiciel dans le NEORV32 est là aussi pris en charge
Cela garantit que la carte est référencée dans le Makefile primaire. par le bootloader intégré. La carte iCEBreaker évite le recours à un
Dans ~/neorv32/setup/osflow/boards il faut aussi un fichier iCEBrea- convertisseur USB/série externe, car nous utilisons la 2e voie du conver-
ker.mk avec le contenu suivant : tisseur intégré sur celle-ci.

.PHONY: all Bouton de réinitialisation pour le NEORV32


Pour redémarrer le NEORV32, il faut couper brièvement l’alimenta-
all: bit tion électrique, puis la rallumer. Cela devient fastidieux à la longue, et
echo "! Built $(IMPL) for $(BOARD)" l’iCEBreaker ayant assez de boutons, on peut utiliser l’un d’eux pour
le réinitialiser (reset). Par ex., le uButton près de la prise micro-USB
Les Makefiles sont alors prêts, mais il manque encore deux fichiers de la carte ; il est connecté à la broche 10 du FPGA.
VHDL : neorv32_iCEBreaker_BoardTop_UP5KDemo.vhd et neorv32_ Le NEORV32 possède une entrée interne rstn_i (reset) reliée à la sortie
iCEBreaker_BoardTop_MinimalBoot.vhd qui doivent être déposés sur lock de la PLL (Phase Lock Loop = boucle à verrouillage de phase) de
~/neorv32/setup/osflow/board_tops/. Comme leur contenu est quasi l’horloge du système. Si la PLL se déverrouille, elle envoie un reset au

12 mars/avril 2022 www.elektormagazine.fr


Listage 1. iCEBreaker.pcf #GPIO - input
ldc_set_location -site {18} [get_ports {gpio_i[0]}]
#UART (uart0) ldc_set_location -site {19} [get_ports {gpio_i[1]}]
ldc_set_location -site {9} [get_ports uart_txd_o] ldc_set_location -site {20} [get_ports {gpio_i[2]}]
ldc_set_location -site {6} [get_ports uart_rxd_i] ldc_set_location -site {28} [get_ports {gpio_i[3]}]

#SPI - on-board flash #GPIO - output


ldc_set_location -site {14} [get_ports flash_sdo_o] ldc_set_location -site {25} [get_ports {gpio_o[0]}]
ldc_set_location -site {15} [get_ports flash_sck_o] ldc_set_location -site {26} [get_ports {gpio_o[1]}]
ldc_set_location -site {16} [get_ports flash_csn_o] ldc_set_location -site {27} [get_ports {gpio_o[2]}]
ldc_set_location -site {17} [get_ports flash_sdi_i] ldc_set_location -site {23} [get_ports {gpio_o[3]}]

#SPI - user port #RGB power LED


ldc_set_location -site {43} [get_ports spi_sdo_o] ldc_set_location -site {39} [get_ports {pwm_o[0]}]
ldc_set_location -site {38} [get_ports spi_sck_o] ldc_set_location -site {40} [get_ports {pwm_o[1]}]
ldc_set_location -site {34} [get_ports spi_csn_o] ldc_set_location -site {41} [get_ports {pwm_o[2]}]
ldc_set_location -site {31} [get_ports spi_sdi_i]
#Reset
#TWI ldc_set_location -site {10} [get_ports
ldc_set_location -site {2} [get_ports twi_sda_io] {user_reset_btn}]
ldc_set_location -site {4} [get_ports twi_scl_io]

NEORV32. La solution la plus propre serait d’envoyer le signal de réini- produira si vous oubliez la virgule à la fin. Le uButton est mainte-
tialisation de l’utilisateur au même point que le signal lock de la PLL nant configuré pour fonctionner comme un reset. Enfin, pour que les
de sorte le NEORV32 reçoive le reset de l’un ou de l’autre. La solution changements prennent effet, produisez un nouveau bitstream dans
la plus simple et la plus rapide est d’utiliser l’entrée reset de la PLL. l’UP5K-Demo et chargez-le dans le FPGA iCEBreaker.
La connexion du uButton, user_reset_btn avec cette entrée est sur la
figure 16. Dès lors, si on appuie sur uButton, la PLL est réinitialisée, Et maintenant !
le signal lock_o passe au niveau bas et le NEORV32 est réinitialisé. Il faudrait consacrer un livre entier à chacun de ces sujets : RISC-V,
Afin d’incorporer cette modification dans le projet UP5K-demo, il faut FPGA et NEORV32. Pour les débutants, l’iCE40UP5K est peu onéreux,
insérer une ligne puis en modifier une autre dans le fichier neorv32_ mais la puce est bien souvent en rupture d’approvisionnement. Les
iCEBreaker_BoardTop_UP5KDemo.vhd se trouvant dans le dossier ~/ deux cartes référencées dans l’article ne sont pas les seules à accueillir
neorv32/setups/board_tops. Après la ligne 44, insérez la nouvelle ligne ce FPGA. Il en existe plusieurs autres : cela va du HAT pour Raspberry
user_reset_btn : in std_ulogic;. Modifiez ensuite la ligne 130 : Pi à la console portable complète. Les différents outils et projets appli-
RESETB => user_reset_btn,. Attention, une erreur de syntaxe se cables à ce FPGA méritent également d’être étudiés. Citons par ex.

Figure 16. Raccordement du bouton de réinitialisation uButton à l’entrée rst de la PLL.

lektor mars/avril 2022 13


LiteX [16] qui permet d’assembler votre propre SoC comme dans un
kit et n’est pas nécessairement limité à RISC-V, RISCboy [17] de Luke PRODUITS
Wren qui fournit un système de type Gameboy dans le FPGA, et la
console de jeu OK-ice40-PRO [18].
Si les difficultés d’approvisionnement disparaissent, d’autres projets > Carte de développement FPGA Alchitry Cu
(Lattice iCE40 HX)
et idées pour l’iCE40UP5K naîtront à coup sûr. Une petite console de www.elektor.fr/19640
jeux conçue à partir d’un iCE40UP5K et d’un Raspberry Pi RP2040
semble déjà être en préparation [19]. > Convertisseur USB-TTL CH340,
210175-04 module UART CH340G (3,3 V/5,5 V)
www.elektor.fr/19151

> Livre en anglais, « Inside an Open-Source Processor »,


Contributeurs M. Dalrymple (Elektor 2021)
Texte et images : Mathias Claußen www.elektor.fr/19826
Rédaction : Jens Nickel
Traduction : Yves Georges
Mise en page : Harmen Heida

Des questions, des commentaires ?


Envoyez un courriel à l’auteur ([email protected])
ou contactez Elektor ([email protected]).

LIENS
[1] M. Ossmann, « projet SCCC (1) », Elektor 3-4/2019 : www.elektormagazine.fr/180394-04
[2] S. Cording, « RISC-V : quesaco ? », Elektor 7-8/2021 : www.elektormagazine.fr/210223-04
[3] Spécification du RISC-V : http://riscv.org/technical/specifications/
[4] Dépôt GitHub de NEORV32 : http://github.com/stnolting/neorv32/
[5] Page du produit Lattice iCE40UltraPlus : www.latticesemi.com/en/Products/FPGAandCPLD/iCE40UltraPlus
[6] Dépôt GitHub d’iCEBreaker : http://github.com/icebreaker-fpga/icebreaker
[7] Dépôt GitHub de l’UPduino : http://github.com/tinyvision-ai-inc/UPduino-v3.0
[8] Lattice Radiant : www.latticesemi.com/LatticeRadiant
[9] YosysHQ oss-cad-suite-build : http://github.com/YosysHQ/oss-cad-suite-build
[10] Configurer une chaîne d’outils pour le Kendryte K210, Elektor Labs : www.elektormagazine.com/labs/setup-a-toolchain-for-
the-kendryte-k210-1
[11] Snickerdoodles au goût de Linux avec Zynq, ElektorTV : www.youtube.com/watch?v=EE4yYZ-FEoQ
[12] YosysHQ oss-cad-suite-build Releases : http://github.com/YosysHQ/oss-cad-suite-build/releases
[13] HTerm : www.der-hammer.info/
[14] NEORV32 - Construire la chaîne d’outils à partir de zéro :
http://stnolting.github.io/neorv32/ug/#_building_the_toolchain_from_scratch
[15] W. Gay, « multitâche en pratique avec l’ESP32 », Elektor 1-2/2020 : www.elektormagazine.fr/190182-03
[16] LiteX : http://github.com/enjoy-digital/litex
[17] RISCBoy : http://github.com/Wren6991/RISCBoy
[18] OK-iCE40Pro Handheld : http://github.com/WiFiBoy/OK-iCE40Pro
[19] PicoStation3D : http://github.com/Wren6991/PicoStation3D
[20] Nolting S., The NEORV32 RISC-V-Processor, dépôt GitHub 2020 :
http://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/neorv32_processor.png

14 mars/avril 2022 www.elektormagazine.fr


comment ?

tracer des graphiques


avec Arduino
C’est facile avec le traceur sériel d’Arduino

Figure 1. Le traceur en série vous


attend dans le menu Outils de l’IDE.

Clemens Valens (Elektor)

L’un des points forts d’Arduino est son port série bien pratique pour exporter des
données, recevoir des commandes ou pour déboguer. Il existe un moniteur série et un
traceur série pour visualiser ces données. Le premier marche tout seul, et voici comment
utiliser le Serial Plotter.

La plupart des utilisateurs d’Arduino connaissent le Serial Monitor L’EDI Arduino comporte un Serial Plotter (dans le menu Outils, ou
intégré à l’IDE (dans le menu Outils, ou avec Ctrl+Maj+M). Ce modeste avec Ctrl+Maj+L, fig. 1).
terminal série affiche toutes les données reçues sur le port série. Il À partir des données numériques que reçoit ce traceur en série, il crée
permet d’envoyer des chaînes de caractères (p.ex. des commandes ou des graphiques et les affiche. Ce n’est pas la cybernétique avec plein
des données) de l’ordinateur à la carte Arduino. Pendant le débogage, d’options, mais c’est facile à utiliser. Seulement il n’y a pas de doc à
utilisez le Serial Monitor pour faire envoyer par le sketch des messages son sujet. Seul le code source Java [1] peut vous donner une idée de
texte sur ce qu’il fait ou ce qu’il est censé faire, c’est pratique. ses capacités. Essayez et vous découvrirez les fonctions suivantes :

Peloteur en série > nombre illimité de graphiques ;


Le Serial Monitor peut aussi afficher des valeurs numériques, bien > mise à l’échelle automatique de l’axe vertical ou Y ;
sûr. Vous avez déjà essayé de suivre l’évolution d’un paramètre sous > 500 points sur l’axe horizontal ou X ;
forme d’une liste de valeurs imprimées ? C’est plutôt soporifique… > afficher les 500 points de données les plus récents.

lektor mars/avril 2022 15


Figure 2. L’axe horizontal peut accueillir jusqu’à 500 points. Si vous en Figure 3. En théorie, le nombre de graphes est illimité. Utilisez des libellés
envoyez plus, il se mettra à défiler. pour savoir quel graphique représente quelles données.

Serial.print(humidity);
Peloter un graphique
Serial.print(’,’);
Après avoir ouvert le traceur en série, choisissez la même vitesse
Serial.print(pressure);
de transmission que celle qui est spécifiée dans Serial.begin dans
Serial.println();
le sketch. La case voisine de la boîte de sélection de la vitesse est
destinée à renvoyer les données vers le sketch, exactement comme
dans le Serial Monitor. Cela vous permet de contrôler le croquis dans Le format qui sépare les données par une virgule est dit CSV, pour
une certaine mesure. comma-separated values (valeurs séparées par des virgules). La plupart
des tableurs reconnaissent ce format, certains vous permettent de
Vous n’aurez besoin d’apprendre ni le grec ni aucune commande choisir vous-même le caractère séparateur. Une fois que le résultat vous
spéciale pour utiliser le traceur série, ce sont les mêmes commandes plaît dans le Serial Plotter, exportez les valeurs avec le Serial Monitor
de port série que le moniteur série. Peloter en série, c’est juste une pour les copier-coller dans un tableur et obtenir de jolis graphiques
autre façon de visualiser les données envoyées par le port série. et faire d’autres traitements.
C’est seulement le formatage des données qui importe. Pour tracer le
graphique d’un seul paramètre (fig. 2), une valeur de capteur p.ex., il La liste des valeurs des données est lue comme des valeurs y diffé-
suffit de séparer les valeurs successives par un caractère de saut de rentes pour une valeur x invariable, de sorte que tous les graphiques
ligne. Autrement dit, pour envoyer les valeurs, utilisez sont actualisés au même moment et à la même vitesse. Le traceur
affectera une couleur différente à chaque graphique sans demander
Serial.println(sensor_value); l’avis de l’utilisateur. La seule façon d’influer un peu sur ce choix est
de jouer sur l’ordre des données.

Les échelles s’adaptent à la plage Libellés


Le traceur utilisera ces valeurs pour l’axe vertical, l’axe Y ; il incrémente Ce peloteur ne manque pas de fantaisie, puisqu’il permet de spécifier
lui-même l’axe horizontal (X). Autrement dit, la première valeur envoyée un libellé pour chaque graphique (fig. 3). Il y a deux façons de le faire :
sera considérée comme la valeur «y» pour x = 0, la deuxième valeur
est la valeur «y» pour x = 1, et ainsi de suite. Lorsque x atteint 500, le 1. Avant d’envoyer des valeurs de données, envoyez une liste de
graphique commence à défiler horizontalement ; à mesure que les libellés séparés par une virgule, un espace ou une tabulation
points les plus anciens sont supprimés au début, de nouveaux points et terminez avec un caractère de retour à la ligne. Ces carac-
sont ajoutés à la fin . tères réservés ne peuvent donc pas figurer dans les libel-
lés. Pour qu’elles correspondent, les données doivent être
Lorsque la valeur y sort des limites, l’échelle de l’axe vertical s’adapte envoyées dans le même ordre que les libellés. Exemple :
automatiquement pour rester dans les limites verticales. Inversement,
si toutes les valeurs tiennent entre dans des limites resserrées (lorsque Serial.println(«temperature,humidity,pressure»)
le graphique défile et qu’une valeur élevée a été supprimée au début),
l’échelle s’adapte à la nouvelle plage de valeurs. 2. Envoyez étiquettes et valeurs par paires et séparez-les par deux
points (:), par exemple :

Peloter plusieurs graphiques Serial.println(«temperature:21,humidity:76,


Pour tracer deux paramètres ou plus, envoyez les différentes valeurs pressure:1007»)
sous forme d’une liste de valeurs séparées par une virgule, un espace
ou un caractère de tabulation (\t) et fermez la liste avec un caractère Envoyez ces paires toujours dans le même ordre pour que le
de retour à la ligne : traceur ne mélange pas les données des graphiques. Une liste
de paires de valeurs de libellés doit être séparée à son tour soit
Serial.print(temperature); par une virgule, un espace ou une tabulation et se terminer par
Serial.print(’,’); un caractère de retour à la ligne.

16 mars/avril 2022 www.elektormagazine.fr


Toute chaîne de texte sera considérée comme un libellé, et vous ne
manquerez pas d’occasions de vous fourvoyer, par exemple en oubliant
les délimiteurs, ce qui fait que les données se changeront en libellé.

Caprices et limites
> L’axe horizontal se prolonge à l’infini. Pas moyen de boucler le
tracé par programmation. À moins de fermer le traceur et de le
rouvrir. Parfois, il faut s’y reprendre à deux fois pour se débarras-
ser des libellés et/ou des données périmés.

> Vous ne pourrez pas tracer un point à une position (x,y) de votre Figure 4. L’envoi de valeurs minimales et maximales constantes évite la mise
choix sans que de nouveaux points soient ajoutés derrière. à l’échelle automatique de l’axe vertical, mais seulement tant que toutes les
autres valeurs restent dans ces limites.
> Que l’axe vertical se mette à l’échelle automatiquement, c’est
bien, mais ça devient très ennuyeux lorsque des aberrations ou
des pépins forcent l’échelle à augmenter et rendent difficile, voire
impossible, la visualisation des données intéressantes beaucoup
plus petites. Cela peut également se produire lorsqu’une série
de données se situe dans la plage de [–1,+1] par exemple tandis Si le libellé de la chaîne est spécifié, cette fonction imprimera une paire
qu’une autre est dans la plage [–100,+100]. Dans ce cas, l’échelle label:value. Si label est une chaîne vide, alors elle n’imprimera que
sera de –100 à +100 pour les deux séries. la valeur. Cela lui permet de sortir des données au format CSV pur
dans le Serial Monitor, utilisable avec des tableurs.
Des petits malins essaient de ruser en ajoutant quelque chose
comme min:-100,max:100 à la liste des valeurs de données Vous noterez que vous ne pouvez pas avoir le Serial Monitor et le
pour tenter d’arrêter la mise à l’échelle automatique, mais cela Serial Plotter ouverts en même temps.
ne fonctionne que si toutes les valeurs restent dans ces limites
(fig. 4). Après avoir ouvert le port série, appelez-le ainsi :

> Seul le papa du peloteur en série sait pourquoi l’échelle minimale // Graph1, more graphs follow.
est généralement de –6 à +6 mais parfois de –5 à +5. plot(«Temperature»,temperature_value,false);
// Graph2, more graphs follow.
Fonction sparadrap plot(«Humidity»,humidity_value,false);
Voici un petit sparadrap à insérer à vos sketches pour améliorer un peu // Graph3, last graph.
la convivialité du traceur en série tout en gardant vos croquis lisibles : plot(«Pressure»,pressure_value,true);

void plot(String label, float value, bool last) N’oubliez pas de fermer et rouvrir le traceur en série chaque fois que
{ vous modifiez le croquis pour vous assurer que données et libellés
Serial.print(label); // May be an empty string. périmés sont tous supprimés. En cas de doute, recommencez.
if (label!=»») Serial.print(«:»); 200540-03
Serial.print(value);
if (last==false) Serial.print(«,»);
else Serial.println();
}

Votre avis, s’il vous plaît ? Ont contribué


Questions et commentaires sur cet article bienvenus par Auteur : Clemens Valens Maquette : Giel Dols
courriel à l’auteur [email protected] ou à la Rédaction : C.J. Abate Traduction : Rémy Bécarre
[email protected]

LIEN
[1] Code source du traceur série de l’IDE Arduino :
https://github.com/arduino/Arduino/blob/master/app/src/processing/app/SerialPlotter.java

lektor mars/avril 2022 17


initiation

carte CLUE d’Adafruit


Une solution intelligente pour les projets IoT

Tam Hanna (Slovakie)

La carte BBC micro:bit a connu un grand succès, bien au-delà du


marché éducatif auquel elle était destinée. La carte CLUE d’Adafruit
vient d’apparaître sur le marché, avec un écran à part entière et plus
de mémoire. Dotée du Bluetooth LE et d’une multitude de capteurs
intégrés, elle convient particulièrement bien aux petits projets IoT.

Après le succès des cartes Arduino et Raspberry Pi, il est que Spy oz en Slovaquie qui a lancé des sociétés qui ne s’occupent
devenu évident qu’il y a de l’argent à faire avec les différents que de la distribution de l’écosystème micro:bit [1].
types d’ordinateurs éducatifs. En 2016, la BBC est entrée dans la L’adage selon lequel « à peine est-on servi qu’on regarde ce qu’il y
course avec micro:bit, un ordinateur monocarte doté d’un SoC a dans l’assiette du voisin » s’applique également au domaine de
Bluetooth de Nordic Semiconductor au lieu d’un processeur à l’informatique embarquée. Les progrès continus dans le domaine
part entière sous Linux. des SoC Bluetooth ont laissé les 16 MHz et les 16 Ko de SRAM de
Depuis lors, des entreprises ont vécu d’incroyables histoires, telles micro:bit paraitre un peu dépassés. De plus, son afficheur à 5 × 5 LED

Figure 1. L’attaquant vu de face... Figure 2. ... et par l’arrière.

18 mars/avril 2022 www.elektormagazine.fr


CARACTÉRISTIQUES
> Processeur Nordic nRF52840 Bluetooth LE processor : > Capteur BMP280 pour température et pression barométrique/
1 Mo de flash, 256 Ko de RAM, cœur à 64 MHz Cortex M4 altitude
> Écran TFT IPS de 1,3», 240×240, couleur pour texte et > LED RVB NeoPixel de signalisation
graphiques > Mémoire flash interne de 2 Mo pour enregistrement de
> Alimentation : toute source de 3,6 V (régulateur interne et données, images, fonts ou code CircuitPython
diodes de protection) > Buzzer/haut-parleur pour l’émission de sons et de bips
> Deux boutons pour l’utilisateur et un bouton de RàZ > Deux LED blanches brillantes à l’avant pour l’éclairage/la
> Capteur de mouvement, accéléromètre/gyroscope et détection des couleurs
magnétomètre > Connecteur Qwiic/STEMMA QT pour ajouter des capteurs,
> Capteurs de proximité, lumière, couleur et mouvement pilotes de moteurs ou des écrans par I²C. Possibilité
> Capteur de son PDM, microphone de connecter des capteurs GROVE I²C avec un câble
d’adaptation.
> Capteur d’humidité SHT
> Programmable avec l’EDI Arduino ou le langage CircuitPython.

ne convient pas pour représenter autre chose que les plus simples Les figures 1 et 2 montrent le résultat : la carte CLUE d’Adafruit qui
des graphiques. semble très similaire à la carte micro:bit de BBC. À part le SoC, qui n’est
pas immédiatement visible sur ces photos, c’est l’écran beaucoup plus
Adafruit attaque avec CLUE grand situé à l’avant qui se distingue vraiment. Les LED sont remplacées
Avec le lancement du nRF52840 de Nordic Semiconductor, un SoC par un écran couleur de 240×240 pixels, basé sur la technologie
Bluetooth monocœur dont le processeur ARM atteint 64 MHz et est classique IPS LCD plutôt que sur la technologie organique.
doté de 256 Ko de RAM, il y avait de quoi proposer un nouveau plat. Un autre détail agréable de la carte est le connecteur placé à l’arrière,
cf. figure 3. Elle dispose d’un bus I2C au format interne d’Adafruit
sur lequel d’autres capteurs peuvent être facilement connectés. Il
existe également un adaptateur pour le format Grove de Seeed,
qui propose divers capteurs à prix raisonnable.
Notez que la carte CLUE ne semble être que partiellement
compatible avec la micro:bit. Bien que le connecteur le long du
bord inférieur soit d’une construction identique, l’utilisation d’un
afficheur différent signifie qu’à première vue, la plupart des boîtiers
disponibles pour le BBC micro:bit ne conviendront pas pour la
carte CLUE d’Adafruit.
L’auteur a testé cette hypothèse avec un boîtier ThingiVerse de
domw disponible sur [2]. La partie avant ne convenait pas, car
l’écran de la CLUE était beaucoup plus grand que la matrice de
LED de l’original de BBC. Compte tenu de cela, l’auteur a été
particulièrement surpris par le fait que la face arrière du boîtier s’est
correctement montée, malgré les connecteurs supplémentaires.
Cependant, lorsqu’on l’examine de plus près, cela est probablement
dû au fait que la conception du boîtier était relativement généreuse.
Si le boîtier avait été conçu avec un ajustement plus serré, il aurait
été probablement inutilisable.

Une question de programmation


Figure 3. Le port STEMMA permet à la carte CLUE d’Adafruit Comme la micro:bit est un système éducatif, le développement
d’être connectée à des cartes d’extension. ne ressemble pas à l’expérience que l’on peut avoir en utilisant les
environnements de développement embarqués classiques tels que

lektor mars/avril 2022 19


l’ordinateur. Si elle n’est pas en mode bootloader, dmesg la détecte
comme suit :

tamhan@TAMHAN18:~$ dmesg
. . .
[28292.202193] usb 1-2.7: Manufacturer: Adafruit LLC
[28292.202195] usb 1-2.7: SerialNumber: 7687A137B6FDB874
[28292.204040] cdc_acm 1-2.7:1.0: ttyACM0: USB ACM
device

Après une double pression sur le bouton reset, une clé USB apparaît,
comme ici :

tamhan@TAMHAN18:~$ dmesg
. . . .
[28371.624193] sd 10:0:0:0: Attached scsi generic sg6
Figure 4. Cette appli pré-installée montre les informations type 0
renvoyées par les capteurs.

Important : ce lecteur ne reste pas activé pour toujours. S’il demeure


inutilisé pendant plus de 30 s environ, le micrologiciel se remet à
tourner normalement.

Recherche de fichier
En visitant l’URL https://circuitpython.org/board/clue_nrf52840_
express/, nous pouvons faire notre première étape et télécharger le
fichier adafruit-circuitpython-clue_nrf52840_express-en_US-6.1.0.uf2.
Figure 5. Le « runtime » Python dévoile également un lecteur Il contient le runtime qui doit être placé sur la clé USB.
virtuel. Notez que vous trouverez également un fichier nommé
CURRENT.UF2 sur le lecteur. Celui-ci vous permet de télécharger
le micrologiciel qui se trouve actuellement dans la mémoire du
système cible.
ARM Keil. Cela peut être gênant pour les puristes de l’embarqué, Étrangement, le runtime n’est pas fourni pas avec une bibliothèque
mais en pratique il est indispensable, car de nombreuses universités complète spécifique à tous les capteurs disponibles. Nous
n’ont pas assez de personnel compétent pour déboguer les devons plutôt aller dans l’URL https://circuitpython.org/libraries
programmes C++ (croyez l’auteur : les étudiants créent des erreurs pour télécharger l’archive adafruit-circuitpython-bundle-6.x-
de programmation vraiment complexes). mpy-20210329.zip puis l’extraire dans un dossier approprié du
Au lieu de cela, on s’appuie généralement sur un quatuor composé système de fichiers.
de l’EDI Arduino, CircuitPython, MakeCode et Scratch. Cependant, À ce stade, vous devriez jeter un autre coup d’œil à l’écran de la
pour la CLUE, seulement deux de ces environnements sont carte CLUE, car le runtime délivre en sortie et en permanence le
actuellement disponibles. MakeCode est en cours d’adaptation, contenu de la console. Un détail agréable est que le dispositif sur
sans date de disponibilité précise, et il n’y a aucune information le PC (cf. fig. 5) présente la mémoire interne de l’environnement
pour Scratch. Un chargeur d’amorçage série pour déployer le code de travail Python.
est inclus, un peu comme pour la carte Raspberry Pi Pico.
Pour une première petite expérience, faisons fonctionner Il est important de déplacer les dossiers suivants de l’archive vers
CircuitPython. Si vous connectez une carte neuve à un ordinateur, le dossier Libs du dispositif :
via le connecteur micro-USB à l’arrière, l’écran affiche une page
d’état (fig. 4) qui fournit des informations sur l’état fonctionnel. adafruit_apds9960
En appuyant deux fois sur le bouton reset situé au dos de la carte, adafruit_bus_device
le tampon de trame du pilote de l’écran se fige. Le poste de travail adafruit_display_shapes
connecté (l’auteur utilise Linux) voit alors une nouvelle clé USB adafruit_display_text
où le code compilé peut être chargé. adafruit_lsm6ds
Fait intéressant, la carte CLUE d’Adafruit est toujours visible par adafruit_register

20 mars/avril 2022 www.elektormagazine.fr


Comme si cela ne suffisait pas, Adafruit s’attend également à ce que
vous rassembliez les fichiers individuels suivants. Je ne comprends
pas pourquoi ils ne sont pas tous regroupés dans une seule archive :

adafruit_bmp280.mpy
adafruit_clue.mpy
adafruit_lis3mdl.mpy
adafruit_sht31d.mpy
adafruit_slideshow.mpy
neopixel.mpy

Exemple de code
Pour un premier essai simple avec l’environnement Python, vous
pouvez utiliser l’exemple fourni sur https://learn.adafruit.com/
adafruit-clue/clue-spirit-level. Il s’agit d’une application de niveau
à bulle utilisant plusieurs idiomes spécifiques à CLUE.
La première étape du code consiste à inclure un ensemble de
bibliothèques :
Figure 6. Un niveau à bulle utilisant les capteurs intégrés.
import board
import displayio
from adafruit_display_shapes.circle import Circle
from adafruit_clue import clue

Publicité

TAILORED TO YOUR NEEDS.


Custom & Standard Terminal Blocks

Würth Elektronik Terminal Blocks


In addition to a portfolio of more than 2000 standard articles, Würth Elektronik
offers various possibilities to tailor the products to your specific requirements.
Personalized modifications of standard terminal blocks are available for small
to medium quantities within a few days as a special service. Fully customized
products in high quantities are possible within a few weeks. In house design,
tooling and prototyping ensures all customer specific requirements are met.

For further information, please visit: www.we-online.com/TBL

• Highly customized products • Personalized modifications of


• Over 2000 standard articles standard parts for small quantities
• Available from stock without MOQ • Color & printing possibilities with
• Fast delivery MOQ for mass production

lektor mars/avril 2022 21


En plus de l’objet clue, qui assure diverses fonctions liées à la carte, while True:
importer la classe Circle est également intéressant ici. La pile x, y, _ = clue.acceleration
GUI permet à la fois de dessiner directement dans un frame buffer bubble_group.x = int(x * -10)
et de travailler avec des objets, convertis par le micrologiciel, en bubble_group.y = int(y * -10)
éléments visibles à l’écran.
Dans la section suivante, le micrologiciel initialise une référence La façon la plus pratique d’exécuter rapidement du code sur la carte
à l’écran et assemble un objet de type groupe pour l’écran : CLUE est d’utiliser le fichier code.py de la figure 5. Le micrologiciel
CircuitPython l’exécute automatiquement à chaque démarrage.
display = board.DISPLAY La figure 6 montre ce que vous pouvez obtenir.
clue_group = displayio.Group(max_size=4) Comme la carte est dotée du Bluetooth, ce peut être un canal pour
communiquer avec l’ordinateur hôte. Sur [3], Adafruit fournit un
L’objet clue_group est intéressant parce qu’il crée un élément parent exemple amusant qui illustre l’utilisation de l’API web Bluetooth
qui rappelle un arbre DOM. Notre code crée donc plus ou moins implémentée dans Google Chrome.
des objets arbitraires dans cet arbre à afficher.
Regardez la photo de la figure 6, la prochaine action du programme Et maintenant en C
est de créer les trois cercles qui représentent la déviation et à les Le langage Python permet d’obtenir rapidement des résultats
enregistrer pour la sortie : « non bureaucratiques » avec un système embarqué. Cependant,
la puissance maximale est atteinte avec le langage C. Sur un
outer_circle = Circle(120, 120, 119, outline=clue.WHITE) système monocœur avec liaison radio, la mise en œuvre de
middle_circle = Circle(120, 120, 75, outline=clue. la communication est un défi si l’on veut que l’application ne
YELLOW) souffre pas de problèmes de synchronisation. C’est pourquoi
inner_circle = Circle(120, 120, 35, outline=clue.GREEN) Adafruit oblige plus ou moins les développeurs à utiliser l’EDI
clue_group.append(outer_circle) Arduino. Un système d’exploitation en temps réel fonctionne
clue_group.append(middle_circle) alors en arrière-plan, allouant la puissance de calcul aux
clue_group.append(inner_circle) différentes tâches.
Sous Linux, la première étape nécessite un paquet d’extension qui
On trouve ensuite quelques tâches de « ménage », dont le sens permet à l’EDI Arduino (version 1.8.6 ou supérieure) de commu-
est plus facile à comprendre en examinant l’exemple de code niquer avec le bootloader non standard de CLUE :
ci-dessous :
tamhan@TAMHAN18:~$ pip3 install --user adafruit-nrfutil
x, y, _ = clue.acceleration Collecting adafruit-nrfutil
bubble_group = displayio.Group(max_size=1) . . .
level_bubble = Circle(int(x + 120), int(y + 120), 20, Successfully installed adafruit-nrfutil-0.5.3.post13
fill=clue.RED, outline=clue.RED)
bubble_group.append(level_bubble) Ensuite, il faut saisir l’URL www.adafruit.com/package_adafruit_
index.json dans le Gestionnaire de carte pour rendre le package de la
clue_group.append(bubble_group) carte Adafruit nRF52 disponible pour le téléchargement. Une fois
display.show(clue_group)
ces étapes terminées, la carte sera disponible sous Outils > Type de
carte > Adafruit CLUE.
Enfin et surtout, nous avons besoin d’une boucle qui analyse Malheureusement, comme dans le cas de CircuitPython,
les valeurs de position fournies par la bibliothèque Adafruit via l’installation de ces bibliothèques et des autres paramètres est
l’attribut acceleration et qui les écrit dans les propriétés de l’objet un processus laborieux. Vous trouverez plus d’informations à ce
bubble_group : sujet dans [4].

LIENS
[1] StreamIT, s. r. o. : https://edutronik.sk/v2/
[2] Boîtier : www.thingiverse.com/thing:1767446
[3] Appli de démonstration : https://learn.adafruit.com/bluefruit-dashboard-web-bluetooth-chrome
[4] Informations : https://learn.adafruit.com/adafruit-clue?view=all

22 mars/avril 2022 www.elektormagazine.fr


Publicité
Carte CLUE : vaut-elle le coup ?
Avec la carte CLUE, vous disposez d’une plateforme
d’évaluation très attrayante, agréable à utiliser dans le
domaine de l’interfaçage et en plus dotée d’un écran couleur. NOTRE GAMME
Toutefois son prix est relativement élevé par rapport à la carte
BBC micro:bit (nettement moins chère). Notez également que
la carte CLUE n’est pas compatible à 100% avec micro:bit.
PAR DES TECHNICIENS
L’expérience nous apprend que ce détail « insignifiant »
a un fort impact, surtout lorsque l’on se trouve dans une POUR LES TECHNICIENS
situation difficile, comme la migration d’un projet existant
et fonctionnel entre les deux plateformes. The best part of your project:
Pour ceux qui veulent travailler avec un microcontrôleur www.reichelt.com
« pur », basé sur la technologie Nordic ou tout autre module
Uniquement le meilleur pour vous -
radio, vous serez probablement mieux servis par une carte
provenant de plus de 900 marques
d’évaluation classique. En résumé, la carte CLUE est un
Nos responsables produits sont employés par Reichelt depuis
produit attachant pour ceux qui apprécient la carte BBC de nombreuses années et connaissent les exigences de nos
micro:bit, mais qui ont besoin d’un peu plus de puissance clients. Ils rassemblent une large gamme de produits de qua-
lité, à la fois parfaits pour les besoins dans les domaines de la
ou d’un véritable écran. recherche et du développement, la maintenance, l´infrastruc-
210395-04 ture informatique et la production en petites séries et adaptés
pour les fabricants.

Arduino chez reichelt


Des questions, des commentaires ? Le TinkerKit Braccio est un bras robotique
Contactez Elektor ([email protected]). entièrement fonctionnel contrôlé par
Arduino. Il peut être assemblé
emblé de
différentes manières pourur différentes
tâches telles que le déplacement
acement
Contributeurs d‘objets.
Texte et illustrations : Tam Hanna
Rédaction : Jens Nickel L SpringRC SR431 -
Traduction : Asma Adhimi Servo à double sortie
Mise en page : Giel Dols L Portée maximale : 80 cm
L Hauteur maximale : 52 cm
L Capacité de charge : poids maximal

PRIX DU JOUR ! Prix à la date du: 15. 2. 2022


à 32 cm de portée : 150 g

N ° de commande.:
ARD TINKER BOT

PRODUITS
236,96 (197,47)

> Carte CLUE d’Adafruit Découvrez maintenant ►www.reichelt.com/arduino


www.elektor.fr/19512
Types de paiement :

> Livre « Initiation au langage CircuitPython et à la


Excellent rapport qualité prix Plus de 120 000 produits sélectionnés
puce nRF52840 », Michaël Bottin, Elektor, ISBN
Livraison fiable - depuis l‘Allemagne dans le monde entier
978-2-86661-211-5
www.elektor.fr/19523

elektronik – Tirer le meilleur parti de votre projet

www.reichelt.com
Assistance téléphonique: +33 97 518 03 04
Les réglementations légales en matière de résiliation sont applicables. Tous les prix sont
indiqués en € TVA légale incluse, frais d‘envoi pour l‘ensemble du panier en sus. Seules nos
CGV sont applicables (sur le site https://rch.lt./CG-FR ou sur demande). Semblables aux
illustrations. Sous réserve de coquilles, d’erreurs et de modifications de prix. reichelt elektronik
GmbH & Co. KG, Elektronikring 1, 26452 Sande (Allemagne), tél. +33 97 518 03 04

lektor mars/avril 2022 23

reichelt_Elektor_03-04-2022_fr.indd 1 14.02.2022 13:18:0


projet

carte tampon
pour le Raspberry Pi 400
Protection des entrées/sorties
r lab • Elekto
to

k
Ele

r la
b
O R IG IN A L

Ele

la b
or or

kt
la b t
• Ele k
Ton Giesberts (Elektor)

Sorti en novembre 2020, le Raspberry


Pi 400 est en fait un Raspberry Pi 4, mais
logé dans un clavier, avec le connecteur
d’extension GPIO à l’arrière du boîtier. La
connexion de matériel supplémentaire
comporte toujours des risques, notamment
lors du prototypage. La carte tampon
présentée ici est spécialement conçue
pour le Raspberry Pi 400. Elle permet la
sélection des niveaux hauts 3,3 V et 5 V
pour les 26 broches GPIO, et les tampons/
décaleurs de niveau utilisés à cet effet offrent
également une protection contre les décharges
électrostatiques.

Est-il besoin de présenter ici les cartes Raspberry Pi ? Depuis la En termes de spécifications, le Raspberry Pi est bien évidemment
sortie de la première version en 2012, elles ont fait l’objet (ou fait beaucoup plus puissant que ses prédécesseurs désormais dépassés.
partie) de nombreux projets dans le magazine Elektor. Nous avons Mais il y a une similitude frappante : le connecteur d’extension
présenté un certain nombre de montages différents et de circuits GPIO à l’arrière du boîtier, auquel l’utilisateur peut connecter du
imprimés d’extension pour ces cartes à processeurs. Pour ce projet, matériel externe (conçu par lui-même). La connexion de matériel
disons-le tout net : le circuit dont je vais parler n’est pas nouveau, supplémentaire comporte toujours des risques, en particulier lors
puisque sa première version a été abordée en 2015 dans la page du prototypage, et la carte tampon présentée ici évite d’endommager
web du labo d’Elektor [1]. En 2018, la conception a été adaptée au le Raspberry Pi au cours du processus. En outre, la carte tampon
connecteur d’extension à 40 broches d’E/S qui a était la norme permet l’interfaçage avec les niveaux 3,3 V et 5 V, et les tampons/
pour connecter du matériel supplémentaire aux nano-ordinateurs décaleurs de niveau utilisés à cet effet offrent également une
depuis l’introduction du Raspberry Pi B+ [2]. Et maintenant, cette protection contre les décharges électrostatiques.
dernière version est adaptée à l’un des produits les plus récents de
la famille Raspberry Pi : le Raspberry Pi 400. Matériel
Pour faire simple, le 400 est un Raspberry Pi 4 logé dans un clavier. Le schéma électrique du projet (fig. 1) est exactement le même
Il ressemble aux ordinateurs, autrefois célèbres dans les années que celui présenté dans notre magazine en 2018. Les tampons/
1980, tels que le Commodore 64, le Sinclair Spectrum et l’Acorn BBC. décaleurs de niveau à 8 bits TXS0108E utilisés dans ce projet sont

24 mars/avril 2022 www.elektormagazine.fr


+3V3 VCCB

+3V3 +5V C1 C2
100n 100n
bidirectionnels. Et chaque broche F1 F2
IO2 IO2'
de port A et de port B possède une
1 20

500mA

500mA
A1 B1
2 19 +3V3 +5V
résistance de rappel au niveau haut.
VCCA VCCB
IO3 3 18 IO3'
A2 B2
La résistance de rappel au niveau bas
K1 IO4 4 17 IO4' K2
A3 B3
1 2 IO14 IC1 IO14' 1 2
d’une broche GPIO du Raspberry Pi
5 16
A4 B4
IO2 3 4 IO15 6 15 IO15' IO2' 3 4
est généralement de l’ordre de 40
A5 B5
IO3 5 6 IO17 7 14 IO17' IO3' 5 6
A6 TXS0108E B6
à 60 kΩ. Cette valeur est trop élevée IO4 7 8 IO14 IO18 8
A7 B7
13 IO18' IO4' 7 8 IO14'
9 10 IO27 IO27' 9 10 IO15'
pour mettre l’entrée/sortie au niveau
IO15 9 12
A8 B8
IO17 11 12 IO18 10 11 IO17' 11 12 IO18'
bas lorsque la carte tampon est
OE GND
IO27 13 14 IO27' 13 14

connectée. Ainsi, il faut noter qu’avec IO22 15 16 IO23 C3 C4


IO22' 15 16 IO23'
17 18 17 18 IO24'
cette configuration d’entrée, le niveau
IO24 100n 100n
IO10 19 20 IO10' 19 20
logique ne sera pas bas, le rappel ne IO9 21 22 IO25 IO22 1
A1 B1
20 IO22' IO9' 21 22 IO25'

fonctionnant pas comme prévu. IO11 23 24 IO8 2


VCCA VCCB
19 IO11' 23 24 IO8'
25 26 IO23 IO23' 25 26 IO7'
Les E/S ont des broches d’alimentation
IO7 3 18
A2 B2
SD 27 28 SC IO24 4 17 IO24' SD' 27 28 SC'
séparées pour le côté Raspberry Pi et
A3 B3
IO5 29 30 IO10 5 IC2 16 IO10' IO5' 29 30
A4 B4
le monde extérieur, respectivement IO6 31 32 IO12 IO9 6
A5 B5
15 IO9' IO6' 31 32 IO12'
IO13 33 34 IO25 IO25' IO13' 33 34
VCCA et VCCB. Chaque broche d’E/S
7 14
A6 TXS0108E B6
IO19 35 36 IO16 IO11 8 13 IO11' IO19' 35 36 IO16'
sur le port A du TXS0108E possède
A7 B7
IO26 37 38 IO20 IO8 9 12 IO8' IO26' 37 38 IO20'
A8 B8
une résistance de rappel vers VCCA, 39 40 IO21 10
OE GND
11 39 40 IO21'

connectée à l’alimentation +3,3 V du


Raspberry Pi 400, et chaque broche
C5 C6
100n 100n
d’E/S sur le port B possède une
IO7 IO7'
résistance de rappel vers VCCB. La
1 20
A1 B1
2 19
tension VCCB – pour le niveau des
VCCA VCCB
+3V3 SD 3 18 SD'
A2 B2
E/S sur K2 – peut être fixée à +3,3 V SC 4
A3
IC3 B3
17 SC'
IO5 IO5'
ou +5 V par le cavalier du connecteur
5 16
A4 B4
JP1 JP2 IO6 6 15 IO6' +3V3
JP3. La valeur des résistances de rappel
A5 B5
IO12 7 14 IO12' JP3
A6 TXS0108E B6
des tampons est de 40 kΩ pour les IO13 8
A7 B7
13 IO13'
+3V
IO19 IO19'
sorties à l’état bas et 4 kΩ pour les
9 12
R1 R2 A8 B8 VCCB VCCB
10 11
+5V
sorties à l’état haut. Ainsi, les sorties
OE GND
10k

10k

des tampons sont en fait des drains IO3 C7 C8


+5V
ouverts. Par exemple, si une LED est IO2 100n 100n

connectée entre la sortie et la masse, un IO16 1


A1 B1
20 IO16'

diviseur de tension est créé lorsqu’une 2


VCCA VCCB
19
IO26 IO26'
résistance série supplémentaire est
3 18
A2 B2
IO20 4 17 IO20'
utilisée. Une charge résistive sur la
A3 B3
IO21 5 IC4 16 IO21'
A4 B4
sortie fera chuter le niveau logique 6
A5 B5
15
7
haut. C’est quelque chose dont il faut
14
A6 TXS0108E B6
8 13
tenir compte !
A7 B7
9 12
A8 B8
Les connexions d’alimentation entre 10
OE GND
11
Figure 1. Du déjà vu. Le
K1 et K2 sur la carte tampon possèdent schéma de la carte tampon.
deux fusibles réarmables à coefficient
de température positif de 0,5 A (F1 et
210320-008

F2) pour protéger les alimentations


+5 V et +3,3 V du Raspberry Pi 400.
Pour l’implémentation d’un bus I2C
servant à communiquer avec du
matériel externe, GPIO2 correspond à la ligne de données série pendant le démarrage, ajoutez l’entrée suivante dans /boot/config.txt :
(SDA) et GPIO3 à la ligne d’horloge série (SCL). Les résistances de
rappel supplémentaires R1 et R2 peuvent être activées avec les force_eeprom_read=0
cavaliers JP1 et JP2.
Pendant le démarrage du Raspberry Pi, les bornes GPIO0 (ID_SD) et Pour plus d’informations, consultez la documentation Raspberry
GPIO1 (ID_SC) sont utilisées pour lire l’EEPROM d’un HAT (Hardware Pi sur le fichier config.txt [3].
Attached on Top, ou extension matérielle) I2C. Après le démarrage,
ces broches GPIO peuvent être utilisées comme les 26 autres, mais Le circuit imprimé
il faut s’assurer de l’absence d’incidence sur le système lorsqu’on a Le schéma n’a peut-être rien de nouveau, mais le circuit imprimé
monté un HAT I2C. Pour empêcher la lecture de GPIO0 et GPIO1 (fig. 2) est spécialement adapté au Raspberry Pi 400. Il est un

lektor mars/avril 2022 25


que cette carte peut toujours être utilisée avec un Raspberry Pi 2,
LISTE DES COMPOSANTS 3 ou 4.
Résistances Le connecteur de sortie K2 peut être connecté à des circuits externes
R1,R2 = 10 kΩ, 100 mW, 1%, CMS 0603 à l’aide d’un câble en nappe, court, à 40 conducteurs, avec deux
connecteurs 2×20 reliés, ou simplement un connecteur à réceptacle
Condensateurs unique sur lequel sont soudés des fils courts, ou des supports
C1 à C8 = 100 nF, 50 V, 10%, X7R, CMS 0603 simples pour fils. Cependant, faites attention en enfonçant un
réceptacle à 40 conducteurs sur K2 ou en le débranchant de la carte.
Semi-conducteurs Ne le faites pas pendant que la carte tampon est encore insérée
IC1 à IC4 = TXS0108EPWR, CMS TSSOP-20 dans le Raspberry Pi 400, car une certaine force est nécessaire et le
connecteur GPIO du Raspberry Pi 400 pourrait être endommagé.
Divers
K1 = réceptacle 2 × 20, angle droit, au pas de 2,54 mm
Test de la carte tampon
K2 = connecteur mâle à 2 × 20 broches , vertical, au pas de 2,54 mm
Deux programmes Python très simples pour tester la carte tampon
JP1,JP2 = connecteur mâle à 2 broches, vertical, au pas de 2,54 mm
– empruntés à l’ancien projet – sont disponibles en téléchargement
JP3 = connecteur mâle à 3 broches, vertical, au pas de 2,54 mm
sur la page Elektor Labs de ce projet [5]. L’un sert à tester toutes les
JP1,JP2,JP3 = cavalier, au pas de 2,54 mm
broches GPIO configurées en sortie, Check_all_GPIOs_as_output.
F1,F2 = fusible réarmable CTP, CMS, polyfuse, 1210L050YR Littelfuse
py, et l’autre à tester toutes les broches GPIO configurées en entrée,
Circuit imprimé 210320-1
Check_all_GPIOs_as_input.py (210320-11.zip). Sous Raspbian, il suffit
de double-cliquer sur l’un des fichiers pour lancer l’EDI par défaut
de Python, puis de sélectionner RUN pour lancer le test.
Lors du test des broches GPIO configurées en sortie, une seule
LED basse consommation connectée entre une broche et GND
est nécessaire pour vérifier le fonctionnement d’une sortie. Une
résistance de 1,8 kΩ peut être utilisée comme résistance en série
pour la LED, mais sa valeur n’est pas vraiment critique. Elle limitera
le courant traversant la LED si elle est directement connectée
à la tension d’alimentation positive. Les sorties sont testées
séquentiellement en quatre groupes de huit broches maximum
Figure 2. L’implantation du chacun, nommés IOA à IOD. Du fait de la sortie à drain ouvert,
nouveau circuit imprimé la tension aux bornes d’une LED (rouge) plus une résistance est
de la carte tampon. d’environ 2,6 V, lorsque l’alimentation sélectionnée pour les sorties
(JP3) est de 5 V. Connectez la résistance et la LED à l’une des sorties
sélectionnées et elle s’allumera pendant 0,2 s. La fréquence de
répétition de cette impulsion dépend de la taille du groupe : 1,6 s
pour les groupes A à C (chacun de huit sorties) et seulement 0,4 s
pour le groupe D (deux sorties). Modifiez la valeur « IOA » avec un
autre groupe de la ligne :
peu plus petit que la carte tampon originale présentée en 2018.
Les fichiers Gerber de cette nouvelle carte sont disponibles en for i in IOA: # leds blink 0.2 s in IOx group
téléchargement, vous pouvez donc la commander chez le fabricant
de circuits imprimés de votre choix. Mais il est, bien sûr, beaucoup afin de tester les autres groupes de sorties. Bien sûr, GPIO0 et GPIO1
plus pratique d’acheter la carte tampon entièrement assemblée (ID_SD et ID_SC) peuvent aussi être ajoutés à l’un des groupes.
dans l’e-choppe d’Elektor [4]. Le programme de test des broches GPIO configurées en entrée
Un réceptacle à angle droit est utilisé pour le connecteur du côté du utilise une E/S comme sortie pour indiquer que l’entrée testée
Raspberry Pi 400 de la carte tampon (K1) afin qu’il puisse être inséré fonctionne ; c’est GPIO3 par défaut. Connectez une résistance
dans le connecteur GPIO à l’arrière du clavier (fig. 3). Le connecteur de 1,8 kΩ et une LED entre la broche 5 (IO3’) de K2 et GND. Une
pour les E/S tamponnées est un connecteur droit mâle standard seule entrée à la fois est testée dans le code source, pour s’assurer
à 40 broches (K2). La taille de la carte tampon est de 55×44 mm, y que seule celle-ci fonctionne comme entrée. Changez le numéro
compris le connecteur K1 qui dépasse du bord du circuit imprimé. dans la ligne suivante pour tester une autre broche GPIO comme
Par rapport au circuit imprimé original (réf. 150719-1), les deux entrée :
rangées de broches de K1 sont interverties, car un réceptacle est
utilisé ici. Placer un connecteur droit mâle standard à 40 broches IN1 = 2 #selected GPIO to test as input
pour K1 afin de connecter cette carte tampon à un Raspberry Pi 2,
3 ou 4 via un câble plat – comme avec l’ancienne version du carte Le programme affiche également la broche GPIO sélectionnée et
tampon – ne fonctionnera pas ici. Pour autant, la figure 4 montre son niveau d’entrée. Les résistances de rappel des entrées sont

26 mars/avril 2022 www.elektormagazine.fr


Figure 3. La carte tampon branchée sur le Raspberry Pi 400. Figure 4. La carte peut également être utilisée avec des cartes Raspberry Pi
« classiques ».

activées. Ainsi, pour que la LED connectée s’allume, la broche


d’entrée actuelle doit être reliée à la masse. Ceci étant fait, la
sortie change. Enfin, sélectionnez une autre broche GPIO pour Des questions, des commentaires ?
la sortie afin de pouvoir également tester GPIO3 comme entrée. Contactez Elektor ([email protected]).
Bien entendu, il existe de nombreuses façons de tester les GPIO.
Si vous avez une méthode plus efficace et/ou plus rapide, merci
de nous en faire part.

Cette carte tampon vous permet de connecter en toute tranquil-


lité un matériel nouveau au Raspberry Pi 400, en réduisant consi-
dérablement le risque qu’il soit endommagé en cours d’expéri-
mentation. Mais réduire les risques grâce à cette carte tampon
PRODUITS
ne constitue pas une garantie. Bien souvent, le bon sens pourra
aussi être très utile. > Carte tampon pour Raspberry Pi 400
210320-04 www.elektor.fr/19884

> Kit Raspberry Pi 400 – Raspberry Pi 4-based PC Kit (EU)


Contributeurs + Free GPIO Header
www.elektor.fr/19431
Conception, texte et illustration : Ton Giesberts
Rédaction : Luc Lemmens > Raspberry Pi 400 – Raspberry Pi 4-based PC Kit (US) +
Mise en page : Giel Dols Free GPIO Header
Traduction : Asma Adhimi www.elektor.fr/19429

LIENS
[1] Carte tampon pour Raspberry Pi, Elektor Labs : www.elektormagazine.fr/labs/raspi-buffer-board
[2] « Carte tampon pour Raspberry Pi », Guy Weiler, Elektor 11-12/2018 : www.elektormagazine.fr/180430-04
[3] Documentation Raspberry Pi sur le fichier config.txt : www.raspberrypi.com/documentation/computers/config_txt.html
[4] Carte tampon pour Raspberry Pi 400 dans la boutique Elektor : www.elektor.fr/raspberry-pi-400-buffer-board
[5] Page Elektor Labs de ce projet : https://bit.ly/3GdRJ4G

lektor mars/avril 2022 27


inventaire

cartes Raspberry Pi RP2040


à gogo
Mathias Claußen (Elektor)

Le RP2040 est le premier microcontrôleur conçu par la Fondation


Raspberry Pi. D’abord intégré sur la carte Raspberry Pi Pico,
destinée aux électroniciens, il a également trouvé sa place, depuis
son lancement, sur des cartes et des kits de fournisseurs tiers. Il
est temps de découvrir ce que ces fabricants proposent !

Le RP2040 est certainement une alternative intéressante aux LED verte pilotable par l’utilisateur et un convertisseur Buck-Boost
microcontrôleurs plus connus. Non seulement le rapport qualité-prix CC/CC permettant d’alimenter la carte à partir d’une source de tension
de cette puce est impressionnant, mais elle est en outre actuellement externe comprise entre 1,8 à 5,5 V, ou via la tension de 5 V fournie
disponible. La documentation et le support technique de la Fondation par le port USB. La carte Raspberry Pi Pico est toujours l’une des
Raspberry Pi sont certains de ses points forts, ce qui en fait un bon meilleures en ce qui concerne le rapport puissance/prix, surtout si
choix pour les débutants dans cet environnement. Les toutes dernières vous souhaitez simplement acquérir de l’expérience avec le RP2040 et
informations relatives à cette puce sont accessibles dans les articles [1] son environnement de développement. Peut-être avez-vous déjà une
[2][3], le webinaire [4] ou les vidéos [5] d’Elektor. collection de modules, de composants ou de capteurs externes que
La carte Raspberry Pi Pico – celle du fabricant, sur laquelle est incorporé vous pouvez interfacer avec la carte. Elle bénéficie de la publication
le RP2040 – est équipée d’un minimum de matériel supplémentaire d’un certain nombre de livres et il existe de nombreuses ressources
permettant de maintenir son prix à environ 5 €. Un an après sa sortie, sur l’internet permettant l’autoformation. Vous aurez besoin de matériel
le circuit intégré RP2040 a trouvé sa place sur un certain nombre supplémentaire si vous souhaitez aller au-delà des éléments de base
de cartes tierces, dotées d’un large éventail de périphériques. Nous (voir le kit d’expérimentation Raspberry Pi Pico d’Elektor ci-dessous).
examinons ici de plus près quelques-unes de ces cartes pour vous Sans trop d’efforts, la carte Pico peut également servir de débogueur
aider à déterminer celle qui correspond à vos besoins. pour un autre RP2040. À 5 € l’unité, elle est très abordable, et si
vous voulez une Pico avec des connecteurs pré-soudés et un câble
Raspberry Pi Pico micro-USB compatible (fig. 2), ne cherchez pas ailleurs que dans
La carte Raspberry Pi Pico (fig. 1) contient le minimum de matériel l’e-choppe Elektor, où vous trouverez également des cartes d’extension
nécessaire au fonctionnement du RP2040. La carte comporte une intéressantes pour la Raspberry Pi Pico.

Figure 1. Raspberry Pi Pico. (Source : Raspberry Pi) Figure 2. Raspberry Pi Pico avec barrettes. (Source : Elektor)

28 mars/avril 2022 www.elektormagazine.fr


Feather RP2040 d’Adafruit
La carte Feather RP2040 d’Adafruit (fig. 3) est une carte au format
Feather, basée sur un RP2040. La différence par rapport au Raspberry
Pi Pico réside principalement dans le nombre de périphériques et la
capacité de mémoire Flash intégrée à la carte. La Raspberry Pi Pico
ne dispose que de 2 Mo, tandis que la carte Feather contient 8 Mo
de mémoire Flash SPI, ce qui offre beaucoup plus d’espace pour vos
propres logiciels. Une LED RVB est intégrée à la carte, ainsi qu’un port
USB-C et un connecteur STEMMA QT pour brancher les périphériques
Qwiic, STEMMA QT ou Grove I2C. Le connecteur de batterie JST PH
permet d’alimenter la carte par une batterie LiPoly monocellulaire qui
peut être chargée directement via le port USB.
Figure 3. Feather RP2040 d’Adafruit. (Source : Adafruit)
Thing Plus - RP2040 de SparkFun
La carte Thing Plus - RP2040 de SparkFun (fig. 4) est très similaire
à la carte Feather RP2040 d’ Adafruit, même pour l’affectation des
broches. Cette carte est équipée de 16 Mo de mémoire QSPI Flash
(au-dessous de la carte), ce qui est le maximum adressable par le
RP2040. Elle est également dotée d’une LED RVB et de trois LED
d’état. Comme pour la Feather RP2040 d’Adafruit, elle comprend
un circuit de charge pour une batterie unicellulaire au lithium et un
connecteur Qwicc. Un logement pour carte micro-SD est également
installé sous la carte et les cartes SD peuvent être adressées en tant
que mémoire de masse en utilisant la fonction d’automate fini PIO du
RP2040. Un webinaire [4] révèle comment la flexibilité des automates
finis PIO a conduit à une séquence inhabituelle d’affectations
GPIO pour l’interface du lecteur de carte SD de Sparkfun. Tous les
possesseurs de périphériques utilisant le connecteur Qwiic ou des
Figure 4. Thing Plus RP2040 de SparkFun. (Source : SparkFun)
extensions avec un brochage de carte Feather devraient examiner
de plus près cette carte !

Arduino Nano RP2040 Connect


La carte Arduino Nano RP2040 Connect (fig. 5) ajoute les fonctions
de communication Wi-Fi et Bluetooth au microcontrôleur RP2040.
Pour 27 €, ce n’est certainement pas la carte la moins chère, mais
elle est bien équipée avec à peu près tous les périphériques
embarqués que vous pouvez souhaiter. Elle est dotée de 264 Ko
de mémoire RAM statique (SRAM) et de 16 Mo de mémoire flash
et elle possède un module ublox NINA-W102 Wi-Fi et BLE v4.2,
une centrale inertielle (IMU) à 6 axes (STM LSM6DSOXTR), un
microphone (MP34DT05) et une puce de chiffrement ATECC608A
de Microchip. Elle est bien sûr prise en charge par l’EDI Arduino et
malgré tous les périphériques supplémentaires, avec ses dimensions
de 43,18 mm × 17,78 mm, elle est considérablement plus petite que
la carte Raspberry Pi Pico.
Figure 5. Arduino Nano RP2040 Connect. (Source : Arduino.cc)
Le matériel embarqué est plus que suffisant pour faire ses premiers pas
avec un RP2040 et pour réaliser des projets encore plus ambitieux. La
possibilité d’échanger des données via Bluetooth et Wi-Fi, ainsi que la
présence du microphone intégré, laissent penser qu’il est possible de
réaliser une application d’IA. En revanche, je ne suis pas sûr de pouvoir
recommander l’Arduino Nano RP2040 Connect à un novice dans cet prendre en charge les communications Wi-Fi et Bluetooth. Ceux qui
environnement. Si vous avez l’intention de commencer à développer ont une certaine expérience du Wi-Fi et du Bluetooth, et qui souhaitent
des applications Wi-Fi et Internet des Objets (IdO), il est préférable de tester un RP2040 avec une connexion dans le nuage, pourraient
vous orienter vers la carte ESP32 ou la nouvelle ESP32-C3. La fiche s’intéresser à ce que cette carte a à offrir. Mon collègue Clemens
technique du module NINA-W102 monté sur l’Arduino Nano RP2040 Valens a déjà publié une vidéo succincte à ce sujet, à retrouver sur la
Connect indique qu’un SoC ESP32 se cache en fait à l’intérieur pour chaîne YouTube d’Elektor [6].

lektor mars/avril 2022 29


Figure 6. Maker Pi Pico de Cytron. (Source : cytron.io) Figure 7. Maker Pi RP2040 de Cytron. (Source : cytron.io)

Maker Pi Pico de Cytron à travailler avec la carte Raspberry Pi Pico. Les connecteurs permettent
(avec un Raspberry Pi Pico soudé) également de brancher rapidement, et en toute sécurité, d’autres
Si vous voulez commencer à faire des expérimentations avec le modules. Les périphériques montés comprennent un buzzer (avec
Raspberry Pi Pico et le RP2040, cette plateforme (fig. 6) constitue un commutateur de désactivation), une LED RVB WS2812, des boutons
un bon point de départ. La version qui utilise une carte Raspberry Pi et un logement pour carte SD, avec lesquels vous pouvez vous lancer
Pico soudée est proposée pour environ 18 €. pas à pas dans des projets de plus en plus ambitieux avec la carte
La principale différence entre cette carte et les autres mentionnées Pico. Le connecteur ESP-01 offre également la possibilité de configurer
jusqu’à présent est son format. La Maker Pi Pico Base de Cytron est rapidement un projet Wi-Fi. L’interface de débogage à trois broches
une plateforme expérimentale sur laquelle est monté un Raspberry du Raspberry Pi Pico est également disponible sur les broches du
Pi Pico. Toutes les broches du Raspberry Pi Pico sont ramenées sur connecteur de la carte.
deux rangées de connecteurs, de sorte qu’elles peuvent facilement
être sondées avec un appareil de mesure. La carte offre également un Maker Pi RP2040 de Cytron
certain nombre de connexions Grove pour connecter des périphériques Vous vous intéressez à la commande de moteurs et à la robotique ?
compatibles. Chaque broche GPIO de la carte est associée à une LED, Avec le Raspberry Pi PR2040 ? Il peut parfois être utile de pouvoir
ce qui vous permet de vérifier rapidement son état. Il y a également piloter de petits moteurs ou un moteur pas à pas avec le Raspberry
un logement micro-SD et une prise pour une carte Wi-Fi ESP-0, ainsi Pi Pico. C’est exactement l’objectif de la carte Maker Pi RP2040 de
qu’un certain nombre de boutons-poussoirs et un buzzer. Cytron (fig. 7). Elle contient un circuit intégré de commande de moteur
Cette plateforme est idéale si vous disposez déjà d’autres composants (MX1508/TC1508) avec deux ponts en H pour piloter deux moteurs
compatibles avec Grove ; il vous suffit de les brancher et de commencer CC à basse tension ou un moteur pas à pas. Si vous n’êtes pas sûr de
savoir comment utiliser un pont en H ou comment commander un
moteur, jetez un coup d’œil à mon article au sujet des fondamentaux [7].
Il est possible d’utiliser de petits moteurs d’une puissance allant
jusqu’à 6 V, et 1 A par canal, directement à partir de cette carte. Elle
offre également la possibilité de connecter directement jusqu’à quatre
servos. L’alimentation de la carte provient du port USB, d’une batterie
LiPo ou d’une alimentation externe de 3,6 V à 6 V. Un circuit de charge
LiPo est inclus pour la gestion de la batterie et l’alimentation de toutes
ces sources peut être coupée avec un interrupteur embarqué.
La puce RP2040 est montée sur la carte Maker Pi RP2040 de Cytron
et offre exactement la même capacité de mémoire Flash (2 Mo) que la
carte Raspberry Pi Pico. La carte comprend également 13 LED d’état
GPIO, deux LED WS2812, un buzzer, deux boutons et sept ports Grove
pour une extension facile.

Kit d’expérimentation Raspberry Pi Pico d’Elektor


À 45 €, le kit d’expérimentation Raspberry Pi Pico d’Elektor (fig. 8)
propose la carte la plus chère de la gamme. La base de ce kit est
Figure 8. Kit d’expérimentation Raspberry Pi Pico d’Elektor. le Raspberry Pi Pico, qui se branche directement sur cette carte,
(Source : Makerfabs)

30 mars/avril 2022 www.elektormagazine.fr


de sorte qu’il peut facilement être remplacé si nécessaire. La carte
principale du kit elle-même comporte des boutons, des LED, des
buzzers, un écran TFT et des connecteurs Grove. Avec des accessoires Contributeurs
tels que les LED WS2812, le capteur de température et d’humidité Analyse et texte : Mathias Claußen
DHT11, le relais, le potentiomètre, le capteur de distance à ultrasons, Rédaction : Jens Nickel
le servo, le gyroscope et le capteur d’accélération MPU6050 ainsi que Mise en page : Harmen Heida et Giel Dols
l’ESP8266, vous obtenez un kit qui convient aussi bien aux débutants Traduction : Asma Adhimi
qu’aux utilisateurs avancés qui aiment l’expérimentation. Comme ces
composants sont faciles à connecter sur la carte en tant que modules
(via les connecteurs Grove), la carte Raspberry Pi Pico offre une réelle
flexibilité d’utilisation. Grâce à l’écran de 1,44 pouce (avec un contrôleur
ST7735), vous pouvez également développer vos premières applications
graphiques en Python ou C/C++. Si vous n’avez pas encore de modules PRODUITS
ou d’autres composants, ce kit représente un bon rapport qualité-prix
et offre une introduction très complète au monde du RP2040.
> Kit d’expérimentation du Raspberry Pi Pico d’Elektor
Quelle est la meilleure carte ? www.elektor.fr/19834
Chacun doit répondre par lui-même à cette question. La réponse
dépend considérablement de ce que vous envisagez de faire. Chaque > Maker Pi RP2040 – carte pour la robotique avec
Raspberry Pi RP2040 de Cytron
carte, chaque kit, a ses avantages et ses inconvénients. En fonction www.elektor.fr/19926
de votre budget et de vos besoins, vous devez déterminer quelles
sont les caractéristiques les plus indispensables. Avez-vous besoin > Maker Pi Pico de Cytron
d’une carte avec tous les périphériques déjà installés, ou vaut-il www.elektor.fr/19706
mieux commencer par un kit de base et ajouter ensuite des modules
spécifiques en fonction de vos nécessités ? Votre application doit-elle
> Arduino Nano RP2040 Connect avec connecteurs
www.elektor.fr/19754
disposer d’une fonction de gestion/de charge de la batterie ? La carte
sera-t-elle destinée à votre usage personnel, ou pensez-vous qu’elle > Thing Plus - RP2040 de SparkFun
sera un cadeau inspirant pour un membre de la nouvelle génération www.elektor.fr/19628
d’ingénieurs ou d’électroniciens ?
Il est clair que nous ne pouvons pas recommander une carte en parti-
> Feather RP2040 d’Adafruit
www.elektor.fr/19689
culier. À l’évidence, le microcontrôleur RP2040 offre de nombreuses
possibilités pour les développeurs débutants et expérimentés et, > Raspberry Pi Pico RP2040
surtout, il est actuellement en stock. www.elektor.fr/19562
210629-04
> Raspberry Pi Pico RP2040 (avec connecteurs soudés)
www.elektor.fr/19568

Des questions, des commentaires ?


Envoyez un courriel à l’auteur ([email protected])
ou contactez Elektor ([email protected]).

LIENS
[1] « Carte Raspberry Pi Pico à RP2040 », site Elektor : www.elektormagazine.fr/news/carte-raspberry-pi-pico-a-rp2040
[2] « Place au microcontrôleur Raspberry Pi RP2040. Hue Pico ! », site Elektor :
www.elektormagazine.fr/news/microcontroleur-raspberry-pi-rp2040-pico-board
[3] Raspberry Pi Pico (avec connecteurs soudés) :
www.elektormagazine.fr/news/raspberry-pi-pico-mcu-with-preinstalled-pin-headers-fr
[4] Eben Upton et Nathan Seidle à propos de la carte Raspberry Pi Pico et du RP2040 :
www.elektormagazine.com/news/eben-upton-nathan-seidle-sparkfun-raspberry-pi-pico-rp2040
[5] Elektor TV sur YouTube : www.youtube.com/user/ElektorIM
[6] Clemens Valens, « Board Review: Arduino Nano RP2040 Connect », ElektorTV : www.youtube.com/watch?v=2EnCf64zZSA
[7] Mathias Claussen, « Commande de moteurs : les ponts en H », Elektor Janvier/Février2022 : www.elektormagazine.fr/210491-04

lektor mars/avril 2022 31


livres d’elektor

approche DIY
de la sécurité et de
l’espionnage électronique
Chauffez ou refroidissez la SRAM

Luka Matic (Croatie)

Nous abordons ici le piratage des données en SRAM (RAM statique) et leur chiffrement
par des méthodes non répertoriées qui étendent la capacité de rétention de ces SRAM.
Une fois la théorie assimilée, vous pourrez imaginer vos propres variantes ou améliorer
et automatiser ce qui est exposé ici. N’hésitez pas à essayer !

32 mars/avril 2022 www.elektormagazine.fr


Note de l’éditeur : cet article est un extrait du livre intitulé A Handbook on DIY Electronic Security and
Espionage (« Approche DIY de la sécurité et de l’espionnage électronique ») formaté et légèrement
modifié pour correspondre aux normes éditoriales et à la mise en page du magazine Elektor. Puisque cet
article est extrait d’une publication plus vaste, certains termes peuvent faire référence à des passages du
livre d’origine situés ailleurs. L’auteur et l’éditeur ont fait de leur mieux pour l’éviter et seront heureux de
répondre aux questions – Pour les contacter, voir l’encadré « Des questions, des commentaires ? ».

Figure 1. Schéma d’un banc d’essai de


SRAM. La SRAM (RAM statique) testée
est une HY62256 (32 Ko).

Récupération de données données, pour le cas où il est activé à la fois


d’après leur empreinte en SRAM par le MCU et la SRAM.
La figure 1 donne le schéma du banc Les résistances R22 à R29 polarisent le bus
d’essai utilisé. L’amplificateur analogique d’adresses à +Vcc ou à la masse (selon SW1)
à deux étages (Q1 à base commune et Q2 à pour mesurer les temps d’accès en lecture
collecteur commun, pour obtenir la bande et de montée/descente du bus de données,
passante max.) amplifie la chute de tension via TP2. Le tampon octal IC2 sert à piloter
sur R1 (image du courant d’alimentation les huit LED pour faciliter la surveillance Figure 2. Courant Idd capturé sur un oscilloscope
de la SRAM) que l’on observe sur un oscil- du bus de données. Tek 466 pendant l’écriture des octets 0xDE
loscope via le point de test TP1. Un micro- Les variables à mesurer sont le courant (à gauche) et 0x01 (à droite) dans la SRAM
(à 200 ns/div).
contrôleur (MCU) ATmega8 (non représenté consommé en lecture/écriture de la SRAM,
sur les schémas) pilote le dispositif. On règle et les tensions (c.-à-d. les temps de retard/
le bus d’adresse sur l’adresse de la mémoire montée/descente) sur le bus de données.
à tester. C’est assez lent, car on utilise deux Les variations des signaux mesurés révèlent Une résistance de 100 Ω, 5 W plaquée sur
compteurs à 8 bits 74HC590. C’est accep- les marques résiduelles (l’empreinte) des la SRAM, avec une sonde de température
table, car il n’est pas nécessaire que l’adresse données stockées auparavant et permettent, en sandwich, permet de la chauffer et de
change vite. Le MCU lit/écrit les données on l’espère, d’extraire les octets écrits avant la tester à une température élevée, jusqu’à
sur le bus et contrôle les commandes que la SRAM ne soit mise hors tension. 80-90 °C. Cf. la photo du banc d’essai (fig. 5).
/RD et /WR de la SRAM. Ces deux signaux Pour cela, les cellules SRAM doivent avoir Les variations des temps de montée/
sont utilisés pour déclencher les mesures conservé des données figées pour une descente de 1-2 ns doivent être mesurées de
de l’oscilloscope (point de test TP3). Les période relativement longue. Ces durées manière fiable, ce qui nécessite un oscillos-
résistances R2 à R9 découplent le bus de peuvent varier selon la puce SRAM utilisée. cope à 100 MHz. J’ai utilisé un oscilloscope

lektor mars/avril 2022 33


Figure 3. Courant Idd pendant la lecture mémoire de 0xDE (à gauche) et 0x01 (à droite) (à 200 ns/div). Figure 4. Formes du signal /RD et d’un bit de
données lors de la lecture de la SRAM (à 10 ns/div).

bistables (qui mémorisent « 0 » ou « 1 »)


sont affectés par les effets du burn-in. Les
MOSFET d’accès à la SRAM et de trans-
fert au bus de données à la lecture ne
le sont pas. Cependant, les mesures du
courant d’alimentation Idd lors de l’écri-
ture de différents octets dans les cellules
marquées ont donné de meilleurs résul-
tats. Cette méthode est meilleure pour
d’autres configurations, par ex. pour
lire la SRAM depuis un MCU, car elle ne
nécessite pas d’accès physique aux 8 bits
Figure 5. Le banc d’essai de « burn in » des SRAM de l’auteur. du bus de données de la SRAM.
Cette fois encore, la cellule à l’adresse
0x204F qui contenait l’octet 0x66 avait
subi un burn-in à 80 °C. La cellule à 0x7FF1
analogique Tektronix 466 vintage à écran Voici la procédure : j’écris une suite de n’a pas subi de burn-in (tous ses bits étant
à persistance variable avec « flood gun » constantes en SRAM que je laisse ainsi inversés cycliquement). Les mesures
pour signaux rapides non répétitifs. Sous pour la marquer (burn-in en anglais). Je (fig. 6 et 7) montrent que l’écriture d’un
la rubrique Rétronique, Elektor a publié un programme des compteurs incrémen- motif octal avec plus de zéros dans une
brillant article sur ce type d’oscilloscope à tés toutes les 10 ms dans d’autres cellules cellule de mémoire marquée consomme
mémoire [1]. La persistance n’est pas indis- SRAM. Je chauffe la SRAM à 80 °C (cela plus d’énergie que l’écriture du même
pensable, car les séquences de test de lecture/ augmente le nombre de porteurs chauds motif dans une cellule non marquée. La
écriture peuvent être exécutées en boucles et laisse des traces plus profondes) et je puissance requise par l’écriture de 0x66
répétitives contrôlées par le MCU. J’ai acquis maintiens la puce sous tension pendant (une valeur marquée) et de 0x99 (complé-
l’oscilloscope Tek 466 à Ljubljana (Slovénie) 12 h tandis que le MCU continue à incré- ment à 1 de cette valeur) dans une cellule
pour 150 € au marché aux puces électronique. menter les compteurs (cela évite de créer brûlée est notablement plus élevée que
Commençons par faire à l’oscilloscope des traces dans les cellules concernées). 12 h dans la cellule non marquée. Mais ces
quelques mesures de consommation de plus tard, j’éteins la résistance chauffante et mesures ne suffisent pas à établir l’octet
courant de la RAM et de la tension /RD, cf. la SRAM revient à la température ambiante. qui a été marqué dans la cellule. Il faut un
figures 2, 3 et 4. Les mesures du courant Voici le résultat des tests effectués sur deux post-traitement mathématique (filtrage,
lors de l’écriture et/ou de la lecture de SRAM cellules SRAM : corrélation avec des motifs connus, etc.).
dans des cellules marquées (ayant longtemps La SRAM 62256 est un composant ancien
conservé le même octet) ou non (celles dont > à l’adresse 0x204F était stockée une assez insensible au marquage par burn-in,
les bits ont changé sans cesse pendant la constante (0x66), et on espère qu’elle a loin des composants à haute intégration
même durée), et la comparaison des résul- pu laisser une trace ; actuels.
tats, peuvent être utilisées pour récupérer les > à 0x7FF1 tournait un compteur, qui Il faut beaucoup d’autres expériences avec
données. La comparaison des temps d’accès normalement n’a laissé aucune trace. d’autres types de SRAM, dans des condi-
en lecture et des formes d’onde (fig. 4) entre tions de marquage variées. Certains auteurs
les bits sur le bus de données peut également Les mesures des temps d’accès en lecture rapportent des résultats contradictoires, ce
aider à récupérer les données. (cf. fig. 4) ont montré de très faibles diffé- qui indique donc que les effets résiduels du
La figure 5 est une photo de mon banc rences (moins d’1 ns) entre les bits « 0 » et marquage ne sont ni assez étudiés ni bien
d’expérimentation de la récupération de « 1 », et je ne les ai donc pas considérées compris. Cela ouvre un nouveau et vaste
données en SRAM. comme pertinentes. Seuls les MOSFET des champ de recherche.

34 mars/avril 2022 www.elektormagazine.fr


Réduction de la tension
d’alimentation
Outre ce que nous avons vu pour extraire les
traces de données, il y a une autre approche
que je n’ai pas encore essayée. Il s’agit de
réduire progressivement la tension d’ali-
mentation jusqu’à ce qu’une cellule de
mémoire produise une erreur de lecture
ou bien d’écriture. Les cellules marquées et
non marquées sont constamment compa-
rées. En général, l’erreur, par ex. lors de
l’écriture de 0x00 ou 0xFF, n’affecte que
Figure 6. Idd pendant l’écriture des octets 0x00, puis 0xFF à 0x7FF1 (à gauche) et 0x204F (à droite).
certains bits d’une cellule de mémoire
marquée selon l’état de marquage de ces
bits (0 ou 1). C’est parce que les tensions
de seuil des grilles MOSFET des cellules
marquées sont légèrement augmentées
ou diminuées par le burn-in.

Application
La méthode du « burn-in » pourrait être
exploitée pour des communications secrètes
améliorées par stéganographie avancée
avec de nouveaux types de SRAM à haute
intégration plus sensibles au marquage
que la « vieille » 62256 testée ici. Une puce
SRAM étudiée dans ce but sera utilisable si
elle présente un marquage significatif après Figure 7. Idd pendant l’écriture des octets 0x66, puis 0x99 à 0x7FF1 (à gauche) et 0x204F (à droite).
quelques heures de chauffage à 80 °C (sous
tension et avec un message secret chiffré
stocké) et si ce marquage persiste pendant
10 à 15 jours une fois la SRAM à température vient d’être retirée d’un serveur où elle modérément dopé, et la puce continue
ambiante puis éteinte (retirée du circuit). La a conservé des constantes pendant de fonctionner normalement, mais hors
méthode de communication fonctionnerait très longtemps, par ex. quelques mois tension, elle gardera les données, car
comme suit : à 30 °C. à −50 °C, les capacités de grille des MOSFET
7. Quelques jours plus tard, Bob reçoit se déchargent très lentement. Le même
1. L’« expéditeur » Alice chiffre le message le courrier et exécute la procédure banc d’expérimentation est utilisé, mais
secret pour le « récepteur » Bob, et le de récupération des données comme sans résistance chauffante. Des données
stocke dans la SRAM. ci-dessus. judicieusement choisies et stockées en
2. Alice chauffe la SRAM (sous tension et 8. Bob déchiffre le message. SRAM produiront des effets lumineux sur
avec le message secret chiffré) à 80 °C les huit LED du bargraphe. Si ces mêmes
pendant 6 à 12 heures. Saurez-vous imaginer d’autres façons dont effets continuent après la remise sous
3. Alice laisse la SRAM refroidir à tempé- Alice, Bob, Eve et d’autres pourraient exploi- tension, cela signifie que le contenu de la
rature ambiante (sous tension). ter les effets de persistance de la mémoire SRAM est intact. Si des effets irréguliers
4. Alice retire du circuit la SRAM refroidie. SRAM ? Il y en a beaucoup ! ou aléatoires apparaissent, c’est que le
5. Alice met la puce SRAM sous enveloppe contenu de la SRAM est perdu. J’ai mesuré
et l’envoie à Bob. Démonstration le temps maximal de rétention de données
6. Si l’« espionne » Ève intercepte le de l’approche à froid à environ −30 °C. C’est facile à atteindre avec
courrier, il a simplement l’air de conte- La 2e démonstration est bien plus simple que un spray réfrigérant (fig. 8).
nir un composant provenant de RS. la précédente. Le type d’approche à suivre À la température ambiante, les données ne
Même si elle tente de récupérer les fonctionne probablement pour beaucoup persistent que 0,1 s, mais cela peut atteindre
données marquées, elle ne verra rien de RAM de types anciens et récents. 10 s à −30 °C.
de suspect, car le message est chiffré. Le refroidissement d’une puce jusqu’à −50 °C Je refroidis d’abord la SRAM à −30 °C environ
Et n’en conclura pas qu’Alice y a caché ne réduit pas de manière significative la et j’augmente progressivement le temps de
des données. Peut-être que la puce conductivité des microcircuits en silicium remise sous tension tout en maintenant la

lektor mars/avril 2022 35


avec un matériel très bon marché (par baissent, les choses tournent en faveur
ex. l’approche à froid) tandis que d’autres, d’Alice et de Bob.
comme la récupération de traces de 210628-04
données dans la SRAM, peuvent néces-
siter un matériel plus sophistiqué et un
Figure 8. Spray
cryogénique utilisé
post-traitement (bien qu’à la portée de Des questions, des
dans la démo de l’espion à petit budget !) pour, au-delà de commentaires ?
l’approche à froid. la démonstration du principe, être exploi- Envoyez un courriel à l’auteur
table en pratique. ([email protected]) ou contactez
Elektor ([email protected]).

Contributeurs
Texte : Luka Matic
Rédaction : Jan Buiting
Mise en page : Giel Dols
Traduction : Yves Georges

PRODUITS

> Livre en anglais, « A Handbook


on DIY Electronic Security and
Espionage », L. Matic
Version papier :
www.elektor.fr/19903

Figure 9. Le circuit intégré SRAM a été refroidi pour obtenir une rétention des données pendant 10 s. Version numérique :
www.elektor.fr/19904

température avec le spray. J’ai atteint un Il ne faut pas oublier que les CI récents à
temps de rétention de 10 s à −40 °C (fig. 9). haute intégration sont plus sensibles aux
Ces résultats étaient attendus, car les broches approches présentées. En améliorant les
d’alimentation restent « court-circuitées » idées évoquées ici, vous pourriez imagi-
par quelques kΩ pendant la mise hors ner vos propres dispositifs et procédures
tension, de sorte que la broche Vdd peut être d’approche. Il reste beaucoup à faire et donc
considérée comme « à la terre ». aucune excuse à l’apathie et à la dépres-
sion typiques des ingénieurs du 21e siècle !
Simplicité surprenante Je suis sûr qu’un bon chiffrement à petit
Comme vu ci-dessus, certaines approches budget est possible de nos jours. À mesure
pratiques sont réalisables à la maison que la technologie progresse et que les prix

> Livre numérique en anglais,


LIEN « Retronics, 80 tales of electronics
bygones », J. Buiting
[1] « Tektronix 564 oscilloscope à mémoire (1963) », rubrique Rétronique,
www.elektor.fr/16885
Elektor 07-08/2011 : www.elektormagazine.fr/100920

36 mars/avril 2022 www.elektormagazine.fr


zone D
Astuces, bonne pratiques et
s
autres informations pertinentes

identification des
c o mposants
Trucs et astuces, bonnes pratiques
et autres informations utiles

David Ashton (Australie) et pas de signal NPN comme les miens. L’identification du véritable
numéro de type de ces transistors était donc un défi. Et de taille !
Pour dépanner un circuit imprimé, il est La solution m’a été apportée par un tableau de caractéristiques de
transistors publié par la revue Practical Electronics que je recevais
primordial de savoir identifier ses composants.
à l’époque. Il y avait le 2N2926, avec le même boîtier, avec une note
Le développement de vos compétences dans indiquant que le point de peinture sur le dessus du boîtier indiquait la
ce domaine vous servira aussi à constituer plage de gain. Le 2N2926 (fig. 1) est un transistor à l’aspect étrange et
ce devait être celui-là, même si les miens étaient marqués différem-
un stock de pièces de rechange qui pourrait
ment. J’ai vérifié que les gains de mes transistors correspondaient à
s’avérer utile un jour. Cependant, il n’est pas ceux indiqués dans le tableau, et cela a conclu l’affaire. Le 2N2926,
toujours facile de déterminer qui est quoi. Voici avec son point de couleur, est un transistor tellement exotique que ce
devait être le même, même avec un marquage différent.
quelques conseils pour vous aider.
J’ai travaillé dans le domaine de l’électronique et des télécoms la
majeure partie de ma vie et je continue à démanteler de vieilles
De nombreux lecteurs sont, comme moi, des bricoleurs qui récupèrent cartes pour récupérer des composants – les appareils profession-
des composants sur de vieux appareils électroniques. J’ai commencé nels fournissent souvent des composants de haute qualité. Depuis
à m’intéresser à l’électronique à l’adolescence – il y a environ 50 ans ma jeunesse, j’ai relevé de nombreux défis pour identifier des compo-
– et mon père, qui était vendeur dans une entreprise de machines sants de récupération encore plus étranges, pas toujours avec succès.
comptables, récupérait pour moi des cartes de rebut auprès de leurs Mais voici quelques-unes des techniques auxquelles j’ai eu recours
techniciens. Ces cartes contenaient des transistors, des résistances, au fil des ans, y compris un quiz d’identification de composants vous
des diodes et quelques condensateurs. Les fils étaient pliés sur la face permettant de tester vos propres connaissances. Il y en a de toutes
inférieure de la carte et même avec le gros pistolet à souder que mon sortes, des plus anciens aux plus récents de type CMS, ainsi que des
père m’avait offert, j’avais du mal à enlever certains composants. Mais exemples de mes problèmes et techniques.
ça se passait en Rhodésie (aujourd’hui le Zimbabwe), loin du centre de
l’univers de l’électronique. Les composants étaient chers et souvent
difficiles à se procurer, alors ces cartes étaient de l’or pour moi.
Le boîtier des transistors était très bizarre, mais avec un simple testeur
que j’avais construit à partir d’un article de revue, je les ai identifiés
comme étant de types NPN. Ils étaient marqués « B686 » et avaient un
point de couleur – brun, rouge, orange, jaune ou vert – sur une bosse
sur le dessus du boîtier. À cette époque, l’internet n’existait pas et les
catalogues de composants étaient rares et chers. Je savais que les
transistors marqués « Bxxx » appartenaient souvent à la série japonaise Figure 1. Transistors 2N2926. La couleur indique le gain Hfe du transis-
2SB, mais mon exemplaire du vénérable Towers International Transistor tor : brun 35-70 ; rouge 55-110 ; orange 90-180 ; jaune 150-300 ; vert
235-470.
Selector m’apprit que le 2SB686 était un transistor de puissance PNP

lektor mars/avril 2022 37


zone D
Astuces, bonnes pratiques et
autres informations pertinentes

Trouver des données sur les composants Comment tester les composants
Lorsque j’ai commencé, les catalogues de composants étaient diffi- À peu près au moment où j’ai rencontré ces 2N2926, je me suis construit
ciles à trouver et valaient leur pesant d’or. C’est plus facile aujourd’hui un simple testeur de transistors avec un vieux multimètre, un interrup-
avec l’internet, mais si vous trouvez des informations utiles – codes de teur, un potentiomètre de 500 kΩ et une pile de 1,5 V. Je l’ai toujours,
couleur, informations des fabricants, fiches techniques, etc. – copiez-les mais maintenant, la plupart des multimètres numériques ont un testeur
ou imprimez-les. J’ai encore un tableau des données sur les transis- de transistors intégré, et certains un testeur de condensateurs. Tester
tors des années passées. des transistors à effet de champ est un peu plus difficile, mais possible
De nos jours, apprenez comment chercher sur l’internet. Il existe une dans un labo d’amateur moyen. J’ai un LCR-mètre de base que j’utilise
multitude de bons sites de fiches techniques. Google est votre ami ! beaucoup, mais j’aimerais en avoir un meilleur.
Mais aidez Google à vous aider. Si vous cherchez une fiche technique, Si vous pouvez identifier la nature d’un composant (transistor, FET,
tapez « datasheet » dans le champ de recherche. Et utilisez un numéro condensateur, etc.), vous avez fait la moitié du chemin, et vous pourrez
de référence aussi court que vous pouvez. J’ai eu récemment plusieurs peut-être même l’utiliser sans en savoir davantage. Certains compo-
circuits intégrés avec la même immatriculation « 2026-1SM », probable- sants CMS, en particulier les condensateurs, n’ont aucun marquage
ment leur identifiant de composant. Mais j’ai entré « 2026 datasheet » et vous devez donc les mesurer pour pouvoir les utiliser. Une « sonde-
dans le moteur de recherche qui m’a fourni la fiche technique du pincette » pour votre appareil de mesure peut faciliter énormément le
MIC2026 de Micrel (aujourd’hui partie de Microchip) – un commuta- test des CMS, et la boutique Elektor propose des brucelles de test très
teur de distribution de puissance à deux canaux. intéressantes qui mesurent à peu près tout, voir l’encadré Produits.
Avec votre identifiant de composant, certains sites de fiches techniques Les circuits intégrés, bien sûr, nécessitent des testeurs spécialisés, mais
retournent une liste de fiches qui lui correspondent exactement ou vous pouvez fabriquer vous-même un testeur d’ampli-op et acheter des
partiellement, ou qui le contiennent – cela peut être utile pour affiner testeurs de CI logiques si vous en utilisez beaucoup. Avoir un numéro
votre recherche. J’enregistre la plupart des fiches techniques sur mon de composant et une fiche technique est un début pour les CI et les
disque dur pour ne pas avoir à refaire la recherche, mais c’est une transistors, mais de nombreux composants, surtout les passifs, sont
préférence personnelle. J’ai indiqué le lien vers mon site de fiches utilisables si leur seule valeur est connue. Le test des composants
techniques préféré [1], et je garde quelques sites dans mes favoris, est un art en soi.
ainsi que certains sites de fabricants.
Tirez le meilleur parti du marquage des
Comment lire les fiches techniques composants
La plupart des fiches techniques commencent par une description du Il y a généralement plusieurs numéros sur un transistor ou un CI et
composant, suivie des valeurs à ne pas dépasser. Viennent ensuite cela vaut la peine de faire un effort pour savoir lequel est le numéro
des détails sur l’utilisation, les brochages, etc. Les informations sur du type. Les préfixes sont souvent omis sur les petits CMS. Familia-
le boîtier se trouvent généralement à la fin, et il est souvent néces- risez-vous avec les logos des fabricants. Aller directement sur le site
saire de les consulter pour s’assurer que ce que vous avez en main web du fabricant peut vous faire gagner beaucoup de temps. La plupart
correspond bien à ce qui est décrit – le même nombre de broches et
le même boîtier.
Tous les fabricants d’un même composant n’utilisent pas forcément
le même boîtier, ce qui peut compliquer la recherche. Un composant
produit par plusieurs fabricants aura souvent les mêmes caractéris-
tiques, mais pas toujours, donc trouvez, si possible, une fiche technique
du fabricant de votre composant.

Connaissez vos composants


Certains composants ressemblent beaucoup à d’autres. Maintenant,
quand je vois un composant qui ressemble à une résistance, en me
basant sur sa forme et sa couleur, je peux dire que c’est un conden-
sateur ou une inductance avec un faible taux d’erreur.
La plupart des gens savent que si c’est marqué « 2Nxxxx », c’est un
transistor, et si ça ressemble à un circuit intégré avec quatre ou six Figure 2. Est-ce un 7432 ou un 7434 ? Supposer que PCF est un
broches, c’est sans doute un optocoupleur. Et je sais que si ça a l’air préfixe du fabricant est raisonnable, mais ce n’est pas le cas. (Ça ne
d’un transistor marqué xxNyy (par ex. « 35N60 ») ou marqué IRFxxx l’était pas à l’époque, en tout cas !) Il n’y a pas de TTL 7434. C’est un
7432 fabriqué au cours de la 34e semaine de 1974. Le 9N32 est un
(par ex. « IRF540 »), c’est un FET. Ça vient avec l’expérience. autre indice, de nombreux circuits intégrés 74xx étaient également
Pendant mes recherches pour cet article, j’ai vu qu’un « V » sur un marqués 9Nxx, bien qu’il soit très difficile de trouver des informations
circuit intégré signifie souvent qu’il est fabriqué par Vishay. Bon à savoir, à ce sujet.
peut-être cela me fera-t-il gagner du temps à l’avenir.

38 mars/avril 2022 www.elektormagazine.fr


des composants ont un code de date qui indiquait autrefois l’année et De nombreux CMS modernes ont des pattes très serrées ou sont de
la semaine (par ex. 8634), mais de nos jours, il peut s’agir d’un code type BGA (ball-grid array), ce qui nécessite un équipement spécial
de lot énigmatique. (Autrefois, un circuit logique TTL série 74 fabriqué pour les installer et les enlever sur les cartes. Si vous n’en avez pas
en 1974, avec un code de date 74xx (fig. 2) pouvait être un casse-tête). l’utilité, jetez-les. Sinon, identifiez-les pour être sûr que ça vaut le coup
Si vous avez plusieurs composants d’un même type, cherchez le code de les dessouder.
identique sur tous : il s’agit du numéro de composant, les autres sont Apprendre à identifier et à utiliser les composants de vieilles cartes
des codes de date ou de lot sans intérêt. peut valoir le temps passé. Vous pouvez récupérer des composants de
Les valeurs des composants passifs sont soit indiquées en clair (comme haute qualité qui, si vous les stockez systématiquement, vous épargne-
47 pF), soit sous forme de chiffres ou d’un code couleur de résistance ront souvent d’avoir à en acheter pour un projet. Ces compétences
au format chiffre1, chiffre2, multiplicateur (le nombre de zéros) sur le peuvent aussi vous être utiles pour réparer des circuits imprimés.
composant. Les inductances CMS ont souvent une valeur indiquée 210024-04
en microhenrys de cette façon, ainsi 3R3 correspond à 3,3 µH et 333
à 33 mH (33 000 µH). Les condensateurs peuvent être marqués en
picofarads. Un condensateur au tantale marqué 227 vaut 22 × 107 pF Contributeurs
= 220 µF. Certains composants peuvent avoir cinq ou six anneaux de Idée, texte et illustrations : David Ashton
code couleur, alors l’internet est d’une grande aide pour les décoder. Rédaction : Clemens Valens
La plupart des petits condensateurs CMS ne sont pas marqués du Traduction : Helmut Müller
tout, alors utilisez vos compétences et votre appareil de test de compo- Mise en page : Harmen Heida
sants pour les vérifier. Et procurez-vous une loupe ou un microscope
USB (voilà comment j’ai pris la plupart des photos de cet article) pour
une lecture bien plus facile des inscriptions minuscules sur les petits Des questions, des commentaires ?
composants. Envoyez un courriel à l’auteur ([email protected]) ou contactez
L’internet met de nombreuses ressources à votre disposition – cherchez Elektor ([email protected])
« IC Manufacturers logos » ou « SMD codes » si vous avez besoin de
plus d’informations. Et cherchez « EIA-96 » pour décoder les résis-
tances CMS avec ce qui ressemble à un code bizarre de deux chiffres
et une lettre.

Tenez compte du contexte PRODUITS


Si vous savez de quel genre d’appareil provient le composant, cela peut
vous donner un indice sur sa nature. Une alimentation a des chances
d’avoir un circuit intégré MLI à découpage, tandis qu’une carte audio > Microscope numérique HDMI AD407 d’Andonstar
www.elektor.fr/19079
est plus susceptible d’avoir des ampli-op.
> DT71 - brucelles numériques de Miniware
Ne croyez pas que vous allez tout identifier ! www.elektor.fr/19422
J’ai un sac de transistors marqués 0V8F qui ont obstinément refusé
d’être identifiés. Les composants CMS peuvent être difficiles, voire > OW16B - multimètre numérique avec Bluetooth d’OWON
www.elektor.fr/18780
impossibles à identifier, car ils portent souvent des numéros de
référence abrégés. Même les ressources considérables de l’internet
peuvent ne pas suffire.

Faites le tri
J’ai parlé des cartes que j’ai eues quand j’étais enfant, avec des fils
de composants pliés. Je les avais tous dessoudés religieusement.
Aujourd’hui, je les ignore, sauf s’ils sont vraiment spéciaux : ils n’en LIEN
valent pas la peine.
[1] Site de fiches techniques avec de nombreuses
Les condensateurs électrolytiques doivent toujours être testés, en
options : www.alldatasheet.com/
particulier les gros modèles pour alimentations, et s’ils ont le dessus
bombé, c’est un signe évident qu’ils sont secs ou qu’ils fuient.
Les anciens composants tels que les résistances au carbone n’ont
aucun intérêt, et les anciens condensateurs électrolytiques sont souvent
bien plus gros, à capacité égale, que les types modernes. Faites le quiz
d’identification des
composants

lektor mars/avril 2022 39


Faites le quiz d’identification
des composants vous vous en sortez !
Les échelles sont en millimètres. Voyez comment

A - Pouvez-vous dire ce que c’est B - Et celui-ci ? D - Quel est ce circuit intégré à


juste en le regardant ? C - Qu’est-ce que c’est et quelle l’aspect étrange ? Boîtier bizarre,
est sa valeur ? mais bon numéro de composant
(ou est-ce 431) ?

G - Celui-ci est bizarre. Le


E - 506X ou X905 ? Ces CMS F - Que serait ce CI ? marquage 431 est à peine visible..
présentent une très faible résistance H - S’agit-il de composants du
(quelques ohms). De quoi s’agit-il ? même type, ou pas ?

L - Celui-ci est assez facile. Indice :


I - Et ceux-ci ? Pouvez-vous en J - Est-ce un condensateur au K – Marqué D256. Indice : l’épais- qui est le fabricant ?
trouver une fiche technique ? tantale ? Ou autre chose ? seur du circuit intégré.

N - Ces composants se ressem- O - Pas de marquage. Mais à quoi P – Ce boîtier est percé de quatre
M - Souvenez-vous, celui-ci, je blent, mais de quoi s’agit-il ? Des cela sert-il ? Et les « poignées » : trous (entre les inscriptions). Est-ce
vous en ai parlé. Des idées ? condensateurs au tantale ? des radiateurs ? un buzzer ou un capteur de tempé-
rature ou d’humidité ?

40 mars/avril 2022 www.elektormagazine.fr


mars/avril 2022 41 lektor
F - D’expérience, tout ce qui porte la mention 431 parfois vous faire gagner pas mal de temps. Son
est généralement une référence de tension TL431 nom complet est ILD256T et c’est un optocoupleur
de Texas Instruments, ou d’une seconde source. à deux canaux, à entrée CA, avec des rapports de
Largement utilisée, elle peut aussi servir de transfert de courant (CTR) bien appariés.
capteur tension dans les alimentations. Il s’agit
de la version CMS SOIC-8 ; le boîtier habituel est L - Vous voyez le logo Texas Instruments juste avant
le TO-92. le 49 sur la première ligne ? Allez sur le site web de
A - C’est un condensateur céramique à tube – 22 nF.
TI, tapez 2064, et vous obtenez trois possibilités :
Pas tout à fait la forme d’une résistance et pas de la
G - Celui-ci m’a longtemps intrigué. Le chiffre une carte d’alimentation, un commutateur de
bonne couleur. Présenté ici avec – dans le sens des
431 est à peine visible sur le fond rouge. Il s’agit distribution d’alimentation à huit broches et ceci – le
aiguilles d’une montre – 47 pF, 1 nF, et... une résistance
d’une VDR (résistance dépendant de la tension) TLE2064 – une version améliorée de l’ampli-op à
de 486 kΩ 1%, qui, dans le lot, ressemble le moins
430 V, une protection de surtension. Elle présente quatre JFET d’entrée TL064. Comme d’habitude,
à une résistance – beaucoup plus longue qu’une
un circuit ouvert et une très faible capacité. Vu sa pas de préfixe sur les composants CMS.
résistance normale ! Ça m’a trompé la première fois
petite taille, je doute qu’elle puisse absorber un pic
que je l’ai vue. Alors, méfiance, testez toujours !
de courant élevé. M - Voici mon transistor 0V8F non identifié – en
boîtier TO-92 – dont il est question dans le texte. Dix
H - Ils sont presque identiques en taille et en points au premier lecteur qui pourra l’identifier avec
couleur. À gauche, un condensateur, à droite, le fabricant et la fiche technique. J’en ai plusieurs et
une VDR. Le condensateur a la valeur indiquée le numéro de type est 0V8F, l’autre nombre est un
(102 = 1 nF), et supporte 2 kV. Le 241 sur la VDR code de date et varie. Oui, j’ai essayé OV8F !
signifie 240 V (24 et un zéro). Il est peu probable
que vous voyiez une VDR de 1000 V, et il n’y N - Les petits bleu et noir sont des thermistances
B - Comme le condensateur en A était trop long aurait pas d’autre tension dessus ! Encore une NTC. Lorsque la température augmente, la
pour une résistance, ceci est trop court et trop gros, fois, fiez-vous à l’expérience et ne faites jamais de résistance diminue. Elles proviennent de capteurs
et la couleur vert-bleu serait inhabituelle pour une suppositions ! de climatisation. Le grand est une thermistance
résistance. C’est une inductance de 680 nH. La voici PTC – plus utilisée pour la protection. Traversée par
(en haut à gauche) avec (dans le sens des aiguilles I - Le 1587AM est commun aux deux pièces. un courant excessif, elle chauffe et sa résistance
d’une montre) 470 nH, 47 nH et 820 nH. Le 47 nH est Cherchez « 1587 datasheet » et vous serez dirigé augmente pour limiter le courant – comme les
de la couleur crème habituelle pour une résistance, vers Alldatasheet.com. Sélectionnez les références Polyfuses en E ci-dessus.
mais un peu trop courte pour une résistance. se terminant par 1587 (*1587) et vous obtiendrez
le régulateur de tension LDO LMS1587 de chez O - Je n’ai pas pu résister au plaisir d’inclure celui-
C - Il s’agit d’une très vieille résistance, utilisant le Texas. Si vous avez reconnu le logo Fairchild et ci. Vous pensez que c’est un capteur de courant ?
code couleur à point. Rouge-Noir-Jaune = 200 kΩ que vous cherchez « Fairchild 1587 » sur Google, Gagné ! L’image provient de la fiche technique de
et pas de tolérance, donc probablement 20%. En vous trouverez le Fairchild RC1587, qui est le même la sonde à effet Hall ACS756 d’Allegro. Le courant
fait, elle vaut 225 kΩ, un écart de 12,5% seulement ! composant. passe par les « poignées », et les broches sont le
Sans doute pas la peine de la conserver, sauf pour capteur à effet Hall. Isolement jusqu’à 3 kV. Idéal pour
sa valeur historique : elle doit avoir plus de 80 ans ! les alimentations.
D - Ceux-ci ont nécessité beaucoup de travail.
Vous pouvez facilement trouver le LH1540 – un
optocoupleur, dans différents boîtiers mais pas celui-ci.
Il y a aussi 431 dessus – était-ce peut-être une version
bizarre du TL431 ? Finalement, au bas d’une fiche
technique de Vishay, j’ai vu une image de ce boîtier J - C’est un condensateur au tantale de 20 µF, de
(appelé 8 PowerSOIC) sans autre information qu’un l’époque où ils étaient codés par couleurs. En voici P - Il s’agit d’un supercondensateur : 104 =
lien vers une fiche technique de dimensions. Cela quelques autres : 2,2 µF, 3,3 µF et 5 µF. Seulement 100 000 µF = 0,1 F. Notez que la valeur est en µF, et
m’a conduit à la fiche technique LH1540ACD qui fait deux dans les valeurs standard, et des codes non en pF comme sur d’autres condensateurs. 5,5 V
référence à ce boîtier particulier. Parfois, il faut creuser. couleurs très bizarres ! Méfiez-vous de ces vieux est une tension courante pour ces condensateurs.
« tantys », ils ont tendance à se mettre en court- Ils servent en général d’alimentation de secours
E - Faible résistance, hein ? Suite à une intuition, je circuit. Mais ils sont plus beaux que les nouveaux ! pour la mémoire ou l’horloge en temps réel. Ici, on a
l’ai branché sur mon alimentation et j’ai augmenté affaire à l’un des modèles de 0,1 F rectangulaires les
lentement le courant. À environ 700 mA, il s’est K - L’épaisseur du circuit intégré est un indice : plus courants. Pourquoi les trous dans le boîtier ?
échauffé et passé à une résistance assez élevée. on a généralement affaire à un optocoupleur. Un Aucune idée !
C’est un Polyfuse – un fusible à réarmement autre indice est le « V », qui indique souvent un
automatique très pratique. Les codes qui y figurent produit de chez Vishay (voir D ci-dessus). Ça peut
n’ont été d’aucune aide.
iz
Réponses au qu
projet

interrupteur
sans contact DIY

r lab • Elekto
to

k
Ele

r la
b
Mathias Claußen (Elektor)
O R IG IN A L
Ele

La pandémie m’a donné l’idée de réaliser un interrupteur qui

la b
or r
kt

la b to
interprète des gestes de la main. L’absence de contact physique • Ele k
réduit en effet la transmission de virus et bactéries d’une personne
à l’autre. C’est un atout pour les espaces de travail très fréquentés.
Cet article décrit le principe de cette idée et sa mise en œuvre sur un
ESP32 (avec carte d’extension) qui évalue les gestes de la main.

Début 2020, lors de la 1ère vague de COVID-19, pour contenir la des bureaux paysagers et des couloirs, ne puissent devenir des sites
propagation, des mesures furent prises dans les bureaux. Nettoyage de prolifération du virus est plus difficile.
et désinfection des surfaces devinrent le rituel quotidien. S’il
est facile d’essuyer machines à café et bouilloires avant et après En y réfléchissant, j’ai réalisé que le problème serait résolu à l’aide
utilisation, s’assurer que d’autres surfaces, par ex. les interrupteurs d’interrupteurs ne nécessitant aucun contact physique. Dans la

Avertissement
Tous les circuits présentés dans cet article fonctionnent sur le secteur. Ni les circuits ni les circuits imprimés présentés ici n’ont été testés
du point de vue fonctionnalité et sécurité. Il est déconseillé de fabriquer ou utiliser les CI sans les faire vérifier au préalable. Pour réaliser
un projet à partir de cet article, il est vital d’être conscient des dangers. Vous travaillerez entièrement à vos risques et périls. Seuls des
ingénieurs ou des concepteurs qualifiés peuvent le faire !

42 mars/avril 2022 www.elektormagazine.fr


boutique d’Elektor [1], j’ai trouvé le HAT 3D Gesture & Tracking de
Seeed Studio pour Raspberry Pi (fig. 1).

Le MGC3130
Début 2019, James Rowley et Mark Omo ont présenté un interrupteur
d’éclairage sans contact The Open Smart Switch [2] sur la plateforme
hackster.io. Ce projet utilise le MGC3130 de Microchip Technology. Figure 1. Le 3D Gesture & Tracking Shield (carte d’extension pour suivi et
Le HAT 3D Gesture & Tracking pour Raspberry Pi envisagé utilise gestuelle 3D).
la même puce. La chaîne ElektorTV [3] a abordé en détail les carac-
téristiques de cette puce.

Le MGC3130 capte le champ électrique. La puce envoie un signal


basé sur la mesure du champ électrique produit à la surface d’une
tablette tactile. Cinq électrodes disposées autour de la tablette
servent à détecter le champ et tout changement subtil de ce dernier
quand un objet comme une main s’approche de la tablette et le
perturbe. La figure 2 montre le principe de fonctionnement du Figure 2. Le champ du capteur MGC3130. (Source : Microchip)
capteur et le champ produit. Le doigt peut être reconnu et sa
position calculée. En outre des gestes 3D, par ex. « roue à air » ou
« pichenette », peuvent être évalués dans les quatre directions. Une
pichenette consiste à passer devant le capteur avec un doigt en l’air.
La puce peut être calibrée et configurée à l’aide des outils fournis par
Microchip. La page [4] fournit toutes les informations nécessaires
pour utiliser la puce dans une réalisation personnelle.
Elle communique avec le monde extérieur par une interface I²C
et nécessite les deux lignes usuelles (données + horloge) plus
deux autres (réinitialisation et interruption bidirectionnelle). Le
document DS40001718E [5] de Microchip fournit les détails de
l’interface. Pour cette puce, on peut concevoir un pad personnalisé,
mais il faut noter que la carte devra comporter au moins quatre
Figure 3. L’ESP32 PICO-KIT.
couches. Et dans ce cas, il sera nécessaire de paramétrer et
configurer la puce pour correspondre au nouveau dessin du pad.

Quel microcontrôleur ?
En ce qui concerne le microcontrôleur, nous avons vraiment l’intégration dans un système de commande tel qu’ESPHome, aurait
l’embarras du choix de nos jours. Pour n’en citer que quelques-uns, l’avantage de centraliser la commande de la lampe ou de la charge.
cela va du Raspberry Pi Pico à l’ESP8266 ou à l’ESP32, en passant par Il convient également de déterminer comment effectuer les mises
le STM32 Blue Pill et l’éprouvé ATmega328. L’application ne nécessite à jour du micrologiciel sur le système. Avec l’ESP8266 ou l’ESP32,
pas de calculs compliqués et ne produit qu’un seul signal pour une liaison Wi-Fi permet ces mises à jour sans fil (en anglais OTA
commuter le relais. = Over The Air).
Il nous faut aussi réfléchir au mode de fonctionnement de Nous avons opté pour une variante de l’ESP32 qui dispose du Wi-Fi,
l’interrupteur : doit-il être autonome pour allumer une seule lampe du Bluetooth, d’une mémoire Flash embarquée suffisante et des
ou intégré à une installation domotique existante ? La 2e option, mises à jour via Wi-Fi : l’ESP32 PICO-KIT (photo fig. 3).

lektor mars/avril 2022 43


INT
+3V3
MGC_RST MOD2
1 2
FCS FSD1
3 4
FSD0 FSD3
5 6
FSD2 FCLK
7 8
FSVP IO21
9 10
FSVN IO22
MOD1 11 12
IO25 IO19
13 14
IO26 IO23
15 16
IO32 IO18
17 18
IO33 IO5
EN 19 20
IO27 IO10
21 22
IO14 IO9
23 24
IO12 RXD0
25 26
Figure 4. Boîtier à encastrer. IO13
BOOT
TXD0
27 28
IO15 IO35
(Source : Würth [9]) 29 30
IO2 IO34
31 32
IO4 ESP32 IO38
Pico-Kit V4 33 34
+3V3 IO0 IO37
35 36
3V3 EN
GND GND
C2 37 38 Figure 6. Interconnexion du tout.
Figure 5. 5V 3V3
39 40
USB 10
Schéma du prototype. 6V3
200478-005

Concept de base de disposition du matériel puissent être corrigées par de petites


Comme pour tout projet, il faut définir le concept de base et vérifier modifications du logiciel, mais cela peut être une source d’ennui
tous les composants potentiellement disponibles pour accomplir la pour le développeur du logiciel.
tâche. Ici, nous possédons déjà un capteur, le 3D Gesture & Tracking Enfin, il y a la conception mécanique de l’ensemble complet et
Shield pour le Raspberry Pi et un ESP32, en version PICO-KIT. Il du boîtier qui doit tout accueillir. Souvent, la taille du boîtier
nous faut aussi un relais pour allumer et éteindre la lumière et n’est pas critique et nous pouvons en choisir (ou fabriquer) un
enfin une alimentation électrique. Il suffit d’un micrologiciel et de dimension adéquate. Cependant, dans certains cas, nous
le tour sera joué... aurons besoin de tout faire entrer dans un boîtier standard, par
Mais, tout n’est pas si simple. Souvent, en cours de développement, ex. une boîte d’encastrement électrique ordinaire, pour l’intégrer
nous nous heurtons à des problèmes imprévus qui doivent être dans l’installation électrique domestique. Pour ce projet, notre
résolus. Le processus de développement peut être divisé en trois plan initial était de faire tenir l’ensemble dans un volume de
domaines qui concourent à élaborer le produit fini. Il y a d’abord 65 mm × 55 mm × 25 mm. Toutefois, cela ne correspond pas à
le logiciel qui évalue les données des capteurs et déclenche les certaines boîtes d’encastrement courantes (fig. 4) utilisées dans
actions adéquates. Ensuite le matériel électronique et la carte sur certains pays européens. Pour conférer un caractère plus universel
laquelle les composants sont montés. Un schéma de connexion des à cette réalisation, il serait souhaitable que l’ensemble soit assez
composants est produit. Idéalement, le développeur du logiciel a petit pour être monté dans ce type de boîtier également.
déjà demandé un retour d’information sur l’affectation des broches
et les exigences particulières. Il arrive souvent que des erreurs Mise en œuvre du concept initial
Le schéma de la figure 5 montre la connexion initiale du 3D Gesture
& Tracking Shield pour Raspberry Pi à l’ESP32. La carte est installée
sur une plaque d’essai (fig. 6) pour tester sa fonctionnalité. Plusieurs
bibliothèques sont disponibles pour le MGC3130. La bibliothèque
utilisée dans ce projet provient de Seeed Studio [6], elle est prévue
pour un Raspberry Pi.
Pour l’ESP32, l’interface I²C et l’affectation des broches d’E/S
doivent être adaptées. Une fois ces modifications effectuées, les
tests peuvent démarrer avec cette bibliothèque. La figure 7 montre
la suite des coordonnées positionnelles du mouvement pour un
« geste de pichenette » reconnu.

Alimentation et relais
Lors de la conception et du test du prototype, nous ne nous sommes
pas préoccupés de l’alimentation électrique ni du relais à inclure
dans la réalisation finale. Le contrôleur final fonctionnera à partir
de la tension du secteur. À cet effet, nous devrons inclure une
alimentation de 5 V ou 3,3 V suffisamment puissante pour l’ESP32,
le 3D Gesture & Tracking Shield et le relais.
Les HLK-PM03 et HLK-PM01 de Hi-Link (fig. 8) sont parmi les
Figure 7. Sortie de données du capteur de gestes. modules d’alimentation les plus compacts. Ils fournissent une

44 mars/avril 2022 www.elektormagazine.fr


puissance de 3 W, soit 600 mA en 5 V ou environ 900 mA en 3,3 V. Figure 8. Convertisseur
L’ESP32 nécessite environ 500 mA (2,5 W sous 5 V, 1,65 W sous CA/CC Hi-Link.
3,3 V). Nous avons choisi un relais Panasonic de type ADW12. Il
nécessite une impulsion d’environ 67 mA en 3,3 V ou 40 mA pour
la version 5 V (220 mW). Le 3D Gesture & Tracking Shield lui-même
nécessite encore 20 mA en 3,3 V (66 mW). Tout compris, nous
arrivons à un minimum de 2,8 W si l’ESP32 PICO-KIT est alimenté la portée Wi-Fi ou déclencher un crash logiciel. L’alimentation
en 5 V. Cela nous rapproche de la puissance de sortie maximale finale comprendra ces modifications.
de ce module 5 V. Un condensateur de 10 µF placé entre les broches GND et EN de
L’ESP32 PICO-KIT consomme moins s’il est alimenté en 3,3 V, car le l’ESP32 évite tout défaut de synchronisation qui empêcherait
régulateur LDO (Low DropOut) intégré n’est plus nécessaire et ne sera de passer en mode de programmation à la réinitialisation. C’est
pas alimenté. C’est pourquoi nous utiliserons finalement un module également utile si, à l’occasion, l’ESP32 refuse d’être programmé
3,3 V tel que le HLK-PM03. Il peut fournir 900 mA maximum. Le depuis le port micro-USB.
relais choisi est un Panasonic ADW1203HLW. Les contacts de ce Comme déjà indiqué ci-dessus, la carte ESP32 PICO-KIT comprend
relais unipolaire bistable acceptent 16 A sous 277 VAC max.. Il est un régulateur AM1117-3.3 censé fournir 3,3 V à l’ESP32 à partir
assez compact : 24 mm × 10 mm × 16 mm. Il suffit d’une courte de 5 V. Ce régulateur supporte 3,3 V sur sa broche de sortie s’il
impulsion pour l’activer ou le désactiver et la bobine ne consomme n’est pas alimenté. Cependant, dans notre schéma du circuit, une
aucun courant permanent. diode Schottky (D1) est connectée entre l’alimentation 3,3 V et
l’alimentation 5 V afin qu’un régulateur, monté le cas échéant sur
Vers une version finale du schéma un autre type de carte, ne puisse pas être endommagé. En l’incluant,
Le schéma préliminaire du circuit est présenté à la figure 9. il circule un courant de l’alimentation 3,3 V à travers le régulateur.
Nous n’avons pas encore inclus de protection autour du module Le courant minimal de commande du relais 3,3 V est de 67 mA.
d’alimentation HLK-PM03. Habituellement on installe, côté C’est beaucoup plus que ce que les broches de l’ESP32 peuvent
entrée CA, un fusible thermique et une varistance et, côté sortie, fournir. Un étage de commande à transistors (T1 et T2) est donc
un fusible et des condensateurs de lissage de la tension. Sans ces utilisé. Les diodes de roue libre D2 et D3 sont essentielles pour
mesures de protection du côté de l’entrée, une défaillance interne du éviter de détruire les transistors par les pics de tension inverse à
module peut conduire à un incendie. En sortie, une régulation et un la coupure de la bobine du relais.
filtrage insuffisants de la tension peuvent réduire considérablement Le 3D Gesture & Tracking Shield est connecté à l’ESP32 via le

K1 +3V3 +5V
D1
1
+3V3 1N5817
L
2
FCS FSD1
MOD1 4
1
AC/L +VOUT FSD0 FSD3 K3
C1
K2 1 2
FSD2 FCLK
2 2 3 3 4
AC/N –VOUT 100µ FSVP IO21
10V 5 6
N 1 HLK-PM03 FSVN IO22
MOD3 7 8
IO25 IO19
+3V3 9 10
IO26 IO23
11 12
IO32 IO18
13 14
IO33 IO5
RE1 D2 D3 EN 15 16
IO27 IO10
17 18
IO14 IO9
1N4001 1N4001 19 20
IO12 RXD0
BC337 21 22
ADW123HLW R2 IO13 TXD0
T2 BOOT 23 24
1k IO15 IO35
T1 25 26
R1 IO2 IO34
27 28
1k IO4 ESP32 IO38
Pico-Kit V4 29 30
IO0 IO37
BC337 +3V3 3V3 EN
31 32

33 34
GND GND C2
35 36
+5V 5V 3V3
USB 37 38
10µ
6V3 39 40

Figure 9. Le schéma se rapproche de la version finale. 200478-005

lektor mars/avril 2022 45


Figure 10. Blocs de base du microprogramme. connecteur à deux rangées de broches K3. Les 3,3 V, les signaux
I²C et les deux broches d’E/S sont les seules connexions requises
pour le HAT. Il comprend déjà les résistances de rappel au positif
du bus I²C. La carte a été conçue pour fournir des signaux SPI et
autres broches d’E/S nécessaires pour l’ajout d’un moniteur TFT
de 3,5 pouces.
La flexibilité de la matrice d’E/S de l’ESP32 facilite la connexion des
périphériques. Pour le 3D Gesture & Tracking Shield, les broches 21
et 22 sont affectées au bus I²C, la broche 25 à l’interruption et la
broche 26 à la réinitialisation du MGC3130. S’il n’est pas nécessaire
d’intégrer un écran TFT, nous pourrions utiliser une variante ESP32
nettement plus petite ou même un module ESP32-C3.

Figure 11. Téléchargement de l’image SPIFF via un navigateur web. Micrologiciel


Après avoir affecté les broches de l’ESP32, il faut compiler le
micrologiciel pour l’utiliser. Les routines de la bibliothèque
permettent de créer un serveur web qui produit deux pages web
de base et d’effectuer des mises à jour sans fil du micrologiciel. La
figure 10 donne les modules du microprogramme de base. Cette
approche évite de réécrire et de déboguer certaines des fonctions
de base utilisées dans de nombreuses applications similaires.
Le microprogramme produit deux pages web de base. L’une sert à
écrire une nouvelle image SPIFFS (Serial Peripheral Interface Flash
File System) dans l’ESP32 (fig. 11) et l’autre à fournir une mise à jour
Figure 12. Mise à jour du micrologiciel OTA via un navigateur web.
du micrologiciel de l’ESP32 (fig. 12).
Aujourd’hui, le micrologiciel n’exécute que les fonctions de
commutation de base. Un autre composant permet d’évaluer
les informations du MGC3130. Une page web minimale permet
de configurer la messagerie MQTT (Message Queuing Telemetry
Transport) et une autre d’activer/désactiver la charge via un
navigateur web. La figure 13 illustre l’interaction des modules.
La commande de l’interrupteur d’éclairage est donc logicielle ou
manuelle.

Casse-tête...
Le micrologiciel et le schéma du circuit étant prêts, il faut
s’assurer que tout le matériel tient dans l’espace disponible. En
matière d’outils de conception de circuit imprimé (CI), chacun a
ses préférences et utilise celui qui lui est familier. De mon côté, je
préfère KiCad qui crée des schémas et des mises en page éditables
librement sans grand investissement financier. Elektor a d’ailleurs
publié le livre KiCad Like a Pro pour KiCad [7].
La figure 14 illustre le CI réalisé et, en effet, il n’est pas très joli.
Des découpes dans la carte assurent l’isolement nécessaire entre
les zones sous tension du secteur et l’alimentation 3,3 V. Tout
cuivre superflu à l’interconnexion des composants est retiré. La
figure 15 montre le routage obtenu. Les découpes et les fentes
sur le pourtour de la carte sont réalisées à la fraiseuse, on ne peut
donc pas s’attendre à des angles vifs à 90°. Si vous souhaitez faire
fabriquer la carte, vérifiez les caractéristiques du fraisage pour
avoir des angles internes de rayon minimal.
Des modèles 3D existent pour presque tous les composants. Ils
Figure 13. Liaisons du module de micrologiciel. serviront à étudier l’implantation des composants et à utiliser

46 mars/avril 2022 www.elektormagazine.fr


Figure 14. Circuit imprimé terminé. Figure 15. Schéma d’implantation terminé. Figure 16. Disposition des composants sur le
circuit imprimé.

au mieux l’espace disponible. Pour tout faire tenir, vous serez montre qu’il n’y a pas assez de place pour tous ceux-ci. Il faut
peut-être amené à utiliser des cartes filles, perpendiculaires à la garder une distance sûre entre pistes, il n’est donc pas possible
carte principale. La figure 16 montre une vue 3D de notre CI. de rapprocher les composants. La figure 20 montre qu’une fois
tout assemblé sous FreeCAD, le contour du module d’alimentation
Chausse-pieds SVP ! déborde encore sur un pilier d’angle. Il nous faut revenir en arrière
KiCad a l’avantage de pouvoir exporter un fichier STEP utilisable et revoir la conception avec d’autres composants.
dans un programme de conception 3D. Dans FreeCAD, nous
chargeons et plaçons correctement le modèle de notre CI et Et maintenant ?
son boîtier (impression 3D de la figure 17). Sur la figure 18, Du point de vue matériel et micrologiciel, la conception de
on voit que le CI ne tient pas ; son contour déborde de l’espace base de l’interrupteur sans contact fonctionne comme prévu.
disponible. Un conflit apparaît entre les composants et les Pour que l’unité puisse être utilisée avec une autre gamme de
surfaces internes du boîtier et le bord de la carte (en vert) dépasse normes électriques, la carte doit aussi pouvoir tenir dans un
à l’avant. Est-ce une erreur sur les modèles 3D, un problème boîtier circulaire. La figure 4 montre une épure de boîtier pour
de mise à l’échelle, ou bien une simple erreur de mesure ? La interrupteurs et prises à encastrer dans des cloisons de plaques
dernière hypothèse est la bonne. de plâtre ; ce modèle est courant dans certains pays européens.
Après avoir revu les dimensions de la carte, tout semble un peu Pour résoudre cet écueil, il faudra étudier la compacité du module
à l’étroit sur le CI. La vue de côté des composants de la figure 19 d’alimentation et la taille des modules ESP32 du marché pour

Figure 17. Le boîtier imprimé en 3D. Figure 18. Le circuit imprimé ne rentre pas. Figure 19. Vue de côté montrant les
composants placés les uns contre les autres.

lektor mars/avril 2022 47


Contributeurs
Texte et images : Mathias Claußen
Rédaction : Jens Nickel, C. J. Abate
Traduction : Yves Georges
Mise en page : Giel Dols

Des questions, des commentaires ?


Envoyez un courriel à l’auteur ([email protected])
ou contactez Elektor ([email protected]).

Figure 20. Le circuit imprimé


dans le boîtier. PRODUITS

> ESP32-PICO-Kit V4
www.elektor.fr/18423
prendre moins de place que le PICO-KIT ESP32.
Avec un peu de chance, des modules ESP32-C3 devraient arriver
sous peu sur la paillasse du laboratoire. Plus compacts, ces modules
sont moins chers, moins énergivores et équipés de Wi-Fi &
Bluetooth. Vu leur faible consommation, un module d’alimentation
plus petit devrait suffire et faire gagner un peu plus de place.
À ce stade de développement, nous avons décidé de mettre ce projet
en veille. L’expertise de nos lecteurs est la bienvenue ainsi que toute
suggestion sur des composants alternatifs plus compacts ou l’opti-
misation de la disposition et du routage pour remplir l’espace dispo- > Modèle 3445 de PeakTech ,
nible. Ce projet n’est pas achevé et nous pensons que les lecteurs multimètre numérique, mesure de la valeur efficace
trouveront bien des erreurs dans le circuit actuel. Des conseils et vraie, avec Bluetooth (6000 points)
des astuces sur l’interopérabilité KiCad/FreeCAD seraient égale- www.elektor.fr/18774
ment les bienvenus. Si vous souhaitez jeter un coup d’œil au code
> WT 1013, station de soudage numérique (95 W)
source, au schéma, au circuit imprimé ou aux données du boîtier, de Weller
tout est téléchargeable depuis le dépôt GitHub d’Elektor [8]. www.elektor.fr/19338
200478-04

LIENS
[1] Boutique d’Elektor : www.elektor.fr
[2] Interrupteur intelligent « open source » : www.hackster.io/133854/open-smart-switch-44fa54#toc-future-developments-8
[3] Vidéo Youtube de démonstration du Gesture Pad : www.youtube.com/watch?v=WVSVhEeMi_4
[4] Page produit du MGC3130 : www.microchip.com/wwwproducts/en/MGC3130
[5] Fiche technique du MGC3130 : https://ww1.microchip.com/downloads/en/DeviceDoc/40001718E.pdf
[6] Bibliothèque Seeed Studio MGC3130 : https://github.com/Seeed-Studio/Seeed_Linux_mgc3x30
[7] Peter Dalmaris, « KiCAD like a Pro », Elektor : www.elektor.fr/kicad-like-a-pro
[8] Dépôt Github : https://github.com/ElektorLabs/200478-Touchless-Lightswitch
[9] Boîte d’encastrement pour mur creux de Würth :
https://eshop.wurth.fr/Categories-produits/Boite-d-encastrement-pour-mur-creux/310755020304.cyid/3107.cgid/fr/FR/EUR/

48 mars/avril 2022 www.elektormagazine.fr


bien commencé est à moitié fini

démarrer en électronique.. (12)


Adaptation d’impédance et transformateurs

Eric Bogers (Elektor)

Avec cet épisode, nous arrivons au bout


du sujet des « bobines ». Nous jetterons un
dernier coup d’œil aux filtres de bande et
aborderons les aspects les plus importants
des transformateurs.

Adaptation d’impédance
Revenons brièvement au filtre passe-bande utilisé dans la de valeur constante que le comportement du filtre est conforme à la
conclusion de l’article précédent [1] (fig. 1). Vous remarquerez théorie – or l’impédance d’un haut-parleur est tout sauf constante.
que, comme charge, nous avons remplacé le haut-parleur par une Deux facteurs viennent compliquer les choses : premièrement,
résistance ; en effet, ce n’est qu’avec une résistance de terminaison l’impédance atteint un pic à la fréquence de résonance et,
deuxièmement, l’impédance augmente avec la fréquence (en
raison de l’auto-inductance de la bobine mobile).
Lorsque ces perturbations se produisent à plus de deux octaves
de la fréquence de coupure du filtre (ce qui correspond à la moitié
L1 C2 ou au double de cette fréquence), on peut les négliger. Dans le cas
contraire, les hypothèses initiales faites lors du calcul du filtre ne
C1 RL
L2
sont pas valables et le filtre ne fonctionnera pas comme prévu.
Figure 1. Filtre Heureusement, il est possible de compenser ce problème. La
passe-bande.
figure 2 montre un réseau de compensation réalisable.
Ce réseau se compose de deux parties : à gauche, le condensateur
Ce, qui doit compenser l’auto-inductance de la bobine mobile,
et à droite, un circuit résonant en série qui compense le pic de
résonance. Lorsqu’un facteur de perturbation est suffisamment
éloigné de la fréquence de coupure, il n’est pas nécessaire de le
RDC compenser et la partie correspondante du réseau peut être omise.
Les valeurs des composants sont déterminées comme suit :
Rm
RDC = résistance en courant continu du haut-parleur

Lm 1000  Le
Ce Ce  2   F, mH 
RDC

Cm
Figure 2. Compensation de
RDC  Qe
Rm  Rloss
l’impédance. Qm

lektor mars/avril 2022 49


La figure 4 montre quelques représentants de l’espèce « transfor-
159  RDC  Qe
Lm 
fs  mH  mateur ». À droite, on peut voir une partie d’un transformateur
toroïdal : les enroulements sont bobinés autour d’un noyau de fer
en forme d’anneau. Ce type de transformateur se distingue par
159000 un flux magnétique de fuite très faible, raison pour laquelle il est
Cm 
f s  RDC  Qe
  F populaire dans les amplificateurs de puissance audio.
En haut à gauche, vous pouvez voir un transformateur qui peut
être soudé directement sur un circuit imprimé. Pour l’isolement
Les valeurs des paramètres RDC, Qm , Qe et fs peuvent être évaluées et une bonne tenue mécanique, ce transformateur est moulé dans
à l’aide de logiciels de mesure spéciaux tels que Kirchner ATB PC un bloc en plastique.
Pro. RDC est la résistance en courant continu du haut-parleur et fs Enfin, en bas à gauche, nous avons deux transformateurs de signal
la fréquence centrale du pic de résonance. Rloss est la résistance audio pour circuits imprimés. Les transformateurs audio sont
équivalente de la bobine et Le son auto-inductance. souvent entourés d’un blindage en mu-métal pour éviter qu’ils
ne captent des champs magnétiques parasites. Ce n’est toutefois
pas le cas dans les exemples de la figure 4.
La figure 5 présente le symbole schématique d’un transformateur.
Si cela vous fait penser à deux bobines, vous avez raison : un
transformateur est constitué de deux bobines (ou plus) enroulées
sur un noyau commun. En principe, ce noyau pourrait être une
pièce en fer massif, mais cela entraînerait des pertes inacceptables
par courants de Foucault. C’est pourquoi, dans les transformateurs
Figure 3. Auto-inductance et
50 Hz (c’est-à-dire les transformateurs d’alimentation), le noyau
résistance en courant continu.
est constitué d’un empilement de fines tôles d’acier au silicium,
isolées les unes des autres. Pour les fréquences plus élevées, de
la poudre de fer est mélangée à un liant isolant et pressée dans la
Mais comment déterminer L e ? Aux fréquences élevées, le forme désirée. C’est ainsi que l’on obtient des noyaux de ferrite. À
haut-parleur peut être considéré comme un circuit en série très haute fréquence, un noyau n’est plus nécessaire et vous pouvez
composé d’une auto-inductance et d’une résistance en courant utiliser deux bobines à air.
continu, comme représenté sur la figure 3. À une fréquence Un transformateur fonctionne de la manière suivante : une
suffisamment élevée, on peut lire la valeur de l’impédance totale tension alternative est appliquée à l’enroulement primaire qui
Ztotal sur le diagramme d’impédance. Pour l’auto-inductance Le, est alors parcouru par un courant alternatif produisant un
on applique la formule : champ magnétique variable qui induit une tension alternative
dans l’enroulement secondaire. Il n’y a pas de liaison conductrice
2
Ztot 2
 RDC entre les enroulements primaire et secondaire : ils sont séparés
Le  galvaniquement.
2   f
Les désignations « primaire » et « secondaire » peuvent donner
l’impression qu’un transformateur ne fonctionne que dans un seul
Dans l’exemple de la figure 3, l’impédance totale à 10 kHz est sens, mais c’est faux : il est tout à fait possible d’appliquer une tension
de 42 Ω, tandis que RDC est égale à 7 Ω. Le calcul indique qu’une à l’enroulement secondaire et d’utiliser ensuite la tension disponible
auto-inductance de 0,66 mH doit être compensée par un sur l’enroulement primaire. Toutefois, il faut veiller à ce que le noyau
condensateur d’environ 10 µF. de fer ne soit pas amené à saturation magnétique par une tension
trop élevée. Si, par exemple, un transformateur de 12 V (c’est-à-dire
Transformateurs qui convertit la tension du secteur de 230 V en 12 V) est branché à
Les transformateurs peuvent être utilisés pour élever ou abaisser l’envers, il y aura à coup sûr un fusible grillé (ou un enroulement
une tension alternative. Lorsque c’est la tension du secteur qui de transformateur brûlé). En raison de la saturation magnétique
est abaissée, on parle habituellement d’un transformateur du noyau, un courant beaucoup trop élevé circule. Toutefois il est
d’alimentation ; lorsqu’il s’agit du signal, on parle (vous l’avez déjà possible d’appliquer une tension de 12 V sur l’enroulement secondaire
deviné) d’un transformateur de signal. Le fonctionnement de ces afin de disposer de 230 V sur l’enroulement primaire. Les onduleurs
deux « espèces » de transformateurs est cependant exactement fonctionnent selon ce principe.
le même. Le rapport entre le nombre de spires au primaire et le nombre de
Les transformateurs de signal ne sont habituellement pas utilisés spires au secondaire est appelé le rapport de transformation. La
pour élever ou abaisser la tension des signaux, mais plutôt pour formule suivante s’applique :
séparer galvaniquement les (sous-)circuits les uns des autres, par
exemple pour empêcher la création d’une boucle de masse. Dans W1 U1 I 2
T
  
ce cas, on parle d’un couplage par « transformateur symétriseur ». W2 U 2 I1

50 mars/avril 2022 www.elektormagazine.fr


Le rapport entre les tensions d’entrée et de sortie est égal au rapport
du nombre de spires, le rapport entre les courants d’entrée et de
sortie est exactement l’inverse. Cela découle de l’égalité théorique
des puissances apparentes au primaire et au secondaire :

P1= P 2

Un transformateur n’étant pas un composant idéal, il y a toujours


des pertes, et ces puissances présentent une différence, mais en
général assez faible pour qu’on puisse la négliger dans la plupart
des calculs.
Pour les transformateurs d’alimentation, plutôt que le rapport de
transformation, on indique la tension disponible au secondaire
pour une tension du secteur de 230 V.
De nombreux transformateurs d’alimentation ont plusieurs
enroulements secondaires, fournissant parfois des tensions Figure 4. Divers transformateurs d’alimentation et de signaux.
différentes. Il est possible de connecter des enroulements
secondaires en série, mais il faut tenir compte de leur phase et de
leur courant maximal. Pour connecter plusieurs enroulements en
parallèle, ils doivent fournir la même tension et avoir une capacité
de puissance (presque) identique. De plus, ils doivent être connectés
en phase.
En outre, les transformateurs d’alimentation ont souvent plusieurs Figure 5. Symbole
schématique d’un
enroulements primaires pour pouvoir adapter les appareils qui les
transformateur.
utilisent aux différentes tensions du secteur dans les différents pays.
Il n’est cependant jamais possible d’appliquer une tension de 400 V
à un transformateur d’alimentation de 230 V, car, comme on l’a vu, le
transformateur entrera en saturation magnétique, ce qui fera sauter
un fusible ou détruira son enroulement primaire. C’est pourquoi, sur
les sites alimentés en triphasé, on craint les erreurs de câblage des Contributeurs
prises délivrant alors du 400 V au lieu du 230 V attendu. L’inverse Idée et illustrations : Michel Ebner
ne présente pas de danger : un appareil équipé d’un transformateur Texte et rédaction : Eric Bogers
400 V et branché sur le 230 V ne fonctionnera sans doute pas parce Traduction : Helmut Müller
que sous-alimenté, mais ne risquera pas de flamber. Mise en page : Giel Dols
Voilà qui conclut le sujet des « bobines ». La prochaine fois, nous
commencerons (enfin !) à nous intéresser aux semi-conducteurs.
210626-04

La série d’articles « démarrer en électronique » est basée sur le livre PRODUITS


« Basic Electronics Course » de Michael Ebner, publié par Elektor.

>B. Kainka, Initiation à l’électronique et programmation de


montages pour débutants
Des questions, des commentaires ? www.elektor.fr/19339
Contactez Elektor ([email protected]). > R. Mallard, L’électronique pour les débutants
www.elektor.fr/15662

LIEN

[1] « Démarrer en électronique... », Elektor, 01-02/2022 : www.elektormagazine.fr/210564-04

lektor mars/avril 2022 51


ELEKTOR INDUSTRY

quoi de neuf dans


le développement
de l’embarqué ?
Rust et mises à jour des déploiements IoT

Embedded
Development

Stuart Cording (Elektor)

Alors que les annonces de commercialisation Le développement de logiciels embarqués sans C est difficile à
de systèmes embarqués se succèdent, donnant imaginer. Le langage C a supplanté l’assembleur devenu trop lourd
pour développer des applications entières, sauf si la seule option
l’impression que la technologie avance est l’assembleur hautement optimisé et codé à la main. Le langage,
rapidement, le secteur lui-même paraît lent. développé par Dennis Ritchie [1] des Bell Labs, offre assez de souplesse
C’est pourquoi ce fut un choc quand la fondation pour développer des applications complexes, tout en permettant un
accès aisé aux registres. C’est essentiel pour écrire un code de MCU
Raspberry Pi, célèbre créateur d’ordinateurs compact qui gère cet accès pour les routines d’interruption. L’écriture
monocartes, sortit le microcontrôleur (MCU) de tâches telles que la manipulation des bits des registres est aussi
RP2040 doté de deux cœurs Cortex-M0+, sans aisée. Et, contrairement à l’assembleur, le code résultant est facile à
lire. Le C occupe aussi une place de choix en se classant parmi les
flash intégrée : un double cœur dans cette trois premiers langages de programmation dans les enquêtes et les
catégorie, c’était du jamais vu. Mais l’excitation analyses de marché (fig. 1) [2] [3].
est vite retombée. Tout compte fait, les progrès
Si c’est du C, c’est daté !
des systèmes embarqués sont mesurés, sensés Le langage C remonte à 1972, soit 50 ans. Ses limitations bien
et réfléchis. Mais, nous le verrons, les évolutions connues sont, pour beaucoup, liées à l’utilisation de pointeurs. Si
en cours pourraient changer le développement ces pointeurs facilitent l’accès aux registres aux développeurs de
systèmes embarqués, ils peuvent aussi causer de dangereux accès
de l’embarqué dans la décennie à venir. mémoire hors limites. En outre, loin des langages plus modernes, les
compilateurs C effectuent peu de vérifications de code. Ils ignorent les
variables inutilisées, elles sont pourtant un indice d’erreur de codage.

52 mars/avril 2022 www.elektormagazine.fr


Une norme de codage telle que MISRA C [4] permet de s’assurer que La priorité à la sécurité du code justifie les efforts déployés pour
seul un code C sécurisé est intégré dans un système embarqué. Cette fournir Rust aux développeurs de logiciels embarqués sur matériel
norme est née de l’importance croissante du C pour programmer dédié. Cependant, la nature de la programmation embarquée fait
les systèmes embarqués dans l’industrie automobile. Le C++ résout que la vérification statique du compilateur peut créer des problèmes
certains problèmes des pointeurs du C par des références [5] non avec certains types de code. Pour contourner ces problèmes, le
modifiables pour référencer un autre objet, elles ne peuvent pas être code peut, par endroits être marqué comme non-sûr et, par ex.,
NULL et doivent être initialisées à la création. Malgré cela, AUTOSAR, permettre de « déréférencer » des pointeurs. Définir explicitement
un partenariat de développeurs de systèmes automobiles, a élaboré un des sections de code comme non-sûres clarifie le contournement
guide de directives [6] de plusieurs centaines de pages sur l’utilisation des règles de Rust.
du C++ dans les applications liées à la sécurité. Ainsi, bien que la
maîtrise de ces langages établis soit essentielle pour les développeurs, Faites un tour avec Rust
il apparaît que chaque langage a assez de défauts pour qu’il faille écrire L’une des meilleures façons d’aborder Rust est d’expérimenter avec
des directives pour éviter les erreurs courantes. un Raspberry Pi. En suivant les instructions du site rustup.rs [8],
l’installation est simple. Depuis la ligne de commande, il suffit de saisir
Présentation de Rust la chaîne ci-après et de suivre les instructions :
Se proclamant très adapté au développement de systèmes sûrs, Rust
apparaît comme un concurrent potentiel. Au début (2006), Rust est curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.
un projet privé de Graydon Hoare, puis vers 2010, son employeur, rs | sh
Mozilla Research, le sponsorise. La Rust Foundation [7] est créée
en 2021, après une restructuration de l’entreprise qui toucha l’équipe Contrairement au C/C++ qui sort des binaires, RUST produit un crate
de développement de Rust. (littéralement une caisse, la déclinaison Rust du paquet). Le gestionnaire
Rust est différent car, au moment de la compilation, de nombreux de paquets Cargo simplifie le processus de compilation en ligne de
problèmes sont détectés et signalés, là où souvent les compilateurs C/C++ commande. Il stocke les données nécessaires pour produire le crate et
les ignoreraient. Pour les déclarations de variables, un système de propriété permet au développeur de définir les logiciels requis pour le construire.
existe. Pour éviter l’utilisation abusive de variables, il utilise un vérificateur En invoquant Cargo depuis la ligne de commande, un nouveau projet
d’emprunt qui s’applique à la compilation. Il faut aussi explicitement déclarer Rust est produit comme suit :
l’accès en lecture/écriture des variables passées par référence. La syntaxe
de Rust ressemble beaucoup à celle du C/C++, avec l’usage familier de cargo new rust_test_project
crochets autour des fonctions et mots-clés de contrôle.

Figure 1. Le langage C reste un langage de programmation apprécié, se plaçant régulièrement dans le trio de tête des enquêtes et analyses de marché.
(Source : www.tiobe.com)

lektor mars/avril 2022 53


Traditional stack Toit

Stock ticker app


Weather app
System app

software
functionality
All system

Virtual machine
firmware

ESP-IDF ESP-IDF

Figure 2. Toit exécute le code IoT sous forme d’applis au-dessus Figure 3. La console Toit affiche dans un navigateur deux nœuds ESP32
d’une machine virtuelle tournant sur un ESP32. (Source : Toit) simulés.

Le dossier du nouveau projet contient un fichier nommé Cargo.toml. trouver un crate approprié : rppal. La plateforme indique si le crate peut
Il faut modifier ce fichier selon les besoins. Dans une simple application être construit ou non, fournit le n° de version, une documentation et
Raspberry Pi faisant clignoter une LED reliée à une broche GPIO, il faut des exemples de code. Le nom et le n° de version du crate sont ensuite
définir une « dépendance de crate » idoine pour accéder aux lignes ajoutés comme dépendances dans Cargo.toml (list. 1).
GPIO. Des crates sont partagés sur crates.io [9], la page créée à cet Dans le dossier src, le développeur trouvera le fichier de code source
effet par la communauté Rust. La fonction de recherche permet de Rust main.rs, un exemple de projet simple, Hello World. Remplacer ce
code par le list. 2 permet de faire clignoter dix fois une LED connectée
à la borche GPIO 23 (br. 16 du connecteur Raspberry Pi). La compilation
s’effectue en ligne de commande à l’aide de cargo build, et le crate
Listage 1. Ajout de la dépendance rppal à Cargo.toml s’exécute avec cargo run.
dans un projet Rust.
Un obstacle à l’utilisation de Rust sur certains µcontrôleurs est la
[package]
nécessité d’utiliser une chaîne d’outils LLVM (Low Level Virtual
name = "rust_test_project"
version = "0.1.0"
Machine). Si celle-ci est disponible, l’utilisation d’un tutoriel en ligne
edition = "2021" peut commencer. Un exemple pour la carte BBC micro:bit [10] est
[dependencies] fourni. Dès la syntaxe de Rust assimilée, il se montre très similaire
rppal = "0.13.1" à l’écriture de code en C/C++ (list. 3 [11]). Un autre exemple pour
​[dependencies] STM32 [12] est fourni.
rppal = "0.13.1"

Listage 2. Faire clignoter une LED en Rust.

Le code Rust pour faire clignoter une LED est similaire au code C. Cet exemple se base sur le code inclus dans le crate rppal.

use std::error::Error;
use std::thread;
use std::time::Duration;
use rppal::gpio::Gpio;
use rppal::system::DeviceInfo;
// La GPIO utilise les n° de br. du BCM. BCM GPIO 23 est lié à la br. physique 16.
const GPIO_LED: u8 = 23;
fn main() -> Result<(), Box<dyn Error>> {
let mut n = 1;
println!("Blinking an LED on a {}.", DeviceInfo::new()?.model());
let mut pin = Gpio::new()?.get(GPIO_LED)?.into_output();
while n < 11 { pin.set_
// Faire clignoter la LED en mettant la br. à 1 durant 500 ms.
high(); thread::sleep(Duration::
from_millis(500));
pin.set_low(); thread::sleep(Duration::
from_millis(500)); n += 1;
}
Ok(())
}

54 mars/avril 2022 www.elektormagazine.fr


Listage 3. Extrait de code Rust simplifié qui vérifie l’état d’une
broche d’entrée sur la carte BBC micro:bit.

#![no_std]
#![no_main]
Rust, est-ce l’avenir ?
Si oui, qu’est-ce qui freine l’adoption de Rust pour extern crate panic_abort;
l’embarqué ? D’une part, il existe déjà Ada [13], un langage extern crate cortex_m_rt as rt;
de programmation robuste adapté aux systèmes de extern crate microbit;
sécurité critique. Malgré ses 40 ans, il n’a pas réussi à
supplanter le C, bien qu’il fût développé spécifiquement use rt::entry;
pour les systèmes embarqués en temps réel. D’autre part, use microbit::hal::prelude::*;
le C est partout : développeurs innombrables, outils et
bibliothèques de code disponibles. #[entry]
fn main() -> ! {
Toutefois, le gestionnaire de paquets Crate pourrait
if let Some(p) = microbit::Peripherals::take() {
contribuer à accélérer l’adoption de Rust. Garder la trace
gpio let mut
des bibliothèques périphériques des fournisseurs écrites p.GPIO.split();// Split GPIO
en C/C++ peut être difficile et opaque, aussi la définition =
explicite de la version des crates utilisée dans Cargo.
toml pourrait susciter une large adhésion. Cela peut aussi // Configure le bouton GPIO en entrée
simplifier la vie des fabricants de MCU qui peinent à let button_a = gpio.pin17.into_floating_input();
prendre en charge leurs énormes portefeuilles de produits.
Cependant, Ada a déjà réagi en sortant en 2020 son // variable de boucle
gestionnaire de paquets Alire [14]. Et, à l’instar de Rust, let mut state_a_low = false;
Ada inclut déjà le support de la carte BBC micro:bit. Pour
loop {
comparer les deux langages avec un MCU, voir ce lien [15].
let // Obtenir l'état du bouton
button_a_low = button_a.is_low();
Maintenir les dispositifs IoT à jour
Avec un nombre toujours croissant de dispositifs if button_a_low && !state_a_low {
embarqués connectés aux réseaux, le plus grand défi }// Message de sortie
est de maintenir leur micrologiciel à jour. Ces m. à j.
se font classiquement par téléchargement sans fil, en { if !button_a_low && state_a_low
déposant le code binaire en mémoire flash à l’aide d’un // Message de sortie
chargeur d’amorçage embarqué et résidant en zone }
protégée. Toutefois, une mise à jour du µcode risque de
ne pas se déployer correctement, et de rendre le produit // Mémoriser l'état du bouton
; state_a_low = button_a_low
inutilisable. Il peut aussi arriver qu’un bogue du nouveau
}
code empêche les m. à j. ultérieures de se déployer,
}
laissant les dispositifs touchés vulnérables. Ainsi, bien que panic!("End");
l’application fonctionne correctement, l’appareil devient }
inutilisable, parfois à cause d’une erreur dans une seule
ligne de code.
Depuis des années, les machines virtuelles (VM) déploient
de façon standard plusieurs applications ou systèmes
d’exploitation (OS) sur des serveurs. La VM exécute un OS, en faisant LX6 à 32 bits à double cœur, 520 Ko de SRAM et 4 Mo de flash. La
croire qu’il se trouve sur un matériel spécifique. En cas de défaillance plateforme a déjà son ESP-IDF (Espressif IoT Development Framework).
catastrophique de cet OS, seule la VM concernée est touchée, et non Elle est donc prête à l’emploi comme nœud IoT. Toit a ensuite conçu
les autres systèmes fonctionnant sur le serveur. Les utilisateurs de une VM (fig. 2) qui permet aux applications de s’exécuter par-dessus
postes de travail connaissent les logiciels de virtualisation tels que en toute sécurité. Les applis sont écrites en Toit, un langage de haut
VirtualBox, VMware et Parallels, leur permettant de tester des logiciels niveau, orienté objet et sûr.
ou d’autres OS sans mettre en péril leur machine principale.
Test de Toit avec des nœuds ESP32 simulés
Mise à jour du µlogiciel des nœuds IoT : Toit sur La gestion et le déploiement d’applications sur un ensemble de nœuds
place IoT s’effectuent via la console Toit couplée à Visual Studio Code de
L’équipe de Toit, entreprise danoise créée par d’anciens ingénieurs de Microsoft. Pour qui ne souhaite que tester la plateforme, la console
Google, s’est demandé pourquoi la virtualisation était absente des MCU Toit permet d’utiliser des dispositifs ESP32 simulés. Après installation
exécutant des applications IoT. En effet, elles nécessitent des m. à j. de l’extension Toit pour Visual Studio Code, les applications peuvent
régulières pour corriger les bugs et prendre en charge les évolutions être écrites et simulées localement ou déployées sur les appareils
des services cloud avec lesquels elles communiquent. Il va de soi connectés à la console.
qu’aucune firme ne flashera manuellement les nœuds IoT sur place Un fichier YAML accompagne les applis Toit. Ce fichier de langage de
si des appareils sont bloqués après une m. à j. balisage sert à déclarer le nom de l’appli Toit, le fichier de code source
Pour commencer, ils ont opté pour l’ESP32 d’Espressif. Ils et à définir les déclencheurs. Ces derniers peuvent lancer l’appli après
recommandent l’ESP32-WROOM-32E avec microprocesseur Xtensa le démarrage, l’installation et à intervalles de temps définis.

lektor mars/avril 2022 55


Figure 4. L’application Hello World installée avec succès sur un nœud Figure 5. La sortie LOGS montre l’heure et la date émises par l’application
simulé. Toit toutes les trois secondes, comme défini dans le fichier YAML.

Le déploiement d’applis ou de m. à j. ne nécessite ni la désactivation ni fournissant des pilotes pour divers capteurs, périphériques d’entrée,
la mise hors tension du dispositif ESP32 cible. À la place, la machine écrans LCD et d’autres utilitaires. L’environnement prend aussi en
virtuelle met à jour l’appli in situ et la lance selon les paramètres fournis charge le mode basse consommation de l’ESP32, et selon eux, deux
par le fichier YAML. Si l’appli échoue, par ex. à cause d’un débordement piles AA font fonctionner le dispositif pendant des années [18]. Si une
de pile, les autres applis continuent de s’exécuter [16]. L’examen du m. à j. d’appli arrive lorsque le nœud IoT est en mode sommeil profond,
journal de la Console permet de diagnostiquer de telles erreurs. la Console la déploie au prochain réveil du nœud.
Le listage 4 présente une appli simple Hello World affichant l’heure
et la date, accompagnée de son fichier YAML (list. 5). La figure 3 Rust et Toit – l’avenir de l’embarqué ?
montre deux nœuds simulés dans la Console, tandis que la figure 4 Rust et Toit font tous deux ressortir deux choses : ils sont simples de
montre l’appli Hello World installée avec succès. Enfin, la figure 5 mise en œuvre et gèrent les pilotes de bas niveau via des gestionnaires
montre la sortie de la date et de l’heure à intervalles de trois secondes, de logiciels. Ainsi les développeurs se concentrent sur leur travail :
comme défini à l’aide du déclencheur on_interval: "3s" dans le créer des applis. Les applis devenant de plus en plus complexes, cette
fichier YAML. Visual Studio Code crée le code du projet et l’extension réutilisation du code est vitale pour réduire le temps de développement
Toit le déploie sur le nœud choisi attaché au compte Console de et de commercialisation des produits.
l’utilisateur (fig. 6). Rust a une énorme montagne à gravir. Le C/C++ est si bien ancré
À première vue, l’approche Toit peut sembler un peu restrictive. dans le développement embarqué, qu’il est difficile de trouver son
L’environnement de virtualisation ne permet que le contrôle des talon d’Achille et d’offrir un avantage assez important pour attirer les
GPIO, de l’UART, du SPI ou de l’I2C. Cela dit, vu que les nœuds IoT se développeurs. De plus, déjà établi comme langage pour les systèmes
contentent en général de collecter des données de capteurs pour les critiques de sécurité, Ada fait écran aux avantages de Rust.
envoyer dans le cloud, cela fournit assez de flexibilité pour les applis. Toit Toit, en revanche, résout un casse-tête majeur : maintenir les nœuds IoT
exploite également son propre gestionnaire de paquets (registre) [17], distants à jour, déployer de nouvelles fonctions auprès de la base d’uti-

Listage 4. Application simple écrite en Toit qui envoie des chaînes date et heure formatées au journal de la Console.

main:
time := Time.now.local
print "Time: $(%02d time.h):$(%02d time.m):$(%02d time.s)"
print "Date: $(%04d time.year)-$(%02d time.month)-$(%02d time.day)"

Listage 5. Fichier auxiliaire YAML indiquant à la Console Toit comment déployer l’appli.

name: Hello World


entrypoint: hello_world.toit
triggers:
on_boot: true
on_install: true
on_interval: "3s"
on_interval: "3s"

56 mars/avril 2022 www.elektormagazine.fr


Figure 6. Grâce à l’extension Toit de Visual Studio Code, les m.
à j. d’applis peuvent être déployées sans délai à distance sur
les nœuds IoT sans crainte de les mettre en panne.

lisateurs, le tout sans aller sur place. Certains développeurs s’inquié-


teront du minimum exigé de 4 Mo de flash et de la seule prise en
charge actuelle d’ESP32. Toutefois, si une demande du marché pour
d’autres MCU apparaît, il ne semble pas y avoir de raison technique
qui empêcherait la prise en charge d’autres plateformes.
210652-04

Des questions, des commentaires ?


Envoyez un courriel à l’auteur ([email protected]) ou PRODUITS
contactez Elektor ([email protected]).

> Livre en anglais « BBC micro:bit » de D. Ibrahim, Elektor,


Contributeurs 2016
www.elektor.fr/17872
Texte et illustrations : Stuart Cording
Rédaction : Jens Nickel, C. J. Abate > BBC micro:bit Go Set de Joy-IT
Mise en page : Harmen Heida www.elektor.fr/18930
Traduction : Yves Georges

LIENS (TOUS EN ANGLAIS)


[1] Dennis Ritchie, Musée de l’histoire de l’informatique : https://bit.ly/3oOXG1A
[2] P. Jansen, « TIOBE Index for December 2021 », TIOBE Software BV, 12/2021 : https://bit.ly/3EXx8Ri.
[3] S. Cass, « Top Programming Languages 2021 », IEEE Spectrum, 2021 : https://bit.ly/3oPJq8z.
[4] Site de la MISRA : https://bit.ly/3s1Mv7D
[5] « C++ References », Tutorials Point : https://bit.ly/31Y6k53.
[6] « Guidelines for the use of the C++14 language in critical and safety-related systems », AUTOSAR, 10/2018 :
https://bit.ly/3dO3zWl.
[7] Site de la Fondation Rust : https://bit.ly/3DNgO45
[8] Site rustup : https://bit.ly/3EUTiDR
[9] Site Rust, registre Crate : https://bit.ly/3dLKmor
[10] droogmic, « MicroRust », 04/2020 : https://bit.ly/3EUWFdM.
[11] droogmic, « MicroRust: Buttons », 04/2020 : https://bit.ly/3DWes30
[12] bors et NitinSaxenait, « Discovery », 12/2021 : http://bit.ly/3GERDT7.
[13] Site Get Ada Now : https://bit.ly/3GHyikw
[14] F. Chouteau, « First beta release of Alire, the package manager for Ada/SPARK », AdaCore, 10/2020 : https://bit.ly/3EUXOSC.
[15] F. Chouteau, « Microbit_examples », 12/2021 : https://bit.ly/3mnH7bx.
[16] « Watch us turn an ESP32 into a full computer! », Toit, 03/2021 : https://bit.ly/3IM0WT8.
[17] Page du registre des logiciels Toit : https://bit.ly/3yokpo7
[18] Docs Toit, prérequis, site : https://bit.ly/3oNSECq

lektor mars/avril 2022 57


Elektor infographie
Robert van der Zwan (Elektor)

Embarqué :
toujours en croissance
Selon la société d’études de marché
The Brainy Insights, le marché mondial Volume du marché mondial des systèmes embarqués
des systèmes embarqués semble
toujours très prometteur, comme si la
de 2021 à 2028 (en milliards de dollars) 138.45
pandémie de Covid-19 n’avait jamais
existé. Ses recherches concluent à un
taux de croissance annuel composé
(CAGR) de 5,73% pour les années 2021
à 2028. Bien que cette estimation soit
93.41 (est.)
plutôt prudente par rapport à d’autres
sociétés d’études de marché, le rapport
de la société d’études indienne a une
note d’optimisme. L’automobile (part
de marché de 5%), la santé (10%) et
les communications (45%) sont des
secteurs prometteurs dans le monde de
l’embarqué et représentent déjà 60%
de ses revenus.

(Sources : The Brainy Insights, The Insight 2021 2022 2023 2024 2025 2026 2027 2028
Partners)

Ingénieur en logiciel embarqué ?


C’est vous qui décidez.
Y a-t-il des facteurs qui freinent une
partie du potentiel du marché de
Moins
l’embarqué ? Tout à fait. L’un d’eux est
d’un an
le manque d’ingénieurs en logiciel
1 à 2 ans qualifiés. Alors qu’en 2010, environ 4,5%
des ingénieurs en logiciel embarqué
3 à 4 ans étaient au chômage (chiffres américains),
ce chiffre est aujourd’hui inférieur
à 2%. Selon le cabinet de recrutement
5 à 7 ans
Built In, la demande d’ingénieurs en
logiciel sera 21% plus élevée en 2028
8 à 10 ans qu’en 2021/2022. La croissance moyenne
pour toutes les professions sera d’environ
11 ans et + 5% pour la même période. Les ingénieurs
en logiciel embarqué peuvent choisir ce
0% 20% 40% 60% 80% 100% qu’ils veulent, ce qui conduit 60% d’entre
Ingénieur en logiciel embarqué eux à changer d’emploi.

nombre d’années passées dans un emploi (source : Zippia) (Sources : Built In, site de recherche sur les
carrières Zippia)

58 mars/avril 2022 www.elektormagazine.fr


Embedded
Development

Passer d’un emploi à un autre


Scenario Coût Durée
Services de conception de circuits imprimés avec analyse de l’intégrité du signal et ~5K$ à 35K$ ~1 à 8 semaines
optimisation en option
Conception de schémas, dessin de circuits imprimés et développement de micrologiciels ~25K$ à 50K$ ~6 à 12 semaines
pour des microcontrôleurs de complexité faible à moyenne
Développement FPGA VHDL ~15K$ à 125K$ ~1 à 6 mois et +
Développement de micrologiciels/logiciels ~10K$ à 125K$ ~2 semaines à 6 mois et +

Pourquoi les ingénieurs en logiciel au tableau établi par le développeur de ingénieur en logiciel embarqué peut
embarqué peuvent-ils passer d’un emploi systèmes embarqués AppliedLogix. Cette terminer un travail, en être satisfait et
à un autre sans se sentir mal à l’aise ? société américaine compte des clients passer à la mission suivante au sein ou en
C’est parce que le travail de conception dans un large éventail de secteurs et est dehors de la même entreprise.
d’un système embarqué typique prend qualifiée pour donner quelques moyennes.
(Sources : AppliedLogix, Zippia)
environ six mois. Jetez un coup d’œil Ces moyennes montrent clairement qu’un

Les MCU à 8 bits


Marché mondial de la sécurité embarquée,
accusent un certain retard 2020-2026 (milliards de dollars)
Bien que les microcontrôleurs à 8 bits soient (Source : Knowledge Sourcing Intelligence)
toujours là, même à la fin de cette décennie,
il est également vrai que les MCU à 32 bits
6.000 5.633
font plus de progrès que prévu. Le fait que les
contrôleurs à 32 bits gagnent du terrain est très 5.000 CAGR = 6.84%
probablement lié à la croissance rapide des
systèmes embarqués en temps réel. Alors que 4.000 3.787

les systèmes embarqués dans leur ensemble


3.000
connaîtront une croissance annuelle de 5,7% d’ici
à 2028, les systèmes embarqués en temps réel 2.000
connaîtront une croissance supérieure d’un point
de pourcentage (6,9%). En outre, le prix unitaire 1.000
des MCU à 32 bits a diminué de façon constante.
La répartition « 25% 8 bits, 25% 32 bits, 50% 2020 2021 2022 2023 2024 2025 2026
16 bits » appartient au passé.

(Sources : Allied Market Research, The Brainy Insights,


Grand View Research)

La sécurité : où en est-on ?
Part de marché des
La dernière fois que nous avons réalisé une infographie sur les solutions
microcontrôleurs, 2021 vs. 2027 de sécurité pour les systèmes embarqués, il y a deux ans, il est apparu que
les ingénieurs avaient du retard dans la mise en œuvre de ces solutions.
≈ 50% ≈ 50%
Est-ce toujours le cas ? Non, ce n’est plus le cas. Le marché des solutions de
sécurité pour les systèmes embarqués croît plus rapidement que le marché
≈ 30%
≈ 25% ≈ 25% des systèmes embarqués lui-même. La différence de taux de croissance
≈ 20%
n’est pas spectaculaire – 5,73% contre 6,84% dans les années à venir –
mais elle est suffisante pour ne plus s’alarmer. Non seulement la protection
logicielle est mise en œuvre, mais aussi l’identification matérielle.
8-Bit 16-Bit 32-Bit
(Sources : The Brainy Insights, Knowledge Sourcing Intelligence)

lektor mars/avril 2022 59


background

Les bénéfices de la 5G
pour l’industrie et
l’automobile
Mark Patrick (Mouser Electronics)

Les avantages de la 5G ne se limitent pas à la téléphonie mobile. Si être effectués dans le cloud, ce qui permet
l’utilisation d’appareils moins complexes
l’augmentation des vitesses de téléchargement améliorera certaine-
et moins coûteux sur le terrain.
ment l’expérience de navigation sur les smartphones, c’est dans des
applications qui n’ont pas encore vu le jour que la 5G aura probable- La mise en œuvre de la 5G
ment davantage de retentissement. Voyons comment la technologie s’accompagne autant de défis
5G risque d’impacter les secteurs de l’industrie et de l’automobile, et que d’opportunités
comment intégrer la 5G dans votre prochain projet de conception. Pour protéger les investissements
antérieurs dans les technologies de réseaux
câblés et sans fil, les projets 5G doivent
Pourquoi la 5G dans la La surveillance est l’une des fonctions clés s’intégrer de manière transparente dans
production industrielle ? de toute usine automatisée. La 5G apporte l’infrastructure existante. L’une des princi-
À l’heure actuelle, un grand nombre une capacité mMTC (Massive Machine- pales difficultés rencontrées jusqu’à présent
d’usines intelligentes sont freinées dans Type Communications) qui répond aux tient au fait que la couverture intérieur n’a
leur développement par les limites des archi- besoins des réseaux de capteurs sans fil jamais été une priorité pour les opérateurs
tectures câblées existantes, qui utilisent des (WSN) étendus. La 5G est également plus de reseaux mobiles. Or, les avancées des
réseaux éprouvés tels que l’Ethernet indus- économe en énergie que ses prédéces- technologies Open-RAN réduisent le coût
triel, Profinet et CANbus pour connecter les seurs, un facteur essentiel pour prolonger de possession des réseaux d’accès radio
divers capteurs, actionneurs et contrôleurs l’autonomie de ces dispositifs connectés 5G (5G RAN), faisant des déploiements
présents dans les équipements automatisés. sur batterie et réduire ainsi la maintenance. de la 5G privée, également connus sous le
Ces connexions câblées font de la moindre Pour le contrôle de mouvement et la nom de réseaux non publics (NPN), une
modification des installations de production robotique industrielle, qui nécessitent réelle possibilité. Pour les entreprises qui
un processus long et coûteux. une précision et une sensibilité en temps préfèrent cette option, les régulateurs du
Les générations précédentes de réseaux réel, l’association du TSN (Time-Sensitive monde entier mettent à disposition un
sans fil, y compris la technologie 4G/LTE Networking) et de l’Ethernet industriel spectre dédié et économique pour la 5G
plus rapide, n’ont pas apporté la réactivité câblé s’est imposée comme la technologie privée. En outre, selon les besoins opéra-
en temps réel et la faible latence néces- réseau privilégiée. Avec sa communication tionnels de l’usine, la 5G privée peut être
saires à l’autonomie. De plus, l’usine est ultra-fiable à faible latence (URLLC), la 5G soit totalement isolée du réseau public,
un environnement opérationnel difficile, est une alternative sans fil viable qui permet soit partagée.
où des niveaux élevés de bruit électrique et en outre la robotique dans le cloud.
d’interférences nuisent aux performances La réalité virtuelle, la réalité augmentée La 5G et l’ère de la voiture
de nombreuses technologies antérieures et l’intelligence artificielle (RV/RA/IA) connectée
de communication sans fil. Les capaci- sont trois technologies connexes qui font Le secteur automobile devrait lui aussi
tés réseau améliorées de la 5G peuvent leur apparition dans l’environnement des être à l’avant-garde du déploiement de
résoudre certains de ces problèmes et usines. Alliant vitesse élevée et URLLC, la la 5G, même si plusieurs années sont
augmenter de ce fait l’efficacité et la flexi- 5G permet le traitement à la périphérie. Les encore vraisemblablement nécessaires
bilité des systèmes. calculs gourmands en énergie peuvent y pour faire de l’autonomie de niveau 5

60 mars/avril 2022 www.elektormagazine.fr article commandité


ELEKTOR INDUSTRY

une réalité commerciale. On peut toute-


fois parier que votre prochaine voiture
sera connectée à Internet pour gérer la
télématique, le système de communica-
tion C-V2X (Cellular Vehicle-to-Everything)
et l’info-divertissement.
À propos de l’auteur
La voiture connectée d’aujourd’hui peut En tant que directeur du marketing technique chez Mouser Electronics dans la région EMEA,
générer jusqu’à quatre téraoctets de données Mark Patrick est responsable de la création et de la diffusion du contenu technique dans
par jour, soit l’équivalent d’environ 500 films. la zone, un contenu qui est essentiel à la stratégie de Mouser visant à soutenir, informer et
Les derniers progrès de la technologie de inspirer son public d’ingénieurs. Avant de diriger l’équipe de marketing technique, Patrick
communication C-V2X utilisent déjà ces faisait partie de l’équipe de marketing achat de la région EMEA et jouait un rôle essentiel
données de multiples façons. Les données dans l’établissement et le développement des relations avec les principaux partenaires de
issues des systèmes de gestion du moteur, fabrication. En plus d’avoir occupé divers postes dans les domaines de la technique et du
par exemple, sont désormais envoyées à des marketing, Patrick a travaillé pendant huit ans chez Texas Instruments, dans les secteurs de
centres de service à distance à des fins de la gestion des applications et de la commercialisation des technologies. Ingénieur passionné
maintenance prédictive. Les informations par la pratique, amateur de synthétiseurs vintage et de motos, il n’hésite pas à les réparer.
sur les conditions de circulation locales et Patrick est titulaire d’un diplôme d’ingénieur en électronique (honneurs de première classe)
la météo peuvent également contribuer aux de l’université de Coventry.
systèmes de sécurité publique. Même le
comportement du conducteur et le kilomé-
trage du véhicule peuvent alimenter les réseau et les capacités de traitement dans le déploiement de la version 16 du 3GPP et,
bases de données des régimes d’assurance le cloud/en périphérie doivent prendre en plus tard, de la version 17. Les applications
basés sur l’utilisation. charge des niveaux de latence dignes des telles que la voiture autonome et l’usine
Au cours des cinq dernières années, le réflexes humains pour atteindre de plus autonome ne deviendront une réalité
3GPP (3rd Generation Partnership Project), hauts niveaux d’autonomie. De même, que lorsqu’elles auront facilement accès
un organisme de normalisation mondial pour les systèmes ADAS plus sophistiqués, à ce niveau supérieur de performances
pour les technologies de télécommunica- la voiture connectée doit réagir aux événe- réseau. Le déploiement initial de la 5G a
tions cellulaires, y compris l’accès radio, ments environnants en temps réel. Le réseau joué la carte de la prudence et a été freiné
le réseau cœur et les capacités de services, sans fil actuel atteint ses limites et apparaît par les répercussions de la pandémie. La
qui fournissent une description complète de plus en plus comme un obstacle ; sans deuxième vague de déploiement du réseau
du système pour les télécommunications la 5G, il n’y aura pas de voiture autonome. 5G va certainement accélérer la demande
mobiles, a étendu les fonctionnalités C-V2X vis-à-vis d’un large éventail d’applications
en lien avec l’évolution de la technologie En conclusion qui restent à découvrir.
des réseaux cellulaires. Les capacités de Le déploiement du réseau 5G s’est en 220061-04
la version 16 ouvrent la voie aux systèmes grande partie focalisé sur la mise à niveau
avancés d’assistance au conducteur (ADAS). du réseau 4G/LTE à partir des spécifications Pour plus d’informations sur la 5G,
5G NR NSA (New Radio Non-Standalone) du visitez le site « Empowering Innovation
Bien que la généralisation des voitures 3GPP, version 15, ce qui a permis le lance- Together » de Mouser : www.mouser.com/
autonomes semble encore loin, on assiste ment d’un ensemble limité de services 5G. empowering-innovation/5G.
déjà à des essais très médiatisés. Tesla, Or, le véritable potentiel de la 5G repose sur
Google et BMW font la une des journaux,
ce qui renforce les attentes du grand public
et crée une dynamique. De nombreux
véhicules haut de gamme possèdent déjà
un certain niveau d’autonomie, certains
atteignant le niveau 3, qui repose égale-
ment sur les technologies C-V2X.
Bien que les réseaux 4G/LTE prennent en
charge un grand nombre des applications
mentionnées ci-avant, le volume croissant
de données partagées exerce une pression
de plus en plus forte sur la bande passante
disponible. En outre, la faible latence
s’impose comme une nécessité à mesure
que les systèmes embarqués critiques de
sécurité et de gestion de l’énergie deviennent
de plus en plus sophistiqués. Les vitesses

article commandité lektor mars/avril 2022 61


drôles de composants

relais
à bobine mobile
David Ashton (Australie)

Le composant auquel nous nous intéressons


ici est vraiment spécial, au point qu’au-delà
de ses propriétés physiques, nous n’avons
pas réussi à en savoir beaucoup sur lui. Mais,
même s’il est à bobine mobile, il ne s’agit
sûrement pas d’un appareil de mesure !

Dites bobine (ou plutôt cadre) mobile, et la plupart d’entre vous ainsi qu’une alimentation de 12 V, et j’ai branché une LED en série avec
penseront immédiatement aux bons vieux galvanomètres de mesure. le contact pour le voir se fermer. Ils fonctionnent avec un courant de
Bien qu’ils soient aujourd’hui obsolètes, vous en avez sans doute seulement 260 µA pour une tension de 113 mV – trouvez-moi un autre
vu ou utilisé à un moment ou un autre. Mais je parle ici de relais relais aussi sensible !
à bobine mobile. Imaginez que vous connectiez un fil à l’aiguille
d’un voltmètre et un autre à sa butée. Lorsque l’appareil atteint sa
pleine déviation, il établit le contact. Voilà en gros comment ces
relais fonctionnent.
Il y a quelques années, j’ai trouvé ces relais dans un tableau de distri-
bution et il m’a fallu du temps pour comprendre à quoi j’avais affaire.
Ils sont d’une grande beauté mais, en plus, ils font partie des relais
les plus sensibles que j’aie jamais rencontrés.
Ils ont été fabriqués par BBC Goerz Electro, société sur laquelle il est
difficile de trouver des informations. Nous savons que Goerz était une
société autrichienne d’optique. BBC (Brown Boveri Corporation) était
et est toujours une entreprise suisse d’électricité qui a connu pas mal
d’avatars pour devenir ABB (Asea Brown Boveri), son nom actuel. BBC
Goerz a fabriqué de nombreux instruments de test professionnels sous
la marque Metrawatt, et Gossen Metrawatt fabrique aujourd’hui des
multimètres et autres appareils de test. C’est une carrière en dents
de scie, en quelque sorte.
Même avec ces données sur le fabricant, je n’ai pu trouver aucune
information sur ces relais, à part quelqu’un qui en vend sur eBay pour
environ 100 $ pièce. Ils sont bâtis sur un culot octal. Quand je les ai
reçus, je me suis demandé s’il s’agissait d’un genre de lampe. En fait,
ils sont logés dans un tube en plastique transparent qui se dévisse,
donnant accès à leur délicat mécanisme. Le numéro de type, 91041-
2, est clairement imprimé sur le tube (fig. 1), avec un numéro de série
ainsi qu’un schéma de connexion qui facilite leur test (fig. 2).
J’ai monté un banc de test pour ces relais sur un châssis avec trois Figure 1. Les relais, vus de dos, avec leur numéro de type imprimé
embases et quelques trous pour monter d’autres composants. J’ai sur leur tube en plastique.
utilisé un potentiomètre de 470 kΩ en série avec la bobine du relais,

62 mars/avril 2022 www.elektormagazine.fr


4 Figure 2. Ce schéma est
5 imprimé sur le côté du
3 relais.

2
6
Figure 3. Une photo
1 annotée identifiant le
7
8 ressort spiral, la bobine
et les contacts.

Les contacts sont petits (fig. 3) et il faudra les utiliser pour actionner
un autre relais si l’on veut commuter une puissance significative. De
nos jours, bien sûr, on utiliserait un optocoupleur pour faire la même Des questions, des commentaires ?
chose, car il faudrait quand même ajouter un peu d’électronique à ces Contactez Elektor ([email protected]).
relais pour obtenir de telles spécifications, ce qui confirme qu’ils sont
d’un autre âge. Ces relais sont vraiment spéciaux !
210557-04 - VF : Helmut Müller

(INT0)PD2 1-WIRE
4 2
T1

Vous souhaitez publier


VCC 3
6 BSN20
C3 C4 VCC K2
C5 18 30
100n 100n AVCC (RXD)PD0 RXD

votre montage dans le


100n 3
31 TXD
(TXD)PD1
20 +3V3 +3V3 2
AREF 1
10

magazine ?
(AIN0)PD6
12 PB0(ICP1) 11
(AIN1)PD7
13 PB1(OC1A)
1 MOSI L1 MOD1
14 PB2(SS/OC1B) 23
3 (ADC0)PC0 FERRITE BEAD RXM-433-LR
Rendez-vous sur la page du labo d’Elektor :
15 PB3(MOSI) 24 LED1
5 (ADC1)PC1
16 PB4(MISO) 25
(ADC2)PC2 R3 R7 R1 1 16

www.elektormagazine.fr/labs pour y
7 SCK 17 26 NC ANT
PB5(SCK)
220

10k

(ADC3)PC3 2 15
10

9 MISO 7 27 NC GND
PB6(XTAL1) (ADC4/SDA)PC4
enregistrer votre projet.
8 3 14
28 NC NC
X1 PB7(XTAL2) (ADC5/SCL)PC5 4 13
GND NC
8MHz 1 5 12
(INT1)PD3 VCC NC
Cliquez sur « Créer un projet ». Connectez-vous (créez un(T1)PD5 9 S1 C9 6 11
PDN NC
compte gratuit si vous n‘en avez 21
pas GND
encore). Remplissez
7 10
RSSI NC
lesC1
différents champs duC2formulaire.
19 LEARN 9
5 ADC6 22µ NC
GND 22
3 ADC7
Votre proposition de montage sera examinée par l‘ensemble
22p 22p GND DATA 8
L2 DATA
des rédacteurs du magazine. Si votre projet est retenu pour FERRITE BEAD
sa publication dans le magazine, un rédacteur prendra(XCK/T0)PD
contact4 2 +3V3 +5V
+3V3
avec vous pour vous accompagner dans la rédaction de l‘article.
(RESET)PC6
29
IC2
R6
10k

Labo d‘Elektor :
LD39015M33R
1 5

www.elektormagazine.fr/labs
IN OUT
3 4
EN NC

200136-007 KD
créer > partager > vendre R2
100
C6
100n
C7

GND
2

lektor mars/avril 2022 63


store
www.elektor.fr

e-choppe Elektor
des produits et des prix surprenants
L’e-choppe Elektor a évolué. D’abord simple prix très étudiés. Ce sont les produits que nous
commerce de proximité pour nos productions aimons et testons nous-mêmes. Si vous avez une
(livres, magazines, kits et modules), c’est suggestion, n’hésitez pas : [email protected].
désormais une boutique en ligne bien rodée Seule exigence :
qui propose des produits surprenants à des jamais cher, toujours surprenant !

Archives 1978-2021 d‘Elektor sur clé USB

Prix : 199,95 €
Prix (membres) : 99,95 €

www.elektor.fr/20073

Horloge Nixie à 6 chiffres avec tubes IN-14

Prix : 299,00 €
Prix spécial : 269,00 €

www.elektor.fr/20044

64 mars/avril 2022 www.elektormagazine.fr


Great Scott Gadgets Opera Cake – Velleman VTSS210 – Station de
Commutateur d’antenne for HackRF One réparation pour CMS multifonctions

Prix : 169,95 € Prix : 84,95 €


Prix (membres) : 152,96 € Prix (membres) : 76,46 €

www.elektor.fr/20083 www.elektor.fr/19948

Raspberry Pi Pico for Radio Amateurs Grove Starter Kit de Seeed Studio
+ Raspberry Pi Pico RP2040 GRATUIT pour Raspberry Pi Pico

Prix : 34,95 € Prix : 54,95 €


Prix (membres) : 31,46 € Prix (membres) : 49,46 €

www.elektor.fr/20041 www.elektor.fr/20016

lektor mars/avril 2022 65


labo domestique

visite à domicile
Chacun son tour
Joachim Schröder (Allemagne) et Eric Bogers (Elektor)

Tout électronicien devra un jour ou l’autre réaliser de ses propres mains un objet
indispensable à son circuit, par exemple un boîtier embellissant un projet, ou à tout le moins
le protégeant des affronts du monde. Que l’objet en question soit à travailler avec du bois ou
du métal, une panoplie d’outils sera nécessaire. Avec, peut-être, un tour comme celui-ci.

à réaliser en virgule flottante (de prime abord


le format numérique évident) : avec par
exemple une broche principale effectuant
1200 tours par minute et un codeur produisant
1024 impulsions par rotation, il aurait fallu
20 480 calculs en virgule flottante par seconde.
Un des grands défis fut donc de convertir ces
calculs en opérations sur des entiers.

Un petit tour (de Chine)


et puis s’en va
Figure 1. Un premier prototype avec un moteur Figure 2. Prototype plus complet avec moteur J. Schröder commanda donc un petit tour
CC pour la broche principale, un moteur pas-à- CA, variateur de vitesse et moteurs pas à pas X (manuel) de provenance chinoise, que le
pas Nema 17 pour la vis-mère, et une commande et Z. déballage révéla doté d’un robuste bâti en
par simple module PWM. fonte (figures 3 et 4). Un bon point de départ
donc, même si le plastique des engrenages
était quant à lui aussi visiblement que
Percer quelques trous dans un boîtier pour Dans ce type de tour, le chariot porte-outils complètement inadapté (mais peu importait,
y passer des boutons n’exige guère plus est déplacé par un servomoteur ou un moteur ces engrenages ne serviraient pas).
qu’un outillage et une dextérité de bricoleur pas-à-pas synchrones avec la rotation de la J. Schröder récupéra un engrenage sur la
ordinaire – une scie sauteuse et une perceuse broche principale (p. ex. 0,1 mm par tour), la transmission d’origine, en équipa le codeur
tenues par une main sûre. Il n’en va plus de broche étant équipée à cet effet d’un codeur rotatif destiné à la synchronisation de la
même des projets mécatroniques complexes rotatif. L’avantage de cette commande vis-mère, puis monta celui-ci à l’aide d’un
nécessitant des mécanismes de guidage numérique est qu’un déplacement plus adaptateur (figures 5 et 6).
précis. Le recours à un tour s’avère dès lors grand ou plus petit par tour n’implique aucun Mais après seulement cinq jours d’utilisation,
vite indispensable – à moins bien sûr que changement d’engrenages. le variateur de vitesse d’origine (chinoise)
vous ne soyez prêt à payer (relativement cher) Parce qu’il ne pouvait se permettre du moteur CC de 230 V rendit l’âme, avec
les compétences d’un professionnel pour la d’abandonner l’usage de son tour manuel, pour dernier soupir une forte détonation.
réalisation de vos travaux mécaniques. J. Schröder décida finalement de ne pas le J. Schröder le remplaça par un moteur CA
Joachim Schröder se sert professionnellement modifier mais de partir de zéro pour construire de 0,37 kW et un variateur de qualité du
d ’un tour manuel pour effectuer des un modèle à commande numérique. Ses fabricant allemand Lenze (fig. 7)
réparations et des travaux d’usinage. Il premiers prototypes (figures 1 et 2) lui La figure 8 montre le résultat final (provisoire ?)
possède ce tour depuis de nombreuses apprirent qu’un des plus gros problèmes de tous ces déboires et efforts. La place
années, mais songeait depuis quelque à résoudre allait être de nature logicielle, à réservée à cet article vous a hélas privé de
temps à le transformer en tour à commande savoir le calcul de l’instant où le moteur devrait bien des détails, mais si le projet vous intéresse
n u m é r i q u e d o n t l a v i s - m è r e s e ra i t avancer d’un pas – en raison du temps de vous pouvez contacter Joachim Schröder par
synchronisée de façon électronique. traitement requis, ce calcul était impossible courriel (voir encadré).

66 mars/avril 2022 www.elektormagazine.fr


Figure 3. Le tour est (enfin) arrivé. Figure 4. Le châssis est de qualité, mais les engre- Figure 5. Le codeur pour la synchronisation est
nages (en plastique) clairement bas de gamme. monté à l’aide d’un adaptateur…

Figure 6. …et entraîné par un engrenage Figure 7. Montage du moteur de 0,37 kW et du Figure 8. Version finale du tour.
récupéré sur la boîte de vitesses. variateur.

Figure 9. Capture d’écran


du logiciel.

Un mot sur le logiciel


Laissons le mot de la fin à J. Schröder : « J’ai
construit ma première fraiseuse numérique il
y a plus de 30 ans et en ai écrit moi-même le
logiciel. C’était sous DOS, à une époque où
le matériel était commandé par le port LPT.
J’ai ensuite construit des machines de plus en
plus performantes, avec cette fois-ci Windows
comme support du logiciel. Comme Windows
n’offrait pas de capacités de traitement en
temps réel, j’ai recouru à un microcontrôleur
pour le contrôle des axes. J’ai d’abord utilisé
des contrôleurs CCBasic de Conrad (c’était au
début du siècle), mais l’impossibilité d’effec-
tuer des calculs en virgule flottante consti-
tuait un véritable défi. J’utilise aujourd’hui des
cartes Arduino qui fonctionnent parfaitement
– elles peuvent commander des mouvements Contributeurs Des questions,
3D jusqu’à 1200 tr/min. Utiliser le logiciel Texte et photos : Joachim Schröder des commentaires ?
Arduino de ma fraiseuse 3D comme point Rédaction : Eric Bogers Envoyez un courriel à l’auteur du projet
de départ du logiciel de mon tour 2D s’impo- Mise en page : Giel Dols ( [email protected]) ou contactez Elektor
sait. Aussi facile à dire qu’à faire. La figure 9 Traduction : Hervé Moreau ([email protected]).
donne un aperçu de son interface. »
210605-04

lektor mars/avril 2022 67


initiation

voyage dans
les réseaux neuronaux
(4 partie)
e
Les neurones embarqués

Stuart Cording (Elektor)

Notre réseau neuronal fonctionne parfaitement sur les PC et


les ordinateurs portables et nous pouvons mettre en œuvre
en toute confiance notre perceptron multicouche. Nombre
d’applications ont besoin des capacités de faible consommation
et de latence minimale qu’offre un microcontrôleur. Certaines
ne souhaitent tout simplement pas partager leurs données
privées avec des services d’IA basés sur des systèmes tiers dans
le nuage. Ici, nous rendrons notre réseau neuronal compatible
avec Arduino et transférerons notre code de classification des
feux de signalisation dans l’univers des systèmes embarqués.

68 mars/avril 2022 www.elektormagazine.fr


Les outils et les plateformes d’apprentissage
automatique (ML) semblent aujourd’hui
pousser comme des champignons. Quelle
que soit la complexité de votre tâche ou
encore le volume de vos données, il existe
un service dans le nuage (cloud) pour les
traiter. Cependant, dans de nombreux
cas, la mise en œuvre de l’apprentissage
automatique dans le cloud est inadaptée.
Si vous traitez des données sensibles ou
personnelles, vous ne souhaitez peut-être
pas les transférer via l’internet pour les faire
analyser par un outil de ML. De même par
ex. pour les applications automobiles ou
d’autres applications embarquées en temps
réel. Ces systèmes exigent une décision
immédiate. Une solution de ML locale est
donc nécessaire du fait de la latence d’une
connexion internet ou de l’impossibilité
éventuelle d’une connexion. Cette approche
est également nommée « apprentissage Figure 1. Schéma de câblage du capteur RVB TCS34725 avec un Arduino DUE.
automatique en périphérie de réseau » [1].

Avec un réseau neuronal fonctionnant


en périphérie, même de simples
microcontrôleurs peuvent exécuter des lui apprenons à classer les couleurs des Choix d’un capteur
algorithmes de ML. Cependant, en raison feux de signalisation comme nous l’avons Pour identifier les couleurs des feux de
des exigences relatives au processeur fait avec Processing sur PC ou ordinateur signalisation, l’Arduino aura besoin d’un
pour l’entraînement, le réseau est souvent portable. En utilisant un Arduino capteur approprié en entrée. Le TCS34725
entraîné dans le nuage ou à l’aide d’un PC à 32 bits (DUE ou M0 Pro), nous pouvons d’Adafruit est une solution de détection
puissant. Les poids résultants sont ensuite entreprendre la phase d’apprentissage RVB appropriée, disponible et prête à
téléchargés sur le microcontrôleur pour un sur le microcontrôleur. Cependant, nous l’emploi sous la forme d’une carte au
fonctionnement déconnecté d’internet et à allons constater qu’il est assez lent. Ainsi, format 2 × 2 cm [2]. Elle permet d’acquérir
faible latence. nous scinderons également la tâche de des données RVB, comme nous l’avons
manière à ce que le réseau soit entraîné fait précédemment avec la caméra, et de
Ce dernier article de cette série concerne en s’appuyant sur la puissance d’un PC, les appliquer à la même configuration MLP
le portage de notre réseau neuronal puis exécuté dans l’environnement à faible utilisée pour les exemples donnés sur PC.
de perceptron multicouche sur un latence et basse consommation d’une La carte peut être utilisée avec les Arduino
Arduino. Couplé à un capteur RVB, nous application de microcontrôleur embarqué. 5 V et 3,3 V, et les données du capteur sont

Figure 2. Installation de la bibliothèque logicielle du capteur RVB Adafruit TCS34725 dans l’EDI Arduino.

lektor mars/avril 2022 69


Java, nous ne pouvons pas simplement
prendre le code de la classe Neural et
l’ajouter à un projet Arduino. Nous avons
donc légèrement modifié la classe Neural
Java pour la transformer en classe C++.
Dans l’univers Arduino, de tels objets
de code réutilisables peuvent être
transformés en « bibliothèques ». Celles-ci
se composent d’une classe C++ et d’un
fichier supplémentaire pour mettre en
évidence les mots-clés de la classe. Si vous
souhaitez écrire votre propre bibliothèque
ou mieux comprendre le fonctionnement
des classes C++ sur Arduino, il existe un
excellent tutoriel sur le site web Arduino [5].
Figure 3. Sorties de valeurs RVB fournies par le croquis tcsrgbsensor.ino Arduino.

Le code de notre bibliothèque Neural se


trouve dans arduino/neural. Les projets
Arduino suivants incluent simplement
acquises à l’aide de l’interface I2C, ce qui LED et commence à renvoyer les valeurs le code source de la classe Neural dans le
nécessite la bibliothèque Wire. RVB via la sortie série (fig. 3). Ouvrez Outils croquis pour simplifier l’écriture. Le fichier
-> Moniteur série pour les visualiser. Le d’en-tête neural.h doit également être
Pour assurer un éclairage constant de réglage du débit est de 9600 bauds. Pour ajouté au dossier dans lequel est enregistré
l’échantillon à analyser, la carte comprend améliorer la qualité des relevés et réduire le projet.
également une LED blanche commandée l’impact des autres sources de lumière, il
par une sortie numérique Arduino ; ici c’est est utile de fabriquer un écran de protection L’utilisation de la classe Neural sur un
la broche 10 (fig. 1). Fort heureusement, la autour de la carte du capteur. Une bande de Arduino est pour l’essentiel la même que
carte est associée à une bibliothèque bien carton noir d’environ 3 cm de haut et 10 cm dans Processing. La création de notre objet
construite, ce qui permet une mise en place de long est idéale (fig. 4). L’écran permet network à titre de variable globale est
et un fonctionnement simples et directs. également de maintenir l’image des feux légèrement différente et réalisée comme
Comme précédemment, nous utiliserons de signalisation à une distance constante suit :
le code du référentiel GitHub préparé pour du capteur RVB.
cette série d’articles [3]. Neural network;
Le capteur RVB produisant des résultats
Avant d’exécuter du code, nous devons fiables, nous pouvons maintenant Pour construire l’objet avec le nombre
installer la bibliothèque pour le capteur obtenir l’évaluation des couleurs rouge, souhaité de nœuds d’entrée, cachés et de
RVB. Cela devrait être facile, car elle orange et vert à l’aide de notre image de sortie, nous entrons les lignes suivantes :
est accessible via le gestionnaire de feux de circulation imprimée (à partir
bibliothèque dans l’EDI Arduino. Dans la de trafficlight/resources). Les résultats
barre de menu, il suffit de sélectionner obtenus par l’auteur sont présentés dans
Croquis -> Inclure une bibliothèque -> Gérer le tableau 1.
les bibliothèques puis d’entrer « tcs » dans
le champ de recherche du Gestionnaire de Tableau 1. Valeurs RVB capturées à
bibliothèque. La bibliothèque « Adafruit l’aide du capteur TCS34725 pour les
TCS34725 » devrait apparaître. Cliquez trois couleurs du feu de signalisation.
simplement sur « Install » pour l’installer
Feu tricolore R V B
(fig. 2). En cas de difficultés, le code
source et le fichier d’en-tête peuvent être Rouge 149 56 61
téléchargés depuis le référentiel Adafruit Orange 123 77 61
GitHub [4] et ajoutés manuellement aux
projets. Vert 67 100 90

Pour s’assurer que le capteur fonctionne


et disposer de la méthode d’acquisition Une bibliothèque MLP
des valeurs RVB dont nous avons besoin pour Arduino
pour entraîner le dispositif de ML, nous Les valeurs RVB étant déterminées,
allons commencer par le croquis arduino/ nous avons besoin de l’implémentation
tcsrgbsensor/tcsrgbsensor.ino. Après avoir du réseau neuronal pour la plateforme
Figure 4. Capteur RVB TCS34725 avec son écran
initialisé le capteur RVB, le code allume la Arduino. Comme Processing utilise de protection noir.

70 mars/avril 2022 www.elektormagazine.fr


network = new Neural(3,6,4);

La configuration de base des valeurs de biais


et du taux d’apprentissage est ensuite codée
comme précédemment dans Processing :

network.setLearningRate(0.5);
network.
setBiasInputToHidden(0.35);
network.
setBiasHiddenToOutput(0.60);

À partir de là, nous pouvons continuer


à utiliser les méthodes appliquées
précédemment dans Processing.

Détection des feux de


Figure 5. Sortie de tlight_detect.ino pendant l’apprentissage.
circulation avec la carte Arduino
Nous pouvons maintenant commencer à
explorer le MLP sur Arduino. Le croquis
/arduino/tlight_detect/tlight_detect.ino suit
la même structure que le projet Processing
tlight_detect.pde. Le réseau neuronal (3/6/4)
est configuré à partir de la ligne 40, et il est
entraîné avec les données RVB dans une
boucle à partir de la ligne 51. Avant d’exécuter
le code, les valeurs RVB pour « Rouge »,
« Orange » et « Vert » acquises précédemment
doivent être saisies à partir de la ligne 56 :

teachRed(220, 56, 8);


teachAmber(216, 130, 11);
teachGreen(123, 150, 128);

Téléchargez le code et ouvrez le moniteur


série pour visualiser la sortie (fig. 5). Comme
précédemment, la vitesse de transmission
doit être réglée sur de 9600 bauds. Le projet
vérifie que le capteur RVB est fonctionnel Figure 6. Résultat de tlight_detect.ino après apprentissage et détection des couleurs.
avant d’éteindre la LED blanche pendant
l’apprentissage. Une fois le MLP configuré, il
effectue le cycle d’apprentissage 30.000 fois,
améliorant à chaque fois sa capacité à classer Vous ajoutez ainsi le caractère retour comme nous l’avons fait précédemment
chacune des trois couleurs. chariot et un horodatage est généré pour dans Processing. L’approche peut également
chaque caractère « . » produit. servir à écarter la classification « orange » en
Pour assurer un certain retour d’information l’absence d’image. Le croquis tcsrgbsensor.ino
pendant l’apprentissage, un point est Une fois l’apprentissage terminé, l’Arduino peut être utilisé pour acquérir les lectures
émis tous les 1.000 cycles de boucle est capable de montrer immédiatement sa du capteur pour l’environnement du feu
(3.000 époques d’apprentissage). Comparé nouvelle compétence. Chaque fois qu’une de signalisation, le cadre et l’arrière-plan
au PC, l’apprentissage est un processus lent. couleur de feu de circulation est détectée, de l’image. Ces valeurs peuvent ensuite
Chaque appel à une fonction d’apprentissage elle est envoyée au moniteur série (fig. 6). être entrées aux lignes 60 et suivantes du
(learnRed(), etc.) nécessite environ 5,55 ms. Au cours de l’expérimentation de l’auteur, croquis tlight_detect.ino dans les appels de
L’apprentissage des trois couleurs nécessite le réseau neuronal a également détecté fonction teachOther().
environ 8,5 min sur un Arduino M0 Pro doté la couleur « orange » même si rien n’était
d’un microcontrôleur SAMD21. Si vous placé devant le capteur. Bien que ce Les valeurs indiquées dans le tableau 2
souhaitez examiner le temps d’exécution phénomène semble être lié à l’éclairage ont été atteintes et testées avec le croquis
de votre plateforme, cochez la case « Show ambiant, il met en évidence une faiblesse tlight_detect.ino. La classification s’est
Timestamp » dans le moniteur série et de fonctionnement. améliorée, mais la classification erronée
remplacez la ligne 66 par : « orange » en l’absence d’image n’a pas été
Pour améliorer le code, nous pouvons faire totalement résolue. Comme toujours, des
Serial.println(“.”); connaître au MLP les couleurs « autres », améliorations sont possibles !

lektor mars/avril 2022 71


pde dans la fonction importWeights()
à la ligne 86 dans tlight_weights.ino.
Programmez la carte Arduino, et elle devrait
détecter avec précision les couleurs des feux
de signalisation comme auparavant.

En fait, maintenant que nous avons


ce processus d’apprentissage accéléré,
nous pouvons aussi programmer le
même croquis tlight_weights.ino dans
un Arduino UNO. Il suffit de brancher le
capteur RVB à la carte, d’ouvrir le moniteur
série, et le fonctionnement est tout aussi
précis qu’avec un Arduino M0 Pro ou DUE.
À titre de comparaison, vous pouvez scruter
la broche 9 pour voir combien de temps il
faut à la méthode calculateOutput() pour
effectuer les calculs.

Figure 7. Un PC permet de calculer rapidement les poids en utilisant learnfast.pde dans Et ensuite ?
Processing. La sortie de la console texte peut ensuite être collée dans tlight_weights.ino. D’autres systèmes embarqués ?
Alors, que pouvons-nous faire à partir de
là ? Eh bien, nous disposons d’un réseau
neuronal MLP opérationnel qui fonctionne
à la fois sur PC et sur microcontrôleur.
signalisation. C’est donc ce que nous allons Nous disposons également d’un processus
Tableau 2. Valeurs RVB capturées à réaliser ensuite. d’apprentissage accéléré pour générer les
l’aide du capteur TCS34725 pour les poids nécessaires aux applications sur
couleurs « indésirables ». Nous revenons brièvement à Processing microcontrôleur. Vous pouvez essayer
Couleur R V B pour ouvrir le projet /arduino/learnfast/ d’appliquer ce MLP à des tâches trop
learnfast.pde. L’ensemble de l’application difficiles à résoudre à l’aide d’instructions
Feu tricolore dans 92 90 82
s’exécute dans la fonction setup() . Le if-else et de limites fixes. Il pourrait même
une ambiance
réseau neuronal est configuré avec les être possible de mettre en œuvre un projet
sombre
mêmes nœuds d’entrée, cachés et de simple de reconnaissance vocale pour
Cadre blanc 92 90 75 sortie que ceux utilisés sur la carte Arduino identifier quelques mots. Vous pourriez
Fond bleu 73 93 89 (3/6/4). Dans la boucle d’apprentissage également explorer les éléments suivants :
(ligne 36), les valeurs utilisées sont celles
acquises par l’Arduino à l’aide du capteur > La classe Neural utilise le type de
Apprentissage accéléré RVB et du croquis tcsrgbsensor.ino. Lorsque données double. Peut-elle être
Si vous ajoutez l’apprentissage des « autres » le code est exécuté, il envoie du texte sur accélérée en utilisant le type float
couleurs au croquis Arduino, l’attente sa console. La dernière section contient le tout en conservant sa précision ?
sera d’environ 18 min pour qu’un M0 Pro code qui configure tous les poids entrée- Quelle vitesse d’exécution peut-elle
assimile les classifications souhaitées. Il y a caché et caché-sortie (fig. 7). Il suffit de atteindre ?
donc certainement la possibilité d’optimiser copier le code généré à partir de la ligne > La fonction sigmoïde utilise la fonction
le processus. Puisque nous disposons d’un // For Input Node =0 jusqu’à la fin de la mathématique exp(), qui calcule l’expo-
PC puissant capable de calculer les poids sortie de texte. nentielle élevée à l’argument transmis.
en moins d’une seconde, il serait logique La fonction d’activation peut-elle être
de faire l’apprentissage avec, puis de De retour dans l’IDE Arduino, nous pouvons simplifiée par une approximation tout
transférer les résultats vers l’Arduino. Avec maintenant ouvrir le croquis /arduino/ en assurant une classification précise ?
ces poids, nous avons également un moyen tlight_weights/tlight_weights.ino. Il s’agit de > Si vous vouliez tenter la reconnais-
de programmer plusieurs microcontrôleurs la même chose que le croquis tlight_detect. sance vocale, comment prépare-
avec les mêmes « connaissances ». Si ino mais, avec une préprogrammation des riez-vous un échantillon de voix pour
les capteurs RVB fonctionnent tous de poids au lieu d’une phase d’entraînement le présenter à ce dispositif MLP ?
manière similaire par rapport à notre du réseau neuronal. C’est le cas à la ligne 51 > Et si vous apportiez des modifications
entrée, chaque microcontrôleur devrait avec la fonction importWeights(). Collez importantes ? Comment implémen-
classer correctement l’image du feu de simplement le code de la sortie de learnfast. ter une deuxième couche de nœuds

72 mars/avril 2022 www.elektormagazine.fr


cachés ? Pouvez-vous implémenter Une agriculture plus performante
une fonction d’activation différente ? L’agriculture s’est toujours appuyée sur la nature et les saisons afin de déterminer le meilleur
moment pour récolter et semer. La tradition a toujours dicté la date optimale pour planter
Dans cette série d’articles, nous avons en bénéficiant de la mousson. Cependant, avec l’évolution des conditions météorologiques,
couvert un large domaine et découvert les les rendements des cultures ont souffert. Tout cela est en train de changer grâce à l’IA.
premières recherches sur les neurones Des agriculteurs indiens participant à un projet pilote ont effectué leurs plantations d’ara-
artificiels. À partir de là, nous avons chide fin juin, soit trois semaines plus tard que la normale. C’est la suite Microsoft Cortana
examiné comment les MLP utilisent la Intelligence qui a produit ces conseils. Grâce aux historiques de données climatiques, les
rétropropagation pour apprendre, puis recommandations reçues par les agriculteurs ont permis d’obtenir un rendement supérieur
étudié leur fonctionnement en utilisant de 30 % en moyenne [6].
les puissantes capacités de traitement
d’un PC. Nous avons ensuite porté le MLP
sur un microcontrôleur à titre d’exemple
de dispositif d’apprentissage automatique
en périphérie de réseau. Si vous décidez de
développer ces exemples plus avant, n’hési-
tez pas à partager vos résultats avec nous,
chez Elektor.
210160-D-04

Des questions,
des commentaires ?
Envoyez un courriel à l’auteur
([email protected]).

PRODUITS
Contributeurs
> Livre en anglais, « Artificial Intelligence » de B. van Dam
Idée, texte et images : Stuart Cording www.elektor.fr/18090
Rédaction : Jens Nickel, C. J. Abate
Illustrations: Patrick Wielders > Kit AIY Vision pour Raspberry Pi de Google
Mise en page : Harmen Heida www.elektor.fr/19365
Traduction : Pascal Godart
> Caméra AI avec boîtier en silicone de HuskyLens
www.elektor.fr/19248

LIENS
[1] M. Patrick, « ML at the Edge: a Practical Example », codemotion, 09/2020 : https://bit.ly/2ZQYipU
[2] Capteur de couleur RVB avec filtre IR et LED blanche – TCS34725 : http://bit.ly/2NKFS7T
[3] Dépôt GitHub – simple-neural-network : https://bit.ly/2ZHLv9p
[4] Dépôt GitHub – Adafruit_TCS34725 : http://bit.ly/37RJg81
[5] « Writing a Library for Arduino », Arduino : http://bit.ly/3aWeNaP
[6] « Digital Agriculture: Farmers in India are using AI to increase crop yields », Microsoft News Center, 11/2017 :
http://bit.ly/2PacsQZ

lektor mars/avril 2022 73


projet

lévitation
magnétique
encore plus simple
Troisième version : la plus compacte

b • Elektor
r la l
to

ab
Elek

ED
TEST
la b
or
Ele

kt t
o r la ek
b • El

Peter Neufeld (Allemagne)

Voyons un circuit analogique


simple permettant de faire
léviter de petits objets, qui J’ai partagé mes expériences sur les circuits de lévitation magnétique
a suscité de nombreuses sur la page Elektor Labs. Les deux premières versions ont été publiées
discussions et expériences. Le en ligne et dans Elektor : la 1ère était entièrement analogique avec un
comparateur LM311 [1], et la 2e numérique [2], pilotée par un module
matériel ressemble à celui déjà à microcontrôleur, basé sur ESP32. Je ferai ici référence à ces articles
publié dans Elektor, mais avec par Partie I et Partie II. En discutant de la lévitation magnétique
encore moins de composants. avec Luc Lemmens, ingénieur du labo d’Elektor, certaines idées sont
apparues. Je les ai suivies pour améliorer et optimiser les projets que
L’électronique tient même j’avais déjà réalisés. Certaines modifications avaient déjà été mises en
dans le boîtier d’un relais œuvre dans les circuits des dites publications, mais nos discussions
industriel standard modifié ! ont aussi débouché sur une optimisation supplémentaire. Le résultat,
objet de cet article, a permis de simplifier notablement « l’ancien »
circuit analogique de lévitation pour petits objets (magnétiques).
Ceci est la 3e et, du moins pour l’instant, dernière partie de mes
projets de lévitation magnétique. Même si la conception est plus
simple que pour les deux autres projets, cela fonctionne très bien.

74 mars/avril 2022 www.elektormagazine.fr


Le principe, en bref Le boîtier transparent d’un relais Finder est souvent collé à sa base. Il
L’idée-force de ces trois projets de lévitation magnétique est que le est cependant facile de l’ouvrir en chauffant modérément le joint adhésif
champ magnétique de la bobine de relais modifiée ne fournit qu’une avec un sèche-cheveux, ou une station de soudage à air chaud. Un
faible partie de la force de lévitation nécessaire. La majeure partie est couteau Exacto, légèrement chauffé, peut faciliter l’ouverture sans faire
celle qu’un aimant permanent placé dans l’objet en lévitation exerce sur de dégâts. C’est justement ce que nous voulons ici : garder le capot
le noyau de fer du solénoïde. Un capteur à effet Hall mesure l’intensité intact et le réutiliser comme boîtier pour l’électronique complète du
du champ magnétique total (champ statique de l’aimant + champ de dispositif de lévitation.
la bobine). La tension sur sa broche de sortie est une mesure de la
distance entre la bobine et l’objet en lévitation. Son retour en entrée
du circuit de commande du courant de l’électroaimant forme une
boucle de contre-réaction et donc régule la distance entre le noyau +5V
et l’objet en lévitation.
Un potentiomètre permet le préréglage fin du circuit de commande LED2
LED1
L1
pour l’ajuster à l’objet magnétique qui doit léviter sous la bobine. Si R1

vous êtes novice sur cette expérimentation, ce réglage peut être vite 100k
R2
décourageant. En cas de problème, lisez la Partie I [1] pour ses conseils
IC2 IC1 *

470Ω
5
et astuces. Le circuit marche bien, mais il est bien sûr limité pour ce SS49E
2 8
6
qui concerne la taille et le poids des objets qu’il peut soulever. LM311
7
3
* see text
Circuit simplifié P1 4
1
100k
La figure 1 donne le schéma de cette 3e version, une version simplifiée R3 R4
de la Partie I. Le comparateur LM311 [3] fournit ici le courant de
C1
220Ω

120k
commande (assez faible) directement à la bobine, donc sans transistor 1...100µ
externe. Peut-être le savez-vous : la sortie à collecteur ouvert du LM311 16V

peut piloter une petite charge. Cela simplifie notablement le circuit 210398-066

de la 1ère solution 100 % analogique, conçue pour la Partie I, dans


laquelle un transistor BC550 NPN ajouté à la sortie du comparateur Figure 1. Schéma de cette version de la lévitation
alimentait l’électroaimant. magnétique.
Pour réduire encore plus le nombre de composants et gagner un peu
de place, le diviseur de tension réglable de la référence sur l’entrée
inverseuse du comparateur (P1 et R4) peut aussi être modifié. On peut
remplacer ces deux composants par un seul ajustable multitour ; il n’est
pas critique, toute valeur entre 1 kΩ et 1 MΩ fera l’affaire. Comme la
figure 2 le prouve, l’ajustable de préréglage à un tour et la résistance fixe
R4 s’insèrent bien dans le boîtier du relais, cette dernière modification
n’est donc pas indispensable.
Les composants utilisés ici sont très répandus, disponibles et
abordables. Dans la Partie I, nous avions écrit que seuls les capteurs
à effet Hall A1302 ou A1308 d’Allegro Microsystems étaient utilisables
bien que par ex. les SS49E fussent moins chers et plus facilement
disponibles. Cependant, dans la Partie II Lévitation magnétique, version
numérique, nous constations avec satisfaction que cette assertion était
erronée. D’autres tests ont prouvé que le type et la marque d’IC2 ne
sont pas vraiment critiques, ce qui facilite notablement la recherche
des composants nécessaires à ces projets. Les capteurs Allegro sont
plus chers et difficiles à trouver.

Comment trouver le bon relais et le modifier ?


L’électroaimant (L1) est désormais le solénoïde d’un relais 5 V standard,
pour être plus précis, de marque Finder (réf. 40.52.7.005.0000). Il est
facilement disponible et bien plus facile à modifier que les relais 5 V Figure 2. L’ajustable à un tour et la résistance en série
suggérés auparavant. Les photos de la figure 3 illustrent le processus tiennent dans le boîtier.
complet de modification du relais.

lektor mars/avril 2022 75


Figure 3. Démontage du relais et préparation du solénoïde.

Comme pour les relais utilisés précédemment, le circuit magnétique doit Eh bien, cela justifie le titre du paragraphe. Cela dit, mon but était de
être ouvert pour éviter un court-circuit magnétique : ce doit être un I et garder le circuit aussi simple que possible et de réduire le nombre de
non un U. Cette opération est assez aisée, car le noyau rond et la partie composants à un minimum absolu. Et tout simplement, le bricoleur
plate rectangulaire ne sont liés que par martelage. On peut rompre cette qui m’habite refusait le transistor de commande supplémentaire pour
liaison avec une petite disqueuse, un fraisage ou perçage superficiel. prévenir la mort prématurée de mon circuit.
Le noyau de fer peut alors être retiré (s’il ne tombe pas tout seul) et Un examen plus poussé du circuit interne du LM311 (fig. 6) et des
retourné pour avoir une surface polaire un peu plus grande et également diagrammes de la fiche technique révèle que la puce possède un
plate et y coller le capteur à effet Hall, (cf. fig. 4). Cela permet de placer circuit de protection interne qui limite le courant de sortie à un
l’électroaimant et le capteur à effet Hall dans le boîtier du relais. Ils y niveau inoffensif, même en cas de court-circuit de sortie, et assure
seront bien à l’abri des chocs de l’aimant. une dissipation de puissance maximale de 350 mW sous une tension
Avec le montage alimenté en 5 V, le courant consommé avec un objet de 5 V. Cela rend la sortie presque immortelle, ou du moins, insensible
magnétique lévitant sous la bobine n’est que de 50 mA et au maximum à une charge de faible impédance. Pour finir, j’ai laissé mon circuit
de 90 mA, si la bobine est alimentée en continu (par ex., s’il n’y a pas sous tension 48 h et, comme je l’attendais et l’espérais, il a survécu !
d’aimant près du noyau). OK, prenons un peu de recul. Je respecte les limitations de vitesse,
Avec ce relais Finder modifié, l’électroaimant marche très bien et son capot je paie mes impôts, je lis et je suis les fiches techniques... Je connais
procure même une bonne protection mécanique de l’ensemble du circuit de nombreuses raisons de rester dans les limites de sécurité des
vis-à-vis des chocs des aimants permanents sur le noyau ou le capteur. Si spécifications des semi-conducteurs. Même si les circuits intégrés
vous voulez vraiment le construire dans l’ancien boîtier de relais – comme disposent de toutes sortes de circuits de protection, ce n’est pas bon
je l’ai fait – c’est possible moyennant un effort mécanique acceptable et un de les garder aux limites. Cela réduit certainement la durée de vie
peu de réflexion pour déterminer comment les composants peuvent être des puces. On peut arguer que, dans ce cas, il durera encore assez
disposés dans ce volume plus petit. Il va de soi que le circuit peut aussi longtemps et que changer le LM311 ne coûtera pas une fortune, mais
très facilement être construit sur une plaque d’essai ou une carte pastillée avec cet assemblage compact, réparer le circuit est difficile.
(cf. fig. 5), et il suffit de quatre fils pour connecter l’ensemble bobine, LED, Mieux vaut prévenir que guérir, mais je voulais aussi relever le défi de
résistance et capteur à effet Hall au reste du circuit. J’ai utilisé un morceau voir si le circuit peut fonctionner avec un courant de sortie plus faible.
de câble plat de 20 cm de long dans un prototype. Un moyen facile et évident d’y parvenir est de remplacer le relais
5 V avec bobine de 50 Ω par un relais 6 V et bobine de 75 Ω (Finder,
Bon ingénieur ou bricoleur courageux, réf. 40.52.7.006.0000), mais je n’avais pas un tel relais sous la main.
mais téméraire ? J’ai donc opté pour une meilleure solution : tout en conservant
Luc du labo d’Elektor a analysé de manière critique et rigoureuse que l’alimentation de 5 V, j’ai réduit la tension aux bornes de la bobine en
le LM311 peut absorber 50 mA à sa sortie. Mais qu’en est-il de 90 mA ? insérant deux diodes 1N4148 en série entre l’alimentation et le solénoïde

76 mars/avril 2022 www.elektormagazine.fr


(cf. fig. 7). Le courant de la bobine sans charge utile fut réduit à 50 mA
et avec charge utile à 39 mA de moyenne. Une simple résistance Figure 4. Le capteur à effet Hall collé au noyau de fer de la
de 22 Ω aura le même effet. Et cela fonctionne bien aussi ! Cela bobine.
permet au comparateur de rester dans ses spécifications électriques.
Malheureusement, cette puissance inférieure réduit aussi la distance
entre l’électroaimant et l’objet en lévitation. Pire encore, le système
de commande a moins de marge pour absorber les perturbations. En
d’autres termes, à ce niveau de puissance réduite, l’objet tombera ou
heurtera l’électroaimant même s’il ne s’écarte que peu de la distance
d’équilibre. Le circuit est moins capable de corriger l’écart.

De nouvelles idées de conception ?


Finalement, j’aime mieux cette petite version que la version analogique
construite sur Veroboard pour la Partie I. Elle présente mieux et Figure 5. Un morceau
l’électronique est mieux protégée par le boîtier du relais. La version de de Veroboard
la Partie II qui utilise un M5Stack Atom basé sur ESP32 a montré que convient aussi pour ce
circuit.
le rôle du comparateur analogique pouvait être tenu par un µcontrôleur
et un algorithme simple. Selon moi, les différentes variantes de ce

Figure 6. Schéma interne du LM311, avec circuit de limitation du courant de sortie (en bas à
droite). (Source : Texas Instruments)

lektor mars/avril 2022 77


Figure 7. Le circuit de lévitation magnétique avec deux diodes 1N4148 pour limiter le courant dans la bobine.

petit projet, avec leur très classique problème de conception de


l’asservissement, ont montré que l’analogique a toujours ses avantages, LISTE DES COMPOSANTS
même à l’époque des µcontrôleurs rois ! Résistances Semi-conducteurs
Comme annoncé en début d’article, c’est la dernière et ultime version de R1 = 100 kΩ LED1,LED2 = LED verte
mes projets de lévitation magnétique, à moins que... Peut-être avez-vous R2 = 470 Ω IC1 = capteur à effet Hall SS49E
des idées ou des suggestions pour de nouvelles améliorations ? R3 = 220 Ω IC2 = comparateur LM311
210398-04 R4 = 120 kΩ
P1 = ajustable 100 kΩ Divers
L1 = relais 5 V, Finder,
Condensateurs réf. 40.52.7.005.0000 (voir texte)
Des questions, des commentaires ? C1 = 1 µF à 100 µF, 16 V, radial
Envoyez un courriel à l’auteur ([email protected]).

Contributeurs PRODUITS
Conception et texte : Peter Neufeld
Montage : Luc Lemmens
Illustrations : Peter Neufeld, Patrick Wielders, Luc Lemmens > 3e main avec loupe, éclairage LED et
Mise en page : Harmen Heida support de fer à souder de Velleman
Traduction : Yves Georges www.elektor.fr/19864

> Station de soudage à régulation de température VTSS220


de Velleman
www.elektor.fr/19865

LIENS

[1] « Lévitation magnétique sans peine », Elektor 7-8/2021 : www.elektormagazine.fr/200311-04


[2] « Lévitation magnétique, version numérique », Elektor 9-10/2021 : www.elektormagazine.fr/200278-04
[3] Fiche technique du comparateur LM311 : www.ti.com/lit/ds/symlink/lm311-n.pdf

78 mars/avril 2022 www.elektormagazine.fr


livres d’elektor

programmation d’automates
avec le Raspberry Pi et le projet OpenPLC
Visualisation des programmes PLC avec AdvancedHMI

Josef Bernhardt (Allemagne)

Dans les systèmes de commande


industriels, ainsi qu’en domotique, il est
courant de commander et d’observer le
processus en cours sur des écrans. Dans
ce chapitre, extrait du dernier livre de
Josef Bernardt sur la programmation des
automates programmables (PLC), vous vous
familiariserez avec le logiciel AdvancedHMI
(« Interface Homme-Machine avancée »).
Vous accéderez aux variables de l’automate
et essaierez de les visualiser. Il est également
possible d’accéder au processus et de simuler
des interrupteurs avec lui. Figure 1. Exemple d’utilisation d’AdvancedHMI.

AdvancedHMI est un programme .NET écrit en Visual Basic dans


l’EDI Visual Studio Community de Microsoft. Si vous installez le
Mono Framework sur votre Raspberry Pi, vous pouvez également
exécuter le logiciel sur celui-ci et avoir accès au programme PLC en
cours d’exécution. Le logiciel AdvancedHMI et l’EDI Visual Studio
Community peuvent tous deux être téléchargés gratuitement. La
figure 1 illustre un exemple d’AdvancedHMI en action.
Tout d’abord, téléchargez le logiciel sur le site web de l’éditeur et
écrivez un programme de test pour votre Raspberry Pi utilisé comme
automate. Pour le télécharger, rendez-vous sur le site web de l’édi-
teur, www.advancedhmi.com, et ajoutez le « AdvancedHMI Base
Package » à votre panier, comme le montre la figure 2. Ensuite,
cliquez sur la case Check out. Figure 2. Téléchargement d’AdvancedHMI.

Note de l’éditeur : cet article est un extrait du livre PLC Programming and the OpenPLC Project - ModbusRTU and ModbusTCP examples
using the Arduino Uno and the ESP8266 formaté et légèrement modifié pour correspondre aux normes éditoriales et à la mise en page
du magazine Elektor. Puisque cet article est extrait d’une publication plus vaste, certains termes peuvent faire référence à des passages
du livre d’origine situés ailleurs. L’auteur et l’éditeur ont fait de leur mieux pour l’éviter et seront heureux de répondre aux questions – pour
les contacter, voir l’encadré « Des questions, des commentaires ? ».

lektor mars/avril 2022 79


Figure 4. Le répertoire du projet AdvancedHMI.

Figure 3. Décompression d’AdvancedHMI.

Figure 5. Le programme d’installation de Visual Studio.

Figure 6. Ouvrez votre projet AdvancedHMI.

Figure 7. L’interface utilisateur de Visual Studio.

80 mars/avril 2022 www.elektormagazine.fr


Préface du livre
Ce livre a pour but de fournir aux lecteurs une introduction pratique à l’utili- programmes sur le PC et de les installer sur le Raspberry Pi.
sation de l’ordinateur Raspberry Pi comme automate programmable (PLC) De nombreux utilisateurs de Raspberry Pi sont désormais en mesure de
dans leurs projets. Le projet doit beaucoup aux programmeurs Edouard Tisse- réaliser leurs propres systèmes de commande et de régulation en utilisant
rant et Mario de Sousa, qui ont lancé le « projet Matiec » après la publication leur propre matériel. Le matériel et le logiciel sont également excellents à
de la norme CEI 61131-3 en 2003, ce qui a rendu possible la traduction des des fins de formation, car ils respectent la norme CEI.
langages de programmation définis dans cette norme en programmes en C. Les débutants apprendront également tout sur l’installation et la program-
Plus tard, lorsque le Raspberry Pi est devenu de plus en plus populaire, mation dans les cinq langages de programmation afin de construire leurs
Thiago Alves a lancé le projet « openplcproject ». Il a étendu l’éditeur du propres systèmes de commande. Un chapitre aborde le suivi des proces-
projet « Beremiz » et a écrit une bibliothèque d’exécution et une interface sus à l’écran avec AdvancedHMI. Sont également expliqués les circuits
web pour le Raspberry Pi et le PC. Dès lors, il devint possible d’écrire des avec l’Arduino et l’ESP8266, nécessaires pour le Modbus.

Après vous être enregistré, téléchargez le programme gratuite- interrupteur (MomentaryButton) et trois voyants lumineux
ment et décompressez-le dans un répertoire (fig. 3). Enregistrez (PilotLight) depuis la boîte à outils, et étiquetez-les comme vous
le fichier ZIP comme modèle. pouvez le voir dans le résultat final, figure 14. Pour ce faire, sélec-
Ensuite, créez un répertoire AdvancedHMI et copiez-y le contenu du tionnez l’objet et modifiez le texte dans la fenêtre Properties comme
fichier AdvancedHMIv399xR1.ZIP (fig. 4). Pour ouvrir le projet, un indiqué.
environnement de développement est nécessaire, alors installez le Définissez les champs PLCAdressClick comme suit :
logiciel Visual Studio Community à partir du site web de Microsoft, > BTN_HMI est à l’adresse 17, parce que vous avez utilisé
https://visualstudio.microsoft.com/vs/community/, comme %QX2.0 pour le BTN_HMI (8+8+1).
le montre la figure 5. > La LED va à 1
Une fois le processus d’installation terminé, démarrons le premier > LEDModbus va à 2
projet de démonstration. Avec un clic droit de la souris, nous > LEDBlink va à 3
ouvrons la solution AdvancedHMI avec Microsoft Visual Studio
2019 (figures 6 et 7). En double-cliquant sur MainForm.vb, vous Le MomentaryButton peut être changé de bouton en interrupteur
obtenez la vue HMI encore vide de votre projet de démonstration dans les propriétés de OutputType comme le montre la figure 15.
(WinForm). Vous pouvez maintenant exécuter le programme en Cela fait, vous disposez des adresses correctes pour avoir accès
cliquant sur Start (fig. 8). À ce stade, le projet a été compilé et aux variables de votre programme PLC. Vous pouvez maintenant
enregistré dans le répertoire indiqué à la figure 9. lancer votre programme et effectuer un test.
Ces fichiers de projet sont nécessaires pour utiliser un programme Les trois LED sont toujours dans le même état que les LED de la
sur un autre ordinateur. Vous pouvez également exécuter ces carte de test. Le commutateur BTN_HMI vous permet d’allumer
fichiers sur le Raspberry Pi avec le Mono Framework. la LED 2 de la carte de test.
Maintenant, faites glisser et déposez le composant ModbusTCPCom Le tableau 1 montre le mappage des adresses Modbus pour le
de la boîte à outils de gauche (fig. 10) dans votre espace de travail. Raspberry Pi avec OpenPLCproject et AdvancedHMI. OpenPLC
Dans la fenêtre Properties, vous pouvez maintenant saisir l’adresse fournit également un espace d’adressage séparé pour les variables
IP de votre Raspberry Pi (fig. 11). en mémoire avec un support pour les variables de 16, 32 et 64 bits,
Pour tester la communication, créez un nouveau programme PLC comme résumé dans le tableau 2.
avec l’éditeur Open PLC (fig. 12), chargez-le sur le Raspberry Pi et Pour installer Framework Mono sur le Raspberry PI, il faut saisir
démarrez-le. Il s’agit d’un simple circuit On/Off utilisant les boutons les commandes suivantes :
On et Off (fig. 13). sudo su
La situation devient intéressante avec le bouton BTN_HMI, qui apt-get update
se trouve à l’adresse %QX2.0. Cette adresse, située en dehors de apt-get install mono-complete
la plage d’adresses des GPIO du Raspberry Pi, est nécessaire pour apt-get install mono-vbnc
que l’interface HMI déclenche une pression sur un bouton. Avec
les temporisations TON0 et TOF0, vous pouvez réaliser un circuit Vous pouvez maintenant créer un répertoire sur le Raspberry Pi
de LED clignotante pour le programme LEDBlink. et utiliser WinSCP pour copier votre projet du PC vers le Raspberry
Revenez maintenant à votre projet HMI et faites glisser un Pi et le tester.

Function PLC Modbus Register Value Advanced


Usage Access Example
Code Address Register Size Range HMI
FC01 Digital %QX0.0 - 0-799 Read / "00001"
1 Bit 0 or 1 LED
Read Coil Outputs %QX99.7 (1-800) Write – "00800"
FC02
Digital %IX0.0 0-799 "100001"
Discrete 1 Bit 0 or 1 Read Only BTN
Inputs – %IX99.7 (1-800) – "100800"
Input
FC04
Analog %IW0 0-1023 "30001"
Input 16 Bit 0-65535 Read Only ADC
Inputs – %IW99 (1-1024) – "31024"
Register
FC03
Analog %QW0 0-1023 Read / "40001"
Holding 16 Bit 0-65535 DAC
Outputs – %QW99 (1-1024) Write – "41024"
Register Tableau 1

lektor mars/avril 2022 81


Figure 8. La barre de menu de Visual Studio.

Figure 9. Le répertoire de débogage d’AdvancedHMI.

Figure 11. Paramètres Modbus (IP et port).

Figure 10. La boîte à outils de Visual Studio.

Figure 13. Exemple de programme de LED.

Figure 12. Exemple de liste de variables de l’API.

82 mars/avril 2022 www.elektormagazine.fr


Figure 14. Le
programme HMI.

Figure 15. Réglage des


paramètres de l’HMI.

L’exemple de programme est aussi disponible dans le répertoire de Contributeurs


téléchargement sous AdvancedHMI. Les fichiers .EXE des exemples Texte : Josef Bernhardt
traités dans le livre se trouvent dans le sous-répertoire suivant : Rédaction : Jan Buiting
Mise en page : Giel Dols
PLC-Book-Download\AdvancedHMI\AdvancedHMI\bin\Debug Traduction : Helmut Müller

Ce sous-répertoire est contenu dans le paquet de logiciels


publié par l’auteur comme ressource de son livre. Le logiciel
peut être téléchargé gratuitement. Rendez-vous sur [1], allez à
Téléchargements et cliquez sur le nom du fichier :
Software_PLC Programming with the Raspberry Pi and the OpenPLC Project.
Enregistrez le fichier d’archive ZIP (128,94 Mo) en local, puis
décompressez-le. PRODUITS
210642-04
> Livre en anglais, « PLC Programming with the
Raspberry Pi and the OpenPLC Project », J. Bernhard
Des questions, des commentaires ?
Envoyez un courriel à l’auteur ( [email protected]) ou contac- Version papier : www.elektor.fr/19966
tez Elektor ([email protected]). Version numérique : www.elektor.fr/19967

Register PLC Modbus Register Value Advanced


Usage Access
Type Address Range Address Size Range HMI
General
Holding %MW0 1024..2047 Read / "41025"
16Bit 16 Bit 0-65535
Register - %MW1023 (1025-2048) Write – "42048"
Register
General
Holding %MD0 2048..4095 0- Read / "42049"
32Bit 32 Bit
Register - %MD1023 (2049-4096) 4.294.967.295 Write – "44096"
Register
General
Holding %ML0 4096..8191 Read / "44097"
64Bit 64 Bit 0-huge
Register - %ML1023 (4097-8192) Write – "48192"
Register Tableau 2

LIEN
[1] Ressources du livre/page d’information : www.elektor.fr/plc-programming-with-the-raspberry-pi-and-the-openplc-project

lektor mars/avril 2022 83


zone D
Astuces, bonnes pratiques et
autres informations pertinentes

sur le vif
Emballé, c’est pesé
fabrication d’un boîtier ou d’un panneau de
Ilse Joostens (Belgium) commande, nous laisse souvent beaucoup
moins enthousiastes, voire entraîne chez nous
Ainsi va la vie, il ne se passe pas une seule journée des sueurs froides. Car aux yeux de l’électroni-
sans que nous ne soyons enquiquinés par la plus cien, passer des heures à limer un morceau de
métal n’est pas de prime abord l’activité la plus
insignifiante des choses. Prenez par exemple ces intéressante du monde. Ceci dit, la mécanique
produits vendus sous blister, autrement dit sous aussi peut nous apporter son lot de menus
une coque en plastique fixée sur un support en plaisirs. Mais l’emballage d’un produit ? Qui
diable a déjà frémi d’excitation devant une
carton. Pour ouvrir ces satanés trucs, il vous faut boîte en carton et un rouleau d’adhésif ? Sans
des ciseaux ou un couteau, et quoi qu’il en soit doute certains Youtubeurs, comme Marco
un certain doigté. Car si ce n’est pas votre jour, Reps [2] ou Dave Jones d’EEVBlog [3] qui, de
leur propre aveu, gagnent leur vie en ouvrant
il y a de fortes chances que durant l’opération, des emballages à l’aide d’un couteau ridicule-
non seulement les bords acérés du plastique ment long. Je dois d’ailleurs reconnaître que la
vous cisaillent un doigt, mais qu’en plus vous vidéo de Marco Reps ouvrant un kit d’horloge
Nixie m’a profondément touchée – j’avais mis
coupiez ou abîmiez le produit. Et je ne parle pas énormément de soin et d’amour dans l’embal-
de ces emballages assurément faciles à ouvrir, lage de ces kits.
mais qui semblent avoir été spécialement conçus Emballer un produit fini semble simple,
pourtant rien n’est plus trompeur. Choisir
pour vous empêcher de remettre le produit à l’emballage d’un produit nécessite une bonne
l’intérieur, surtout le jour où vous souhaitez le dose de réflexion. Doit-il être attrayant, ou
retourner. Bienvenue dans le monde merveilleux peut-on négliger son aspect visuel ? Quel
type de boîte utiliser ? De quelles dimen-
de l’emballage ! sions ? En quelle matière ? Quel coût est
acceptable ? De toute évidence, la boîte –
notamment dans le cas d’un produit fragile
– ne doit pas être trop petite, mais pas trop
grande non plus pour éviter un surplus de
Tétrismatique inverse nos achats sur le tapis de caisse de façon matériau de remplissage ou de protection. Le
Je ne sais pas si vous vous en souvenez, mais à pouvoir les glisser au plus vite dans nos produit ne doit pas être ballotté dans la boîte
dans l’article sur l’Horloge de sable paru en sacs, les plus lourds au fond. Comme nous lorsque celle-ci est manipulée, car bien sûr
janvier 2017 [1], j’avais expliqué le principe aimons les jeux de mots improbables, nous cela pourrait l’endommager, mais aussi parce
de la cinématique inverse. Peu importe les avions alors appelé cette tactique la « tétris- qu’il est hors de question que le client puisse
détails de ce principe à vrai dire, même si matique inverse ». deviner le contenu de la boîte en la secouant
y jeter un œil ne nuira pas à votre éléva- Mais revenons à l’électronique. Ce que nous – ce que les enfants adorent faire, mais aussi
tion intellectuelle. À cette époque, donc, je préférons avec elle, ce sont les schémas, certains adultes à Noël [4]. Pour ce qui est
faisais mes courses dans le supermarché les composants, les cartes, les modules, des produits électroniques, le recours à un
de notre quartier. J’étais avec ma meilleure les instruments de mesure, etc. L’aspect matériau d’emballage antistatique peut être
moitié, et nous nous amusions à organiser mécanique d’un projet, par exemple la nécessaire. Lorsque le produit est composé

84 mars/avril 2022 www.elektormagazine.fr


de plusieurs pièces, une bonne idée est de
l’emballer de telle sorte qu’à l’ouverture le
client trouve les pièces dans le bon ordre de
montage – autre illustration du principe de la
tétrismatique inverse.
Le choix du matériau d’emballage peut être précision montre immédiatement s’il manque et de ses consorts d’Extrême-Orient. Grâce
dicté par des facteurs moins évidents. Lorsque un élément ou s’il y en a un en trop. à leurs pratiques concurrentielles effrénées
j’ai demandé à ce que le sable de l’Horloge La panoplie de balances et sachets dont nous et autres activités économiques douteuses,
de sable soit mis dans un sachet antistatique, disposons ferait pâlir d’envie n’importe quel nous n’avons plus besoin d’emballer nos
certains sourcils se sont dressés : personne Panoramix de la fumette, sans parler de la kits. Disons que cela m’épargne pas mal de
n’avait songé qu’en raison de l’attraction table d’emballage, des dévidoirs de ruban boulot. Et rien que pour ça, j’ai envie de leur
électrostatique le sable fin et sec se collerait adhésif, du matériel de scellage, des films dire merci.
aux parois d’un sachet en plastique ordinaire, tubulaires, des récipients vides et de nos 210625-04
ce qui allait rendre son scellage difficile. rayonnages industriels, toutes choses bien
pratiques par ailleurs.
Un problème de poids Ce bon vieux et fidèle cheval qu’est notre
L’emballage des kits électroniques compre- service postal est aussi une source de préoc-
nant un grand nombre d’éléments de petite cupations. Car allez savoir pourquoi, à partir Contributeurs
taille nécessite une attention particulière. d’un certain poids le coût d’envoi d’un colis Texte : Ilse Joostens
Une bonne approche est de dresser une double soudainement. Tout l’art de l’emballeur Rédaction : Eric Bogers
liste du contenu du kit, d’en trier les pièces professionnel consiste donc à ne pas dépas- Mise en page : Harmen Heida
par type et par fonction, de mettre ces ser cette limite satanique, et pour ma part, Traduction : Hervé Moreau
différentes catégories dans des sachets, et malgré une expérience somme toute consé-
enfin de mettre le tout dans un plus grand quente en ce domaine, je n’entre jamais tout
sachet. Cette méthode offre une meilleure à fait sereine dans un bureau de poste. On
vue d’ensemble, et surtout réduit considé- peut dire que là encore je pratique la tétris- Des questions,
rablement les risques d’erreurs auxquels matique inverse, mais ici sa pratique s’avère des commentaires ?
vous vous exposeriez si vous jetiez tout en parfois épuisante. Contactez Elektor ([email protected]).
vrac dans la boîte. Pour le contrôle final, une Depuis quelque temps nous pouvons heureu-
pesée des sachets à l’aide d’une balance de sement compter sur les services d’Alibaba

LIENS
[1] Ilse Joostens, « Horloge de sable », Elektor, 01-02/2017 : www.elektormagazine.fr/magazine/elektor-201701/40071
[2] Marco Reps, horloge Elektor à tubes Nixie : https://youtu.be/ge_9CNiZZ_A?t=25
[3] Dave Jones, EEVBlog, horloge Elektor IV-22 à VFD : https://youtu.be/SyXiWNZs7l4?t=1733
[4] Une farce à l’intention de ceux qui secouent leurs paquets-cadeaux : www.youtube.com/watch?v=ZeCjiEiPqAM

lektor mars/avril 2022 85


bon à savoir

sous
votre
radar
Des microcontrôleurs
que vous devriez connaître

Clemens Valens (Elektor)

Le marché mondial des microcontrôleurs est plus diversifié


qu’on ne le pense. Passons en revue quelques-uns des
microcontrôleurs et fabricants pas souvent apparus dans
Elektor. Vous pourriez en trouver un ou plusieurs utiles
pour un futur projet.

Pour un projet Elektor, le choix d’un micro- ments, le TMS1000 de 1974, avait également etc. utilisent des MCU à 4 bits et ce depuis de
contrôleur dépend surtout de la disponibi- une architecture à 4 bits qui, comme le 4040, a nombreuses années. Les fabricants évitent
lité à bas prix d’outils de développement du animé de nombreuses calculatrices de poche. généralement de modifier les produits qui
logiciel et de programmation de la puce, Dans un monde où les fabricants de micro- marchent, ce qui explique la persistance sur
et de la possibilité pour les particuliers de contrôleurs semblent vouloir allonger le marché de ces composants.
les acquérir. Pour de nombreux amateurs autant que possible les mots de données Si vous désirez essayer un microcontrôleur
d’électronique, cela restreint leur vision (64 bits est devenu banal), vous seriez à 4 bits, jetez un coup d’œil aux familles NY...
du marché mondial des microcontrô- surpris du nombre de microcontrôleurs de la société taiwanaise Nyquest. Les outils
leurs. Le monde des microprocesseurs va à 4 bits qui sont encore utilisés aujourd’hui. de développement peuvent être téléchargés
bien au-delà des PIC, AVR, ARM ou ESP, si Mais pourquoi ? La réponse est probable- gratuitement (fig. 1). Autres fabricants : le
souvent au cœur de nos projets maison. ment un mélange d’héritage, de consom- Suisse EM Microelectronic, le Chinois CR
Jetons un coup d’œil à quelques-uns de mation d’énergie et de coût. Micro, le Taiwanais Tenx Technology.
ces MCU qui échappent à notre perception. Un MCU à 4 bits comprend moins de
transistors que les puces avec des mots plus 8051
Tout a commencé longs. Il consomme donc comparativement Avant qu’ARM ne devienne le principal
avec quatre bits moins d’énergie, un bonus pour la durée de fournisseur de cœurs de microcontrô-
Introduit en 1971, l’Intel 4004 est consi- vie des piles. Moins de transistors signifie leurs pour presque tous les fabricants de
déré comme le premier microprocesseur également moins d’espace, ce qui permet de semi-conducteurs de la planète, il y avait le
produit commercialement (vous trouve- caser un cœur de 4 bits dans un coin de la 8051 à 8 bits. Créé par Intel en 1980 sous le
rez plus d’informations à son sujet dans le puce, là où un cœur plus grand ne tiendrait nom de MCS-51, son cœur (fig. 2) a été cédé
numéro spécial d’Elektor Industry consacré pas. La taille de la puce elle-même est plus sous licence à plusieurs concurrents et a été
à 60 ans d’électronique [1]). Il s’agissait d’un petite, ce qui permet de réduire les coûts intégré dans une foule de produits, dont
composant à 4 bits. Avec ses puces périphé- (dans quelle mesure peut-on se demander). beaucoup, avec de nombreuses variantes,
riques, il formait la famille MCS-4. Elle a été Les applications en grande série telles sont encore fabriqués aujourd’hui.
suivie par la famille MCS-40 avec l’unité que les calculatrices, les minuteries, les Quarante ans après l’introduction du 8051,
centrale 4040. Le premier microcontrôleur horloges et les montres, les ordinateurs de de nouveaux produits sont toujours conçus
(pas un microprocesseur) de Texas Instru- bicyclette, les jouets et les télécommandes, à partir de ses dérivés.

86 mars/avril 2022 www.elektormagazine.fr


De plus, les utilisateurs du 8051 ont
développé une quantité de logiciels et de
savoir-faire au cours de cette période, que
l’arrivée d’un meilleur microcontrôleur n’a
pas rendus caducs.
Enfin, le cœur du 8051 est devenu quasi-
ment gratuit, ce qui en fait une option
intéressante pour les fabricants de
semi-conducteurs tentés par la produc-
tion de composants à très bas coût. Ils ne
le mentionnent pas toujours dans la fiche
technique, mais s’il est indiqué quelque
chose comme « 1T instruction cycle »,
il y a fort à parier qu’il s’agit d’un dérivé
du 8051. Le 8051 original consommait
12 cycles d’horloge (appelés « 12T ») pour
la plupart des instructions, alors que les plus
modernes n’en nécessitent qu’un seul (d’où
le « 1T »). En plus de demander moins de
cycles d’horloge par instruction, l’exécution Figure 1. Le NYIDE 4.40 de Nyquest montre que les microcontrôleurs à 4 bits peuvent aussi
du programme est également (beaucoup) avoir des EDI modernes.
plus rapide car certains de ces composants
modernes fonctionnent à des fréquences
allant jusqu’à 450 MHz au lieu des 12 MHz
de l’original. Les MCU 8051 modernes sont
donc à la fois puissants et bon marché.
Aujourd’hui, le principal inconvénient
du 8051 est sans doute son incompatibi-
lité avec les langages de programmation
modernes comme le C/C++, en raison de
son étrange structure de mémoire. Pour
en tirer le meilleur parti, il faut une chaîne
d’outils commerciale Keil ou IAR, ou
équivalente. La populaire chaîne d’outils
GCC a été portée sur toutes sortes de micro-
contrôleurs, mais pas sur le 8051. La chaîne
d’outils libre SDCC fait une bonne partie
du travail, mais c’est loin d’être parfait.
Bien sûr, on peut toujours utiliser l’assem-
bleur. Vous préférez le Pascal ? Voyez le
Turbo51 [2].
Vous pouvez trouver des MCU basés sur
le 8051 dans des produits bon marché de
grande série tels que des jouets, des claviers
et des souris de PC, des brosses à dents, des
appareils ménagers, des télécommandes,
etc., surtout originaires d’Asie où le 8051
semble très populaire. Silan, SiGma Micro,
SinoWealth, Silicon Laboratories, Sonix,
STC et SyncMOS (pour ne citer que ceux
avec un « S » initial) en fabriquent tous.
Si vous êtes tenté d’expérimenter avec une
variante moderne du 8051, jetez un coup Figure 2. Voici l’architecture de base de ce qui pourrait bien être le cœur de
d’œil à la famille CH55x de WCH. Pas chers, microcontrôleur le plus utilisé au monde, le 8051. (Source : Intel)
mais seulement documentés en chinois, ils

lektor mars/avril 2022 87


le cambouis, essayez le Z8FS040BSB
avec ses 4 Ko de mémoire flash et ses
cinq broches GPIO dans un boîtier SOIC
à 8 pattes. Notez que le compilateur gratuit
SDCC supporte plusieurs MCU basés sur le
Z80, comme ceux de Rabbit (maintenant
Digi) et de la Nintendo Gameboy.

Composants à très faible coût


Figure 3. Le Commodore 64, l’un des célèbres ordinateurs de salon des
De nombreux produits électroniques conte-
années 1980, contient un 6502. (Source : ralfsfotoseite @ Pixabay)
nant des microcontrôleurs sont fabriqués
en très grande série. Pensez aux appareils
électroménagers, aux horloges, aux brosses
à dents électriques, aux e-cigarettes, aux
disposent d’une interface USB qui facilite teurs Seeed Studio Grove, Sparkfun QWIIC testeurs de coronavirus, aux cartes à puce,
leur programmation et sont utilisés dans et MikroE Click. aux détecteurs de fumée, aux jouets, etc.
des projets ouverts. En faire un Arduino ? (fig. 4). Pour avoir une idée des chiffres : les
Voir par exemple [3]. Z80 consoles de jeu comme la Gameboy, la Wii
Le Z80 est un autre processeur à succès de la et la Switch de Nintendo ont toutes dépassé
Vieux de la vieille et survivants fin des années 70 et du début des années 80. les 100 millions d’unités vendues. Imagi-
À côté du 8051 de 1980, il existe encore Zilog en a développé le cœur en 1975 et il nez ce que sont les chiffres pour les cartes à
quelques autres cœurs de processeurs de est toujours en production. Sa licence a puce, par exemple. Économiser un centime
cette période, notamment le 6502 et le Z80, été accordée à de nombreux fabricants qui sur le coût d’un tel produit est énorme et
mais aussi le 68000 de Motorola (mainte- l’ont copié et cloné dans le monde entier, ce il existe donc un grand marché pour les
nant NXP), un peu plus récent. Le Z80 et qui a donné naissance à une énorme base microcontrôleurs ultras bon marché.
la version CMOS du 6502, le W65C02, sont d’utilisateurs. Plusieurs familles ont vu le Parmi leurs fabricants, certains ont attiré
toujours fabriqués et activement suppor- jour, comme l’eZ80 qui fonctionne avec des l’attention des amateurs d’électronique,
tés par leurs créateurs Zilog et WDC (WDC horloges allant jusqu’à 50 MHz, ou les Z8 dont Padauk, MDT et Holtek.
a créé le W65C02, pas le 6502). La survie et eZ8 Encore!, qu’on retrouve notamment
du 68000 semble surtout due aux besoins dans la ligne de produits ZMOTION, une Padauk
de maintenance de vieilles applications famille de MCU optimisés pour la détection Padauk fabrique des MCU à trois centimes,
(mais qui sait combien de sociétés en ont de mouvement PIR. à programmation unique (OTP) et à base de
pris une licence ?). Si vous voulez mettre les mains dans flash, dont la particularité est l’architecture

6502
Le 6502 a été utilisé dans plusieurs des
premiers ordinateurs célèbres comme
le Commodore 64, l’Apple II et le BBC
Micro, et a connu un grand succès (fig. 3).
Sa version CMOS améliorée et à faible
consommation est toujours d’actualité,
bien qu’assez chère. La raison en est que
la plupart des utilisateurs ne prennent
une licence que pour l’utiliser dans des
FPGA, des ASIC et similaires. Comme tout
est confidentiel, il est difficile de savoir de
quels composants il s’agit.
Cependant, WDC produit des puces embar-
quées que vous pouvez essayer. Un exemple
est le microcontrôleur W65C265S avec un
CPU W65C816S à 16 bits qui est entièrement
compatible avec le W65C02S à 8 bits et qui
fonctionne à partir de 1,8 V seulement. Il Figure 4. Quelques exemples d’applications rendues possibles par les microcontrôleurs à très
existe aussi des modules à contrôleur, et bas coût. (Source : Holtek.com)
même une carte sœur avec des connec-

88 mars/avril 2022 www.elektormagazine.fr


basée FPP (Field-Programmable Processing
units). Il s’agit de bancs de registres avec
un compteur de programme, un pointeur
de pile, un accumulateur et un registre de
drapeaux, qui permettent un changement
de contexte rapide, bien utile, par exemple
pour le traitement des interruptions et le
multitâche. Cela rappelle un peu le banc
de quatre registres du 8051. Cependant, Figure 5. La carte NuMaker Uno de Nuvoton possède un module
comme la plupart de leurs produits n’ont de programmation/débogage NuLink détachable. (Source :
qu’un seul FPP (certains en ont deux, le https://danchouzhou.blogspot.com)
PFC460, quatre et le MCS11, huit), ce ne
sont que des MCU de base.
Le PMS150 est un bon point de départ. On
trouvera une excellente présentation de
ces composants sous [4]. SDCC supporte Holtek seur mondial de MCU. Les lecteurs de
les PDK14 et PDK15. Pour le PDK13, c’est Quelques produits Holtek ont été utilisés longue date d’Elektor se souviennent
en cours. par le passé dans des projets Elektor. Il ne peut-être des séries d’articles sur les
s’agissait pas de microcontrôleurs, mais R8C et R32C/111 d’il y a une quinzaine
MDT de décodeurs de clavier et de canaux RC. d’années [5]. La récente famille de micro-
Comme déjà mentionné, MDT, alias Micon Cependant, Holtek fabrique également des contrôleurs à 32 bits RX671 est spécialisée
Design Technology, fabrique des clones ou MCU, dont beaucoup sont basés sur le 8051 dans le pilotage en temps réel et l’inter-
des dérivés des PIC de Microchip. La popula- ou les ARM Cortex-M0 et M3 ainsi que sur face homme-machine (HMI) sans contact
rité des PIC chez les faiseurs a attiré une leur propre cœur. Comme chez beaucoup par détecteurs de proximité et reconnais-
certaine attention sur les produits MDT. de fournisseurs de MCU à bas prix, la sance vocale, l’idéal pour les interfaces
Cependant, au cours de mes recherches gamme des produits Holtek est divisée HMI hygiéniques modernes. Renesas
pour cet article, leur site web a soudain en MCU d’usage général (« type I/O ») et fournit également de nombreuses cartes
disparu. Une recherche sur l’internet spécifiques. La documentation est bonne de développement et d’évaluation que je
concernant les composants MDT produit et l’EDI HT-IDE3000 (assembleur et C) est vous encourage à essayer. N’hésitez pas à
plusieurs résultats pour le craquage de gratuit (bien que difficile à trouver), mais nous faire part de vos trouvailles.
MCU et les services de rétro-ingénierie des un programmateur Holtek est nécessaire.
produits MDT, entre autres, ce qui suggère Un composant que j’ai trouvé intéressant Nuvoton
qu’ils sont largement utilisés. est le MCU analogique HT66F4550 qui Issu de Winbond en 2008, Nuvoton a acquis
intègre deux amplis ops et possède une la division des puces moribonde de Panaso-
sortie audio. nic en 2020. L’entreprise propose une large
gamme de MCU à cœur 8051 et ARM, ainsi
Et les géants d’Asie ? que quelques composants à cœur proprié-
Elektor a publié des centaines de projets taire. Contrairement à de nombreux
basés le plus souvent sur des microcontrô- concurrents, Nuvoton ne dispose pas de sa
leurs PIC ou AVR de Microchip (ancienne- propre chaîne d’outils. Pour les dispositifs
ment Atmel), ou ESP d’Espressif, ou un MCU 8051, ils proposent Keil et IAR tandis que
avec un cœur ARM de chez NXP ou ST. Le pour ARM, ils utilisent Eclipse. Sur GitHub,
MSP430 de Texas Instruments a égale- vous pouvez trouver de l’aide pour utiliser
ment fait quelques apparitions. À l’excep- SDCC avec certains composants Nuvoton.
tion d’Espressif, tous ces fabricants sont La carte NuMaker Uno (fig. 5) est un
européens ou américains. Cela témoigne bon début pour utiliser Nuvoton. Avec
d’un biais, car il y a en Asie beaucoup de son contrôleur NuMicro NUC131 ARM
grands fabricants de MCU. Cortex-M0, elle est compatible Arduino.
Elle comprend également un module
Renesas débogueur / programmeur Nu-Link
L’un des plus grands, sinon le plus grand détachable, utilisable avec d’autres
Figure 6. Le K1830BE91T de NIIET possède fabricant asiatique de semi-conducteurs modules. Le support logiciel est disponible
un cœur 8051 et est fonctionnellement
est Renesas, formé à partir de divisions sur GitHub (OpenNuvoton). Consultez le
équivalent au AT89C2051 de Microchip.
(Source : https://niiet.ru) de NEC, Hitachi et Mitsubishi. Selon dépôt NuMaker pour le support de mbed
certains, c’est même le premier fournis- Arduino, MicroPython et autres.

lektor mars/avril 2022 89


Des MCU russes ?
Pour compléter cet article, j’ai voulu ajouter quelques informations
sur les microcontrôleurs russes. Malheureusement, je ne lis pas le
Le 4004 et le 4040 ont
russe, et la plupart des sites web sont en russe, ce qui complique la
recherche d’informations utiles. Je suis tombé sur Milandr, Mikron
tous deux été conçus par
et le fabless Syntacore qui font tous des contrôleurs basés RISC-V. Federico Faggin. Quels
Selon [6], Milandr a pris une licence ARM, mais n’en mentionne
pas d’applications sur son site.
autres processeurs célèbres
NIIET fabrique le K1921VK01T destiné aux applications de
commande de moteurs et de mesure intelligente. Il est construit
a-t-il également conçus ?
autour d’un noyau ARM Cortex-M4F. OpenOCD propose un support
pour ce MCU. En octobre 2021, NIIET a annoncé un contrôleur Intel 8080, Zilog Z8 & Z80
basé sur RISC-V pour remplacer les STM32- et MSP430 qui sont
actuellement utilisés dans les « équipements civils » (comme ils les
appellent) en Russie. Ils ont également des MCU RISC à 8 et 16 bits
et quelques MCS-51 (Intel 8051) et MCS-96 (Intel 80196) (fig. 6).

Un monde d’options
Dans cet article, nous avons passé en revue quelques microcontrô- Des questions, des commentaires ?
leurs et fabricants rarement utilisés dans les projets Elektor, Envoyez un courriel à l’auteur ([email protected]) ou
mais qui constituent pourtant une part importante du marché contactez Elektor ([email protected]).
mondial des MCU. Bien sûr, cet article est loin d’être exhaustif et
certains composants ou fabricants intéressants ont pu être oubliés.
Pendant ma recherche pour cet article, j’ai compilé une liste de
plus de 50 fabricants de microcontrôleurs en activité, et je suis
sûr qu’il y en a beaucoup d’autres. Si vous en connaissez d’autres, PRODUITS
ignorés, mais intéressants, que vous aimeriez partager avec les
autres lecteurs, faites-le-moi savoir.
210630-04 > Livre « Maîtrisez les microcontrôleurs à l’aide d’Arduino
(3e édition) », Clemens Valens, Elektor
www.elektor.fr/18064
Contributeurs
> Microcontrôleur Raspberry Pi RP2040
Idée et texte : Clemens Valens www.elektor.fr/19742
Rédaction : Jens Nickel, C. J. Abate
Mise en page : Harmen Heida > Livre en anglais, « ARM Microcontroller Projects », Elektor
Traduction : Helmut Müller www.elektor.fr/17620

LIENS
[1] Stuart Cording, « The Birth of the Microprocessor », Elektor Industry, 03/2021 :
www.elektormagazine.com/magazine/elektor-241/60042
[2] Pascal pour 8051 : https://turbo51.com/
[3] CH55xduino : https://github.com/DeqingSun/ch55xduino
[4] Padouk PMS150 : https://jaycarlson.net/2019/09/06/whats-up-with-these-3-cent-microcontrollers/
[5] Gunther Ewald, « R8C et compagnie », Elektor, 01/2006 : www.elektormagazine.fr/magazine/elektor-200601/10319
[6] Microcontrôleurs russes : https://geek-info.imtqy.com/articles/M4836/index.html

90 mars/avril 2022 www.elektormagazine.fr


projet

surveillance et débogage
sans fil
Une solution pour Arduino, ESP32 et Cie

Peter Tschulik (Autriche)

Les cartes à
microcontrôleur modernes,
équipées d’un ESP32
ou d’un ESP8266 par
exemple, sont, pour
un prix modique, très
performantes et d’un grand
confort de programmation,
notamment avec l’EDI
Arduino. La fonction
Over-The-Air (OTA)
est particulièrement
intéressante. Elle permet
de télécharger facilement
des mises à jour de programmes et des Kit « Long Distance Wireless
UART-RS232 ».
données via un chargeur d’amorçage
qui utilise la communication par Wi-Fi, ce
qui permet de se passer de la connexion physique de la carte au port USB d’un PC ou d’un
ordinateur portable. Cependant, pour transmettre sans fil des données série (telles que les
informations de débogage), il nous faut une autre solution.

Les mises à jour logicielles d’appareils de l’Inter- un câble USB à travers la terrasse jusqu’à Wireless UART-RS232 [2] offre des taux de
net des Objets, donc qui fonctionnent à distance l’ordinateur dans mon salon, j’ai commencé transfert allant jusqu’à 115 200 bauds avec des
« sur le terrain », peuvent s’effectuer par voie à chercher une solution sans fil. Malgré des options de configuration et une portée allant
hertzienne (OTA). Un bon tutoriel sur le sujet recherches intensives, je n’ai pas pu trouver jusqu’à 1 km. Pour 75 € la paire émetteur/
avec l’EDI Arduino est disponible à l’adresse [1]. de module standard qui réponde à mes récepteur, j’ai pensé que cela représentait un
Cette méthode présente toutefois un inconvé- exigences et j’ai donc entrepris de dévelop- bon rapport prix/performance pour ce projet.
nient : le moniteur série n’est pas pris en charge, per ma propre solution. Je me souvenais
de sorte que les informations de sortie et de vaguement de systèmes qui permettaient Adaptateur hôte-USB
débogage ne peuvent pas être transférées. de transmettre sans fil des données d’inter- Le choix d’un convertisseur USB/série s’est
Sur mon dernier projet, un système d’arrosage face série ; en fait, j’ai rapidement trouvé ce avéré beaucoup plus difficile. Bien qu’il soit
de jardin basé sur l’ESP32, j’ai eu un problème que je cherchais auprès d’une entreprise possible d’appliquer le signal de données série
avec un capteur défectueux. Au lieu de tirer d’Extrême-Orient. Le kit Long Distance du système d’arrosage distant directement au

lektor mars/avril 2022 91


Figure 1. Petite par la taille, grande par le talent : Figure 2. Il faut configurer les modules « Long Distance Wireless UART-RS232 ». Sur la photo, vous
la carte hôte-USB. pouvez voir le cavalier en place et les LED verte et rouge.
(Source : www.hobbytronics.co.uk)

module de transmission série, je souhaitais une des makers et plusieurs marques différentes de toutes les puces USB utilisées par les diffé-
solution plus universelle utilisant une connexion puces d’interface USB. Les cartes ESP32 par rentes cartes de développement.
par port USB afin que la liaison puisse servir exemple utilisent les puces CP210x ou FTDI, les Pour programmer et configurer les modules
aussi facilement pour d’autres types de cartes Arduino utilisent le contrôleur Atmel ou UART RS232 sans fil ou la carte hôte-USB, il
cartes de développement. Il faut pour cela un les puces FTDI. Malheureusement, les biblio- faut au minimum un convertisseur USB vers
« adaptateur hôte-USB » qui se branche sur le thèques pour Arduino de l’USB Host Shield ne série, que l’on peut obtenir chez le même
port USB du site distant et communique avec prennent en charge qu’un seul type de puce à fabricant que pour les modules UART RS232
la carte de développement comme le ferait un la fois. Cela signifie que vous devez rendre le sans fil [8] ou par ex. chez Logilink [9]. Pour
PC. Par chance, après quelques recherches logiciel de l’USB-Host Shield configurable et mon projet, j’avais besoin de deux convertis-
intenses sur l’internet ([3] et [4]), j’ai repéré trouver le type de puce associé à la plate-forme seurs de niveau RS232. J’ai choisi la bonne
l’USB-Host Shield pour Arduino. Un fournis- de développement que vous utilisez. Ce n’est vieille solution du MAX232 [7].
seur local avait l’article en stock, j’ai donc passé
pas vraiment une solution prête à l’emploi ! J’ai
commande et quelques jours plus tard, j’étais fini par trouver une carte d’interface hôte-USB Configuration de la liaison
occupé à le déballer sur mon bureau. Il ne en provenance du Royaume-Uni qui s’adaptait Lorsque j’ai reçu le kit Long Distance Wireless
m’a pas fallu longtemps pour découvrir un beaucoup mieux aux différentes marques de UART-RS232, la façon dont je devais configu-
problème. Il y a de nombreuses plates-formes puce d’interface (fig. 1) [5]. rer les modules n’était pas claire pour moi. J’ai
de développement différentes dans le monde L’intérêt majeur de cette carte, c’est qu’elle contacté le vendeur et reçu le lendemain un
peut fonctionner avec une courriel contenant le logiciel, un manuel et
large gamme de périphé- un lien vers une vidéo de configuration [10].
riques tels que des clés de Tout d’abord, j’ai dû sortir les modules de leur
mémoire flash, des claviers, boîtier en plastique et souder une barrette à
joysticks et souris USB, des l’emplacement du connecteur J2 (une rangée
manettes Dualshock PS3/ de plots juste devant le connecteur RS232).
PS4, et dispose de pilotes J’ai ensuite placé des cavaliers sur les broches
série pour FTDI, CP210X, selon les instructions afin que le module entre
PL2303, CH340/1 et CDC, en mode configuration. Ensuite, j’ai connecté
des périphériques MIDI et le module au PC via l’adaptateur USB/série.
des modems USB. Leur site Le module est alimenté en 5 V (par ex. une
web fournit la liste de tous alimentation USB enfichable) via le connecteur
les micrologiciels gratuits. Si mini-USB (fig. 2).
vous connaissez exactement Si les deux LED s’allument, vous pouvez lancer
l’application pour laquelle le programme HY-TRP Setting GUI.exe et
vous voulez utiliser la carte, régler le bon port COM et la vitesse de trans-
vous pouvez la spécifier lors mission par défaut sur 9 600. Cliquez ensuite
de la commande et elle sera sur le bouton Open COM et lisez toutes les
fournie avec le micrologiciel valeurs avec Read All Settings. Les valeurs
installé. Pour cette applica- sont définies comme indiqué à la figure 3.
tion, j’avais besoin du micro- On peut trouver plus de détails dans le
logiciel USB Host - Serial manuel [10]. Certains problèmes de fiabilité
Driver for F TDI, CP210X , de la liaison ont été résolus en réduisant le
Figure 3. La configuration recommandée pour le module « Long PL2303, CH340/1 and débit en bauds de la liaison de transmission
Distance Wireless UART-RS232 ». CDC [6] ; il prend en charge

92 mars/avril 2022 www.elektormagazine.fr


Le convertisseur RS232-TTL se connecte à
l’adaptateur RS232-USB, qui à son tour se
connecte au PC via un câble USB. Le circuit
n’a plus besoin que d’être alimenté par une
alimentation stabilisée de 5 V.
Vo us p o u v e z ma i nte na nt la n c e r u n
programme de terminal (ici Hterm), sélec-
tionner le bon port USB et régler la vitesse
de transmission sur la valeur par défaut
Figure 4. Câblage de la carte hôte-USB pour la configuration. de 9 600 bauds. En cliquant sur le bouton
Connect en haut à gauche, vous vous connec-
terez à la carte hôte-USB. En haut à droite,
les options Newline at et sous la fenêtre
de 115 200 à 57 600. La carte hôte-USB description donnée en [5]. Beaucoup de principale Send on Enter sont changées en
possède un tampon qui tolère différentes programmes disponibles en téléchargement CR + LF. Si vous entrez maintenant HELP dans
vitesses de transfert. Les deux modules chez Hobbytronics peuvent être chargés sur le champ de saisie de la zone Input Control
doivent être configurés de manière identique. la carte. Le micrologiciel adéquat peut être sous la fenêtre principale, les paramètres à
Enfin, une fois la configuration terminée, chargé sur la carte en utilisant les instruc- jour devraient être listés comme indiqué dans
n’oubliez pas de retirer les cavaliers. tions données en [6], et vous y trouverez la figure 5.
également une description des paramètres Nous modifions maintenant les paramètres
Configuration de la carte de l’interface de commande. Pour la confi- de notre application à l’aide du champ de
hôte-USB guration, la carte hôte-USB doit être connec- saisie Input Control. Tout d’abord, nous
Pour programmer la carte hôte-USB avec tée à la carte convertisseur de niveau pouvons entrer la commande BAUD 57600
le bon micrologiciel, référez-vous à la MAX3232 comme indiqué dans la figure 4. pour modifier le débit en bauds qui doit

Figure 5. Configuration de la carte hôte-USB à l’aide de Hterm.

lektor mars/avril 2022 93


Tableau 1. Paramétrage
dans HiTerm
BAUD 57600
USBBAUD 115200
USBPARITY 8N1
INTERFACE 0
TIMEOUT 5ms
USB 5ms
GROUP 0
RTSCTS 0
PORT 1 Figure 6. Câblage de l’émetteur à distance (emplacement de la carte IdO). La carte verte est le module
RS232 0 sans fil. La carte IdO fournissant les données se connecte au port USB en bas à droite.

correspondre au débit en bauds défini pour les


systèmes Wireless UART. Utilisez Disconnect
puis Connect pour déconnecter et reconnec-
ter le terminal au système, puis la commande
HELP qui devrait vous permettre de vérifier la
liaison avec la carte hôte-USB.
La commande USBBAUD 115200 règle le
débit en bauds de l’USB sur 115 200. Cela
signifie que l’interface série de la carte
Arduino/ESP32/ESP8266 connectée dans
l’EDI Arduino doit toujours commencer par
la commande Serial.begin (115200).
On utilise les paramètres par défaut pour
USBPARITY, INTERFACE, TIMEOUT, USB,
RTSCTS, PORT et RS232. La valeur par défaut
de l’option de regroupement des données
série est OFF. La commande GROUP 0 définit
également ces propriétés à leur valeur par
défaut. Le tableau 1 donne un résumé des
paramètres corrects. La configuration est
ainsi terminée.

Câblage des modules


Avant de pouvoir câbler l’émetteur (du côté
de la carte IdO sur le terrain) et le récepteur
(du côté du PC), il est nécessaire de retirer du
circuit imprimé le connecteur rond d’alimen-
tation (à côté de la prise USB) sur les modules
Long Distance Wireless UART-RS232 afin de
dégager les plots.
Du côté de l’émetteur, la prise mini-USB de
la carte hôte-USB alimentera l’unité, voir le
câblage à la figure 6. Pour connecter le module
Long Distance Wireless UART-RS232 à l’adap-
tateur RS232/TTL, vous devez utiliser un câble
court terminé par des connecteurs SUBD-9 Figure 7. Câblage de la station réceptrice. Le PC est connecté en bas à droite par un câble d’extension USB.

94 mars/avril 2022 www.elektormagazine.fr


mâles. Les fils des broches 2 et 3 sont croisés Mode d’emploi
dans le câble comme le montre l’image. › Réglez le débit de l’interface de communication série de la carte utilisée sur 115 200 bauds
Le module compact de [8] est utilisé comme en utilisant Serial.begin(115200); dans l’EDI Arduino.
convertisseur RS232/USB pour le récepteur › Une fois le micrologiciel transféré sur la carte distante, alimentez l’émetteur en 5 V via la
et est câblé selon la figure 7. J’ai utilisé un prise mini-USB du module Long Distance Wireless UART-RS232.
câble d’extension USB entre le PC et l’unité de › Puis connectez-le à la carte distante à l’aide d’un câble USB court.
réception pour donner une certaine flexibilité › Branchez l’unité de réception sur un port USB libre du PC. Le récepteur est alimenté
dans le positionnement de l’unité à l’intérieur. par le PC.
Enfin, j’ai installé les unités d’émission et de › Démarrez l’EDI Arduino, choisissez n’importe quelle carte, sélectionnez l’interface USB
réception dans deux boîtiers assortis. Les de la carte du récepteur et démarrez le moniteur série.
tests de mon système OTA ont montré la fiabi- › Toutes les données envoyées par la carte devraient maintenant s’afficher.
lité de la transmission à travers deux étages
avec des plafonds en béton armé. Dans
l’ensemble, le système procure une installa-
tion de « câble USB virtuel » pratique, fiable
et à longue portée, utile pour le développe-
ment et le débogage à distance d’applica-
tions IdO.
200549-01

PRODUITS

> Offre groupée : livre « The Complete ESP32 Projects Guide » +


Des questions, carte ESP32-DevKitC-32D
des commentaires ? www.elektor.fr/19897
Envoyez un courriel à l’auteur
([email protected]) ou contactez
Elektor ([email protected]).

Contributeurs
Idée, conception et texte : Peter Tschulik
Rédaction : Rolf Gerstendorf > Compilation d’articles sur l’ESP32 et l’ESP8266 (PDF)
Mise en page : Giel Dols www.elektor.fr/18516
Traduction : Denis Lafourcade

LIENS
[1] Les bases de la programmation Over The Air (OTA) de l’ESP32 avec l’EDI Arduino : https://lastminuteengineers.com/esp32-ota-
updates-arduino-ide/
[2] Module « Long Distance Wireless UART-RS232 » : http://www.aliexpress.com/i/32242647632.html
[3] USB Host Shield de SparkFun : http://www.sparkfun.com/products/9947
[4] USB-Host-Shield pour Arduino : https://bit.ly/3fJQrTO
[5] Carte hôte-USB v2.4 : https://www.hobbytronics.co.uk/usb-host-board-v24
[6] Hôte-USB – Pilote série pour FTDI, CP210X, PL2303, CH340/1 et CDC : https://www.hobbytronics.co.uk/usb-host-serial
[7] Adaptateur RS232-TTL : https://bit.ly/3peJH3r
[8] Câble adaptateur 2 fonctions USB COM Port DB9 TTL232 RS232 TTL 232 CH340T USB2.0 : https://bit.ly/3fHUGQ3
[9] Adaptateur USB-2.0 vers série LogiLink : https://bit.ly/3ma21Kg
[10] Instructions de configuration pour le module « Long Distance Wireless UART-RS232 », fichier HY035_HM-TRP-RS232.rar :
https://1drv.ms/u/s!AjrAGEbCBLlsugxiqmd1FRRCJjic

lektor mars/avril 2022 95


projet

station de mesure de
température et d’humidité,
au format de poche
Utilisation de modules
prêts à l’emploi
Aarav Garg (Inde)

La réalisation de projets électroniques


modernes a été considérablement
facilitée par l’utilisation de modules prêts
à l’emploi. Il suffit d’un peu de câblage
et de micrologiciel pour créer un nouvel
appareil comme celui présenté ici.

Luc Lemmens, labo d’Elektor : le concepteur de ce montage est un jeune innovateur indien de 15 ans, Aarav Garg, qui est plus qu’heureux
de présenter sa « station météo de poche » dans notre magazine. Elle contient un Arduino Nano, un écran OLED de 0,96" et un capteur
d’humidité et de température DHT11. Elle est alimentée par une batterie LiPo qui peut être rechargée via un module de charge USB. Un
boîtier imprimé en 3D et fabriqué sur mesure complète cet appareil portable et pratique. Nous allons laisser la parole à Aarav pour qu’il
nous explique comment il est parvenu à ce montage. Je l’ai reproduit et testé avec succès au laboratoire d’Elektor. On trouvera quelques
instructions et commentaires supplémentaires dans les encadrés.

Dans cet article, vous apprendrez à construire nécessaires, comme le montre la figure 1. Rassemblez et/ou achetez tout ce qui est
une station météo de poche à base d’une carte Les composants requis pour ce projet sont nécessaire et passez à l’étape suivante.
Arduino Nano. Il s’agit d’un appareil compact les suivants :
que vous pouvez emporter n’importe où, dans > Arduino Nano avec câble Étape 2 : disposition des
votre poche, et qui vous donnera la tempé- > Module à capteur de température DHT11 composants
rature et l’humidité en temps réel sur son > Écran OLED de 0,96 pouce Il nous faut maintenant planifier la disposi-
écran OLED. Ainsi, vous saurez toujours s’il > TP4056, module de charge de batterie tion de tous les composants à l’intérieur d’un
faut prendre un parapluie ou une ombrelle ! > Petite batterie ( j’ai utilisé une batterie boîtier. Je voulais que l’appareil soit aussi fin
L’appareil est équipé d’une batterie LiPo rechar- LiPo de 160 mAh) que possible, afin qu’il tienne aisément dans
geable de 160 mAh. Il s’agit d’un excellent projet > Interrupteur à glissière une poche. J’ai donc étalé tous les compo-
d’apprentissage et amusant à réaliser. sants en évitant une structure à plusieurs
Outils : couches qui aurait certes diminué la longueur
Étape 1 : rassembler les > Fer à souder et la largeur de l’appareil, mais aux dépens de
composants > Fils de câblage son épaisseur.
La première chose à faire au début de tout > Pistolet à colle chaude Reportez-vous à la figure 2 pour voir
projet est de rassembler les composants > Imprimante 3D pour le boîtier (facultatif) comment j’ai disposé les composants à l’inté-

96 mars/avril 2022 www.elektormagazine.fr


Figure 1. Modules/composants
nécessaires.

rieur de ma station météo de poche. Vous principe, auquel vous pouvez vous référer si Étape 4 : soudage / réalisation
pouvez aussi le faire à votre idée. nécessaire. Nous devons connecter la batte- des connexions
rie à son module de charge et la sortie de ce Maintenant, il ne nous reste plus qu’à souder
Étape 3 : schéma module à la carte Arduino Nano. J’ai utilisé une les fils de liaison entre les modules selon le
À cette étape, il s’agit de concevoir un schéma carte Arduino Nano en raison de sa taille qui schéma que nous avons dessiné précédem-
pour notre station météo de poche. Il est en est parfaite pour ce projet ! Ensuite, connectez ment. Coupez les fils à la bonne longueur,
fait très simple, car il n’y a que très peu de le module de capteur de température et l’écran cela évitera un fouillis de fils plus tard. Effor-
modules à interconnecter, et aucun module OLED à la carte Arduino. Après cette décou- cez-vous de réaliser des soudures précises
à modifier. La figure 3 donne le schéma de verte du schéma, passez à l’étape suivante. pour éviter tout court-circuit. Tout ce proces-

Figure 2. Disposition des modules. Figure 3. Dessin Fritzing montrant les interconnexions.

lektor mars/avril 2022 97


pour l’impression du boîtier sont disponibles
en téléchargement sur la page Elektor Labs de
ce projet [1]. Passons maintenant à l’insertion
de l’ensemble du circuit à l’intérieur du boîtier
et à sa fixation.

Étape 7 : mise en place du circuit


dans le boîtier
Il s’agit maintenant de placer l’ensemble du
circuit à l’intérieur du boîtier fabriqué à l’étape
précédente. Pour donner à l’appareil l’aspect
professionnel requis, il est très important que
tous les ports soient placés avec précision
dans leurs découpes respectives. Pour assurer
Figure 4. Après la réalisation de la plupart des Figure 5. Conception du boîtier, réalisée avec
interconnexions. Tinkercad. le bon fonctionnement de l’appareil, tous les
composants doivent être solidement fixés à
leur place et ne pas bouger à l’intérieur du
boîtier. Pour cela, j’ai utilisé de la colle chaude.
sus peut paraître fastidieux, mais vous en Étape 6 : fabrication du boîtier La figure 6 montre le résultat. Une fois que
serez récompensé plus tard, croyez-moi ! J’ai conçu le boîtier de la station météo de vous avez terminé, passez à l’étape suivante.
Une fois que vous avez terminé les soudures, poche (fig. 5) avec Tinkercad, un logiciel
ça doit ressembler à ce que montre la de CAO extraordinaire. Il est conçu pour Étape 8 : ajout de l’interrupteur
figure 4. Passez alors à l’étape suivante. des utilisateurs de tout niveau de compé- L’opération précédente terminée, il est temps
tence en CAO, même débutants. Je n’ai pas d’ajouter l’interrupteur à glissière dans son
Étape 5 : après le soudage d’imprimante 3D, je me suis donc rendu sur emplacement dédié. Nous n’avions pas encore
Tout ce paquet de modules et de fils ne peut le site d’IAmRapid, j’ai téléchargé mes fichiers connecté l’interrupteur au circuit, car il doit
certes pas rester tel quel : il faut le loger dans STL pour obtenir un devis instantané et j’ai être inséré dans le boîtier depuis l’extérieur
un boîtier pour qu’il prenne un aspect profes- commandé les pièces dans la foulée. Le (fig. 7).
sionnel. Et la meilleure option qui s’offre à boîtier s’est avéré d’une grande qualité. Après avoir inséré l’interrupteur dans son
nous est l’impression 3D. Alors, passez à Heureusement, toutes les découpes que emplacement, utilisez deux petites vis pour
l’étape suivante pour concevoir le boîtier et j’avais prévues lors de la conception pour le maintenir en place. Connectez ensuite les
l’imprimer ! les différents modules et ports se sont deux fils, l’un provenant du VCC de la carte
avérées parfaites à 100%. Les fichiers 3D Arduino et l’autre de la sortie positive du
module de charge de la batterie. De cette
façon, la manœuvre de l’interrupteur allumera
le circuit complet.

Étape 9 : fermeture du boîtier


Maintenant, nous devons fermer le boîtier. J’ai
utilisé quelques vis pour fixer le couvercle du
boîtier. J’avais prévu des trous de vis dès la
conception du boîtier, prévenant ainsi tout
problème ultérieur.
Assurez-vous que le couvercle est en place
pour que l’appareil ait un aspect profession-
nel et soit pratique à transporter ! J’ai person-
nalisé l’appareil en mettant mon logo sur le
couvercle.

Étape 10 : bataille de codage !


Nous en arrivons à ce qui distingue notre
appareil d’une simple boîte en plastique sans
intérêt : le micrologiciel de l’Arduino. Nous
Figure 6. L’électronique collée à chaud à Figure 7. L’interrupteur est fixé à l’extérieur du allons donc programmer notre station météo
l’intérieur du boîtier. boîtier. de poche pour qu’elle fasse son travail avec

98 mars/avril 2022 www.elektormagazine.fr


Données du capteur rature et d’humidité du capteur sont culière de température et d’humidité
Le DHT11 est un capteur d’humidité et de affichés et utilisés pour calculer l’indice relative ; elle est calculée dans la biblio-
température bien connu dans le milieu de chaleur [2], la troisième valeur affichée thèque Arduino DHT11. Il ne faut pas le
des faiseurs. Ce n’est pas l’appareil le plus en bas de l’écran LCD (intitulée « Feels »). confondre avec la température ressen-
précis, mais il est bon marché et large- Il s’agit de la température perçue par une tie, qui tient compte de l’influence de la
ment disponible. Les relevés de tempé- personne pour une combinaison parti- vitesse du vent.

Le croquis Arduino
Avec des projets comme celui-ci, rien ne fonctionne sans micrologiciel, en l’occurrence le croquis Arduino. Comme pour de nombreux
modules, circuits intégrés et capteurs ordinaires, il existe des bibliothèques Arduino prêtes à l’emploi qui facilitent grandement la vie
du programmeur. Le croquis d’Aarav utilise – entre autres – des bibliothèques graphiques, de contrôle de l’écran OLED, de lecture et
de traitement des données du capteur DHT. Le listage ci-dessous contient les fonctions setup() et loop() du croquis, montrant que
seule une quantité minimale de code est nécessaire pour faire fonctionner la station météo, le gros du traitement étant effectué par les
fonctions des bibliothèques. Deux instructions sont nécessaires pour lire la température et l’humidité du DHT11, et une troisième pour
calculer l’indice de chaleur à partir des données du capteur. Le reste de loop() affiche les valeurs obtenues sur l’écran. La plus grande
partie du croquis, qui n’est pas reproduite ici, sert à afficher le logo de l’auteur à l’écran lorsque l’appareil est mis sous tension ou réinitia-
lisé. Les données du capteur sont également envoyées au moniteur série de l’EDI Arduino à des fins de débogage.

void setup() {
Serial.begin(9600);
dht.begin();
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F(“SSD1306 allocation failed”));
for(;;); // don’t proceed, loop forever
}
testdrawbitmap(); // draw the required image
delay(1000);
}
void loop() {
float h = dht.readHumidity(); // read humidity
float t = dht.readTemperature(); // read temperature
float hic = dht.computeHeatIndex(t, h, false); // compute heat index for temp in °C
// Printing the results on the serial monitor
Serial.print(“Temperature = “);
............
}

Que faire si ça ne marche pas ? votre code, par exemple un oubli d’initia- lui-même a un défaut : essayez de le
Si vous lisez ceci, c’est que vous avez liser l’écran ou une assignation d’adresse remplacer !
sûrement réalisé le montage. S’il fonctionne : I2C incorrecte. Revérifiez votre code et
bravo ! Sinon, vous aurez appris ce qu’il faut testez si l’écran lui-même fonctionne ou Ça fonctionne avec le câble USB mais
faire pour construire quelque chose, mais non. Si oui, essayez de modifier le code. pas avec la batterie : c’est le signe d’un
aussi ce qu’il ne faut pas faire, ce qui est au Toutes les lectures affichent « NA » : cela problème avec votre batterie ou peut-être
moins aussi important. se produit si votre capteur de température avec les connexions de la batterie !
a un problème. Soit vous avez fait une
L’écran LED ne s’allume pas : soit vous erreur de connexion à la carte Arduino :
l’avez fusillé, soit il y a une erreur dans revérifiez le câblage. Soit le capteur

lektor mars/avril 2022 99


Notes du laboratoire d’Elektor est un peu plus difficile à enlever, mais on DHT11 lui-même, mais aussi (entre autres)
sur le matériel y arrive par la même méthode. une résistance de rappel sur la broche
Pour une réalisation compacte de la L’écran de 0,96” que j’ai commandé avait de sortie de données. La résistance de
station météo de poche d’Aarav, il faut aussi des broches que j’ai enlevées pour rappel interne de l’entrée d’un Arduino
avoir un Arduino Nano sans broches gagner de la place dans le boîtier. Nano peut être trop élevée pour assurer
soudées, mais malheureusement les Mais avec ces écrans, il peut y avoir un le bon fonctionnement du capteur, donc
cartes Nano dans mon tiroir en avaient autre problème : la plupart d’entre eux une résistance supplémentaire de 10 kΩ
toutes. Cela les rend trop hautes pour peuvent être configurés pour une inter- peut être nécessaire si vous - comme je
prendre place dans un boîtier plat et il face SPI ou I2C, le projet utilisant cette l’ai fait - utilisez un capteur DHT11 séparé.
est moins facile d’y souder des fils de dernière. J’ai fait l’erreur de commander Mais avec mon prototype, ce fut inutile,
connexion. Bien sûr, vous pouvez acheter la version SPI, et, même si la reconfigu- le signal de données apparaissait beau
un module sans broches, mais avec un ration est possible, je ne la recommande et propre sur un oscilloscope.
peu de précautions, les broches peuvent pas pour ce projet. Non seulement Même si la réalisation matérielle est
être enlevées sans endommager la carte. parce que cela implique une soudure relativement simple, je vous conseille de
Coupez les broches à ras de la base en de CMS, mais aussi parce que quelques programmer l’Arduino Nano et de tester la
plastique à l’aide d’une pince diagonale, composants et câblages supplémentaires station météo avant de coller les modules
puis découpez le plastique. Enfin, dessou- sont nécessaires. dans le boîtier, quand il sera encore facile
dez les restes des broches et enlevez la À la différence du dessin Fritzing (fig. 3), de corriger les éventuelles erreurs de
soudure avec une pompe ou une tresse à Aarav a utilisé un module DHT11 : une soudage.
dessouder. Le connecteur ISP à 6 broches carte qui ne contient pas seulement le

une efficacité maximale. Le croquis Arduino


peut être téléchargé à partir de la page Elektor Contributeurs
PRODUITS
Labs de ce projet [1], mais si vous le souhai- Idée, conception et texte : Aarav Garg
tez, vous pouvez aussi mettre les mains dans Illustrations : Aarav Garg,
le cambouis et écrire le code vous-même ! Patrick Wielders, Luc Lemmens > Carte Nano V3 de JOY-iT
Traduction : Helmut Müller www.elektor.fr/18615
Étape 11 : et c’est parti ! Rédaction : Luc Lemmens
Et voici notre station météo de poche entière- Mise en page : Giel Dols > Écran OLED bleu, 0,96”, I²C,
4 broches
ment opérationnelle. Elle dispose d’un écran
www.elektor.fr/18747
OLED pour vous permettre de profiter de la
météo de manière optimale. Elle comprend > Livre en anglais, « The Ultimate
également une batterie rechargeable avec Des questions, Compendium of Sensor Projects »,
un port de charge USB, et honnêtement, la des commentaires ? Elektor
www.elektor.fr/19103
batterie dure assez longtemps pour qu’elle Envoyez un courriel à l’auteur
n’ait que rarement besoin d’être rechargée. ([email protected]) ou contactez
Elle dispose également d’un port Arduino Elektor ([email protected]).
Nano pour télécharger par la suite du code
modifié. L’interrupteur présent à l’extérieur est
également d’usage très pratique. En outre,
la réalisation compacte de l’appareil permet
de le glisser même dans la plus petite des
poches ! Vous serez fier d’arborer cet appareil
partout où vous allez et de l’utiliser comme
station météo.
210394-04

LIENS
[1] Page Elektor Labs de ce projet : www.elektormagazine.fr/labs/pocket-weather-station
[2] Wikipédia sur l’indice de chaleur : https://en.wikipedia.org/wiki/Heat_index

100 mars/avril 2022 www.elektormagazine.fr


bon à savoir

réparation
des batteries au lithium
Économisez de l’argent et augmentez la puissance !
Thomas Scherer (Allemagne)

C’est une histoire banale. Après quelques années


d’utilisation, le tournevis sans fil doit être
rechargé plus souvent et l’aspirateur sans fil n’a
plus assez d’énergie pour ramasser vos miettes.
Dans mon cas, c’est le robot tondeuse à gazon
qui a rendu l’âme au milieu de la tonte, refusant
obstinément de retourner à sa station de charge.
La solution la plus simple et la plus coûteuse
consiste à acheter une batterie de rechange. Mais
avez-vous pensé à tout simplement remplacer
les cellules de la batterie ? Cette solution est plus
économique et réduit les déchets. En outre, vous pouvez
choisir des cellules de remplacement d’une capacité
supérieure à celle des cellules d’origine. Il ne s’agit plus
d’une simple réparation, mais d’une mise à niveau !

Les appareils alimentés par des batteries Li-ion conservent leur Tout est devenu silencieux...
puissance certainement beaucoup plus longtemps que ceux du passé Dans mon cas, j’avais remarqué que ma tondeuse à gazon Robbi [1]
alimentés par des cellules NiMH. Cependant, après de nombreux cycles s’arrêtait de tondre au bout d’une demi-heure pour rallier sa station
de charge/décharge, il arrive un moment où la meilleure batterie au de charge pour une recharge d’une heure et demie. Auparavant, ça
lithium a tellement perdu de sa capacité de stockage d’énergie qu’elle prenait une heure de recharge pour une heure de tonte. Ce changement
doit être remplacée. J’en ai fait l’expérience avec mes propres appareils de routine était-il un signe ? J’avais la tondeuse Robbi depuis quatre
et mes amis et collègues me demandent souvent conseil à ce propos. ans et je savais qu’elle était alimentée par des cellules au lithium, le
La solution la plus simple consiste à consulter le site web du fabricant moment était sans doute venu de les remplacer.
de l’appareil pour voir si une batterie de rechange est disponible. Plus tard dans l’après-midi, j’ai remarqué que le silence régnait dehors
Parfois, il n’y en a pas et, quand il y en a, son prix peut être dissuasif. depuis un moment. Là, au milieu de la pelouse, Robbi s’était éteinte.
Dans mon cas, l’appareil fonctionnait parfaitement et semblait bien Impossible de la réveiller en appuyant sur ses boutons. Je l’ai traînée
parti pour quelques années encore – avec juste une batterie neuve. jusqu’à la station de recharge et l’ai mise en charge. Robbi a fini
Dans ce cas, il peut être intéressant de démonter la batterie et de par s’animer et son menu utilisateur m’a indiqué que son temps de
remplacer les cellules individuelles le moment venu, ce qui est souvent fonctionnement cumulé était de 2 938 heures. Comme cela correspond
moins cher. On peut même envisager d’améliorer les performances à près de 1 500 cycles de charge, il était clair que la batterie n’en avait
en remplaçant les cellules d’origine par des cellules de puissance plus pour longtemps.
supérieure. Si vous avez retenu cette solution, préparez-vous à vous Et ce fut pire que je le craignais. Après une charge complète, Robbi
armer de tournevis et du fer à souder. a terminé son travail, mais elle ne s’est pas réveillée le lendemain

lektor mars/avril 2022 101


bout de l’écrou en laiton ait été cassé (fig. 1b), il semblait récupérable.
Le logement des piles étant conçu pour être étanche, l’écrou devait être
remonté pour que les quatre vis puissent être suffisamment serrées
pour assurer une bonne étanchéité. J’ai utilisé une colle époxy pour
fixer l’écrou, qui a l’air de n’avoir jamais bougé (en haut à gauche sur
figure 2b). La partie mécanique réparée, l’attention s’est portée sur la
batterie que la figure 2b montre dans son logement. Le contour des
cinq cellules est clairement visible, et une règle graduée a confirmé
qu’il s’agissait de cellules 18650. Il y a également beaucoup d’espace
libre (figure 2c), ce qui m’a fait réfléchir : pouvais-je mettre cet espace
à profit en utilisant des cellules de rechange plus nombreuses ou plus
grandes ? Ma décision était maintenant prise ; un simple échange
standard de batterie n’était plus une option.

Échange de cellules
La figure 2a montre que deux évidements dans le couvercle de la
Figure 1. L’une des vis avait été vissée de travers à l’assemblage. Elle
a fini par sortir, mais en emportant l’écrou à visser avec elle. L’écrou a batterie empiètent sur l’espace disponible, ce qui exclut l’installation
été remis en place et collé. de deux rangées de cinq éléments pour doubler la capacité. Il existe
cependant des cellules plus chères au format 18650 avec une capacité
supérieure. Certaines marques parmi les plus réputées proposent des
cellules de capacité jusqu’à 3500 mAh, mais au prix de 10 € pièce.
matin. La remettre en charge n’a rien changé. J’avais récemment traité AliExpress, eBay et d’autres sites similaires en proposent avec des
la pelouse avec de l’engrais et il avait plu abondamment. Il me fallait caractéristiques encore supérieures, des offres à considérer avec
donc agir rapidement. Je pouvais presque entendre l’herbe pousser... prudence !
J’étais sur le point de passer une commande de cinq cellules quand je
Désosser un pack ? suis tombé sur d’autres cellules au format 21700, un peu plus inhabituel.
Chez le fabricant, le prix de la batterie de rechange était d’environ Bien que légèrement plus grandes, elles offraient une capacité
100 €, alors que chez un autre fournisseur elle en coûtait la moitié. Pas nettement supérieure pour le même prix. J’étais sûr de pouvoir les
mal ! D’après la spécification, il me fallait un pack de rechange de 18 V installer d’une manière ou d’une autre (je pensais à une rangée de trois
avec une capacité de 2,1 Ah. Cela signifiait cinq cellules, probablement
et une rangée de deux pour former un profil en W). Avec une remise
dans le format standard 18650. Pour en avoir le cœur net, j’entrepris
de dévisser le couvercle du logement de la batterie. sur la quantité et les frais de port, les cinq cellules de 4 000 mAh me
Évidemment, ce fut plus facile à dire qu’à faire. Trois des vis sont venues coûtaient 26 € au total. Elles atterrirent dans ma boîte aux lettres deux
facilement, mais la quatrième était complètement bloquée. Finalement, jours plus tard, ce qui n’était pas trop tôt : la pelouse avait sérieusement
elle est sortie, mais en entraînant son écrou à visser, arraché dans le besoin d’être tondue.
processus et bloqué sur son filetage. Il semble que lors de l’assemblage
en usine cette vis ait été vissée de travers et forcée. La figure 1a montre Considérations
l’état de l’emplacement de l’écrou après son retrait, avec quelques L’assemblage d’un pack de batteries à partir de cellules individuelles
copeaux restants. J’ai fini par séparer l’écrou de la vis et, bien qu’un requiert de l’habileté manuelle, des connaissances en électricité et

Figure 2. Couvercle du logement de la batterie (2a), avec la vieille batterie en place (2b) et le logement vide (2c).

102 mars/avril 2022 www.elektormagazine.fr


Fonction bascule du BMS
Lorsque j’ai retiré la batterie représentée sur la figure 3c, j’ai été surpris
de mesurer 19,2 V directement à ses bornes. Avais-je été trop hâtif
en commandant les cellules de rechange ? En revanche, je n’ai pu
mesurer qu’environ 18,5 V sur le connecteur du pack, au niveau de la
connexion au moteur de la tondeuse (à droite de la carte BMS), qui
présentait une impédance de source très élevée. Avec mes doigts,
j’ai pu décharger cette source à la terre, ce qui a fait chuter la tension
à quelques volts seulement. Le BMS était-il défectueux ?
J’ai branché une résistance de charge de 24 Ω directement aux
bornes du pack et j’ai mesuré un courant de 0,75 A et une tension
de batterie de 18,2 V. J’ai ensuite débranché la charge et mis le
pack en charge. Après seulement quelques secondes de charge
à 0,5 A, la sortie de tension du BMS est passée en mode basse
impédance pour tirer un certain courant de la batterie via le BMS.
Il semble que le BMS ait détecté que la tension de la batterie était
passée sous le seuil bas de tension lors de la dernière utilisation de
la tondeuse et qu’il ait bloqué le FET pour déconnecter la batterie.
Cet état « bloqué » avait été verrouillé dans le BMS. Pour le tester,
j’ai connecté une charge de 12 Ω à la batterie. Au bout de cinq
minutes, le BMS a bloqué juste au-dessus de 13 V pour retourner
à l’état normal à la charge suivante.
Figure 3. L’ancienne batterie enveloppée dans du ruban adhésif noir (3a).
Les cellules et la carte BMS sont visibles après enlèvement de la partie Ouf... Avec le BMS prêt à fonctionner, j’ai procédé à l’échange de
supérieure du ruban adhésif (3b). Une cellule 21700 dans son carton et cellules.
déballée, comparée à l’ancien pack de cinq cellules 18650 (3c).

une soudeuse par points. Sur l’ancien pack (déballé sur la figure 3), les 1. Il équilibre les cellules, c’est-à-dire qu’il les maintient toutes à la
pôles positifs et négatifs des cinq cellules sont reliés en série par de même tension ou au même état de charge.
fines bandes de nickel soudées par points. Cette méthode de connexion 2. Il empêche que les cellules soient surchargées.
permanente n’endommage pas la cellule. Bien que la chaleur produite 3. Il déconnecte la charge en cas de sous-tension pour éviter les
lors du soudage par points soit intense, elle est fugace et localisée, de décharges profondes.
sorte que les cellules s’échauffent à peine. Sans doute n’a-t-on jamais
trop d’outils, mais là, je ne vois pas à quoi me servirait une soudeuse La puce de la carte BMS qui a le plus de pattes gère toutes ces tâches.
par points, je ne peux donc pas justifier une telle dépense. Alors, j’ai Il s’agit d’un microcontrôleur spécialisé qui surveille les tensions des
choisi de souder les fils directement sur les pôles de la cellule. Cette cellules (via le connecteur de gauche). En cas de surtension ou de
méthode n’est pas recommandée, sauf si vous suivez certaines règles sous-tension, il déconnecte les cellules à l’aide de deux paires de
et êtes conscient des dangers. MOSFET (en bas). Pour en savoir plus sur l’équilibrage des batteries
Le pack utilisé (fig. 3) est typique de ce qu’on trouve dans de nombreux au lithium, consultez [2] et [3].
autres appareils fonctionnant sur batteries. Il se compose de plusieurs Un pack neuf comprend un BMS, rendant inutile l’ancien BMS qui
cellules connectées en série et d’un module de gestion des batteries fonctionne toujours. Mais si vous ne changez que les cellules, vous
(BMS, Battery Management System), illustré sur les figures 3b et 3c. Cette pouvez le réutiliser. Une caractéristique importante du BMS que
dernière montre également une comparaison de taille entre les nouvelles vous devez connaître est décrite dans l’encadré Fonction bascule
cellules et celles de l’ancien pack. Le BMS remplit trois fonctions : du BMS.

LIENS
[1] « énergie solaire pour les robots de tonte », T. Scherer, Elektor, 07-08/2021 : www.elektormagazine.fr/200553-04
[2] « LiPo Auto Balancer », T. Scherer, Elektor, 06/2010 : https://bit.ly/3AhZa7e
[3] « Battery Management System Tutorial », Elektor Business Magazine, 02/2017 : https://bit.ly/3ly9cND

lektor mars/avril 2022 103


Figure 4. Le pôle positif est plus tolérant à la procédure de Figure 5. Vue de dessous du pack terminé (5a) et vue de dessus avec
soudure (4a). Des fils courts sont soudés au pôle négatif (4b). Les la carte BMS (5b).
cellules sont finalement connectées en série, et des fils plus fins de
mesure de tension sont connectés au BMS (4c).

Comment souder ? acheter des cellules un peu plus chères, munies d’une courte bande
N’ayant pas de poste à souder sous la main, j’ai décidé de souder de nickel déjà soudée par points sur les pôles de la cellule. Ces bandes
le fil directement sur les pôles des cellules. En procédant avec peuvent ensuite être soudées ensemble pour constituer le pack sans
prudence, vous pouvez le faire sans endommager les cellules. Le risque de surchauffe du contenu des cellules. En principe, c’est plus sûr,
dommage thermique subi par les matériaux constitutifs des cellules mais vous devrez isoler les bandes nues pour éviter tout court-circuit qui,
est approximativement proportionnel à l’intégrale du temps et de la en fonctionnement normal, causerait bien plus de dégâts que le bref coup
température. En d’autres termes, vous devez agir rapidement ! Trois de chaleur nécessaire pour souder les fils directement.
choses sont importantes ici. La première : le fer à souder doit être Un gros plan de ma méthode de soudure est visible sur la figure 4. Le
suffisamment puissant pour que la pointe garde sa température pendant pôle positif est constitué d’un capuchon métallique fixé à l’électrode
la soudure. Ainsi, le pôle de la cellule atteint rapidement la température de la pile en trois points. Cette disposition augmente la résistance
de soudure. J’ai utilisé un fer à souder de 90 W possédant un régulateur thermique entre la surface de contact extérieure et la structure interne
qui permet de régler la température de la panne à plus de 400 °C. de la cellule, ce qui la rend moins sensible à l’opération de soudure.
Ensuite, il est conseillé d’utiliser une soudure qui fond à une température Commencez par appliquer de petites gouttes de soudure pour étamer
plus basse. Enfin, il est préférable d’éviter la soudure sans plomb, de rapidement tous les pôles positifs (fig. 4a). Ensuite, coupez des bouts
température de fusion plus élevée et qui ne mouille pas la surface de 3 cm d’un fil à brins de 1,5 mm2, longueur qui laissera suffisamment
aussi bien que la bonne vieille SnPb 60/40 que je préfère. D’après de mou pour le positionnement des cellules dans le pack. Ces bouts
mon expérience, les surfaces de contact métalliques des cellules au sont soudés directement sur les pôles négatifs (fig. 4b) en deux étapes.
lithium prennent facilement la soudure. Avec la température de la panne Tout d’abord, étamez le centre de tous les pôles négatifs avec des
réglée sur 385 °C et l’utilisation de fil de soudure de 1 mm avec flux, petites gouttes de soudure. Ensuite, dénudez et étamez les extrémités
j’ai réalisé chaque soudure en une seconde environ – suffisamment des fils de connexion. Une fois les cellules refroidies, soudez rapidement
vite pour ne pas endommager la cellule. un fil à chacun des pôles négatifs. Dans la figure 4c, vous pouvez voir
Si vous gardez la panne sur les pôles de la cellule nettement plus longtemps la liaison terminée au pôle positif de la cellule suivante pour réaliser
(parce que le fer à souder n’est pas assez puissant, que la température est la connexion en série. Le fil rouge plus fin est la connexion de mesure
trop basse ou que vous utilisez une soudure sans plomb), vous risquez de tension de la cellule à la carte BMS.
de surchauffer et d’endommager la cellule, ce qui aura un impact sur
sa capacité électrique et réduira sans doute son nombre de cycles de Assemblage et test
charge/décharge. Tandis que si le contact ne dure qu’une seconde environ, Le compartiment à piles ne pouvant pas accueillir les cinq cellules
il ne devrait pas causer de dommages. Sinon, vous pouvez également disposées sur deux rangées de trois et deux pour former une

104 mars/avril 2022 www.elektormagazine.fr


configuration en W, j’ai donc dû en trouver une autre. La solution
(fig. 5) : quatre des cellules sont placées les unes à côté des autres
et solidarisées avec de la colle chaude. La cinquième cellule est collée
en travers des quatre autres. La colle chaude rend l’assemblage fini
très robuste. Le mastic silicone ferait aussi l’affaire.
Comme il adhérait correctement sur le nouveau pack, le ruban adhésif
double face à l’arrière de la carte BMS n’a pas eu besoin d’être remplacé.
Il ne restait plus qu’à connecter les six fils du connecteur blanc (fig. 5b)
aux pôles des cellules correspondantes, ainsi que les bornes plus
et moins de l’ensemble, à la carte BMS. Cette opération doit être
effectuée avant de pouvoir tester la nouvelle batterie. Revérifiez tout le
câblage pour vous assurer que vous n’avez pas fait d’erreur. Avoir pris
une photo de l’ancienne batterie vous sera utile à ce stade pour tout
vérifier. La batterie a fonctionné comme prévu et a pu être chargée et
déchargée sans problème.
Avant d’être installé dans le logement de la batterie de la tondeuse,
le pack terminé a été enveloppé dans du ruban adhésif pour rendre
l’ensemble plus robuste et assurer une isolation et une protection
contre l’humidité (fig. 6). Après avoir refermé le couvercle et allumé la
tondeuse, celle-ci s’est mise à se calibrer avec les signaux du câble de
guidage et à commencer à tondre. J’ai annulé cette dernière opération
et mis la tondeuse dans sa station de charge. Il lui a fallu trois heures
entières pour se charger, ce qui indique que la batterie a maintenant
une capacité presque double de celle d’origine.
Le robot tond aussi bien qu’il l’a toujours fait – une heure de tonte suivie
d’une heure de charge. La batterie n’est que partiellement déchargée
au cours de ces cycles, je suppose donc que ces cellules de plus
grande capacité supporteront beaucoup plus de cycles de charge avant
de devoir être remplacées. Avec un peu de chance, je pense que le
nouveau pack devrait durer deux fois plus longtemps que l’original. Si
c’est le cas, ça valait la peine d’y passer trois heures de bricolage. Le Figure 6. Le nouveau pack enveloppé de ruban adhésif orange (6a)
salaire horaire pour le temps passé n’est sans doute pas terrible, mais s’insère parfaitement dans son logement (6b).
j’ai maintenant une batterie pas facile à trouver dans le commerce !
Cette méthode de remplacement des cellules de la batterie n’est bien
entendu pas limitée aux tondeuses à gazon. Vous pouvez l’appliquer pour
prolonger la durée de vie des aspirateurs sans fil et d’autres appareils,
même si l’espace disponible pour la batterie n’est pas aussi généreux.
Le dernier aspirateur où je l’ai utilisée (avec des batteries 18650 à haute
capacité) fonctionne depuis trois ans sans rechigner.
210368-04

PRODUITS

Des questions, des commentaires ?


Contactez Elektor ([email protected]). > OW16B - multimètre numérique avec Bluetooth
d’OWON
www.elektor.fr/18780

Contributeurs > Pince ampèremétrique 4350 de PeakTech


Idée, conception et texte : Thomas Scherer www.elektor.fr/18161
Rédaction : Jens Nickel, Stuart Cording
Traduction : Helmut Müller
> RD6006 - alimentation DC (360 W) de JOY-iT
Maquette : Giel Dols www.elektor.fr/19564

lektor mars/avril 2022 105


tutoriel

Création d’interfaces
3e partie

graphiques en Python
Générateur de mèmes
Créez des mèmes internet à la volée avec la bibliothèque guizero.

P
Laura Sach artant des bases acquises précédemment, Le mème sera créé et affiché dès que l’utilisateur
MAKER

nous allons écrire un programme de entrera du texte dans une zone de saisie. Confions
Laura dirige l’équipe création de mèmes. L’idée est simple : nous cette tâche à une fonction appelée draw_meme(). Son
A Level de la Fon- fournissons en entrée du texte et une image, et le rôle sera d’effacer le contenu précédent, d’afficher
dation Raspberry Pi
chargée des res- code les combinera à la façon des mèmes internet. une image (ici la photo d’un pic noir), et d’insérer en
sources pédagogi- Commençons par créer la fenêtre principale. Elle haut et en bas de cette image le texte entré.
ques en informati- contiendra deux widgets TextBox pour la saisie Comme nous l’avions fait lors de la deuxième
que à destination
du texte à afficher en haut et en bas de l’image. partie, nous utilisons la propriété value pour
des étudiants.
Importez d’abord les widgets nécessaires : récupérer la valeur du widget Text. Autrement dit
@CodeBoom
top_text.value signifie : « STP Python, retourne la
from guizero import App, TextBox, Drawing chaîne de texte contenue dans l’objet top_text ».

Créez ensuite les deux zones de saisie : def draw_meme():


meme.clear()
app = App("meme") meme.image(0, 0, "woodpecker.png")
meme.text(20, 20, top_text.value)
top_text = TextBox(app, "top text") meme.text(20, 320, bottom_text.value)
bottom_text = TextBox(app, "bottom text")
Dans meme.image() et meme.text(), les deux
app.display() premiers nombres passés en argument sont les
coordonnées x et y de l’objet à afficher. L’objet image
Ceci étant posé, passons au widget Drawing qui sera ainsi placé au point (0,0), soit au coin supérieur
Martin contiendra l’image et le texte du mème. gauche de la fenêtre.
MAKER

O’Hanlon Ajoutez la définition de la fonction draw_meme()


Création du mème à votre code, et appelez-la juste avant la ligne
Martin crée des
Ajoutez la ligne ci-dessous juste avant app.display() :
cours, des projets
et des ressources app.display(). La valeur fill donnée à la largeur et
en ligne au sein de à la hauteur du widget Drawing le fera occuper toute draw_meme()
l’équipe Learning
la fenêtre.
de la Fondation
Raspberry Pi. Votre code devrait maintenant être celui du listage
meme = Drawing(app, width="fill", meme1.py.
@martinohanlon
height="fill") Exécutez-le, et modifiez le texte des deux zones

106 mars/avril 2022 www.elektormagazine.fr


TÉLÉCHARGEZ
meme1.py LE CODE COMPLET :
> Langage : Python 3 magpi.cc/guizerocode
Figure 1
001. # Imports ---------------
002.
003. from guizero import App, TextBox, Drawing
004.
005.
006. # Functions -------------
007.
008. def draw_meme():
009. meme.clear()
010. meme.image(0, 0, "woodpecker.png")
011. meme.text(20, 20, top_text.value)
012. meme.text(20, 320, bottom_text.value)
013.
014.
015. # App -------------------
016.
017. app = App("meme")
018.
019. top_text = TextBox(app, "top text")
020. bottom_text = TextBox(app, "bottom text")
021.
Figure 1 Notre mème avec un texte non stylisé. 022. meme = Drawing(app, width="fill", height="fill")
023.
024. draw_meme()
de saisie : le mème n’est pas mis à jour (fig. 1). Pour 025.
026. app.display()
qu’il le soit, il faudrait que la fonction draw_meme()
soit appelée dès que du texte est saisi. C’est
justement ce que permet l’instruction command, que
nous utilisons donc dans nos deux widgets TextBox,
comme ceci : meme2.py
top_text = TextBox(app, "top text", > Langage : Python 3
command=draw_meme)
bottom_text = TextBox(app, "bottom text", 001. # Imports ---------------
command=draw_meme) 002.
003. from guizero import App, TextBox, Drawing
004.
005.
Le texte affiché est 006.
007.
# Functions -------------

plutôt triste. Modifions 008.


009.
def draw_meme():
meme.clear()

son style. 010.


011.
meme.image(0, 0, "woodpecker.png")
meme.text(20, 20, top_text.value)
012. meme.text(20, 320, bottom_text.value)
Le nouveau code est celui du listage meme2.py. 013.
Lancez-le pour vérifier qu’il fonctionne comme 014.
015. # App -------------------
attendu. Le texte affiché est plutôt triste. Modifions
016.
sa couleur, sa taille et sa police : 017. app = App("meme")
018.
meme.text( 019. top_text = TextBox(app, "top text", command=draw_meme)
020. bottom_text = TextBox(app, "bottom text", command=draw_meme)
20, 20, top_text.value,
021.
color="orange", 022. meme = Drawing(app, width="fill", height="fill")
size=40, 023.
font="courier") 024. draw_meme()
meme.text( 025.
026. app.display()

lektor mars/avril 2022 107


20, 320, bottom_text.value, du texte. Pour la couleur et la police, nous utiliserons
Astuce color="blue", le widget Combo de liste déroulante. Pour la taille,
size=28, le widget Slider (glissière, ou curseur) sera parfait.
Nous avons font="times new roman", Commençons donc par les importer :
coupé au niveau
)
des virgules
from guizero import App, TextBox, Drawing,
certaines
instructions Jouez avec les paramètres de votre nouveau code Combo, Slider
pour faciliter (meme3.py) pour trouver un style de texte qui vous
leur lecture, plaise (fig. 2). Passons ensuite à la création d’un widget Combo
mais pour le pour la couleur. Nous l’appelons color, et plaçons
compilateur il Personnalisation du mème son code juste après la définition des widgets
s’agira bel et
Profitons maintenant d’autres widgets de la TextBox :
bien de la même
instruction ! bibliothèque guizero pour permettre à l’utilisateur
de modifier à sa guise la police, la taille et la couleur bottom_text = TextBox(app, "bottom text",
command=draw_meme)
color = Combo(app,

meme3.py
options=["black", "white", "red",
"green", "blue", "orange"],
command=draw_meme)
> Langage : Python 3

001. # Imports ---------------


002. L ’ordre d’apparition à
003. from guizero import App, TextBox, Drawing
004.
005.
l’écran sera le même que
006.
007.
# Functions ------------- celui de la liste.
008. def draw_meme():
009. meme.clear() Le paramètre options fournit les couleurs possibles
010. meme.image(0, 0, "woodpecker.png")
sous forme de liste. Vous pouvez en ajouter d’autres
011. meme.text(
012. 20, 20, top_text.value, (cf. la documentation pour leurs noms anglais). Leur
013. color="orange", ordre d’apparition à l’écran sera le même que celui
014. size=40, de la liste. La valeur par défaut sera celle du premier
015. font="courier") élément, mais vous pouvez aussi la spécifier avec le
016. meme.text(
017. 20, 320, bottom_text.value, paramètre selected :
018. color="blue",
019. size=28, color = Combo(app,
020. font="times new roman", options=["black", "white", "red",
021. )
"green", "blue", "orange"],
022.
023. command=draw_meme,
024. # App ------------------- selected="blue")
025.
026. app = App("meme") Une fois que l’utilisateur a sélectionné une couleur,
027.
028. top_text = TextBox(app, "top text", command=draw_meme) il faut la récupérer et la transmettre au paramètre
029. bottom_text = TextBox(app, "bottom text", command=draw_meme) color des deux instructions meme.text(). Pour cela
030. nous recourons à nouveau à la méthode value :
031. meme = Drawing(app, width="fill", height="fill")
032.
meme.text(
033. draw_meme()
034. 20, 20, top_text.value,
035. app.display() color=color.value,
size=40,

108 mars/avril 2022 www.elektormagazine.fr


Figure 2
meme4.py
> Langage : Python 3

001. # Imports ---------------


002.
003. from guizero import App, TextBox, Drawing, Combo, Slider
004.
005.
006. # Functions -------------
007.
008. def draw_meme():
009. meme.clear()
010. meme.image(0, 0, "woodpecker.png")
011. meme.text(
012. 20, 20, top_text.value,
013. color=color.value,
014. size=40,
015. font="courier")
016. meme.text(
Figure 2 Stylisation du texte. 017. 20, 320, bottom_text.value,
018. color=color.value,
019. size=28,
font="courier")
020. font="times new roman",
021. )
Modifiez aussi l’instruction meme.text du widget 022.
bottom_text (code meme4.py), puis procédez 023.
024. # App -------------------
de la même façon pour ajouter un deuxième
025.
widget Combo de sélection de polices. Voici leur 026. app = App("meme")
liste : ["times new roman", "verdana", "courier", 027.
"impact"]. Utilisez ensuite la méthode font.value 028. top_text = TextBox(app, "top text", command=draw_meme)
dans la fonction draw_meme() pour que la police 029. bottom_text = TextBox(app, "bottom text", command=draw_meme)
030.
affichée soit celle sélectionnée.
031. color = Combo(app,
Créez de même un widget Slider afin que 032. options=["black", "white", "red", "green",
l’utilisateur puisse choisir la taille du texte : "blue", "orange"],
033. command=draw_meme, selected="blue")
034.
size = Slider(app, start=20, end=40,
035. meme = Drawing(app, width="fill", height="fill")
command=draw_meme) 036.
037. draw_meme()
Les paramètres start et end définissent les bornes 038.
de l’intervalle des valeurs possibles (ici 20 et 40). Là 039. app.display()
encore, appliquez la méthode value à l’objet size
pour récupérer la valeur de la taille sélectionnée :

Widget Drawing
meme.text(
20, 20, top_text.value,
color=color.value,
size=size.value, Outre l’affichage d’images et de textes, le widget
font=font.value) Drawing permet de créer différentes formes
géométriques et de les colorer. Pour en savoir plus,
Votre code devrait ressembler au listage 04-meme- consultez l’appendice C du livre magpi.cc/pythongui
generator.py et à la figure 3 une fois lancé. ou la documentation en ligne :
awsie.github.io/guizero/drawing.
L’interactivité serait encore plus grande si

lektor mars/avril 2022 109


Figure 3

04-meme-generator.py
> Langage : Python 3

001. # Imports ---------------


002.
003. from guizero import App, TextBox, Drawing, Combo, Slider
004.
005.
006. # Functions -------------
007.
008. def draw_meme():
009. meme.clear()
010. meme.image(0, 0, "woodpecker.png")
011. meme.text(
012. 20, 20, top_text.value,
013. color=color.value,
014. size=size.value, Figure 3 Le mème et ses widgets de sélection.
015. font=font.value)
016. meme.text(
017. 20, 320, bottom_text.value,
l’utilisateur pouvait choisir une image en la
018. color=color.value,
019. size=size.value, sélectionnant dans une liste (widget Combo) ou en
020. font=font.value, saisissant son nom (widget TextBox). Sauriez-vous
021. ) modifier le code en conséquence ? (VF : Hervé Moreau)
022.
023.
024. # App -------------------
025.
026. app = App("meme")
027.
Python 3 Programming
028. top_text = TextBox(app, "top text", command=draw_meme)
and GUIs
029. bottom_text = TextBox(app, "bottom text", command=draw_meme)
030. Destiné aux ingénieurs,
031. color = Combo(app, scientifiques et amateurs,
032. options=["black", "white", "red", "green", ce livre (en anglais)
"blue", "orange"], explique comment
033. command=draw_meme, selected="blue") interfacer un PC et des
034. projets matériels au moyen
035. font = Combo(app,
d’interfaces graphiques.
036. options=["times new roman", "verdana", "courier",
L’écriture d’applications
"impact"],
037. command=draw_meme) pour environnements
038. de bureau et web est également abordée.
039. size = Slider(app, start=20, end=50, command=draw_meme) Python 3 est un langage éminemment lisible, une
040. qualité essentielle pour écrire rapidement des
041. meme = Drawing(app, width="fill", height="fill") programmes.
042. Guide simple et pratique, cette seconde édition
043. draw_meme() révisée et mise à jour entend mettre le pied à
044. l’étrier aux débutants.
045. app.display() www.elektor.fr/python-3-programming-and-guis

Note de l'éditeur : cet article est paru initialement dans le magazine MagPi (le magazine officiel du Raspberry Pi).
La maison d'édition Elektor publie ce magazine en néerlandais, allemand et français (www.magpi.fr).

110 mars/avril 2022 www.elektormagazine.fr


ABONNEZ-VOUS
ABONNEZ-VOUSETETRECEVEZ
RECEVEZ
Raspberry Pi ET RECEVEZ
ABONNEZ-VOUS
+ Headers
GRATUIT
Souscrivez dès maintenant
un abonnement d’un an
au magazine MagPi, nous
vous offrons :
• Six numéros du magazine MagPi
• Une carte Raspberry avec headers
TOUS LES 2 MOIS, LES
DERNIÈRES NOUVELLES DU
Vos avantages :
RASPBERRY PI ET LES
MEILLEURS PROJETS !
• Prix au numéro réduit
SEULE
MEN T • Chaque numéro directement dans votre
54,95 € boîte aux lettres

PAR AN
(6 NUM
• Tous les numéros disponibles sous forme
ÉROS) numérique (PDF)

• Découverte de chaque nouveau


numéro avant sa sortie en kiosque

100_MagPi06_Subscription_FR.indd 28 20/12/2018 13:50

100_MagPi06_Subscription_FR.indd 28 20/12/2018 13:50


questions d’éthique

Trois questions
fondamentales
Pourquoi,
avec quoi,
avec qui?
Priscilla Haring-Kuipers (Pays-Bas) Pourquoi construisez-vous ce produit ? créativité sont l’expression d’une certaine
Pouvez-vous justifier son existence ? valeur humaine, alors ce besoin exprimera
Je pense que les réponses à Quelles seraient les conséquences s’il n’était lui aussi une certaine valeur. Il justifiera à
ces trois questions devraient pas fabriqué (par vous) ? lui seul la fabrication du produit en question
Quels matériaux et procédés impliquent (un synthétiseur Thing dans notre cas), mais
servir de fondations à sa fabrication ? Que deviendra-t-il lorsqu’il il ne saurait être une raison suffisante pour
l’élaboration de tout produit, ne servira plus ? en construire cent. Je me demande ensuite
qu’il relève du domaine Qui sont les personnes qui le fabriquent ? si le produit né de ce besoin ajoutera quelque
Comment sont-elles traitées ? Quelle sera chose au monde. Je réponds de manière très
médical, musical, ou encore la signification de votre produit aux yeux subjective en regardant ce qui existe déjà sur
de l’Internet des Objets. de ceux qui le possèderont ? Quelle valeur le marché des synthétiseurs (modulaires),
humaine vous apporte sa fabrication ? en partant du principe que mon modèle
apportera une nouveauté significative.
Permettez-moi de détailler l’origine et le Mon équipe et moi nous demandons
rôle de ces questions avec mon regard de ensuite si nos compétences techniques
fabricante de synthétiseurs. nous permettront d’atteindre cet objectif
de nouveauté, mais puisqu’il a été élaboré
Pourquoi à partir de nos connaissances et savoir-faire,
Selon moi, toute personne qui construit la réponse est généralement « Oui ».
quelque chose répond à une pulsion
artistique plus ou moins prononcée. Dans Avec quoi
notre PME, tout part généralement du besoin Notre équipe s’interroge ensuite sur les
de créer un séquenceur musical novateur ou conséquences qu’entraînera la fabrication
de concevoir un oscillateur à basse fréquence de ce nouveau modèle. Nous examinons
d’un nouveau genre. Si vous jugez qu’art et les différents choix possibles quant aux

112 mars/avril 2022 www.elektormagazine.fr


matériaux et procédés nécessaires. Ce
faisant nous dessinons – de façon presque
imperceptible – la frontière de ce que nous
sommes moralement prêts à accepter.
Nous sommes conscients de ne pas faire
tout ce que nous pourrions faire : nos
choix éthiques dépendent d’informations
que nous ne possédons pas toujours, mais
nous l’acceptons et travaillons avec ce qui
est disponible.

La durabilité des produits est pour nous


un souci premier. Comme nous prévoyons
pour nos synthétiseurs Thing une durée de
vie comprise entre 20 et 100 ans, tout ce qui
les compose doit vivre aussi longtemps, ou
au moins pouvoir être remplacé. Outre qu’il
doit être utilisable durant des décennies,
Figure 1. Les cartes de nos modules ‘RectangularThing’.
un instrument de musique électronique
se doit d’être réparable. Pour cela nous
partageons nos schémas de conception,
aidons clients et magasins de musique à
réparer nos instruments, ou les invitons à usines et ateliers d’assemblage (dont l’un les concevons. Et nous voulons que cet
nous les renvoyer pour réparation. nous a semblé factice). Les conditions engagement auprès de nos utilisateurs
de travail s’améliorent, mais restent loin enrichisse également nos vies.
Nous avons choisi d’utiliser de l’aluminium de ce que nous jugerions acceptable en
et du bambou partout où nous le pouvions, Europe. Nous avons donc décidé de confier Tout ce puzzle de questionnements doit
deux matériaux durables et esthétiques. Le la plupart de nos activités d’assemblage à former un tout économiquement viable.
recyclage de l’aluminium est désormais très des entreprises néerlandaises, en partie Si nous fabriquons un modèle Thing que
répandu. L’usine qui fabrique nos boîtiers parce que les conditions de travail y sont nous sommes certains de vouloir fabriquer,
et panneaux de commande utilise un éthiques selon nos critères. Nous avons avec les matériaux que nous voulons et
mélange d’aluminium recyclé à 50 % qui est visité ces usines et fait connaissance avec avec les entreprises et personnes que
lui-même recyclable. Le bambou est quant les femmes qui assemblent nos produits. nous voulons, nos clients accepteront-ils
à lui un bois dur dont la culture n’entraîne le prix auquel nous sommes arrivés ? Ce
pas l’abattage de forêts. Nous réfléchissons aussi à l’usage et au rôle n’est que si la réponse est « Oui » que nous
de nos synthétiseurs Thing. Créer des sons, démarrons une production, généralement
Nos synthétiseurs Thing ne sont pas assez jouer et écouter de la musique, danser au de 100 unités.
vieux pour que la question de leur recyclage son de la musique sont d’après nous des
se pose, mais nous déposons les déchets activités qui rendent le monde meilleur. Et vous, avez-vous déjà abordé la conception
issus de nos prototypes dans des lieux de Savoir que nous y contribuons est pour d’un produit selon cet angle ? Vos réponses
recyclage appropriés. nous gratifiant, et nous nous efforçons aussi nous intéressent !
de faciliter la créativité musicale avec
Avec qui et pour qui nos produits. C’est pour cela que nous 210663-04 – VF : Hervé Moreau
La fabrication de nos synthétiseurs Thing
implique de nombreuses personnes.
Celles que nous connaissons le moins
sont celles qui sont le plus éloignées de Forum mondial de l’électronique éthique
nous. Nous ne savons pas qui extrait L’objectif du Forum mondial de l’électronique éthique (WEEF,
nos matériaux, ni qui les transforme en World Ethical Electronics Forum) est de réunir les concepteurs
composants. Nous achetons certains de du monde entier autour d’un débat public sur l’éthique et
ces composants à des usines de Taïwan, les objectifs de développement durable. La première édition
et supposons donc qu’ils y sont fabriqués, s’est tenue le 18 novembre 2021 à Munich. Pour en savoir
mais vraiment nous n’en savons rien. plus sur le WEEF et la prochaine édition 2022, visitez la page
Nos circuits imprimés sont fabriqués à www.elektormagazine.com/weef.
Shenzhen, où nous avons visité plusieurs

lektor mars/avril 2022 113


hexadoku
casse-tête pour elektorniciens

La dernière page de votre magazine propose Une grille hexadoku est composée de chiffres du système
toujours une grille de sudoku particulière. hexadécimal, de 0 à F. Remplissez le diagramme de 16 x 16 cases
de telle façon que tous les chiffres hexadécimaux de 0 à F (0 à 9
Éteignez le fer à souder, oubliez les écrans,
et A à F) n’apparaissent qu’une seule et unique fois dans
rangez les pinces et les fils. Faites travailler chaque rangée, colonne et carré de 4 x 4 cases (délimités par
votre matière grise d’une autre façon : attrapez un filet gras). Certains chiffres, déjà placés dans la grille, en
un crayon pour remplir la grille d’hexadoku. définissent la situation de départ.
N’oubliez pas d’envoyer votre réponse pour Pour participer, inutile de nous envoyer toute la grille, il suffit de
tenter de gagner un bon d’achat. nous donner la série de chiffres sur fond grisé.

Participez et gagnez ! Où envoyer votre réponse ?


Nous tirons au sort cinq des Envoyez votre réponse
réponses internationales correctes (les chiffres sur fond grisé)
reçues dans les délais ; leurs auteurs avec vos coordonnées par courriel,
recevront chacun un bon d’achat avant le 15 avril 2022 à l’adresse
Elektor d’une valeur de 50 €. [email protected]

LES GAGNANTS
La solution de la grille du numéro de janvier/février 2022 est FA028.
La liste des gagnants est publiée ici : www.elektormagazine.fr/hexadoku
Bravo à tous les participants et félicitations aux gagnants !

Tout recours est exclu, de même que le sont, de ce jeu, les personnels d’Elektor International Media et leur famille. Un seul gagnant par foyer.

114 mars/avril 2022 www.elektormagazine.fr


De nombreux outils de
développement en un seul endroit
Provenant de centaines de fabricants fiables

Choisissez parmi une vaste


sélection de produits sur
mouser.fr/dev-tools
Grrr. Vous êtes
resté coincé ?

Vous aimez nos projets d’impression Elektor mais


vous avez besoin d’aide ou vous avez une idée,
une question ou un commentaire sur un article ?

Pas de soucis. Les ingénieurs d’Elektor, les


rédacteurs et les membres de la communauté
sont également actifs sur les médias sociaux.

Vous pouvez nous trouver ici :

www.elektor.fr/FB www.elektor.fr/TW www.elektor.fr/YT www.elektor.fr/insta www.elektor.fr/LI

Vous aimerez peut-être aussi