Elektor France - Mars-Avril 2022
Elektor France - Mars-Avril 2022
Elektor France - Mars-Avril 2022
(B) 16,50 €
(CH) 29,00 FS
(CAN) 20.99 $ca
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
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 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.
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
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)
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
Figure 3. Schéma de
principe des blocs
fonctionnels de
NEORV32 (source :
Github / Nolting,
S. [20]).
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.
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
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
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
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.
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
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 :
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.
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();
}
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
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
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.
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.
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
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é
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
N ° de commande.:
ARD TINKER BOT
PRODUITS
236,96 (197,47)
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
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)
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
+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
10k
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
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)
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.
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
approche DIY
de la sécurité et de
l’espionnage électronique
Chauffez ou refroidissez la SRAM
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 !
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
Contributeurs
Texte : Luka Matic
Rédaction : Jan Buiting
Mise en page : Giel Dols
Traduction : Yves Georges
PRODUITS
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
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
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.
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
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é ?
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 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 !
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.
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).
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
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
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
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.
> 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/
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
P1= P 2
LIEN
Embedded
Development
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.
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)
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"
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(())
}
#![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.
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.
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)
nombre d’années passées dans un emploi (source : Zippia) (Sources : Built In, site de recherche sur les
carrières Zippia)
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
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)
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
relais
à bobine mobile
David Ashton (Australie)
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,
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
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
1µ
GND
2
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 !
Prix : 199,95 €
Prix (membres) : 99,95 €
www.elektor.fr/20073
Prix : 299,00 €
Prix spécial : 269,00 €
www.elektor.fr/20044
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
www.elektor.fr/20041 www.elektor.fr/20016
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.
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.
voyage dans
les réseaux neuronaux
(4 partie)
e
Les neurones embarqués
Figure 2. Installation de la bibliothèque logicielle du capteur RVB Adafruit TCS34725 dans l’EDI Arduino.
network.setLearningRate(0.5);
network.
setBiasInputToHidden(0.35);
network.
setBiasHiddenToOutput(0.60);
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
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
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
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
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
Figure 6. Schéma interne du LM311, avec circuit de limitation du courant de sortie (en bas à
droite). (Source : Texas Instruments)
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
LIENS
programmation d’automates
avec le Raspberry Pi et le projet OpenPLC
Visualisation des programmes PLC avec 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 ? ».
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.
LIEN
[1] Ressources du livre/page d’information : www.elektor.fr/plc-programming-with-the-raspberry-pi-and-the-openplc-project
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é
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
sous
votre
radar
Des microcontrôleurs
que vous devriez connaître
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.
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-
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
surveillance et débogage
sans fil
Une solution pour Arduino, ESP32 et Cie
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
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
PRODUITS
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
station de mesure de
température et d’humidité,
au format de poche
Utilisation de modules
prêts à l’emploi
Aarav Garg (Inde)
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é-
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.
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
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
réparation
des batteries au lithium
Économisez de l’argent et augmentez la puissance !
Thomas Scherer (Allemagne)
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
É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).
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
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
PRODUITS
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 ».
meme3.py
options=["black", "white", "red",
"green", "blue", "orange"],
command=draw_meme)
> Langage : Python 3
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
04-meme-generator.py
> Langage : Python 3
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).
PAR AN
(6 NUM
• Tous les numéros disponibles sous forme
ÉROS) numérique (PDF)
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
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é.
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.