0% ont trouvé ce document utile (0 vote)
126 vues132 pages

Projets électroniques pour l'été 2023

Le numéro de juillet-août 2023 d'Elektor Magazine présente divers projets électroniques, y compris un téléphone à cadran rotatif utilisé comme télécommande. Il aborde également des sujets tels que les capteurs IoT, les standards de domotique, et l'utilisation de l'intelligence artificielle dans le domaine de l'électronique. Un hors-série spécial circuits est annoncé pour août 2023, promettant plus de 50 projets à réaliser soi-même.

Transféré par

fred_depriester
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
126 vues132 pages

Projets électroniques pour l'été 2023

Le numéro de juillet-août 2023 d'Elektor Magazine présente divers projets électroniques, y compris un téléphone à cadran rotatif utilisé comme télécommande. Il aborde également des sujets tels que les capteurs IoT, les standards de domotique, et l'utilisation de l'intelligence artificielle dans le domaine de l'électronique. Un hors-série spécial circuits est annoncé pour août 2023, promettant plus de 50 projets à réaliser soi-même.

Transféré par

fred_depriester
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ISSN 0181-7450 F : 15,50 €

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

502 JUILLET & AOÛT 2023 (And) 15,50 €


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

Basé sur le RP2040


Le téléphone à
cadran rotatif
comme
télécommande

+5V
C3
J4
1 1
VCC 100µ
2 2 10V
GND
CS
3 3
FOCUS SUR
4 4

IdO et capteurs
RST
5 5
D/C
6 6
SDI
7 7
SCK
8 8
LED
9 9
SDO
10
_CLK
11
T_CS
12
T_DIN
T_DO
13 Le capteur de Arduino Uno
SCL Quels standards pour
température unifier la domotique ?
SDA

14 AREF
_IRQ GND
+5V

DS18B20
RESERVED
+5V 13

BZ1
+5V IOREF
RESET
3.3V
12
11 3
IC1

VDD
Matter et Thread se distinguent
1 USB10 40
Connexion au
2
DQ
5V
PB12 GNDGND 1
POWER

9
GND
2 39 8
GND
PB13 GNDDS18B20
bus 1-Wire
DIGITAL (PWM)

VIN
3 38 7

C2 A0
PB14 MOD16 3V3
A1
4 5
37
ANALOG IN

A2
PB15 ICSP 4 RST +3V3
3 1 0
RESET

5 36
MISO

100µ
SCK

A3
VCC A4
PA8 2 PB11
+5V

10V 6 R1
35 FCS

RX PA9 PB10
82k

FSD0 FSD1
IC1 = M R3
CP6002
7 34 FSD2 FSD3

PA10 RESET BOOT PB1


82k

FSVP
TX 5
FSVN
FCLK
IO21
8 33
L 19624 - 502 - F: 15,50 € - RD

IC1B 6
7 IO25 IO22
GND PA11 PB0 MOD1 IO26 IO19

9 DUT 32 1k
Rfb
IO32
IO33
IO23

PA12 PA7 IO27 EN


IO18
IO5
10 1 31 3 C1 IO14 IO10
PA15 IC1A
R2
PA6 IO12 IO9
2 IO13
11 30 47n RXD0
82k

IO15 BOOT
PB3 PA5 IO2
TXD0
IO35

12 +5V
29 ESP32 R4
IO4 IO34

PB4 PA4 Pico-K


it V4
IO0 IO38
82k

3V3 IO37
13 28 GND EN
PB5 PA3 5V GND

14 27 USB
Contrôleur de vitesse par GPS PB6Analyseur d’impédance basé Détecteur de mouvement
3V3

PA2
Plus de contraventions pour 15
p. 11 PB7sur un ESP32 PA1
26
230039
-013 p. 30 Doppler HB100 p. 90
excès de vitesse 16
PB8Simple et de faible PA0 coût !
25 Théorie et pratique
17
PB9
BluePill PC15 24
REGULAR TITLE

PAR EZ-
PRÉ
O U S À
V

un été plein
de projets !

Appel à tous les passionnés d’électronique ! Le numéro


spécial circuits du magazine Elektor paraîtra au
mois d’août 2023 et regorgera de nombreux projets
intéressants. Nous vous invitons à découvrir le monde
fascinant des projets électroniques et à STIMULER
VOTRE CRÉATIVITÉ !

RESTEZ À L’ÉCOUTE !
Tous nos membres recevront ce hors série. Il sera
également disponible dans votre kiosque préféré.

www.elektormagazine.fr/special-circuits

2 May & June 2023 www.elektormagazine.com


ÉDITO

46ème année n° 502


juillet-août 2023 Jens Nickel
ISSN 0181-7450
rédacteur en chef d’Elektor Magazine
No de TVA Intracommunautaire : FR90319937454

Dépôt légal : mai 2023


CPPAP 1125 T 83713
Directeur de la publication : Donatus Akkermans

Elektor Magazine est publié 8 fois par an par


PUBLITRONIC SARL – c/o Regus Roissy CDG
1, rue de la Haye – BP 12910
FR - 95731 Roissy CDG Cedex
IA terrifiante, IA amusante
www.elektor.fr | www.elektormagazine.fr C’est quoi le contraire de Marlon Brando ? Vous ne le savez pas ? Alors regardez la vidéo YouTube
Pour toutes vos questions :
(flippante) à laquelle notre auteure Ilse Joostens renvoie dans son article à la page 46. Cette
[email protected] fois, la chronique porte sur l’intelligence artificielle, et plus particulièrement sur les innom-
brables outils qui génèrent des images, du texte et du code de programme. D’ailleurs, l’IA crée
Devenez membre
maintenant des vidéos entières, et là aussi, les résultats sont étonnants, parfois drôles, mais
www.elektormagazine.fr/abo
souvent un peu effrayants. On peut se demander pourquoi l’intelligence artificielle a tendance à
Publicité : générer si souvent des images d’horreur et d’apocalypse – même dans des publicités ordinaires
Ouafae Hassani
pour des pizzas dans le style des années 1990 (www.youtube.com/watch?v=MpvEXrhnoyw).
Tél. : +31 (0)6 41312932
[email protected]
www.elektormagazine.fr/publicité Cependant, nous, dotés d’une intelligence naturelle, restons maîtres de la situation. Et tant
que c’est le cas, nous devrions tirer le meilleur parti de l’IA. Les programmeurs et les électroni-
Tarifs Annuels :
France 1 an 129,95 € (8 numéros) ciens, en particulier, ont de nombreuses possibilités à cet égard, et c’est pourquoi chez Elektor,
nous avons commencé à les explorer. Je suis certain que vous pourrez bientôt rechercher un
Droits d’auteur certain article dans les immenses archives de notre magazine avec l’aide de l’IA. Il faudrait
© 2023 Elektor International Media B.V.
des années pour retrouver manuellement les innombrables liens croisés entre les projets et
Toute reproduction ou représentation intégrale les articles de fond et pour transférer l’ensemble dans un corpus de connaissances complet
ou partielle, par quelque procédé que ce (si nous parvenons même à imaginer un système viable pour cela).
soit, des pages publiées dans la présente
publication, faite sans l’autorisation de l’éditeur
est illicite et constitue une contrefaçon. Seules Nous aborderons également la génération automatique du code de programme dans les
sont autorisées, d’une part, les reproductions prochains numéros. J’ai des amis qui utilisent maintenant ChatGPT pour écrire des fichiers
strictement réservées à l’usage privé du copiste
batch afin d’éditer des fichiers audio. Je suis curieux de voir ce qu’il y a encore à découvrir, en
et non destinées à une utilisation collective, et,
d’autre part, les analyses et courtes citations particulier pour les électroniciens. Avez-vous déjà fait vos propres tests ? Avez-vous eu de
justifiées par le caractère scientifique ou bonnes ou de mauvaises expériences ? Écrivez-moi à l’adresse [email protected] !
d’information de l’oeuvre dans laquelle elles sont
incorporées (Loi du 11 mars 1957 -art. 40 et 41 et
Code Pénal art. 425).
Certains circuits, dispositifs, composants, etc.
décrits dans cette revue peuvent bénéficier de
droits propres aux brevets; la Société éditrice
n’accepte aucune responsabilité du fait de
l’absence de mention à ce sujet. Conformément
à l’art. 30 de la Loi sur les Brevets, les circuits
et schémas publiés dans Elektor ne peuvent
être réalisés que dans des buts privés ou
scientifiques et non commerciaux. L’utilisation
des schémas n’implique aucune responsabilité Proposez une contribution à Elektor Labs :
de la part de la Société éditrice. La Société Elektor! idées et projets
éditrice n’est pas tenue de renvoyer des articles
qui lui parviennent sans demande de sa part
Vos propositions sont les bienvenues ! Vous La plateforme Elektor Labs est ouverte
et qu’elle n’accepte pas pour publication. Si la souhaitez proposer un article, un tutoriel à tous. Publiez des idées et des projets
Société éditrice accepte pour publication un vidéo ou une idée de livre ? Consultez le électroniques, discutez des défis
article qui lui est envoyé, elle est en droit de
guide de l’auteur et la page de soumission techniques et collaborez avec les autres.
l’amender et/ou de le faire amender à ses frais;
la Société éditrice est de même en droit de d’Elektor :
traduire et/ou de faire traduire un article et de
l’utiliser pour ses autres éditions et activités,
www.elektormagazine.com/submissions. www.elektormagazine.fr/labs
contre la rémunération en usage chez elle.

Imprimé aux Pays-Bas par Senefelder Misset,


Mercuriusstraat 35, 7006 RK Doetinchem
notre équipe
Distribué en France par M.L.P. et en Belgique
par A.M.P.
Rédacteur en chef : Jens Nickel | Rédaction : Asma Adhimi, Roberto Armani, Eric Bogers,
Jan Buiting, Stuart Cording, Rolf Gerstendorf (RG), Ton Giesberts, Hedwig Hennekens, Alina Neacsu,
Certifié PEFC
Dr. Thomas Scherer, Clemens Valens, Brian Tristam Williams | Contributeurs réguliers : David Ashton,
Ce produit est issu de Tam Hanna, Priscilla Haring-Kuipers, Ilse Joostens, Prof. Dr. Martin Ossmann, Alfred Rosenkränzer |
forêts gérées
durablement et de
sources contrôlées Maquette : Harmen Heida, Sylvia Sopamena, Patrick Wielders | Des questions techniques :
PEFC/30-31-151 www.pefc-france.org [email protected]

lektor juillet/août 2023 3


DANS CE NUMÉRO
Elektor n° 502
Juillet - août 2023

le téléphone
à cadran rotatif
comme télécommande
pour allumer la lumière, composez le 1 ;
pour la cafetière, composez le 2

Rubriques 88
FOCUS
construisez un écran IdO sympa
avec le Phambili Newt
3 Édito
97 guide de programmation bare-metal (1)
23 démarrer en électronique …
pour STM32 et autres microcontrôleurs
...l’émetteur-suiveur
106 multimètre Siglent SDM3045X
26 zone D
comparateur à hysteresis à niveaux indépendants 112 la documentation des microcontrôleurs sans peine (3)
schémas de principe, et autres documents
38 visite à domicile
encourageons les réalisations personnelles
46 sur le vif
luddisme moderne Industrie
110 drôle de composants FOCUS
microprocesseurs pour systèmes embarqués 54 quels standards pour unifier la domotique ?
124 rétronique Matter et Thread se distinguent
Transverter pour la bande des 70 cm FOCUS

126 questions d’éthique 58 Matter, ou la concorde des objets


Climate Calling Engineers testez Matter avec la carte Thing Plus Matter et Simplicity
Studio
130 Hexadoku
casse-tête pour elektorniciens FOCUS
62 infographie : IdO et capteurs

FOCUS

Articles de fond 64 Matter, ExpressLink, Rainmaker — de quoi s’agit-il ?


Q&R avec Amey Inamdar d’Espressif

40 la carte d’apprentissage MCCAB pour Arduino Nano FOCUS


plateforme pour le cours « Microcontrollers Hands-On Course” 68 guide d’introduction à la sélection de kits de
développement de microcontrôleurs pour applications
FOCUS
IoT et IIoT
48 B.a.ba capteur : le capteur de température DS18B20
connexion au bus 1-Wire 74 un condensateur n’est pas toujours capacitif !

4 juillet/août 2023 www.elektormagazine.fr


station météo LoRa à
faible puissance
réalisez vous-même
une station météo
à longue portée

construisez un
écran IdO sympa
avec le Phambili Newt 88 116

Projets Bientôt dans ces pages


FOCUS
Le hors-série spécial circuits (août et septembre 2023)
6 le téléphone à cadran rotatif comme télécommande Dans la tradition des circuits de vacances d’Elektor, le prochain
pour allumer la lumière, composez le 1 ; pour la cafetière, numéro sera très épais et contiendra plus de 50 projets à réaliser
composez le 2 soi-même, des circuits rétro, des trucs et astuces et bien d’autres
FOCUS choses encore !
11 contrôleur de vitesse par GPS
plus de contraventions pour excès de vitesse Quelques-uns des points forts :
16 stroboscope RVB avec Arduino > redresseur actif
un instrument utile, instructif et distrayant > un standard de fréquence à faible coût
> compresseur dynamique simple
FOCUS
> petite alimentation solaire
20 bouton poussoir d’urgence sans fil
> générateur THD
sécurité renforcée avec LoRa
> DAC programmable pour vidé
30 analyseur d’impédance basé sur un ESP32 > grand chiffre RVB
simple, comportant peu de composants et de faible coût ! > ChatGPT et Arduino
> boule de Noël à énergie solaire avec radio FM
78 horloge NTP en CircuitPython
> petit simulateur DCF77
pourquoi utiliser ce langage de programmation ?
et bien d’autres choses encore !
FOCUS
90 détecteur de mouvement Doppler HB100
Le hors-série spécial circuit du magazine Elektor sera publié aux
théorie et pratique
alentours du 9 août 2023. La date d’arrivée du magazine papier chez
FOCUS les abonnés dépend des aléas d’acheminement. Le contenu et les
116 station météo LoRa à faible puissance titres des articles peuvent être modifiés.
réalisez vous-même une station météo à longue portée

détecteur de mouvement FOCUS SUR


Doppler HB100
théorie et pratique IdO et
LM358 Mo
dule

VCC
IN

90 capteurs
OUT
GND
PWR LED

MOD1
ARDUIN SCL
O UNO SDA
AREF
RESERV
ED GND
IOREF
13
RESET
12
3.3V
11
5V
10
POWER

+5V GND
Tx OSC 9

lektor
ANT GND GND

juillet/août 2023 5
Rx 8
VIN
ANT
(PWM)

MIX
7
A0
6
DIGITAL

A1
IN

Tx HB100 5
NALOG

ANT A2
ICSP 4
ESET

Rx A3
IF
SO

ANT 3
K
PROJET

le téléphone à cadran
rotatif comme
télécommande
cafetière

allumer
la lumière

Clemens Valens (Elektor)

Même lorsque l’éclairage et les


appareils sont contrôlés par un
système domotique, il est souvent
souhaitable de disposer d’une
commande permettant de mettre en
marche ou à l’arrêt un éclairage, un or
lab • Elekto
r
ventilateur ou quelqu’autre appareil.

kt

lab
Ele
Le téléphone à cadran rotatif TESTED
modifié présenté dans cet article

ab
Ele
remplit cette fonction en composant to

rl
o
r la b kt
k
• Ele
le numéro de l’appareil, tout en
constituant un objet décoratif très
apprécié.
Dans ce projet, nous transformons un vieux téléphone menter les nœuds connectés, possibilité utilisée dans ce
analogique à cadran rotatif en une télécommande et projet (voir ci-dessous). En outre, comme les téléphones
une alarme pour un système domotique. En plus d’être à cadran rotatif ont toujours eu un fil à la patte, il serait
une télécommande (décorative), le téléphone modifié curieux d’en voir un qui n’en a pas. La carte W5100S-
peut également être utilisé comme accessoire dans, par EVB-Pico est donc un bon choix pour cette application.
exemple, un jeu d’évasion. Je suis sûr que de nombreuses
autres applications peuvent être imaginées. Télécommande via MQTT
Le contrôleur domotique (HAC) contrôlé par ce téléphone
Circuit basé sur le RP2040 est Home Assistant (HA), une plateforme d’automatisa-
Le cerveau de ce projet est un microcontrôleur RP2040 tion populaire qui gagne du terrain chaque jour. Toute-
(MCU) monté sur une carte WIZnet W5100S-EVB-Pico fois, étant donné que la télécommande utilise le proto-
(figure 1). Il s’agit essentiellement d’une carte Raspberry cole MQTT, elle peut facilement être intégrée à d’autres
Pi Pico augmentée d’une puce « Internet » W5100S (et systèmes domotiques.
d’un connecteur Ethernet). Son brochage est donc
compatible avec celui de la carte Pico, à ceci près que Connexion du microcontrôleur au
certaines de ses broches (GPIO16 à GPIO21) servent à téléphone
communiquer avec la W5100S. Le téléphone que j’ai utilisé, un modèle français classique
(S63), produit des impulsions à une fréquence de 10 Hz.
Câblé ou sans fil Le mécanisme de numérotation de ce vieux téléphone
Même si les réseaux sans fil semblent aujourd’hui être (figure 2) peut être considéré comme deux interrupteurs :
la norme, le câble n’a pas dit son dernier mot. L’un des l’un indique que la numérotation est en cours (actif/repos)
avantages de l’Ethernet câblé est qu’il est possible d’ali- tandis que l’autre se ferme un certain nombre de fois en

6 juillet/août 2023 www.elektormagazine.fr


fonction du chiffre choisi. Un « 1 » produit une impul- je l’ai constaté. Pour la produire, j’ai construit un simple
sion, un « 9 » neuf impulsions et un « 0 » dix impulsions. générateur de faible puissance à partir de deux signaux
carrés de 50 Hz en opposition de phase produits par le
Connecter ce mécanisme à la carte W5100S-EVB-Pico MCU, qui alimentent les secondaires d’un petit transfor-
est facile ; le faire sans modifier le téléphone demande mateur secteur de 230 VAC dont le primaire est connecté
un peu plus de réflexion. J’ai voulu garder le téléphone à la sonnerie. Un petit transformateur 2× 9 V, 1 VA suffit
aussi proche que possible de son état d’origine. J’y suis pour obtenir un volume sonore appréciable. Le schéma
parvenu par un choix judicieux des points de connexion et complet de l’interface téléphone-microcontrôleur est
des valeurs des résistances de rappel requises (figure 3). représenté sur la figure 5.

Le combiné repose sur un interrupteur ouvert (NO) qui Lecteur MP3


se ferme quand on décroche. Cela modifie le circuit Un module de lecture MP3 a été ajouté pour écouter des
électrique du téléphone, avec un effet sur l’impédance de fichiers audio avec l’écouteur du combiné. Ce module
certains points de connexion du mécanisme de numéro- communique avec le MCU via un port série à 9 600 bauds.
tation, problème qu’il est possible de traiter en choisis- Le choix du fichier MP3 à lire peut se faire par envoi d’un
sant des valeurs relativement faibles pour certaines des message MQTT du HAC au téléphone ou être effec- Figure 2. Le mécanisme
résistances de rappel. tué par le seul MCU. Ce dispositif permet de jouer de la de numérotation du
musique d’attente, de reproduire les tonalités de la ligne téléphone S63 produit
Alimentation de la sonnerie des impulsions à une
téléphonique analogique, de passer des messages préen-
fréquence de 10 Hz.
La sonnerie du téléphone (figure 4) requiert une tension registrés ou de créer une horloge parlante. Les fichiers
alternative relativement élevée, au moins 35 VAC comme audio et musicaux sont stockés sur une carte microSD. 

Figure 1. La carte WIZnet W5100S-EVB-Pico comporte un


microcontrôleur RP2040 connecté à une puce Internet-sur-Ethernet
W5100S. La carte a le même brochage que la carte Raspberry Pi
Pico. Notez cependant que les broches GPIO16 à GPIO21 sont aussi
connectés à la puce W5100S. (Source : WIZnet)

LS1 J1
Blue 1 SW1 SW2
Red 2
TR1
Ear piece 6 3
Pulse
Dialing in Progress
TH1
Blue/White
Red/White

D1 Blue
4 1
Blue
Red

R2

160Ω

J3
J2 Dial
Green 1 R1
MK1 LS2 4 3 2 1 C2
White 2 5 2 750Ω
Red 3 J4
2µ2 C1 1µ 4
Green 4 Red
3
R3 Yellow
Handset C3 SW3 BZ1 2
680Ω

White
1
Bell Blue
150n
Line

230132-014
Hook

D C A B

Figure 3. Pour éviter de modifier le téléphone, j’ai connecté la carte microcontrôleur aux points A (GND), B (décroché), C (impulsions de numérotation) et D
(numérotation en cours).

lektor juillet/août 2023 7


Figure 4. Le mécanisme
de la sonnerie de
l’ancien téléphone. de développement officiel du Raspberry Pi RP2040 MCU.
Je n’aime pas trop cet environnement, car je le trouve
 complexe et encombré par tout le fouillis Cmake. Heureu-
sement, l’EDI Arduino possède un gestionnaire de cartes
à base de RP2040, et j’ai donc porté les bibliothèques
En raison des contraintes d’espace, le lecteur MP3 est WIZnet vers cet EDI. Cela rend les choses beaucoup plus
monté sur une deuxième carte d’essai avec le connec- simples et, je pense, plus accessibles et plus faciles à
teur d’alimentation. Les deux cartes sont reliées par J3 partager. Le programme d’application complet consiste
et J4 (figure 6). L’écouteur du combiné est connecté maintenant en un croquis Arduino et une bibliothèque
directement à la sortie du lecteur MP3. facile à installer [1].

Alimentation électrique MQTT


La carte W5100S-EVB-Pico nécessite une alimentation J’ai composé le programme pour la télécommande
de 5 VDC. Le générateur de haute tension de la sonnerie en me basant sur l’exemple MQTT fourni par WIZnet.
a besoin d’au moins 10 VDC. Les deux paires de fils libres Cela m’a permis d’être rapidement opérationnel. Le seul
d’un câble Ethernet normal sont utilisées pour alimenter problème que j’ai rencontré était un appel manquant et
le téléphone (figure 7). Mon câble de cinq mètres de long non documenté à MilliTimer_Handler (voir le fichier
introduit une chute de tension notable, même avec deux mqtt_interface.h). Une fois que je l’ai ajouté au callback de
conducteurs en parallèle pour chaque connexion d’ali- mon timer milliseconde, MQTT a fonctionné correctement.
mentation. Le téléphone est donc alimenté par une prise
murale de 12 V CA/CC. À l’intérieur du téléphone, un petit mDNS
convertisseur CC/CC fournit les 5 V pour la carte MCU. Comme mon installation de Home Assistant utilise DHCP
pour se connecter au réseau, une nouvelle adresse IP
Logiciel peut lui être attribuée à tout moment. Pour trouver ses
La carte W5100S-EVB-Pico est supportée par des biblio- périphériques et communiquer avec eux, HA utilise le
thèques destinées à être utilisées avec l’environnement DNS multicast, alias mDNS. Comme je ne voulais pas


VCC R-78E5.0-0.5 +5V

Figure 5. Il ne faut que U1


quelques composants
pour connecter le C1 C2 C3

microcontrôleur au 10µ 10µ 100n


VCC
téléphone. Notez que 50V 50V

les résistances de rappel 5


J3 J4
5
pour les contacts de J6
4 4 4
VCC
numérotation (R3, R4 et RX
3 3 3 1
GP0 USB B VBUS
40
+5V
R5) ne sont pas toutes TX
2 2 2 2
GP1
LED
VSYS
39
1 1 1 3 38
identiques. GND
4
GND GND
37
MP3 D1
GP2 BOOTSEL 3V3_EN
R3
5 36 R4 R5
GP3 3V3
6 35
10k

GP4 RUN ADC_VREF


1k

1k

12V DC 1N4001 7 34
GP5 GP28 J5
8 LED 33 1
GND PWR GND Pulse
9 32 2
GP6 GP27 Dialing
J2 10 31 3
GP7 GP26 Hook
11 30 4
GP8 RUN Ground
12 29
GP9 GP22 Dial
13 SWDIO 28
GND GND
14 GND 27
GP10 GP21
15 SWCLK 26
GP11 GP20
16 25
GP12 GP19
T1 D 17 24
J1 1 Q1 GP13 GP18
18 23
VCC R1 GND GND
G 19 22
Bell 100Ω GP14 GP17
20 21
GP15 GP16
S IRLU8256PbF
2 2 x 9V
0VA5

RJ45
D
Q2
R2
G MOD1
100Ω
W5100S EVB PICO
S IRLU8256PbF
230132-012

8 juillet/août 2023 www.elektormagazine.fr


coder en dur une adresse IP temporaire dans mon
programme et le recompiler à chaque changement
Figure 8. Il est facile
d’adresse du HAC, je lui ai ajouté le support mDNS. Pour d’envoyer des textos
cela, j’ai adapté la bibliothèque DNS de WIZnet, car le avec ce vieux téléphone
mDNS est assez similaire à un simple DNS. Désormais, grâce aux lettres
le programme émet une requête mDNS pour obtenir imprimées autour du
cadran. Par exemple,
l’adresse IP du CAH avant d’essayer de s’y connecter.
pour «elektor» on
Cela rend le système beaucoup plus souple et fiable. compose le 33-555-
33-55-8-0-77, le tiret
Détection du combiné et numérotation représentant une pause
La lecture des contacts du mécanisme de numérota- d’une seconde.
tion nécessite un traitement antirebonds effectué par le

logiciel. Cela fait, le comptage des impulsions devient
une tâche banale.

La numérotation avec le combiné raccroché produit des


messages à un chiffre ; quand il est décroché, on obtient
un numéro à plusieurs chiffres, qui est envoyé quand on
Figure 7. Réalisation
raccroche. Le chiffre ou le numéro constitue la charge
pas très efficace de
utile d’un paquet MQTT. Notez que les chiffres sont l’alimentation par
envoyés « moins un » pour que les 10 valeurs tiennent Ethernet. Ça fonctionne
dans un seul caractère. Ainsi, 1 est envoyé comme 0, 9 tant que la tension
comme 8, et 0 est envoyé comme 9. d’entrée est suffisamment
élevée pour compenser
la chute de tension dans
Des chiffres et des lettres le câble.
Lorsque le combiné est décroché, il est possible de
composer non seulement des numéros à plusieurs 
chiffres, mais aussi des lettres pour former des messages
alphabétiques. Les 26 lettres de l’alphabet sont répar-
ties sur les chiffres 2 à 9, à raison de trois caractères par
chiffre, sauf le 6, qui n’en a que deux (« m » et « n »). Le
chiffre 0 en a également deux (« o » et « q »), le chiffre 1
n’en a aucun. Il s’agit de la répartition par défaut imprimée
sur le téléphone français S63 (figure 8). Pour une obscure
raison, il manque le « z », que j’ai ajouté au chiffre 0.

Pour sélectionner une lettre, il faut composer jusqu’à trois


Figure 6. Le module
fois le chiffre correspondant. Par exemple : « a » est 2, de lecture MP3
« b » est 22 et « c » est 222. Pour « aaa », la séquence et le connecteur
de composition est 2-2-2, pour « abc », c’est 2-22-222. d’alimentation partagent
Ici, le tiret représente une pause d’au moins une seconde. leur propre petite carte.
Un délai de moins d’une seconde entre deux chiffres

identiques sélectionne la lettre suivante attribuée au
chiffre. Cette méthode est très similaire à celle utilisée
sur les téléphones portables à partir de l’an 2000 pour
composer des textos, sauf qu’il n’y a pas d’affichage, fonctionner avec un téléphone français de type S63 et
fonction dévolue à votre mémoire (bon exercice !). construite pour tenir à l’intérieur de celui-ci (figure 9).
L’usage d’un autre modèle peut exiger d’en modifier
Quand on raccroche, le message composé est envoyé, certaines parties.
avec le numéro à plusieurs chiffres, au HAC en tant que
charge utile d’un paquet MQTT. Le HAC peut alors le Au lieu d’Ethernet, vous pouvez préférer le Wi-Fi ou une
transmettre, par exemple, à un service d’envoi de SMS autre méthode de communication sans fil. C’est bien
ou l’afficher sur son tableau de bord. sûr possible. Le logiciel peut facilement être adapté à
d’autres couches physiques, car le programme d’appli-
Quelques variantes possibles cation utilise une API de pilote de réseau standard. La
L’interface présentée dans cet article a été conçue pour pile TCP/IP est entièrement gérée par la puce W5100S

lektor juillet/août 2023 9


Fonctions de la télécommande
Le téléphone à cadran modifié a les fonctions
suivantes :
> Lorsque le combiné est posé sur le téléphone
et qu’un numéro est composé, l’appareil associé
change d’état (arrêt / marche).
> Lorsque le combiné est décroché, le cadran peut
être utilisé pour composer (laborieusement)
un message texte, à la manière des téléphones
portables d’il y a une vingtaine d’années. Le
message est envoyé quand on raccroche.
> La sonnerie du téléphone est utilisable par le
contrôleur domotique (HAC) comme alarme et
peut, par exemple, être associée à la sonnette
de la porte ou fonctionner comme minuterie de

cuisine ou signal de réveil (désagréable).
Figure 9. > L’écouteur du téléphone est relié à un lecteur
La télécommande MP3 pour diffuser des messages préenregistrés
par téléphone ou de la musique, ce qui permet de réaliser, par
assemblée. Sur la exemple, une horloge parlante, fonction courante
gauche, on reconnaît
au siècle dernier.
le transformateur de
l’alimentation haute et peut donc être remplacée par un autre module de
tension de la sonnerie, communication. La communication entre le téléphone et le HAC est
monté sur la carte basée sur MQTT, tandis que mDNS est utilisé pour
W5100S-EVB-Pico. Un L’ajout d’une bonne batterie (à recharger de temps à établir automatiquement une connexion entre les
câble relie cet ensemble
autre) permettrait de disposer d’une télécommande deux.
au module du lecteur
MP3 et au connecteur autonome. Si les circuits d’origine du téléphone peuvent
d’alimentation sur la être enlevés, il y a suffisamment d’espace pour en instal-
droite. Les connexions ler une.
au mécanisme de
numérotation ne sont
L’alimentation à haute tension de la sonnerie peut être
pas visibles, car situées Produits
de l’autre côté du réalisée de différentes manières. J’ai utilisé un transfor-
téléphone. mateur parce que j’en avais un sous la main, mais un > Carte d’évaluation WIZnet W5100S-EVB-
convertisseur bon marché trouvé sur le web peut égale- Pico à base de RP2040 (SKU 19971)
ment faire l’affaire. www.elektor.fr/19971

> HAT Ethernet WIZnet pour Raspberry Pi Pico


VoIP (SKU19970)
Actuellement, le microphone du téléphone n’est pas www.elektor.fr/19970
utilisé, mais on pourrait imaginer de l’utiliser pour un
service de voix sur internet ou VoIP. Le RP2040 prend en > C. Valens, Mastering Microcontrollers Helped
by Arduino (3rd Edition) (SKU 17967)
charge la norme I2S, ce qui permet d’utiliser des puces
www.elektor.fr/17967
d’interface microphone standard.

L’application de télécommande consiste en un croquis


Arduino et une bibliothèque Arduino facile à installer,
basée sur le dépôt officiel de WIZnet. Elle est disponible
sous [1].
Vf : Helmut Müller — 230132-04

Des questions, des commentaires ?


Envoyez un courriel à l’auteur
LIENS
([email protected]) ou contactez Elektor [1] Ce projet sur GitHub : https://github.com/
([email protected]). polyvalens/rotary_dial_remote

10 juillet/août 2023 www.elektormagazine.fr


PROJET

• Elek
r lab to
to

r la
Ele

b
TESTED

ab
Ele
to

rl
to

k
r la
b • Ele k

contrôleur de vitesse par GPS


plus de contraventions pour excès de vitesse

Olivier Croiset (France)

Il existe de nombreux exemples Quatre consignes de limites de vitesse


sur l’internet montrant comment Le contrôleur de vitesse dispose de quatre valeurs
programmables de limites de vitesse, ce qui devrait suffire
utiliser un module GPS dans un pour les limites rencontrées sur la plupart des trajets. De
projet de microcontrôleur. Mais toute façon, l’écran ne permet guère d’en afficher plus
que faire des coordonnées GPS, si ce de quatre. Pendant la conduite, le conducteur doit être
en mesure de choisir rapidement l’une des valeurs, si
n’est les reporter sur une carte ? J’ai possible sans regarder l’appareil. Je n’ai pas voulu utiliser
voulu faire quelque chose de plus d’écran tactile ; le conducteur doit sentir physiquement
utile et j’ai créé ce contrôleur de les pressions exercées sur les boutons. Pour des raisons
ergonomiques, les boutons sont placés au-dessus des
vitesse basé sur le GPS. Ce dispositif quatre limites de vitesse affichées à l’écran.
peut être utilisé dans n’importe quel
véhicule, aussi bien une voiture Une bonne raison pour s’essayer au 32
bits
qu’un bateau. Il vous permet de Mes premiers essais utilisant un microcontrôleur 8 bits
conduire sans avoir les yeux rivés ATmega328 associé à un module GPS m’ont rapidement
sur le compteur de vitesse et d’éviter convaincu que ses 32 ko de mémoire flash ne suffiraient
pas pour une application plus évoluée, surtout avec un
les mauvaises surprises par la suite affichage graphique des données sur un écran TFT.
dans le courrier. Par conséquent, après avoir épuisé les nombreuses
qualités de l’ATmega328, j’ai décidé de passer au niveau
au-dessus et d’essayer un microcontrôleur 32 bits STM32.
L’appareil présenté ici n’est pas un limiteur de vitesse, Sa forme la plus adaptée aux bricoleurs de mon espèce
qui nécessiterait une modification du véhicule, mais une est la carte BluePill avec son STM32F103C8. Cette petite
alarme qui signale qu’une vitesse présélectionnée est carte facilite considérablement l’utilisation de ce micro-
atteinte (ou dépassée). Pour que vous ne quittiez pas la contrôleur. Elle est facile à programmer via son port USB
route des yeux, l’avertisseur émet deux longs bips si la à l’aide de l’EDI Arduino (à condition que la carte soit
vitesse sélectionnée est dépassée, tandis que deux bips programmée avec un chargeur adéquat au préalable),
courts indiquent que le véhicule est repassé sous la limite. elle est compacte et ne coûte que quelques euros.

lektor juillet/août 2023 11


Tailles de la mémoire flash La précision horizontale, ou HDOP (horizontal dilution of
Ce projet est une première tentative d’utilisation du precision) [2], dépend de la position des satellites à portée
STM32F103C8. Notez que, officiellement, le C8 est équipé du récepteur GPS. Plus cette valeur est faible (proche
de 64 ko de mémoire flash, alors que la version CB en de 1), meilleure est la précision des coordonnées. Une
a 128 ko, mais il arrive que le C8 soit lui aussi équipé de valeur HDOP de 10 indique que les coordonnées sont
128 Ko (pièces de contrefaçon ?). Cela permettra, pour peu précises, voire invalides. Le contrôleur de vitesse
ceux qui seraient tentés, de poursuivre l’apprentissage n’utilise pas ce paramètre.
en ajoutant d’autres périphériques, tels qu’une carte SD,
un module SIM, la transmission de données par liaison L’écran TFT
radio, etc. Pour l’affichage, j’ai utilisé un module d’affichage TFT
standard de 2,2 pouces avec un pilote ILI9341 et une
Le module GPS interface SPI. Il a une résolution de 320 × 240 pixels,
Le module GPS utilisé dans ce projet est un module ce qui est suffisant pour les données que nous voulons
NEO-6 de u-blox. Son utilisation est facile, car la biblio- afficher (quatre limites de vitesse avec un bref message
thèque TinyGPS+ [2] se charge de décoder le flux de indiquant si la limite de vitesse a été atteinte ou non).
données au format NMEA 0183 émis par le module GPS. Le contrôleur de vitesse dispose de deux modes d’affi-
Les principaux paramètres que nous obtenons de cette chage principaux en utilisation normale. Le mode d’affi-
manière sont les suivants : chage en cours est sauvegardé dans l’EEPROM et est
> Date et heure UTC ; restauré lorsque le système est remis en marche. Les
> Longitude et latitude, en degrés décimaux ; préréglages des limites de vitesse sont également stockés
> Vitesse ; dans l’EEPROM. Seuls six octets de cette EEPROM sont
> Direction (cap) ; utilisés : quatre octets pour les limites de vitesse, un
> Altitude ; octet pour le dernier écran sélectionné et un octet pour
> Le nombre de satellites visibles ; la dernière limite de vitesse sélectionnée.
> La valeur de la précision horizontale (HDOP).


+5V

Figure 1. Le contrôleur
C3
J4

de vitesse combine des VCC


1 1
100µ
2 2 10V
modules facilement SD
GND
3 3
disponibles avec
CS
4 4
RST
quelques composants D/C
5 5

électroniques.
15 6 6
SD_CS SDI
16 7 7
SD_MOSI U1 SCK
17 8 8
SD_MISO ILI9341 LED
18 9 9
SD_SCK TOUCH LCD SDO
10
T_CLK
11
T_CS
TOUCH

12
T_DIN
13
T_DO
14
T_IRQ
+5V
BZ1 1 40
USB
PB12 GND
2 39
PB13 GND
3 38
GPS6MV2 C2 PB14 MOD1 3V3
ANT 4 37
BATT PB15 RST +3V3
5 1 0 36
VCC 100µ PA8 PB11
10V 6 35
RX PA9 PB10
+3V3 7 34
TX PA10 RESET BOOT PB1
8 33
GND PA11 PB0
9 32
PA12 PA7
R2 R1 10 31
C1 PA15 PA6
11 30
PB3 PA5
10k

10k

1 8 12 29
A0 VCC 25µ PB4 PA4
2 U3 7 5V 13 28
A1 WP PB5 PA3
3 24C256 6 14 27
A2 SCL PB6 PA2
4 5 15 26
GND SDA PB7 PA1
16 25
PB8 PA0
17
PB9
BluePill PC15
24
18 23
CB1 CB2 CB3 CB4 CB5
+5V 5V PC14
19 22
GND PC13
20 21
PA13
PA14
GND

+3V3
3V3

3V3 VBAT

SPEED_1 SPEED_2 SPEED_3 SPEED_4 SPEED


SELECT
200220-017

12 juillet/août 2023 www.elektormagazine.fr


Le schéma du circuit
Le schéma du contrôleur de vitesse est présenté à la
figure 1. Le module BluePill dans le coin inférieur droit
est le cœur du circuit.
L’alimentation électrique se fait par le biais du connecteur
USB de la BluePill. Les véhicules récents sont souvent
équipés d’un connecteur USB ; dans le cas contraire, 
un adaptateur 12 V vers USB est nécessaire (ou une
batterie powerbank). Le module BluePill est alimenté par niveau des pieds du passager dans ma voiture fonctionne Figure 2. Le prototype
une tension de 5 V ; il possède son propre régulateur de correctement. a été construit sur une
3,3 V, qui alimente l’EEPROM. L’écran TFT et le module carte de prototypage.
Les dimensions
GPS sont alimentés en 5 V. La consommation totale du Réglage des limites de vitesse du boîtier sont de
circuit est d’environ 200 mA. Cette opération ne doit être effectuée que lorsque le 12 x 6,5 x 4 cm.
L’écran est contrôlé par un bus SPI, le module GPS est véhicule est à l’arrêt ! Lors de la première mise sous
contrôlé par une liaison série et l’EEPROM est connec- tension du contrôleur de vitesse, les limites de vitesse
tée au bus I2C (avec ses deux résistances de rappel). sont toutes réglées sur 255. Cela correspond à FF en
Pour mon prototype, j’ai utilisé une EEPROM 24C256 de hexadécimal, ce que contient une EEPROM vierge.
32 Ko, mais une 24C01 de 128 octets serait déjà large- Dans l’écran 3 (figure 5), qui affiche les données des
ment suffisante. satellites, appuyez sur le troisième bouton pour activer le
Douze ports GPIO restent libres. Il est donc possible réglage de la limite de vitesse. Ensuite, utilisez le premier
d’ajouter des périphériques, des éléments et des fonctions et le deuxième bouton pour régler la limite souhaitée.
supplémentaires, tant que le programme d’application Appuyez à nouveau sur le troisième bouton pour valider
tient dans la mémoire flash. Le microprogramme compilé la limite de vitesse et passer à la suivante, et ainsi de
de ce projet occupe 64 020 octets, soit la quasi-totalité suite. Veillez à ce que les limites soient dans un ordre
de la mémoire flash. croissant, car le logiciel ne les trie pas.

Construction d’un contrôleur de vitesse


Le critère le plus important à prendre en compte dans
la réalisation de ce projet est l’ergonomie. Le conduc-
teur doit pouvoir trouver les boutons sans se tromper.
Les boutons-poussoirs ont une tige de 25 mm – la plus
longue que j’ai pu trouver.
J’ai réalisé ce prototype sur une carte de prototypage
(figure 2). Un circuit imprimé (PCB) permettrait une réali-
sation plus compacte dans un boîtier plus fin. Le connec- 
teur USB doit rester accessible, car il sert à alimenter
le circuit en utilisation normale. Il est également utilisé Figure 3. L’écran 1
pour mettre à jour le logiciel. montre les limitations
de vitesse sous la
L’antenne GPS doit être aussi éloignée que possible
forme de panneaux
du connecteur de l’écran TFT (au moins quelques de signalisation ronds
centimètres). accompagnés d’un bref
message.
Notes sur le module GPS
Le module GPS est doté d’une minuscule batterie de
sauvegarde des données. Si le GPS n’est pas utilisé
pendant plusieurs jours d’affilée, la batterie se décharge et
les données sont perdues. Lorsque vous rallumez le GPS,
il se peut que vous deviez attendre quelques minutes
pour restaurer les données (et recharger la batterie). La
LED du module GPS clignote lorsqu’il réussit à décoder
les données satellitaires. Quelques instants plus tard, le
nombre de satellites s’affiche. 
L’antenne GPS doit « voir » les satellites. La réception
Figure 4. Sur l’écran 2, la
des signaux doit donc être entravée le moins possible. vitesse réelle est affichée
En zone urbaine, entre deux bâtiments, la réception peut en chiffres de style 7
être difficile. Néanmoins, le contrôleur de vitesse placé au segments.

lektor juillet/août 2023 13


Figure 5. L’écran 5
montre la courbe de
Utilisation du contrôleur de vitesse
l’historique de la vitesse. Le contrôleur de vitesse est facile à utiliser. Toutefois,
Les quatre lignes comme il est censé être utilisé dans un véhicule en
horizontales jaunes mouvement, veillez à ce que l’appareil et surtout son
indiquent les quatre câble d’alimentation ne soient pas gênants pendant la
limites programmées
et la ligne verticale conduite. Une fois l’appareil placé à un endroit appro-
verte indique la vitesse prié, sélectionnez le mode d’affichage souhaité. L’écran 1
actuelle. (figure 3) affiche des panneaux de signalisation ronds,
l’écran 2 affiche la vitesse actuelle sous forme de chiffres
à 7 segments (figure 4). Sélectionnez ensuite la limite de
vitesse que vous souhaitez utiliser. L’avertisseur sonore
retentit si vous roulez trop vite.
Votre passager peut visualiser la courbe de vitesse sur
une période de 4,5 minutes (270 secondes) en sélection-
nant l’écran 5 (figure 5). Sur cet écran, l’avertisseur sonore

ne retentit pas. Les lignes horizontales indiquent les
Figure 6. Les données quatre limitations de vitesse. La ligne verticale «mainte-
GPS sont disponibles nant» indique la vitesse actuelle. Un graphique défilant
sur l’écran 3. C’est aurait été plus joli, mais il nécessite une actualisation
également par cet écran complète pour chaque nouveau point de données, ce qui
qu’on accède à l’écran 4
de programmation des
est lent. Il est beaucoup plus facile de déplacer le curseur.
valeurs des limites de
vitesse. Écran des données GPS
L’écran 3 (figure 6) affiche les données GPS et vous
permet de vous situer sur une carte à l’aide de marqueurs
de coordonnées. La précision est d’environ 30 mètres,
ce qui est tout à fait satisfaisant pour notre petit appareil
bon marché. Dans ce mode d’affichage, l’avertisseur reste
muet. L’écran 4 (figure 7) est identique à l’écran 3, sauf
qu’il permet de programmer les limitations de vitesse.

Notez que la date et l’heure du GPS sont des valeurs
UTC, c’est-à-dire celles du méridien de Greenwich. Si
Figure 7. L’écran 4 permet vous souhaitez les utiliser, vous devez corriger ces valeurs
de programmer les en fonction de votre fuseau horaire local et de l’heure
limites de vitesse. Ici, la d’été ou d’hiver. N’étant pas une horloge, le contrôleur
première limite, « Sp. 1 »,
est en cours de réglage
de vitesse n’inclut pas de menu de gestion de l’écart.
(en rouge, si vous
regardez bien).

Tableau 1. Les différents écrans et comment naviguer.

Écran Bouton 1 Bouton 2 Bouton 3 Bouton 4 Bouton 5


Ecran 1 Limite de vitesse 1 Limite de vitesse 2 Limite de vitesse 3 Limite de vitesse 4 Aller à l’écran 2
(Panneaux ronds)
Ecran 2 (Affichage 7 Limite de vitesse 1 Limite de vitesse 2 Limite de vitesse 3 Limite de vitesse 4 Aller à l’écran 3
segments)
Ecran 3
Limite de vitesse 1 Limite de vitesse 2 Aller à l’écran 4 Pas d’action Aller à l’écran 1
(Données GPS)
Ecran 4 Diminuer la limite Augmenter la limite Valider et passer à Aller à l’écran 5 Pas d’action
(Programmer les (-5 km/h) (+5 km/h) la limite suivante,
limites) Retourner à l’écran
3 une fois terminé
Écran 5 (Courbe de Pas d’action Pas d’action Pas d’action Aller à l’écran 2 Pas d’action
vitesse)

14 juillet/août 2023 www.elektormagazine.fr


Logiciel remplacer les km/h par des nœuds) et la taille des
Le programme est facile à modifier et le code source incréments de limite de vitesse (dans la fonction
peut être téléchargé à partir de [3]. Il s’agit d’un croquis SpeedSettings()).
Arduino, qui nécessite le STM32 Boards Package
for Arduino (nous avons utilisé la version 2.3.0) [4]. Si votre module BluePill dispose de 128 Ko de mémoire
La majeure partie du code est consacrée à l’interface flash, des fonctions supplémentaires peuvent être
utilisateur graphique, le reste se charge de la tâche ajoutées, telles que :
simple consistant à recevoir les données GPS, à extraire > Enregistrement sur carte SD. Au dos du module
la vitesse et à la comparer à une limite. d’affichage TFT se trouve un emplacement pour
Comme d’habitude dans un sketch Arduino, la fonction carte SD. Il peut être utilisé pour enregistrer, par
setup() se charge d’initialiser tous les périphériques. exemple, les données GPS afin de les consulter sur
Une fois cette opération terminée, elle affiche un écran un PC.
de bienvenue pendant cinq secondes. > Ajouter un écran tactile pour de nouvelles fonctions.
La fonction loop() commence par lire les boutons-pous- Dans ce cas, veillez à la sécurité de l’utilisateur.
soirs avant de vérifier si le GPS contient des données > Réglage de l’heure locale.
fraîches (dans la fonction dataDecode()). Ensuite, en Vf : Helmut Müller — 200220-04
fonction de l’écran actif, les données correspondantes
sont affichées. Si la vitesse actuelle est supérieure à la
limite de vitesse active, une alarme retentit. Des questions, des commentaires ?
Notez que des informations de débogage et d’état sont Si vous avez des questions techniques, n’hésitez pas
envoyées vers le port série (115200,N,8,1). à envoyer un courriel à l’équipe éditoriale d’Elektor à
l’adresse [email protected].
Pour aller plus loin
Voici quelques éléments que vous pouvez ajouter ou
modifier :
> Utiliser d’autres unités de vitesse, pour un bateau,
par exemple. La bibliothèque GPS vous permet Produits
d’utiliser d’autres unités de vitesse, telles que > OPEN-SMART GPS - Module GPS série pour
les nœuds ou les miles/heure (MPH). Il faudra Arduino (SKU 18733)
pour cela modifier les écrans (par exemple, https://elektor.fr/18733

> Module d’affichage TFT SPI 2,2


pouces ILI9341 (SKU 18419)
https://elektor.fr/18419

> Majid Pakdel, Advanced Programming with


STM32 Microcontrollers (SKU 19520)
https://elektor.fr/19520

LIENS
[1] Bibliothèque TinyGPS++ : http://arduiniana.org/libraries/tinygpsplus/
[2] Qu’est-ce que le POPD ? : https://fr.wikipedia.org/wiki/Geometric_dilution_of_precision
[3] Fichiers du projet sur Elektor Labs :
https://elektormagazine.fr/labs/save-money-with-this-speed-monitoring-by-gps
[4] EDI Arduino : paquet de support des cartes STM32 :
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

lektor juillet/août 2023 15


PROJET DE LECTEUR

stroboscope RVB
avec
Arduino
un instrument utile,
instructif et distrayant

Roel Arits (Pays-Bas)

Le dictionnaire nous apprend que le stroboscope (du grec strobos, tournant) est un
instrument destiné à faire apparaître immobiles ou animés d’un mouvement lent des objets
animés d’un mouvement périodique rapide. Une succession d’éclairs à une fréquence
appropriée permettent de ne voir qu’une phase déterminée du phénomène : l’objet mobile
paraît immobile ou il semble se mouvoir au ralenti.

Il y a quelques décennies, le stroboscope avait trouvé une application Le stroboscope utilisé pour régler l’allumage était constitué d’un tube
très courante, dans les garages automobiles. Pour qu’un moteur à à éclats au xénon ou au néon et d’un câble de déclenchement relié à
combustion interne à essence fonctionne correctement, les bougies la bougie de référence par un capteur inductif, de sorte que chaque
d’allumage de chaque cylindre doivent produire une étincelle à un fois que la bougie de référence s’allumait, le stroboscope produisait
moment précis. Cette distribution était assurée par un dispositif un éclair.
mécanique (sensible à l’humidité dans certaines marques de voitures), Puisque le stroboscope était déclenché par la bougie de référence, les
qui devait être synchronisé avec précision avec le moteur. Et c’est là deux marques devaient apparaître exactement en face l’une de l’autre
que notre stroboscope entre en jeu. en raison de l’effet stroboscopique. En cas de décalage entre les deux
Le nombre d’interrupteurs du distributeur correspondait à celui des marques, le distributeur devait être ajusté. Dans cette application, le
cylindres du moteur. Chaque fois qu’un tel contact s’ouvrait, l’énergie stroboscope était synchronisé avec le mouvement de rotation, mais
électrique emmagasinée dans la bobine d’allumage était déchargée cela fonctionne aussi sans signal de déclenchement !
à travers la bougie d’allumage dans la chambre de combustion sous
la forme d’une étincelle qui enflammait le mélange air-carburant. Et Sans déclenchement ?
cela devait se produire au moment précis où le piston dans le cylindre Pour mesurer une rotation avec un stroboscope non synchronisé, il faut
venait de quitter son point mort haut (c’est-à-dire que le mélange ajuster la fréquence des éclairs de sorte que la marque sur le disque
avait atteint sa compression maximale). Les pistons du moteur sont tournant semble quasi immobile et qu’une seule marque soit visible.
solidaires du vilebrequin, au bout duquel est arrimée la poulie de la Si la roue tourne dans le sens horaire et que le marqueur semble se
courroie trapézoïdale. La position de la poulie est synchrone avec la déplacer lentement dans le sens horaire, c’est que la fréquence de
position du piston. Sur cette poulie se trouvait une marque blanche et clignotement est un peu faible. L’éclair arrive un peu trop tard, et la
à côté, sur un support métallique, une deuxième marque fixe. marque semble se déplacer dans le sens de rotation. Si la roue tourne

16 juillet/août 2023 www.elektormagazine.fr


Figure 1. Le cadre avec les réflecteurs fixés à l’hélice. Figure 2. Gros plan du moteur.

dans le sens antihoraire et que le marqueur semble se déplacer lente- (fig. 1 et 2) a été produit avec une imprimante 3D au moyen de fichiers
ment dans le sens horaire, c’est que la fréquence des éclairs est un téléchargeables [3].
peu trop élevée : chaque éclair arrive un peu trop tôt. Si plusieurs Note : à vide, le moteur 12 V utilisé tourne à environ 11500 tr/min,
marques quasi fixes apparaissent, c’est que la fréquence des éclairs ce qui s’est excessif pour l’hélice imprimée en 3D. Lors du premier
est un (sous-)multiple de la vitesse de rotation. essai, elle s’est brisée en mille morceaux sous la force centrifuge. Au
La vitesse peut être mesurée en ajustant la fréquence de clignotement cours de telles expérimentations, le port de lunettes de protection
du stroboscope de manière à immobiliser le marqueur. La durée de est recommandé !
chaque éclair doit être assez courte pour obtenir une marque nette. Pour le ralentir, le moteur fonctionne donc sous seulement 3 V environ.
Si la durée du flash est trop longue par rapport à sa fréquence, la La tension est réglable pour synchroniser la vitesse. Sous 3 V, la vitesse
marque bave. est d’environ 2100 tr/min, ce qui correspond à 35 Hz. Comme l’hélice
est équipée de deux réflecteurs (ce qui en facilite l’équilibrage), la
Éclairs bariolés... fréquence d’éclair est deux fois plus élevée, c’est-à-dire 70 Hz (durée
Et si notre stroboscope produisait plusieurs éclairs, de même fréquence de la période environ 14 ms).
mais de couleur différente, et avec un déphasage entre les différents Le circuit (fig. 3) est la simplicité même et peut facilement être construit
éclairs ? Et si nous faisions tourner un objet blanc sur lui-même tout sur une plaque d’essais (fig. 4). Les trois LED RVB sont pilotées par de
en variant fréquence, déphasage et largeur des éclairs colorés ? modestes BC547 sous les ordres de l’Arduino. La tension d’alimentation
Ce n’est pas difficile avec un microcontrôleur. Pour produire les éclairs du circuit est de 5 V continus, la consommation est d’environ 500 mA.
de couleur, nous pouvons utiliser une LED RGB – ou mieux encore trois Le stroboscope est commandé par une minuterie d’interruption appelée
LED obtenir des éclairs plus lumineux. Pour commander la fréquence, toutes les 100 µs. Cet intervalle de 0,1 ms est la résolution avec laquelle
le déphasage et la durée des éclairs, ce sera un Arduino Pro Mini, une on peut faire varier la fréquence de l’éclair. Cela laisse assez de temps
carte qui dispose de suffisamment de ports d’entrée/sortie et large- pour modifier l’image stable produite par l’hélice.
ment assez rapide pour cette tâche. Les LED seront commandées
par des signaux modulés en largeur d’impulsion (PWM). // Configuration d’une minuterie de 16 bits en
Nous aurions pu utiliser trois modules PWM spéciaux de l’Arduino fonctionnement normal avec interruption à 100 µs
Pro Mini, mais ceux-ci utilisent trois temporisateurs différents. Il est // 16 MHz/1 = 6,25 ns. Pour obtenir 100us, nous
donc plus délicat de les synchroniser et de programmer un déphasage devons donc laisser le minuteur compter 1600
précis. La fréquence des signaux PWM requis est relativement basse ticks.
et une résolution de 16 bits hors de proportion avec nos besoins. Des TCCR1A = 0;
signaux PWM produits par du logiciel dit softPWM feront amplement TCCR1B = _BV(CS10); //prédiviseur – diviser par 1
TCNT1 = 0xFFFF - 1600; // dépassemnt à 65535 = 0xFFFF
l’affaire. Le softPWM émet ses signaux sur des sorties numériques
TIMSK1 = _BV(TOIE1); // interruption de dépassemnt
normales. Celles-ci sont commandées et initialisées à l’aide d’un
TCNT1 = 0;
compteur. Une interruption est émise lorsqu’un certain compte est
sei();
atteint. De cette façon, on obtient un intervalle suffisamment court
}
pour ajuster la largeur d’impulsion ou le déphasage du signal PWM
ISR (TIMER1_OVF_vect)
avec une précision suffisante.
{
TCNT1 = 0xFFFF - 1600; //100 us interruption
Pratique ...
Pour faire tourner l’hélice, nous avons un moteur 12 V à courant continu
(MOT3N) pour lequel j’ai confectionné un petit support. L’hélice est La période d’éclair est codée en dur dans le logiciel à 144 – c’est le
prolongée par deux réflecteurs disposés verticalement. Ce dispositif nombre d’interruptions de la minuterie entre deux éclairs consécu-

lektor juillet/août 2023 17


D1 D2 D3
RGB LED RGB LED RGB LED
common anode common anode common anode

Figure 3. Pas trop compliqué, mon circuit ?


R1 R2 R3 R4 R5 R6 R7 R8 R9
100

100

100

100

100

100

100

100

100
T1 T2 T3
BC547 BC547 BC547
R10 R11 R12

10k
10k
10k

RED GREEN BLUE

+5V DC/ 500 mA IN C1 C2


100n 100µ
0
GND
RST
+5V
A3
A2
A1
A0
13
12
11
10
Vin (6-16V)

GND U1 A7
A6
GND
+5V
Arduino Pro Mini
RXI ATMEGA 328P Figure 4. Pas trop critique, tout ça. Pour les expériences,
TXO
DTR 5V / 16 MHz A5/SCL une plaque d’expérimentation fera l’affaire.
A4/SDA
GND
TXO

RST
RXI

2
3
4
5
6
7
8
9

191214-002-94

tifs. La période est donc de 144 * 100 µs = 14,4 ms. La durée d’éclair Un stroboscope non synchronisé n’est pas vraiment optimal. On pourrait
de chaque LED est fixée à 8, ce qui correspond à 8 * 100 µs = 800 µs. monter une barrière lumineuse sur l’hélice, et en utiliser le signal pour
Le cycle d’utilisation (rapport impulsion/pause) est donc de 800 µs déclencher le stroboscope. À vous l’initiative !
/ 14,4 ms = 5,5 %. Mes deux vidéos sur Youtube permettent d’admirer le fonctionnement
du stroboscope [1] et le rapport des signaux de commande des LED
#define STROBE_PERIOD 144 sur l’écran d’un oscilloscope [2] avec leur effet sur l’image strobos-
copique perçue. Le projet peut également être consulté sur le site
TSoftPwm Pwm[] = {TSoftPwm(ID_RED, 0, 8, d’Elektor Labs [3].
STROBE_PERIOD), 191214-04
TSoftPwm(ID_GREEN, 0, 8, STROBE_PERIOD),
TSoftPwm(ID_BLUE, 0, 8, STROBE_PERIOD)};

Produits
Avec ce rapport cyclique , nous obtenons, une fois le régime moteur
établi de manière optimale, une belle image stable. > livre en français avec kit : Tuto Arduino Uno
www.elektor.fr/tuto-arduino-uno
Le circuit, y compris le logiciel téléchargeable sur la page de cet
article [4], n’est pas un projet achevé. C’est pourquoi il n’y a pas (encore)
> livre en français : Arduino – Faites-le jouer au train
www.elektor.fr/arduino-faites-le-jouer-au-train
d’interface confortable pour l’utilisateur. Cependant le logiciel montre
bien les possibilités en jouant avec les paramètres : fréquence d’éclair, > e-book en français :
durée d’éclair et différence de phase. Le logiciel est commenté généreu- 36 Expériences de Physique avec Arduino
sement, inutile d’entrer dans les détails ici. www.elektor.fr/
36-experiences-de-physique-avec-arduino-e-book

LIENS
[1] Vidéo de démonstration 1 : https://youtu.be/WHv6DCWM82k
[2] Vidéo de démonstration 2 : https://youtu.be/3tYqUin4-vQ
[3] Projet sur Elektor Labs : www.elektormagazine.fr/labs/arduino-rgb-color-stroboscope
[4] Page en ligne de cet article : www.elektormagazine.fr/191214-04

18 juillet/août 2023 www.elektormagazine.fr


lektor juillet/août 2023 19
PROJET

Okay!
Stop!

EPB EPB
Receiver Transmitter

bouton-poussoir
d’urgence sans fil
sécurité renforcée avec LoRa

Somnath Bera (Inde)

Le bouton-poussoir d’urgence sans


fil décrit dans cet article est un
exemple de solution à un problème
dans un environnement industriel
complexe avec quelques modules
électroniques bon marché et un
peu de programmation Arduino.
Le résultat est un système sans fil
simple qui peut s’avérer utile dans de
nombreuses autres situations.
lab • Elektor
or
t

lab
Elek

TESTED Le besoin initial de développer le bouton-poussoir Ce qu’il faut savoir


la b

d’urgence (Emergency Push Button : EPB) sans fil Les trains de charbon peuvent être très longs, jusqu’à
Ele

kt
t
or

or
la b • El ek présenté ici est assez spécifique et concerne le prélè- 500 meters, et il peut y en avoir jusqu’à quatre les uns à
vement d’échantillons dans les trains livrant du charbon côté des autres pour le prélèvement et le déchargement
à une centrale électrique. On doit prélever un échantil- en même temps. Pensez aux voies ferrées courbes, et
lon au sommet d’un wagon de charbon pour déterminer vous réaliserez qu’il est difficile de voir ce qui se passe.
son pouvoir calorifique avant de pouvoir l’utiliser. Il s’agit De plus, l’environnement est bruyant à cause du déchar-
d’un paramètre important pour les centrales électriques. gement des trains. Le retour d’information sonore est
Avant de prélever un échantillon, l’échantillonneur appuie donc également problématique.
sur l’EPB existant pour signaler sa présence au conduc- Le système EPB existant est un système câblé. Cepen-
teur du train. Cette action devrait immobiliser le train. dant, dans un environnement comme celui décrit ci-des-
Malheureusement, en fonction de la longueur du train, sus, il est dangereux d’utiliser de longs câbles suscep-
de la position d’échantillonnage et de la courbure de la tibles de se rompre sans que personne ne s’en aperçoive.
voie, l’échantillonneur ne peut pas toujours voir son signal Le remplacement de ces câbles ou l’acheminement de
devant le train. Il est arrivé, lors de la collecte d’échan- plusieurs câbles dans le but d’obtenir un retour d’infor-
tillons, que le train roule par inadvertance, provoquant mation visuel est compliqué et coûteux. Le fait de placer
des accidents et blessant la personne. Le système EPB le mât de signalisation plus haut pour qu’il soit visible
devait être amélioré. de loin n’est pas non plus une solution pratique, car il

20 juillet/août 2023 www.elektormagazine.fr


Okay! Okay!
Stop!

EPB EPB EPB


Receiver Transmitter Receiver

Figure 1. Aperçu du système du bouton-poussoir d’urgence sans fil (EPB).

faut avoir une bonne vision pour voir à quelle voie le l’un des deux relais doit être actif à tout moment. C’est
signal s’applique. le logiciel qui s’en charge.

Le sans-fil avec LoRa Sécurité


La solution que nous avons trouvée est l’EPB sans fil Pour améliorer la sécurité et éviter que le système ne soit
(figure 1). Il se compose de deux unités : un émetteur EPB perturbé par un signal parasite, nous avons choisi les
et un récepteur EPB. En réalité, les unités sont presque modules émetteurs-récepteurs LoRa à faible consomma-
identiques et capables de transmettre et de recevoir, mais tion d’énergie d’Ebyte. En plus d’utiliser une technologie
c’est ainsi que nous les désignerons. Vous pouvez le consi- à étalement de spectre résistante aux interférences, ils Figure 2. L’émetteur
EPB se compose d’un
dérer comme un système maître-esclave ou client-serveur. fournissent trois paramètres : la fréquence du canal, le
écran OLED et de deux
Avant de prélever un échantillon de charbon, l’échantil- débit d’air et un identifiant de 4 octets. La communication boutons poussoirs (en
lonneur appuie sur un bouton de l’émetteur EPB pour ne peut avoir lieu que si ces trois paramètres sont plus de l’émetteur-
signaler sa demande d’échantillonnage. Lorsque le récep- identiques aux deux extrémités de la liaison. récepteur LoRa).
teur EPB situé dans la cabine de contrôle reçoit cette

demande, il active un relais pour appuyer sur le bouton
du système EPB existant et renvoie un accusé de récep-
tion à l’émetteur EPB. L’échantillonneur sait alors que
son signal est reçu et qu’il peut prélever un échantil- +3V3
lon en toute sécurité. Ensuite, l’échantillonneur appuie S3 HT7333-A
sur un deuxième bouton de l’émetteur EPB pour déblo- IC1 ANT

quer le système. Cette fois, le récepteur EPB relâche


BT1

l’EPB existant en activant un second relais et confirme LiPo 3V7 C1 C2

à nouveau l’opération à l’émetteur EPB. Le système est 450 450

alors prêt pour une nouvelle prise d’échantillon. MFD MFD


MOD2
Si le système n’est pas disponible ou si le signal de +3V3
E32-868T30D
l’EPB est interrompu pour des raisons opérationnelles,
le signal de retour ne reviendra jamais à l’unité émettrice, 1
3V3 GND
38

ce qui permet d’alerter l’émetteur et d’éviter les erreurs


2 37
EN/RST GPIO23
3 36
de communication.
GPIO36/SVP GPIO22
4 35
GPIO39/SVN GPIO1/TX0
5 34
GND
RXD

VCC
AUX
TXD

GPIO34 GPIO3/RX0
M0
M1

Émetteur et récepteur EPB : le circuit 6


7
GPIO35
MOD1
GPIO21
33
32 1 2 3 4 5 6 7
GPIO32 GND
L’émetteur EPB est une réplique exacte de l’unité EPB 8
GPIO33 GPIO19
31
ESP32S
existante, mais avec une petite antenne et un petit 10
9
GPIO25 HiLetgo GPIO18
30
29
afficheur OLED. Il est alimenté par une batterie LiPo GPIO26 GPIO5
11 28
GPIO27 GPIO17 +3V3
à une cellule. Il est doté de deux boutons poussoirs 12
GPIO14 GPIO16
27
13 26
d’activation. À l’intérieur (figure 2) se trouve un module 14
GPIO12 GPIO4
25
GND
ESP32 qui commande l’afficheur OLED et un module
GPIO0
15 24
GPIO13 GPIO2
émetteur-récepteur LoRa. Notez que le module ESP32 16
GPIO9/SD2 GPIO15
23 +3V3
17 22 1 2 3 4
n’a été utilisé que pour des raisons de commodité, et non
S1 1A S2 2B GPIO10/SD3 GPIO8/SD1
GND
SCL
SDA
VCC

18 21
GPIO11/SDCMD GPIO7/SD0
pour ses capacités sans fil. Vous pouvez utiliser n’importe 19
5V GPIO6/SDCLK
20

quel autre module microcontrôleur bon marché, à faible EN IO0


consommation et doté des bonnes interfaces (I2C, UART, USB

2× GPIO).
Le récepteur EPB est identique à l’unité émettrice, sauf Display OLED
200578-006
qu’il possède deux relais à la place des boutons-poussoirs,
et qu’il ne dispose pas d’afficheur (figure 3). Notez que

lektor juillet/août 2023 21


+3V3

S1 HT7333-A
IC1 ANT
BT1

LiPo 3V7 C1 C2

 450 450
MFD MFD
MOD2
Figure 3. E32-868T30D
+3V3
Les deux relais
du récepteur 1 38
EPB appuient
3V3 GND
2 37
EN/RST GPIO23
sur les boutons 3
GPIO36/SVP GPIO22
36

du système EPB 4
GPIO39/SVN GPIO1/TX0
35
5 34
existant.

GND
RXD

VCC
AUX
TXD
GPIO34 GPIO3/RX0

M0
M1
6 33
GPIO35 GPIO21
7 MOD1 32 1 2 3 4 5 6 7
GPIO32 GND
8 31
GPIO33 GPIO19
9 ESP32S 30
GPIO25 HiLetgo GPIO18
10 29
GPIO26 GPIO5
11 28
GPIO27 GPIO17
12 27
+3V3
13
GPIO14 GPIO16
26
Figure 4. Prototype de l’émetteur EPB construit sur
perfboard.
GPIO12 GPIO4
14 25
GND GPIO0
15 24
GPIO13 GPIO2
16 23
GPIO9/SD2 GPIO15
17 22
GPIO10/SD3 GPIO8/SD1

des relais. L’émetteur EPB configure également l’affi-


18 21
GPIO11/SDCMD GPIO7/SD0
19 20
cheur OLED.
5V GPIO6/SDCLK

EN
USB
IO0
Dans la fonction loop() , l’émetteur et le récepteur
vérifient d’abord si un message a été reçu de l’autre unité.
Si c’est le cas, ils mettent à jour leur état. Le récepteur
D1 RE1
1
K1
envoie un accusé de réception à l’émetteur et attend un
2
nouveau message.
3
1N4001 5V
T1
L’émetteur continue en vérifiant l’état de ses deux
K2
R1
D2 RE2
1
boutons-poussoirs. Selon le bouton appuyé, il envoie
1k 2
BC547B 3 une courte chaîne ASCII à l’émetteur-récepteur LoRa
1N4001 5V
T2 via le port série. On ne peut appuyer que sur un seul
R2
1k bouton à la fois.
BC547B Le logiciel est disponible en téléchargement sur la
200578-005 page de ce projet sur Elektor Labs [1]. N’hésitez pas à
le modifier selon vos besoins. Nous avons choisi arbitrai-
rement les chaînes de caractères échangées entre les
deux unités et vous pouvez les modifier.
200578-04
Le module comporte une interface série et délivre jusqu’à
500 mW (21...30 dbm) à 868 MHz (figure 4). Le signal peut Des questions, des commentaires ?
facilement traverser 500 mètres le long de la voie ferrée Contactez Elektor ([email protected]).
avec une petite antenne portative et avec l’antenne de
l’unité de réception placée sur le toit de la cabine/salle
de contrôle, de sorte qu’il reste visible partout.
Produits
Logiciel
Tout comme le matériel des deux unités, les logiciels sont > ESP32 DevKitC (SKU 18701)
https://elektor.fr/18701
également similaires et se composent de deux courts
croquis Arduino. > Afficheur OLED I2C 0,96 pouce 128×64
(SKU 18747)
Les deux unités configurent le port série utilisé pour https://elektor.fr/18747
communiquer avec l’émetteur-récepteur LoRa (9600N81)
> Claus Kühnel, Develop and Operate Your
dans la fonction setup(). Pour l’émetteur EPB deux LoRaWAN IoT Nodes (SKU 20147)
broches E/S sont configurées comme entrées du https://elektor.fr/20147
bouton-poussoir, tandis que pour le récepteur EPB ces
broches sont configurées en sorties pour commander

LIENS
[1] Fichiers du projets sur Elektor Labs :
https://elektormagazine.fr/labs/wagon-top-coal-sampling-remote-epb-module

22 juillet/août 2023 www.elektormagazine.fr


BIEN COMMENCÉ EST À MOITIÉ FINI

démarrer
en électronique
...l’émetteur-suiveur

Eric Bogers (Elektor) tous ces potentiomètres s’influenceront, ce qui empêchera d’obte-
nir un contrôle efficace.
Dans le dernier épisode, nous Vous devez réduire autant que possible la charge sur le potentio-
avons brièvement abordé les mètre maître et de découpler les potentiomètres individuels des
canaux. Cela est possible avec des émetteurs-suiveurs, comme
transistors comme amplificateurs, montré dans la partie inférieure de la figure 1. Le fonctionne-
plutôt que comme commutateurs. ment est comme suit :
Nous nous intéressons maintenant lorsqu’un transistor est conducteur, la tension sur son émetteur
est inférieure d’environ 0,7 V à la tension sur sa base, de sorte que
à ce que l’on appelle l’émetteur-
suiveur, qui est le circuit à
transistors le plus simple que l’on
puisse imaginer. +12V

La1 La2

Montage collecteur commun


Le premier montage amplificateur que nous allons étudier est
connu sous le nom de montage à collecteur commun. On l’appelle
FALSE
MASTER
ainsi, parce que le collecteur du transistor est le point de référence
commun pour les signaux d’entrée et de sortie. Cette désignation
n’étant pas très claire, ce type de montage est souvent appelé
émetteur-suiveur – ce qui décrit bien son fonctionnement : la
tension de l’émetteur du transistor suit la tension de la base. Nous +12V
découvrons l’utilité de ce montage dans cet article.
Supposons que vous vouliez construire une table de mixage
pour lumière – rien de trop compliqué, juste une solution maison
fonctionnant à basse tension. Vous pourriez avoir un certain
nombre de lampes (canaux) avec une luminosité réglable indivi-
duellement (de 0 V à 10 V dans notre exemple), ainsi qu’une La1 La2

commande principale supplémentaire pour que toutes les lampes


puissent être atténuées simultanément. En tant que débutant,
GOOD
vous pourriez avoir l’idée d’utiliser un potentiomètre principal
MASTER
et de connecter des potentiomètres de sortie à son curseur pour
chaque lampe. Cette méthode est illustrée dans la partie supérieure
de la figure 1. 230208-001

Cependant, ce n’est pas la meilleure méthode. Ensemble, les poten-


tiomètres de sortie forment une charge importante et déformeront Figure 1. Une table de mixage pour lumière simplifiée : le mauvais montage
la courbe de contrôle du potentiomètre principal, et, pire encore, en haut, le bon montage en bas.

lektor juillet/août 2023 23


la plage de contrôle va de 0 V à 11,3 V. Cela dépasse un peu les 10 V
nominaux de cet exemple particulier, mais assure que lorsque les
signaux de commande sont réglés au maximum, la luminosité des
lampes est maximale. Lorsque la tension sur la base est inférieure

6k8

6k8
à 0,7 V, le transistor est bloqué et la tension de sortie est de 0 V.
Rs

Entre ces deux limites, la tension sur l’émetteur suit bien la


tension sur la base, mais avec un offset égal à la valeur de la 2

tension base-émetteur. Le principal avantage de l’utilisation d’un


émetteur-suiveur dans cette situation est que le courant de base Zxx 48 3

n’impose qu’une très faible charge au curseur du potentiomètre 1

maître, puisqu’il est beaucoup plus faible que le courant d’émetteur. 230208-002
Le rapport est égal au gain en courant continu (hFE) du transistor.
Dans la pratique, cela signifie que la charge sur le potentiomètre
maître est inférieure d’un facteur hFE au courant réglé par le poten- Figure 2. Alimentation stabilisée (alimentation fantôme pour un
tiomètre de canal. microphone).
Ainsi, le montage à collecteur commun (émetteur-suiveur) n’offre
pas de gain en tension, mais un gain en courant significatif, une
impédance d’entrée élevée et une faible impédance de sortie. Un supérieur à 100, nous pouvons considérer que IC est presque égal
circuit émetteur-suiveur a une réponse très stable aux variations à IE. Nous ignorons la valeur exacte du gain en courant du transis-
de charge. En général, on s’attend à ce que la tension de sortie tor. Supposer un facteur de gain de 100 pour les transistors à petits
diminue lorsque la résistance de la charge diminue, mais lorsque signaux nous permet de rester sur le côté sécuritaire.
cela se produit, la tension base-émetteur UBE augmente, de sorte Pendant un cycle de la tension alternative d’entrée, la tension au
que le courant de base IB augmente également. Cela entraîne une niveau des condensateurs électrolytiques de filtrage s’établit à
augmentation du courant du collecteur IC et, et par conséquent, environ 60 V, ce qui signifie que la tension au niveau de la résis-
une augmentation du courant d’émetteur IE, ce qui compense la tance en série de la diode Zener est de 12 V. Nous avons donc :
diminution de la tension de sortie.
Les formules suivantes s’appliquent à l’impédance d’entrée (en
haut) et de sortie (en bas) d’un émetteur-suiveur :

Ici, nous utilisons la valeur standard 82 kΩ pour la résistance en


série.
La dissipation maximale dans la diode Zener est obtenue lorsqu’au-
cune charge n’est connectée, de sorte que le courant de base du
transistor est nul. Dans ces conditions :
Alimentation stabilisée
Dans un épisode précédent, nous avons fait quelques calculs pour
montrer que l’utilisation d’une diode Zener et d’une résistance
en série pour stabiliser une tension présente des inconvénients
importants. Ce type de circuit de stabilisation fonctionne mieux si
vous y ajoutez un émetteur-suiveur, comme le montre la figure 2. Bien entendu, la puissance est également dissipée dans le
Faisons les calculs sur ce circuit avec les valeurs de l’exemple précé- transistor :
dent (une tension de la diode Zener de 48 V et un courant de charge
maximal de 14,1 mA). Il est possible d’utiliser ce circuit comme
alimentation fantôme pour un microphone. Le courant de base
est alors donné par :
La somme de la dissipation dans la diode Zener et de celle dans le
transistor est déjà moins élevée qu’en utilisant uniquement la diode
Zener, puisque le courant sans le transistor était un peu supérieur
à 900 mA. Le circuit comportant le transistor a un autre avantage :
sans le transistor, la dissipation maximale est atteinte lorsqu’au-
Le gain en courant continu s’applique au courant du collecteur. cune charge n’est connectée et la dissipation minimale est atteinte
Stricto sensu, le courant d’émetteur est égal à IC plus IB – mais dans lorsque la charge est 0 Ω, ce qui, bien sûr, n’arrive jamais dans la
le cas d’un fonctionnement à petits signaux avec un gain de courant pratique. En revanche, dans le circuit à transistor, la dissipation

24 juillet/août 2023 www.elektormagazine.fr


de puissance maximale se produit avec une résistance de charge
de 0 Ω, alors que la dissipation est plus faible dans les conditions
normales du fonctionnement. Figuur 3. Amplificateur CA.

Montage émetteur-suiveur comme amplificateur


CA
Jusqu’à cette étape, nous n’avons utilisé l’émetteur-suiveur qu’en Avec une valeur de 0,47 µF, nous sommes en tout cas du bon côté.
tant qu’amplificateur de courant continu. Passons maintenant à Pour C2, nous faisons le calcul en supposant une impédance de
l’amplification des signaux alternatifs (voir figure 3). charge minimale de 6 kΩ :
Lorsqu’une tension alternative est appliquée au condensateur C1,
elle modifie la tension sur la base (par référence à la masse), ce qui
fait varier le courant de l’émetteur de telle sorte que la tension sur
l’émetteur est toujours inférieure d’environ 0,7 V à la tension sur
la base. Là encore, le circuit n’offre pas de gain en tension, mais
offre un gain en courant. Dans ce cas, on choisit une valeur de 3,3 µF (ou 4,7 µF si c’est plus
Pour obtenir une amplitude maximale avec ce circuit, la tension de facile à se procurer).
repos de l’émetteur doit être approximativement égale à la moitié Une remarque pour nos lecteurs attentifs : dans le calcul de R1,
de la tension d’alimentation, soit, dans cet exemple, 6 V. Par souci nous n’avons pas tenu compte du fait que l’impédance en courant
de clarté : la tension de repos et le courant de repos sont des valeurs continu du transistor (qui est égale au produit du gain en courant
mesurées lorsqu’aucune tension de signal (CA) n’est appliquée. par RE) est en fait en parallèle avec R2.
Si nous supposons que le courant de repos est de 1 mA, la valeur Si nous voulons le prendre en compte, nous devons connaître le
correspondante de la résistance d’émetteur est : gain en courant du transistor avec une précision suffisante. Si
par précaution nous supposons que la valeur est 100, le point de
fonctionnement sera fortement décalé ; une valeur de 300 à 500
est plus raisonnable pour les transistors à petit signal. Cependant,
dans ce cas, nous pouvons ignorer l’influence du gain en courant
sur le calcul de R1...
Cette valeur (6 kΩ) est comprise entre deux valeurs de E12, nous Et voilà, c’est terminé pour cet épisode. Le prochain article sera
choisissons 5,6 kΩ. La tension de base du transistor est supérieure vraiment passionnant, car nous étudierons l’amplification de la
de 0,7 V à la tension d’émetteur, elle est donc de 6,7 V par rapport à tension avec des montages à émetteur commun (ce qui est tout à
la masse. Cette tension est obtenue par un diviseur de tension. Nous fait différent des émetteurs-suiveurs).
choisissons arbitrairement la valeur de R2 (100 kΩ) ce qui nous 230208-04
permet de calculer la valeur de R1. Nous laissons ce calcul comme
exercice pour vous ; nous avons obtenu une valeur de 79,1 kΩ et Note de la redaction : la série d’articles « démarrer en électronique »
avons choisi une résistance de 82 kΩ. En conséquence, les tensions est basée sur le livre « Basiskurs Elektronik » de Michael Ebner, publié
de base et d’émetteur sont inférieures d’environ 0,1 V aux valeurs par Elektor.
prévues, mais ce n’est pas un problème.
Nous devons proportionner les valeurs des deux capacités. Nous
voulons que le circuit ait une réponse en fréquence aussi linéaire Des questions, des commentaires?
que possible dans la plage de fréquences allant de 20 Hz à 20 kHz, Contactez Elektor ([email protected]).
nous fixons donc la fréquence de la partie inférieure dans les deux
cas à 10 Hz. Le condensateur C1, les résistances R1 et R2 en parallèle,
et l’impédance d’entrée du transistor, forment un filtre passe-haut
et, comme nous le savons déjà, l’impédance d’entrée du transis-
Produits
tor dépend de la résistance de la charge. Si nous supposons que
la résistance de charge ne sera pas inférieure à RE, la résistance de > B. Kainka, Basic Electronics for Beginners (Elektor, 2020)
charge et de RE en parallèle s’élève à 3 kΩ. En supposant que le gain (SKU 19212)
en courant est de 100, l’impédance d’entrée (Rin) du transistor est www.elektor.fr/19212
d’environ 300 kΩ. La résistance parallèle de R1, R2 et Rin s’élève
> B. Kainka, Basic Electronics for Beginners (Elektor, 2020)
donc à 39,2 kΩ (vérifiez le résultat vous-même !). (E-Book, SKU 19213)
Nous utilisons la formule suivante pour déterminer la valeur de C1 : www.elektor.fr/19213

lektor juillet/août 2023 25


zone D
Astuces, bonnes pratiques et
autres informations pertinentes

comparateur à
hysteresis à niveaux
indépendants
simulations, feuilles de calcul et algèbre

Stephen Bernhoeft (Royaume-Uni)

Souvent, on a besoin de niveaux


d’hystérésis à la fois précis
et indépendants. Pour les
comparateurs ordinaires, c’est tout
à fait possible. Voici comment.

La sélection des valeurs de résistance nécessaires pour atteindre


précisément les niveaux d’hystérésis pour les montages comparateurs
n’est pas couramment abordée dans la documentation disponible,
sauf dans le cas où les seuils de basculement sont équidistants des
rails d’alimentation. Dans cet article, nous utilisons quelques notions
d’algèbre pour dériver des formules pour les circuits à « entrée -ve « et
à « entrée +ve « couramment utilisés. Les feuilles de calcul, les dériva-
tions et les schémas LTSpice correspondants sont disponible sur [1].
Les résultats présentés s’appliquent à :
> montages à sortie rail-to-rail
> montages à collecteur ouvert où RPULLUP << RFEEDBACK

Pour réaliser un montage à collecteur ouvert, nous devons d’abord


choisir RPULLUP, puis choisir RFEEDBACK ( noté « F » dans la suite de cet
article) au moins 10 × RPULLUP. Les autres résistances sont calculées
en fonction de F.

Paramètres
Pour réaliser le circuit, il faut choisir les seuils de basculement requis
et noter les niveaux de sortie. Les valeurs sont ratiométriques et vous
pouvez les adapter, mais pour les composants à collecteur ouvert, vous Figure 1. En haut, le circuit réel (A) ; en bas, une version simplifiée pour
devez tenir compte de la valeur de la résistance de tirage. l’analyse (B).

26 juillet/août 2023 www.elektormagazine.fr


V(w) V(s) 1.5V 4V
5.5V

5.0V

4.5V

4.0V

3.5V

3.0V

2.5V

2.0V permet de calculer les deux autres valeurs.


1.5V La figure 2 montre la simulation des signaux
1.0V du circuit (A).
0.5V

0.0V
Considérations
-0.5V Nous devons choisir les niveaux de bascule-
0.0ms 0.3ms 0.6ms 0.9ms 1.2ms 1.5ms 1.8ms 2.1ms 2.4ms 2.7ms 3.0ms
ment. en tenant compte de plusieurs facteurs :
Figure 2. Simulation des signaux du circuit (A) de la figure 1. > Pour le timing des circuits RC : évitez
les extrémités de la « partie lente » de
la courbe de charge du circuit RC, car de petites variations de
tension entraînent d’importantes variations de temps.
Montage inverseur > Les seuils de basculement doivent être indépendants des
La figure 1 montre le premier exemple. Ce circuit se caractérise par une tensions de décalage du comparateur. Par conséquent, le seuil
impédance d’entrée élevée et peu de composants et il ne nécessite de basculementt inférieur doit être beaucoup plus supérieur à la
pas une référence séparée. L’inconvénient est le caractère inverseur, valeur (absolue) de la tension de décalage.
qui peut être indésirable, en particulier lorsqu’on essaie de réduire le
nombre de composants. En examinant la feuille de calcul [1], nous constatons que si nous
Dans le montage simplifié de la figure 1B, F est effectivement en paral- choisissons une valeur très faible pour SLO, nous obtenons plusieurs
lèle avec B (si W = 1) ou A (lorsque W = 0). Pour simplifier les calculs, valeurs possibles de résistance requises pour A, B et F. Ce n’est évidem-
la tension d’alimentation est de 1 V. Vous pouvez modifier cette valeur. ment pas l’idéal en termes de précision relative des valeurs. Nous
Par exemple, une alimentation de 5 V avec un niveau de basculement obtenons la meilleure précision relative (ratio) lorsque les valeurs de
de 4 V est équivalente à une alimentation de 1 V avec un niveau de A, B et F sont proches.
basculement de 4/5 V, soit 0,8 V.
W change d’état lorsque P = S. Supposons que P = S à l’un des deux Applications
niveaux de basculement. Dans la figure 1A, le nœud P change en Pour donner un exemple réel, l’auteur a travaillé sur un système de
fonction de la sortie du comparateur. Nous pouvons renommer P en détection de fumée. Nous avons d’abord creé un circuit analogique
S dans le schéma de la figure 1B car ils sont égaux. basé sur un capteur à métal-oxyde (nous doutons de nos compétences
Si nous définissons : en programmation pour une telle application).
> SLO = seuil de basculement inférieur Supposons que nous avons besoin de 3 secondes de détection de
> SHI = seuil de basculement supérieur fumée avant que la sortie d’alarme ne se déclenche, mais de 6 secondes
sans fumée avant que l’alarme ne retentisse. La figure 3 montre un
et nous avons : circuit réalisable, la figure 4 montre une simulation du signal de sortie.

alors :

1er Case : A fixe

2e cas : B fixe

3e cas : F fixe

Figure 3. L’étage d’entrée d’un circuit de détection de fumée. Lorsque


Nous avons maintenant établi les rapports A : B et B : F en fonction l’interrupteur est fermé, REQ = 25 kΩ, VEQ = 1.25 V. Lorsque l’interrupteur est
des niveaux de basculement.. Le choix d’une résistance (A, B ou F) ouvert, REQ = 100 kΩ, VEQ = 5 V. ∆V = (5-1.25) = 3.75 V.

lektor juillet/août 2023 27


V(cU)
5.0V
4.5V
4.0V
3.5V
3.0V
2.5V
2.0V
1.5V
1.0V
0.5V
0.0V
-0.5V

V(rc) V(w) 1.58V 2.21V


5.0V
4.5V
4.0V
3.5V
3.0V
2.5V
2.0V
1.5V
1.0V
0.5V
0.0V
-0.5V
0s 10s 20s 30s 40s 50s 60s 70s 80s 90s 100s

Figure 4. Simulation de la sortie du circuit de la figure 3.

Si aucune fumée n’est détectée, l’interrupteur est fermé et le conden- Il est possible d’exprimer M indépendamment de A ou de F :
sateur se charge à un niveau de 5/4 V à travers une résistance efficace
REQ = R1|R3. Si de la fumée est détectée, l’interrupteur s2 s’ouvre par
le signal ctl, chargeant le circuit RC de 1,25 V à VDD = 5 V.
Les niveaux de basculement requis sont indiqués dans une feuille de
calcul, tandis qu’une autre feuille de calcul montre les conversions de
ces tensions en valeurs de résistance pour A, B et F. Exemple
Supposons que le seuil inférieur SLO = 0.5, le seuil supérieur SHI = 3.0,
Montage non-inverseur alors que les niveaux de sortie sont
Examinons maintenant le circuit à entrée positive (ou non inverseur), WLO = 0 et WHI = 5. Alors, A/F = (3-0.5)/(5-0) = 0.5 et
comme le montre la figure 5. Un tel circuit présente une impédance M = 0.5 × 1/(5+2.5) × (2.5 × 5 + 5 × 3.5) = 2 V.
d’entrée de A+F et est un peu plus difficile à analyser.
La figure 6 montre les résultats.
Alors :
Hystérésis du courant d’entrée
Si nous connectons la résistance A à la masse, le circuit de la figure 3
se transforme en un comparateur dont le signal d’entrée est un courant,
comme le montre les figures 7 et 8. La valeur de la résistance F est
Alors : obtenue directement à partir de ∆W et ∆I. Ensuite, nous pouvons
déterminer le rapport du diviseur β. Enfin, nous calculons la valeur
de A. Une feuille de calcul est utile ici car β et A doivent être aussi
précis que possible en utilisant des valeurs de résistance standard.

Figure 5. Circuit non inverseur.

28 juillet/août 2023 www.elektormagazine.fr


V(w) V(s) 1.5V 4V
5.5V

5.0V

4.5V

4.0V

3.5V

3.0V

2.5V

2.0V

1.5V

1.0V

0.5V

0.0V

-0.5V
0.0ms 0.3ms 0.6ms 0.9ms 1.2ms 1.5ms 1.8ms 2.1ms 2.4ms 2.7ms 3.0ms

Figure 6. Les signaux simulés du circuit de la figure 5

Simulations, feuilles de calcul et algèbre


Les simulations, les feuilles de calcul et les calculs complets des
formules présentées dans cet article sont disponibles en télécharge-
ment sur la page web de cet article [1].
200559-04

Des questions, des commentaires ?


Contactez Elektor ([email protected]).

Figure 7. Le circuit de la figure 3, adapté à une entrée de courant.

V(w) I(R1) 1mA 2mA


5.0V

4.5V 3.3mA

3.0mA
4.0V

2.7mA
3.5V

Produits
2.4mA
3.0V
2.1mA

>
2.5V
Paul Horowitz, Winfield Hill,
1.8mA

2.0V 1.5mA
The Art of Electronics (3rd Edition)
1.5V
1.2mA
(SKU 17167)
1.0V
0.9mA https://elektor.fr/17167
0.6mA
0.5V
0.3mA > Gilles Brocard, The LTspice XVII
0.0V
0.0mA Simulator (SKU 19741)
-0.5V -0.3mA
https://elektor.fr/19741
0.0ms 0.3ms 0.6ms 0.9ms 1.2ms 1.5ms 1.8ms 2.1ms 2.4ms 2.7ms 3.0ms

Figure 8. La sortie du simulateur pour le circuit de la figure 7.

LIEN
[1] Téléchargements pour cet article : https://elektormagazine.fr/200559-04

lektor juillet/août 2023 29


PROJET

analyseur d’impédance
basé sur un ESP32
simple, comportant peu de composants et de faible coût !

Volker Ziemann (Suède)


Commençons par un peu de théorie. L’impédance d’un composant
Un ESP32 analyseur électronique Z = U/I est le rapport de la tension U aux bornes du
d’impédance, pouvant composant par l’intensité I qui le traverse. La loi d’Ohm écrite sous la
forme R = U/I est un exemple particulier où la résistance R est la forme
également vérifier la fréquence la plus simple d’une impédance. Pour un condensateur de valeur C,
de résonance d’un réseau LC ? l’impédance dépend de la fréquence f dont la pulsation est ω = 2πf,
Oui, ce microcontrôleur peu est donnée par −i/ωC ; l’unité imaginaire i est une forme compacte
indiquant que la phase de la tension est décalée de 90° par rapport au
couteux, associé à une poignée courant. De même, l’impédance d’une inductance L est donnée par
de composants externes peut iωL. Ici encore, l’unité imaginaire i indique que la tension précède le
le faire, tout en offrant une courant. Nous pouvons donc déterminer l’impédance d’un composant
en examinant la dépendance en fréquence de celle-ci et la relation de
interface basée sur le Web. phase entre la tension et le courant qui le traverse.
Ces mesures deviennent intéressantes dans le cas de plusieurs compo-
sants interconnectés. Si une inductance et un condensateur sont reliés
en parallèle, le circuit à l’impédance la plus élevée à la fréquence de
résonance pour laquelle les résistances des deux composants en
courant alternatif sont égales. Pour une connexion en série, l’impé-
dance est la plus faible à ce point. Avec l’analyseur d’impédance basé
sur un ESP32 d’Espressif, on peut enregistrer la courbe de l’impédance

30 juillet/août 2023 www.elektormagazine.fr


en fonction de la fréquence d’un réseau RLC et ainsi déterminer ses Sa faible impédance de sortie pilote le DUT, circuit en test. L’autre
caractéristiques. terminaison du circuit en test est reliée à l’entrée négative d’un second
Pour cela il est nécessaire de disposer d’un moyen de produire un amplificateur opérationnel qui est configuré en amplificateur à transim-
signal sinusoïdal d’amplitude constante, de faire varier sa fréquence pédance. Un courant fourni à son entrée négative est converti, grâce
dans une plage préférablement importante, puis de mesurer rapidement à la résistance de contre-réaction Rfb en une tension de sortie qui est
le courant qui traverse le(s) composant(s) que l’on qualifie de DUT appliquée à la broche 32 du CAN de l’ESP32. Ce CAN n’accepte qu’une
(Device Under Test). J’ai remarqué que le microcontrôleur ESP32 que tension positive. Ainsi, la composante continue du signal est portée à
j’avais reçu de la part d’Elektor pour ma participation au concours de la moitié de la valeur de la tension d’alimentation. Grâce à ce dispositif,
design de 2018 pouvait réaliser la plupart de ces opérations. Il possède le circuit en test est alimenté par une tension alternative d’amplitude
un générateur de fréquence intégré et un convertisseur Numérique constante ; le courant est mesuré à l’aide du CAN.
Analogique (CNA ou DAC (Digital Analog Converter) qui génère des La figure 2 montre l’interface d’entrée réalisée sur une plaque d’essais
tensions de sortie dont la fréquence peut atteindre plusieurs centaines avec une petite platine perforée munie d’un condensateur comme
de kilohertz. De plus, il intègre un Convertisseur Analogique Numérique circuit en test (DUT) en bas et à gauche. La résistance Rfb à droite de
(CAN ou ADC Analog Digital Converter) qui peut lire des tensions à l’amplificateur opérationnel est facile à changer. Les quatre fils reliant
une rapidité pouvant atteindre un million de fois par seconde, certes ce petit circuit à l’ESP32 sont, en noir la masse GND, en rouge, la
en trichant un peu ; mais nous y parviendrons. L’ESP32 ne pouvant tension d’alimentation 3,3 V, en vert la sortie du CNA (broche 25), et
lire qu’un seul canal CAN à haute vitesse et les convertisseurs CAN en bleu la broche 32 du CAN.
et CNA fonctionnant indépendamment, on ne pourra déterminer que
l’amplitude de l’impédance avec un seul ESP32, mais pas la phase. CAN rapide
La possibilité de déterminer l’écart de phase produit par le circuit en Le mode rapide du CAN de l’ESP32 fait partie du sous-système I2S
test nécessite un dispositif spécial, ce sera le sujet d’un article séparé. qui est normalement utilisé pour le traitement des signaux audio. En
outre, l’ESP32 supporte un mode dans lequel les mots générés par
Circuit analogique d’entrée le CAN sont copiés dans une mémoire tampon à accès direct (DMA)
Nous devons nous assurer que l’amplitude de la tension du CNA est qui ne nécessite pas l’utilisation du processeur. Le CAN fonctionne de
constante et ne dépend pas de l’impédance du circuit en test. C’est le façon asynchrone (librement) et la mémoire DMA collecte les données
rôle de l’amplificateur opérationnel de la figure 1. Il est utilisé comme à un rythme déterminé. Tant que ce rythme est inférieur à celui de la
tampon de gain 1x pour le signal issu de la broche 25 de l’ESP32. rapidité maximum de conversion du CAN, soit environ 250 kC/s, toutes

+5V
FCS FSD1
FSD0 FSD3
FSD2 FCLK
R1 R3
FSVP IO21
IC1 = MCP6002 FSVN IO22
82k

82k

IO25 IO19
5 MOD1
IO26 IO23
7
IC1B IO32 IO18
6
IO33 IO5
IO27 EN IO10
Rfb
1k IO14 IO9
DUT C1 IO12 RXD0
3
IO13 TXD0
1
IC1A 47n IO15 BOOT IO35
2
R2 IO2 IO34
IO4 ESP32 IO38
82k

IO0 Pico-Kit V4 IO37


R4 +5V
3V3 EN
GND GND
82k

5V 3V3
USB

230039-013

Figure 1. Interface analogique d’entrée.

lektor juillet/août 2023 31


SET_PERI_REG_MASK(SENS_SAR_DAC_CTRL1_REG,
SENS_SW_TONE_EN);
SET_PERI_REG_BITS(SENS_SAR_DAC_CTRL1_REG, SENS_SW_FSTEP,
frequency_step, SENS_SW_FSTEP_S);

active le fonctionnement du générateur à haute fréquence interne. La


seconde détermine la fréquence du signal de sortie en spécifiant l’entier
frequency_step, dont la valeur est dérivée de la rapidité de l’horloge
interne. La fréquence de sortie désirée est déterminée approximati-
vement par l’équation figurant en [1].

Croquis ESP32 contrôlé par l’interface série


J’ai programmé l’ESP32 en utilisant la version 1.8.19 de l’EDI Arduino
disponible en [3], et suivi les instructions d’installation disponibles.
À la date d’écriture de cet article, la nouvelle version 2 de l’EDI ne
supportait pas encore un supplément fonctionnel nécessaire par la
suite. J’ai également dû installer les fonctions de support de l’ESP32
depuis [4] en suivant les instructions d’installation.
Les croquis suivants sont basés sur [5] où se trouve une discus-
sion détaillée sur de multiples aspects. L’objectif est de contrôler la
fréquence générée et l’acquisition des données à partir de l’interface
série selon un protocole simple dans lequel une seule chaîne est
échangée de façon bidirectionnelle entre l’ESP32 et un programme
Figure 2. Seuls quelques composants externes sont nécessaires pour fonctionnant sur un ordinateur PC pouvant supporter une commu-
permettre à l’ESP32 de mesurer l’impédance d’un circuit en test (DUT). nication série ; cela peut être Python, Octave ou LabView. Ce proto-
cole ressemble au protocole SCPI utilisé dans les oscilloscopes ou
d’autres appareils de mesure, dans lequel un point d’interrogation
les données sont « fraîches ». En revanche, si le taux est trop élevé, final indique une commande qui attend une réponse de l’ESP32. Par
des échantillons identiques sont copiés dans la mémoire tampon, ce exemple, l’envoi de STATE?, déclenche l’envoi de la réponse STATE
qui se traduit par des escaliers dans les données capturées. fmin fmax fstep, dont les trois valeurs numériques indiquent la
La vitesse d’échantillonnage du CAN est paramétrée par la fonction gamme et le pas de variation du balayage en fréquence.
i2sinit(), qui est dérivée du croquis HiFreq_ADC.ino présent dans Analysons maintenant les différentes parties du sketch. En premier,
la bibliothèque de support de l’ESP32 de l’EDI Arduino. La majeure deux fichiers en-têtes sont inclus ; l’un pour les fonctions de support du
partie de la configuration consiste à entrer dans la structure i2s_ CAN et du CNA que j’ai développées, l’autre pour l’accès au système de
config, le mode d’opération, le taux d’échantillonnage et quelques fichiers SPIFFS de la mémoire flash de l’ESP32. Ce dernier est utilisé
paramètres indicateurs qui ont été trouvés après quelques recherches pour mémoriser les données de calibration. Les valeurs par défaut de la
en [1]. Avant de quitter la fonction, on doit régler le niveau d’atténua- gamme de fréquences balayées et quelques autres valeurs pertinentes
tion de façon à ce que l’amplitude du canal du CAN corresponde à la sont également spécifiées. La fonction setup() du sketch initialise
valeur de la tension d’alimentation de 3,3 V, choisir le canal du CAN la communication série, fixe la fréquence de sortie et l’amplitude de
et autoriser la sortie. sortie du CNA, et lit les données de calibration à partir des fichiers
SPIFFS s’ils sont disponibles.
Génération de fréquence La fonction loop() vérifie si une demande de la part de l’ordina-
L’ESP32 possède un bloc fonctionnel interne qui délivre les valeurs teur hôte est reçue par l’appel à Serial.available(), lit une ligne
successives d’une fonction cosinus à un rythme qui peut être ajusté. (terminées par le caractère retour à la ligne \n) et convertit ce qui
La sortie de ce bloc peut être dirigée, en positionnant plusieurs bits est reçu dans la chaine de caractères line. Quelques vérifications
de configuration, vers l’entrée du registre du CNA, ce qui produit une sont alors faites, selon le contenu spécifique du début de la chaine.
tension de sortie de forme sinusoïdale. La fréquence de ce générateur Par exemple, si line contient FREQ 20000, la valeur numérique est
est directement contrôlée en paramétrant les registres SENS_SAR_DAC_ extraite par atoi(&line[5]). La conversion de la chaine commençant
CTRL1_REG et SENS_SAR_DAC_CTRL2_REG, qui sont décrits en [1] et plus à la cinquième position de line en un entier, est effectuée par la
en détail en [2]. En suivant les explications fournies en [2], la fonction fonction intégrée atoi(). Cette valeur est ensuite affectée à la variable
cwDACinit() est paramétrée pour remplir ces registres avec les dac25freq et initialise le générateur de fréquence par cwDACinit().
valeurs permettant de configurer la fréquence de sortie et l’amplitude. De façon identique, toutes les variables importantes sont accessibles
Après avoir inclus les fichiers d’en-tête qui permettent l’utilisation des depuis l’ordinateur hôte.
noms mnémoniques, la fonction SET_PERI_REG_MASK(reg,bits) est SWEEP? est la commande la plus intéressante. Après avoir reçu cette
utilisée pour définir les bits du registre reg. Par exemple, la première commande et initialisé les variables utilisées dans cette section, une
des commandes suivantes : boucle for incrémente la variable f de fmin à fmax avec un pas de

32 juillet/août 2023 www.elektormagazine.fr


valeur fstep. À l’intérieur de la boucle, la valeur de la fréquence du l’amplificateur opérationnel inférieur. Cette ambiguïté est résolue en
CNA est tout d’abord définie, puis, après un court délai, les valeurs calibrant le système à l’aide d’une résistance de valeur résistive connue,
mesurées par le CAN sont récupérées à l’aide de is2_read(). insérée comme DUT. Toutes les autres impédances sont alors déter-
minées en référence à cette résistance de calibration. Celle-ci devrait
for (float f=freqmin; f<freqmax;f+=freqstep) {​ idéalement être insensible à la fréquence utilisée, mais de faibles varia-
dac25freq=f; tions systématiques sont prises en compte en utilisant la pente comme
cwDACinit(dac25freq,dac25scale,0); fonction de la fréquence, en plus de l’écart (offset). La valeur de la résis-
delay(50); tance de calibration devrait avoir sensiblement la même valeur que la
i2s_read(I2S_NUM_0, &buffer, résistance de contre-réaction de l’amplificateur à transimpédance afin
    sizeof(buffer), &bytes_read, 15); de correspondre à la gamme opérationnelle du CAN.
... Avant d’utiliser l’analyseur, le système de fichiers SPIFFS de l’ESP32
} doit être initialisé en créant un répertoire vide nommé data contenu
dans le répertoire où est stocké le sketch. Ensuite, le plugin de charge-
La taille de son argument d’entrée buffer, définie au début du sketch, ment du système de fichiers Arduino ESP32 doit être installé depuis
est utilisée pour déterminer le nombre d’échantillons, ici 1024. La [6] en suivant les instructions. Quand cela est fait, un nouveau choix
fonction renvoie également la valeur bytes_read indiquant le nombre ESP32 sketch Data Upload apparait dans le menu Outils de l’EDI
d’octets lus. Chaque échantillon contenant deux octets, nous devons Arduino. Après s’être assuré que le moniteur série est fermé, un clic
diviser par deux lors du prélèvement des échantillons afin de détermi- sur ce menu va créer le système de fichiers de l’ESP32.
ner les valeurs minimum et maximum. Rappelons-nous que la tension
mesurée par le CAN est proportionnelle au courant qui traverse le Contrôle par Octave ou Python
circuit en test, nous utilisons donc les variations des valeurs de pointes Le contrôle de l’acquisition de données depuis le PC nécessite l’ouver-
pour déterminer l’amplitude du courant. ture d’un port série dont le nom diffère selon le système d’exploi-
tation utilisé. Il est habituellement nommé COMn sous Windows, /
Calibration dev/tty.usbserial-n avec un MAC ou /dev/ttyUSBn sous Linux.
En parcourant les échantillons, les sommes q1 et q2 sont également L’envoi d’une commande, par exemple pour définir la fréquence de
accumulées. Utilisées conjointement avec les variables S0, S1 et S2, départ du balayage, se fait simplement en envoyant FMIN 10000 par
elles permettent de définir un segment de droite joignant les points le port série. De même, la lecture des valeurs des paramètres se fait
des données, ces paramètres sont nécessaires à la calibration. Les en envoyant la commande STATE?, puis en attendant un court instant
détails de l’algorithme utilisé sont indiqués dans l’annexe B de [5]. La avant de lire les caractères qui sont retournés, jusqu’à la réception du
commande SAVECALIB sauvegarde ces paramètres dans la mémoire caractère retour à la ligne (line feed) \n. La réponse contient STATE
persistante SPIFFS. La commande GETCALIB? les récupère depuis le PC. fmin fmax fstep. Le déclenchement du balayage de la fréquence
Les constantes de calibration calib_slope et calib_offset sont est initialisé par l’envoi de la commande SWEEP? et la réception des
nécessaires pour prendre en compte les variations de certains facteurs valeurs se fait ensuite ligne par ligne. Lorsque toutes les données
d’atténuation du système inconnus, par exemple, due au condensateur ont été mises à disposition, on peut fermer le port série et préparer
de couplage CA (transmission des tensions alternatives) de l’entrée de le tracé des courbes.

Figure 3. Valeurs brutes et impédance d’un condensateur utilisé en test. Figure 4. Données brutes et impédance dans le cas de test d’une
inductance.

lektor juillet/août 2023 33


Les procédures scripts pour Octave sont incluses dans la toolbox l’effacement des courbes affichées et sauvegardent les données de
instrument qui doit-être installée et pour Python dans le Python-serial calibration. Sur la ligne en-dessous, les paramètres de contrôle de
package se trouvent dans l’archive logiciel accompagnant cet article. l’ESP32 incluant la gamme du balayage, le taux d’échantillonnage
Notez que pour réaliser les tests préliminaires, un simple programme du CAN peuvent être modifiés à partir des menus de sélection. Les
terminal tel que Putty peut être utilisé. boutons de la troisième ligne réalisent le calcul de la capacitance, de
la résistance et de l’inductance, et en indiquent le résultat sur la ligne
Utilisation du système en-dessous des tracés. La ligne inférieure affiche les valeurs reçues
Pour commencer à utiliser le système, une résistance de calibration de de l’ESP32. Sur le tracé, l’axe horizontal indique la fréquence selon la
1 kΩ est utilisée comme composant de test et le balayage en fréquence gamme spécifiée dans les menus en haut de la page. L’axe vertical
est exécuté. Ensuite, la commande SAVECALIB qui est décrite en détail indique Zabs, relativement à la résistance de calibration dont la valeur
dans le script Octave nwa.m sauvegarde les données de calibration dans est affichée par la ligne horizontale bleue. En cliquant sur le tracé, les
l’ESP32. Lorsque la commande SAVECALIB est exécutée, la résistance valeurs de la fréquence et de Zabs apparaissent dans la ligne d’état.
est remplacée par un condensateur de 2,2 nF, et nva.m est à nouveau
exécuté, le tracé des données correctement calibrées de la figure 3 Croquis de l’ESP32
apparait. Le tracé montre la dépendance inverse de la fréquence de Après avoir spécifié le nom du réseau wifi (SSID) et son mot-de-passe,
laquelle on déduit la capacitance à l’aide de la commande Octave : les fichiers de support pour le wifi, websocket et webserver doivent
être inclus, on déclare alors le serveur web server2 afin de communi-
capacitance_nF= quer avec le réseau par le port 80, et par le port 81 pour le websocket.
    mean(1./(2*pi*Zabs*1e3.*xx*1e3))*1e9 Les messages sous forme de texte échangés par les navigateurs sont
formattés selon JSON, sous la forme {"INFO":"Yada yada"}. L’analyse
Selon la formule : grammaticale de ces messages et la génération de messages plus
complexes sont réalisées par la bibliothèque ArduinoJson, tandis que
C = 1/(2πfZabs) le support du CNA et du CAN (ADC et DAC) est fourni par ESP32_
I2Sconfig.h comme précédemment.
La moyenne de toutes les valeurs est réalisée par la fonction mean().
Les puissances de dix sont nécessaires pour prendre en considéra- const char* ssid     = "YOUR_SSID";
tion le multiplicateur kilo de kΩ et de nano dans nF. Par exemple, 1e9 const char* password = "YOUR_PASSWORD";
à la fin de la formule convertit la valeur du condensateur de Farad #include <WiFi.h>
en nanoFarad. #include <WebSocketsServer.h>
Le tracé de la figure 4 est obtenu en réitérant le balayage après avoir WebSocketsServer webSocket = WebSocketsServer(81);
remplacé le condensateur by une inductance de 22 mH. Comme on s’y #include <WebServer.h>
attendait, l’impédance de l’inductance sur le tracé inférieur augmente #include <SPIFFS.h>
avec la fréquence, l’inductance peut être déterminée par la formule : WebServer server2(80);
#include <ArduinoJson.h>
L = Zabs/2πf #include "ESP32_I2Sconfig.h"

Ou obtenue en Octave par :

inductance_mH=
    mean(1e3*Zabs./(2*pi*xx*1e3))*1e3

qui réalise également la moyenne de tous les points obtenus, à l’aide


de mean(). Les puissances de dix sont nécessaires pour tenir compte
des multiplicateurs kilo de kΩ et khz et milli de mH.

Interface utilisateur Web


Jusqu’à présent, les mesures d’impédance ont été faites depuis Octave
ou Python, nous allons maintenant utiliser un navigateur web pour
contrôler et afficher les mesures. Pour cela, l’ESP32 est configuré afin
d’exécuter un serveur web qui crée la page web de la figure 5. Quand
le navigateur reçoit cette page web, un code javascript intégré ouvre
un deuxième canal de communication série de l’ESP32, basé sur les
websockets. Un websocket assume le rôle d’une communication série,
il est ici utilisé pour assurer la transmission et la réception de messages. Figure 5. La page web générée par l’ESP32 montre la résonance obtenue
L’envoi de ces messages est déclenché par un clic sur les boutons situés sur la courbe d’impédance d’un condensateur de 2,2 nF, d’une inductance
en haut de la page web. Ils provoquent un balayage de la fréquence, de 22 mH et d’une résistance de 33 kΩ connectés en parallèle.

34 juillet/août 2023 www.elektormagazine.fr


Après avoir spécifié diverses variables, les fonctions de support sont qui décrit le contenu de la page web. Après avoir démarré server2, ce
définies, parmi lesquelles webSocketEvent() est la plus importante. fichier HTML est utilisé par défaut lorsqu’un navigateur web se connecte
Elle est appelée à chaque fois qu’un message envoyé par le naviga- comme indiqué par le premier argument dans le code suivant :
teur arrive. S’il s’agit d’un message au format JSON, la fraction de server2.serveStatic()
code suivante extrait la commande cmd et la valeur val à l’aide des server2.begin();
fonctions de la bibliothèque ArduinoJson. Selon la commande reçue, server2.serveStatic("/",SPIFFS,
les actions appropriées sont alors exécutées. Par exemple, la réception "/esp32_impedance_analyzer.html");
de la commande SWEEP renverra des informations au navigateur par
la fonction sendMSG() et positionnera la variable mmode à la valeur 1 La suite du code de la fonction setup() ressemble beaucoup au
qui est utilisée dans la boucle principale. webSocketEvent() étant contenu du sketch précédent.
appelée de façon asynchrone, elle interrompt les autres activités et doit Dans la fonction loop() , ce qui concerne les serveurs http et
être maintenue le plus court possible ; par conséquent, le balayage en websocket est tout d’abord traité, avant la vérification de la variable
fréquence est confié au programme principal. D’autre part, la définition info_available. Cela est réalisé par sendMSG() qui informe que
de la fréquence de départ du balayage freqmin n’utilise que très peu info_buffer contient un message au format JSON qui est traité
de cycles de la CPU et se trouve dans la fonction webSocketEvent(). immédiatement transmis au navigateur par un appel à webSocket.
sendTXT().
DynamicJsonDocument root(300);
deserializeJson(root,payload); server2.handleClient(); // handle http server
const char *cmd = root["cmd"]; webSocket.loop(); // handle websocket server
const long val = root["val"]; if (info_available==1) {
if (strstr(cmd,"SWEEP")) { info_available=0;
sendMSG("INFO","ESP32: Received Sweep command"); webSocket.sendTXT(websock_num,
mmode=1; info_buffer,strlen(info_buffer));
} else if (strstr(cmd,"FMIN")) { }
freqmin=val;
Serial.printf("FreqMin = %g\n",freqmin); La valeur de mmode est ensuite vérifiée, et l’action appropriée est initia-
} else lisée. Par exemple, mmode==1 active le balayage de la fréquence par
un code très similaire à celui précédemment utilisé. Dans ce cas,
... un message au format JSON nommé WFO (pour waveform ou forme
d’onde) est créé et enregistré dans la variable doc par la commande :
Une suite de commandes similaires à celles utilisées précédemment
est traitée de façon identique. doc["WF0"][nn-1]=floor((512/16)*Z);
L’exemple de code suivant, extrait de la fonction setup(), connecte
d’abord le réseau WLAN selon les paramètres fournis précédem- dans laquelle la variable nn permet de reboucler sur toutes les valeurs
ment. Elle envoie des points sur la liaison série jusqu’à ce que cela de la fréquence et Z est la valeur absolue de l’impédance à cette
réussisse, puis elle affiche l’adresse IP, démarre la communication fréquence. Notez que la variable est calibrée pour une couverture de
avec le websocket, et paramètre WebSocketEvent de façon à traiter 0 à 16 kΩ sur 512 pixels et ses valeurs sont converties en un entier
les messages provenant du websocket. Notez que la ligne de commu- par le fonction floor(). Lorsque la boucle est terminée, la courbe est
nication série n’est pas absolument nécessaire à ce stade, mais elle envoyée au navigateur par :
permet de mieux observer ce qui se passe dans l’ESP32, en particulier
durant la phase de développement du système. serializeJson(doc,out);
webSocket.sendTXT(websock_num,out,strlen(out));
WiFi.begin(ssid, password); sendMSG("INFO","ESP32: Sweep completed");
while(WiFi.status() != WL_CONNECTED)
{Serial.print("."); delay(500);} et informe de la fin du balayage par sendMSG(). Les autres valeurs
Serial.print("\nConnected to "); de mmode permettent de sauvegarder les données de calibration et
Serial.print(ssid); envoient au navigateur les valeurs estimées du condensateur, de la
Serial.print(" with IP address: "); résistance, ou de l’inductance.
Serial.println(WiFi.localIP()); Le fichier esp32_impedance_analyser.html décrit la page web et
webSocket.begin(); contient le code javascript qui la rend dynamique.
webSocket.onEvent(webSocketEvent);
La page web
Ensuite, toujours dans setup(), on vérifie que le système de fichier La plupart des pages web interactives utilisent les balises <style>
SPIFFS a bien été créé, comme dans la première partie puis on en pour décrire les aspects génériques de l’apparence des objets affichés
extrait les données de calibration. Cependant, à cet instant, le système par la page, suivies par des commandes HTML décrivant la page web
SPIFFS contient également le fichier esp32_impedance_analyser.html et les instructions javascript qui assurent son interactivité.

lektor juillet/août 2023 35


Les instructions de style suivantes qui apparaissent au début du fichier <path id="trace1" d="M0 200" />
esp32_impedance_analyzer.html définissent un cadre entourant la zone </svg>
affichée et l’affichage de deux tracés rouge et noir. La dernière instruc-
tion permet l’affichage de l’adresse IP en haut et à droite de la page : À la fin, les deux lignes d’état sont définies par :

<style> <div id="status">Status window</div>


#displayarea { border: 1px solid black; } <div id="reply">Reply from ESP32</div>
#trace0 { fill: none; stroke: red; stroke-width: 2px;}
#trace1 { fill: none; stroke: black; stroke-width: 1px;} Elles sont identifiées par l’identificateur id, qui permet la modification
#ip {float: right;} ultérieure du texte affiché. De façon identique, la zone affichant l’adresse
</style> IP est identifiée par l’identificateur ip en haut à droite.

La partie principale de la description de la page est insérée entre les JavaScript


balises <BODY> et </BODY>. Au début de cette section se trouvent la Toutes les commandes JavaScript sont insérées entre des balises
définition des boutons. La définition du premier bouton encadrée par SCRIPT. Après la balise d’ouverture, plusieurs variables sont définies,
des balises button est la suivante : et l’adresse IP de l’ESP32 est déterminée par :

<button id="sweep" type="button" var ipaddr=location.hostname + ":81";


onclick="sweep();">Sweep</button> document.getElementById(’ip’).innerHTML=ipaddr;

Sweep est inscrit sur le bouton, un clic provoque l’exécution de la Ici, le numéro de port du websocket est ajouté à l’ESP32 et le texte de
fonction sweep(). Ce type d’actions liées à un évènement sont bapti- la balise, identifié ip, est immédiatement mis à jour. L’espace alloué à
sées fonctions de rappel. L’assignation de l’identificateur sweep au l’affichage du texte est accédé à la deuxième ligne par une commande
bouton permet de changer ultérieurement ses propriétés, par exemple de construction assez longue, dans laquelle document se réfère à la
le texte affiché ou l’action déclenchée. La définition de l’autre bouton page web elle-même. La partie suivant le point donne accès à l’élé-
suit les mêmes règles. ment nommé ip et innerHTML se réfère au texte affiché qui est alors
Le menu de sélection de la deuxième ligne utilise une syntaxe modifié pour afficher ipaddr. Cette construction de commande est
légèrement différente. La définition de ce menu est encadrée par utilisée de façon extensive pour accéder à des éléments nommés et
des balises SELECT . Si l’une des entrées est choisie, elle appelle modifier leurs propriétés. Les fonctions toStatus() et toReply()
setDataFreqMin(thisvalue), où thisvalue est la valeur spéci- suivent cette partie pour copier le texte dans les lignes d’état en bas
fiée dans les différentes balises OPTION. Les balises OPTGROUP sont de la page web.
uniquement présentes pour agrémenter la clarté du code. Connaissant maintenant l’adresse du websocket de l’ESP32, ce dernier
est ouvert par la commande new WebSocket() puis les fonctions de
<SELECT onchange="setDacFreqMin(this.value);"> rappel sont ajoutées aux évènements onopen, onclose et quelques
<OPTGROUP label="Sweep start frequency"> autres. Un court message est souvent envoyé à la console JavaScript
<OPTION value="1000">Fmin = 1 kHz</OPTION> par la commande console.log (). La console est accessible par
<OPTION value="2000">Fmin = 2 kHz</OPTION> les outils de développement du navigateur, en utilisant par exemple,
<OPTION value="5000">Fmin = 5 kHz</OPTION> le raccourci clavier Ctrl-Shift dans Chrome.
<OPTION selected="selected" value="10000">
Fmin = 10 kHz</OPTION> var websock = new WebSocket(’ws://’ + ipaddr);
<OPTION value="20000">Fmin = 20 kHz</OPTION> websock.onopen = function(evt)
<OPTION value="50000">Fmin = 50 kHz</OPTION> {console.log(’websock open’);};
</OPTGROUP>
</SELECT> La fonction de rappel la plus intéressante réagit à l’arrivée des messages
provenant de l’ESP32. La fonction raccourcie websock.onmessage()
Pour terminer, la zone affichant l’impédance est de type SVG (Scalable analyse le message au format JSON dont le contenu est enregis-
Vector Graphic c’est-à-dire affichage graphique vectoriel adaptable), tré dans event.data et place la paire de valeurs de la commande
elle possède une taille de 1024 x 512 pixels et affiche deux courbes dont dans la structure stuff. Si stuff contient la commande INFO, la
les identificateurs sont trace0 et trace1. L’identificateur id permet valeur associée est mémorisée dans val et affichée sur la page web
leur modification ultérieure. La propriété d décrit la forme d’onde. L’ini- par toReply(). Si la commande est WFO, elle contient la courbe des
tialisation est faite en déplaçant le curseur sur le pixel (0,200) avec données d’impédance. Le nombre de points transmis est déterminé
M0 200. Par la suite, d est redéfinie par la courbe WFO en provenance par val.length. Pour s’y adapter, l’axe horizontal est mis à l’échelle
de l’ESP32. afin d’utiliser la totalité des 1024 pixels. La propriété d du tracé est
initialisée et les points y sont ajoutés, un pour chaque entrée de val.
<svg id="displayarea" width="1024px" height="512px"> Le pixel correspondant à la valeur 0,0 étant en haut à gauche, la
<path id="trace0" d="M0 200" /> position verticale doit être inversée en affichant le pixel 512-val[i].

36 juillet/août 2023 www.elektormagazine.fr


Pour terminer, la ligne de référence de calibration par la résistance, Sur la figure 5, on peut voir que la résonance d’un circuit parallèle RLC
de couleur noire, est affichée. utilisé en test, indique un pic de résonance proche de la fréquence 24
kHz où cette impédance est supérieure à 16 kΩ.
websock.onmessage=function(event) { Le microprogramme et les autres fichiers peuvent être téléchargés
var stuff=JSON.parse(event.data); depuis [7]. L’analyseur d’impédance est maintenant autonome dans le
var val=stuff["INFO"]; // info sens où aucun programme de contrôle n’est nécessaire à son fonction-
if (val != undefined) {toReply(val);} nement. Tous les échanges se font entre l’ESP32 et un navigateur,
var val=stuff["WF0"]; // waveform0 même dans le cas d’un smartphone.
if (val != undefined) { VF : Jean Boyer — 230039-04
nstep=Math.floor(0.5+1024/val.length)
pixmax=nstep*val.length;
var d="M0 511"; Des questions, des commentaires ?
for (i=0; i<val.length; i++) Contactez Elektor ([email protected]).
{d += ’ L’ + (nstep*i) + ’ ’ + (512-val[i]);}
document.getElementById(’trace0’).setAttribute(’d’,d);
d="M0 480 L1024 480"; À propos de l’auteur
document.getElementById(’trace1’).setAttribute(’d’,d); L’intérêt de Volker Ziemanns pour l’électronique a commencé avec
} l’amplificateur Edwin de 40 W (Elektor au milieu des années 1970),
} mais il a suivi une orientation différente et étudié la physique, puis
a travaillé sur des accélérateurs de particules – au SLAC aux États-
La suite du code JavaScript est principalement constituée de l’affecta- Unis, au CERN à Genève et maintenant à Uppsala en Suède. L’élec-
tion des fonctions de rappel aux boutons menus. La fonction sweep(), tronique ayant un rôle primordial dans le contrôle et l’acquisition
déclenchée par le bouton correspondant est la suivante : de données des accélérateurs, son intérêt précoce lui a été utile au
function sweep() { cours de sa carrière. Il enseigne maintenant à l’Université d’Uppsala.
websock.send(JSON.stringify Un de ses livres traitant de l’acquisition de données avec Arduino
({ "cmd" : "SWEEP", "val" : -1 })); et Rapsberry Pi traite du sujet de cet article.
}

La fonction JSON.stringify() encapsule ses arguments dans un


message correctement formaté et websocket.send() le transmet à
l’ESP32. Toutes les autres fonctions de rappel utilisent une structu-
ration identique.
Juste avant la fin de la section JavaScript, showCoordinates() est
définie pour afficher la fréquence et l’impédance correspondant au
pixel du graphique dans la zone que l’on peut choisir en cliquant.
Cette fonction répond à un évènement mousedown en attachant
addEventListener() à displayarea:
Produits
document.getElementById("displayarea") > ESP32-DevKitC-32D (SKU 18701)
.addEventListener(’mousedown’, showCoordinates, false); www.elektor.fr/18701

Cette possibilité est très pratique pour déterminer directement les


> OWON HDS1021M-N oscilloscope à 1 voie (20 MHz) +
multimètre (SKU 18778)
fréquences et les impédances correspondantes depuis l’affichage www.elektor.fr/18778
du tracé.

LIENS
[1] ESP32 Technical Reference Manual (Version 4.7), disponible à l’adresse :
https://www.espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
[2] Descritpion du générateur sinusoidal ESP32 : https://github.com/krzychb/dac-cosine
[3] Site web Arduino : https://www.arduino.cc
[4] Fonctions de support Arduino : https://github.com/espressif/arduino-esp32
[5] V. Ziemann, A Hands-on Course in Sensors Using the Arduino and Raspberry Pi, 2nd ed., CRC Press, Boca Raton, 2023:
[6] ESP32fs Plugin : https://github.com/me-no-dev/arduino-esp32fs-plugin
[7] Code source de ce project sur GitHub : https://tinyurl.com/4awvvemc

lektor juillet/août 2023 37


LABO DOMESTIQUE

visite à domicile
encourageons les réalisations personnelles

Ruud van der Meer (Pays Bas) et


Eric Bogers (Elektor)
Figure 1. Le laboratoire
Après une longue et brillante personnel de Ruud bien rangé.

carrière en électronique, lorsqu’ils


atteignent l’âge de la retraite, de mesures. En développant des équipements et systèmes
nombreuses personnes portent de test, j’ai pu améliorer de nombreux processus de
leur attention sur des sujets travail. Après plusieurs années, je suis devenu leader
d’équipe, et en coopération avec le Siemens Hobby
complètement différents, comme Computer Club, j’ai développé notre propre PC alors
par exemple la culture des tomates appelé SUMO80. »
ou l’élevage des cochons d’inde,
Ruud remarqua très tôt que certaines personnes avaient
pourvu que cela n’ait rien à voir avec besoin d’un peu d’aide pour se frayer un chemin dans les
l’électronique. Ruud van der Meer technologies nouvelles, c’est pourquoi il a alors commencé
qui réside à Roelofarendsveen, est à enseigner des formations dans sa compagnie ainsi qu’au
centre de formation régional (Regional Training Center),
Actuellement, une des exceptions. Après avoir dans les domaines de l’ingénierie électrique et électro-
passé plus de 40 ans chez Siemens, nique, les méthodes numériques, les technologies de
il n’y a pas son enthousiasme est toujours communication et la mécatronique.
assez de intact.
« Par la suite, j’étais à la recherche d’un nouveau
challenge qui se présenta quand on me demanda de
réalisations prendre la direction de la formation professionnelle
électroniques chez Siemens. Il y avait alors environ 60 étudiants dans
Après avoir étudié dans une école professionnelle et suivi le programme d’ingénierie électrique. L’un de mes
personnelles. une formation en mesures et techniques de contrôle, puis objectifs (en plus de la partie théorique du programme),
un cursus supérieur de technicien en électronique, Ruud était d’améliorer l’intégration des nouveaux embau-
commença sa carrière chez Siemens en 1970, dans le dépar- chés dans la compagnie, processus qui avait décliné
tement des équipements de mesure et contrôle, instru- au cours du temps. En plus d’autres approches, j’y suis
ments de mesures et calibration. Selon ses propres mots : parvenu en étendant le programme de formation à
« Il y avait des tas d’opportunités. En un temps très l’électronique, la technologie PLC (Programmable Logic
court, j’ai développé de nombreux projets, en particu- Controller), les technologies de communication ainsi
lier des afficheurs à LED, des contrôleurs PID (Propor- que la mécatronique la dernière année, en coopéra-
tionnel, Intégrale et Dérivée) et des transducteurs de tion avec des conférenciers de l’université de Delft. »

38 juillet/août 2023 www.elektormagazine.fr


Le programme de formation professionnelle de la compa-
gnie Siemens a été clos en 2005, Ruud dût alors recher-
cher un job dans un autre domaine (mais toujours chez
Siemens). Il a finalement trouvé un poste dans le dépar-
tement responsable de la domotique et de la protection
incendie. Figure 3. La zone électronique et ses
« Pour faire court, en termes de processus de travail, équipements de test et mesures.
on en était à l’âge de pierre, mais rapidement, je me
suis consacré à la remise en ordre du département.
Puis vint l’heure de la retraite en 2016. » « Mon laboratoire (ou plus simplement l’atelier de mon
hobby) existe depuis 1985. Ce que vous voyez sur la
Il était alors, à nouveau, temps de faire quelque chose de photographie est le local que j’utilise depuis 2005.
différent. Ruud est devenu le premier conseiller en énergie La partie informatique est sur la gauche, l’ensemble
de la municipalité de Kaag en Braassem, tout en formu- électronique et mesure au milieu, sur la droite, l’ate-
lant des recommandations concernant la durabilité. En lier de mécanique. C’est ici que j’ai développé mon
partie pour cela, il a développé de nombreux systèmes de robot de nettoyage, exemple d’exercice pratique de
domotique basés sur Arduino. mécatronique (figure 2). »
« À la suite de multiples présentations concernant le « J’ai développé de nombreux équipements de test
microcontrôleur Arduino au Hobby Computer Club, il et de mesures. Je n’ai malheureusement plus mon
m’a été demandé de le faire pour le Leidershop Adult oscilloscope à tube de réalisation personnelle, mais
Creation Center (LVU) il y a de cela six ans. Ensuite, de nombreux dispositifs, dont certains élaborés par
j’ai également enseigné des formations sur le micro- des collègues, sont toujours présents. La figure 3 en
contrôleur Arduino dans les centres d’apprentissage illustre l’envergure. »
des adultes d’Alphen aan de Rijn, Lisse et Hillegom. « L’un de mes projets récents est basé sur le kit calcu-
Nous avons maintenant réuni un groupe impor- lateur maison de KKmoon. À mon avis, il ne possé-
tant de personnes enthousiastes et nous organisons dait pas assez de fonctionnalités dans sa forme origi-
mensuellement un Café Arduino, sans oublier la nale, de plus, il était difficile à reprogrammer. C’est
journée mondiale Arduino. Il y a également beaucoup malgré tout une excellente réalisation au niveau
d’intérêt pour le cours de réalisations électroniques. » matériel, c’est pourquoi, j’ai décidé de lui développer
« Il n’y a pas suffisamment de réalisations électro- un nouveau cœur, basé évidemment sur une carte Des questions,
niques personnelles (DIY), bien que ce soit devenu si Arduino. Nous construisons actuellement un grand des commen-
facile grâce à Arduino. » nombre de ces calculateurs maison avec un groupe taires ?
Contactez Elektor
d’étudiants Arduino. Les fonctionnalités du calculateur
([email protected]).
Mon laboratoire personnel (en plus des fonctions de calcul de base) ont été conçues
Ruud a développé de nombreux supports de forma- pour les personnes qui sont fréquemment menées à
tion (schémas, circuits imprimés et logiciels) pour programmer d’autres activités techniques. La figure
l’ensemble des cours et sessions pratiques. La plupart 4 en montre l’aspect extérieur et une vue interne. »
ont été créés dans son laboratoire personnel (mais Ce multi calculateur Arduino fera l’objet d’une présenta-
également, au début, diverses réalisations pour tion plus détaillée dans une des prochaines éditions du
Siemens). La figure 1 donne une impression de son magazine Elektor.
laboratoire personnel. VF : Jean Boyer — 230035-04

Figure 2. Le robot de nettoyage. Figure 4. Vues externe et intérieure du multi calculateur.

lektor juillet/août 2023 39


LIVRES ET KITS D’ELEKTOR

la carte
d’apprentissage
MCCAB pour
Arduino Nano
plateforme pour le cours
« Microcontrollers Hands-On Course »

Wolfgang Trampert (Allemagne) et Jan Buiting (Elektor)

L’assemblage de petits circuits d’extension


pour Arduino consiste à placer des La carte d’apprentissage pour Arduino Nano « MCCAB
» (Microcontroller Crash Course for Arduino Beginners)
composants sur une plaque d’essai et de les a été spécialement conçue par l’auteur et fabriquée
connecter avec quelques fils de connexion pour accompagner le guide d’Elektor Microcontrol-
colorés. Cependant, toutes ces connexions lers Hands-on Course for Arduino Starters. La carte
MCCAB, le guide (en anglais ou en allemand) et une
prennent souvent plus de temps que carte Arduino Nano sont disponibles en offre groupée
l’écriture du programme. De plus, la dans l’e-choppe Elektor [1].
disposition des composants, par exemple, Sur la carte d’apprentissage – appelée MCCAB dans
la suite de cet article – de nombreux composants
pour un feu de circulation à 11 LED et sont déjà connectés au module de microcontrôleur
autant de résistances en série est sujette branché ou peuvent être connectés avec de simples
à des erreurs et à des heures précieuses fils de connexion. Ces composants incluent des inter-
rupteurs/boutons, des LED, des potentiomètres, des
consacrées au débogage du matériel ! buzzers, un écran LCD, des interfaces et des convertis-
Dans de tels cas, une carte d’apprentissage seurs de niveau pour les connexions séries, ainsi que
dédiée, comme la nouvelle « MCCAB des étages pilotes pour les appareils externes.
Il est possible de connecter des modules externes au
» d’Elektor, est plus pratique, surtout MCCAB via un connecteur femelle, ou vous pouvez les
qu’elle est livrée avec un excellent manuel relier au microcontrôleur de la carte via les interfaces
utilisateur. série. Cela permet d’éviter l’assemblage fastidieux de
circuits expérimentaux et de se concentrer sur l’essen-
tiel, c’est-à-dire sur le logiciel, ou « le programme ».
Nous chargerons donc les programmes créés dans
Note de la redaction.cet article est un extrait du livre Microcontrol- nos exercices dans le microcontrôleur ATmega328P
lers Hands-on Course for Arduino Starters (Elektor, 2023), formaté du MCCAB, où ils seront exécutés (comme code de
et légèrement modifié pour correspondre aux normes éditoriales programme).
et à la mise en page du magazine Elektor. L’auteur et l’éditeur ont Certaines des 32 broches du microcontrôleur
fait de leur mieux pour l’éviter et seront heureux de répondre aux ATmega328P sont utilisées pour son alimentation –
questions – pour les contacter, voir l’encadré « Des questions, des un quartz est connecté à l’oscillateur intégré pour la
commentaires ? » génération du signal d’horloge – ou comme entrée

40 juillet/août 2023 www.elektormagazine.fr


RESET pour le bouton-poussoir du module de micro- (2) Connecteurs SV5 et SV6 pour les entrées/sorties
contrôleur connecté au MCCAB (l’appui sur ce bouton du microcontrôleur. En utilisant des câbles Dupont,
réinitialise le microcontrôleur à l’état initial défini il est possible de connecter les broches d’E/S (GPIO)
et redémarre le programme). Cependant, la majorité du microcontrôleur aux composants internes de la
des broches sont des entrées/sorties à usage général carte d’apprentissage ou à des modules externes via
(GPIO), qui peuvent être utilisées pour connecter le ces deux connecteurs.
microcontrôleur au monde extérieur. Sur le MCCAB, (3) 11 LED, LD10-LD20 (indicateurs d’état pour les
ces broches – sauf quelques exceptions réservées à des entrées/sorties D2-D12 du microcontrôleur). On peut
fins internes – sont accessibles grâce à des barrettes connecter chaque LED aux broches affectées, D2-D12,
de connecteurs. via un cavalier sur le connecteur JP6.
La figure 1 montre une vue du MCCAB avec ses blocs (4) Matrice LED 3×3 LD1-LD9 (9 LED rouges). Les
fonctionnels codés en couleur. Le mode d’emploi du colonnes sont connectées en permanence aux sorties
MCCAB, avec une description détaillée de tous les D6, D7 et D8 du microcontrôleur, et les lignes peuvent
composants, est téléchargeable gratuitement sur le être connectées aux broches D3, D4 et D5 avec des
site web d’Elektor [2]. cavaliers sur le connecteur JP1.

Blocs fonctionnels du MCCAB Si les lignes de la matrice LED 3×3 sont


Sur la figure 1, on peut distinguer les blocs fonction- connectées aux broches D3, D4 et D5 via les
nels et les modules suivants sur le MCCAB. cavaliers sur le connecteur JP1 ou à d’autres broches
(1) Module microcontrôleur Arduino Nano avec du microcontrôleur avec des câbles Dupont, ces lignes,
bouton RESET (flèche 1a), LED (flèche 1b) et prise mini ainsi que les colonnes D6, D7 et D8, ne doivent jamais
USB pour la connexion au PC de l’utilisateur. être utilisées pour d’autres tâches dans un croquis.

Microcontrollers Hands-On Course for Arduino Starters


Figure 1. Schéma
fonctionnel de la carte
6 d’apprentissage pour
Arduino Nano « MCCAB
5 » d’Elektor.

1
2
9
1
1
4 7

1
0

3 2 1a 1b 2 8
1

Figure 22: Block diagram of the Elektor Arduino Nano Training Board
MCCAB

The Function Blocks on the Elektor Arduino Nano Training lektor juillet/août 2023 41
nerate moving images.

ng the matrix in multiplex mode

shows that each col-

column C
column A

column B
nd each row line of the

D8

D7

D6
the Elektor Arduino 
ning Board MCCAB is
Figure 2. Matrice LED
to three LEDs each. A B C
3×3.
s that the simultaneous 1 1 1 décrites plus en détail dans la suite. Pour les parties
all rows and columns row 1 restantes, veuillez vous référer à la description détail-
work, as LEDs that A B C D3 lée dans le document MCCAB Operating Instructions [2].
tually be switched off 2 2 2
light up unintentional- row 2 i La bibliothèque MCCAB_Lib est disponible pour
piloter la matrice LED 3x3, les LED LD10-LD20,
d – as shown in Figure D4
A B C les boutons K1-K6 et les interrupteurs S1-S6, ainsi que
one row line may be 3 3 3 Buzzer1. La bibliothèque est disponible gratuitement
a time and the column par les propriétaires de MCCAB et intégrée dans l’EDI
row 3
apply the bit pattern D5 Arduino.
ee LEDs of the current- Pour contrôler l’écran LCD, nous utilisons la biblio-
d row. Figure 23: 3 x 3 LED Matrix thèque LiquidCrystal_I2C, que vous pouvez télécharger
gratuitement et ajouter à l’EDI Arduino.

43 Matrice LED 3×3


Une double affectation des broches de la matrice Le MCCAB contient neuf diodes électroluminescentes
risque d’entraîner des dysfonctionnements, voire placées dans une matrice (voir figure 1). La figure 2
d’endommager le MCCAB !
ontrollers Hands-on Course for Arduino Starters.pdf 41
montre leur circuit de base.
09/02/2023 10:26
(5) Écran LCD de 2×16 caractères, connecté via le bus La matrice se compose de trois colonnes et de trois
I2C aux broches A4 et A5 du microcontrôleur. Il est lignes. Les colonnes sont nommées A, B et C, tandis
possible de couper la tension qui alimente l’écran LCD que les lignes sont numérotées 1, 2 et 3. À chacune
en tirant le cavalier JP5, pour les essais ou les tests ou des neuf intersections colonne/ligne, une LED est
l’écran n’est pas utilisé. connectée – son anode à la colonne et sa cathode à
(6) Il est possible de connecter le buzzer piézoélec- la ligne. Les neuf LED sont étiquetées en fonction de
trique Buzzer1 à la broche D9 avec un cavalier sur la leurs positions colonne/ligne respectives, par exemple,
position « Buzzer » du connecteur JP6. « B2 » est connectée à la colonne B et à la ligne 2. Pour
(7) 6 interrupteurs à glissière, S1-S6, connectés qu’une LED s’allume, sa colonne doit être au niveau
en parallèle à 6 boutons, K1-K6. Il est possible de les logique 1 (+5 V) et sa ligne au niveau logique 0 (0 V).
connecter aux entrées A0-A3 et D12-D13 du micro- Le manuel d’utilisation du MCCAB indique que les
contrôleur via des cavaliers sur le connecteur JP2. colonnes sont connectées en permanence aux broches
(8) Potentiomètres P1 et P2, dont les curseurs sont D6-D8 du microcontrôleur. Vous pouvez connecter
connectés aux broches d’entrée analogique du micro- les lignes aux broches D3-D5 avec des cavaliers sur
contrôleur, A6 et A7. L’alimentation 3,3 V ou 5 V peut le connecteur JP1.
être appliquée aux potentiomètres via le connecteur Si les lignes de la matrice LED 3×3 LED sont connec-
JP3. tées aux broches D3, D4 et D5 via les cavaliers sur le
connecteur JP1 ou aux autres broches du microcontrô-
Attention : les broches A6 et A7 de l’ATme- leur avec des câbles Dupont, les lignes et les colonnes
ga328P sont définies comme des entrées D6-D8 ne doivent pas être utilisées pour d’autres tâches
analogiques par l’architecture interne de la puce. dans votre croquis. Une telle connexion des broches
Les configurer avec la fonction pinMode() n’est pas de la matrice entraînerait des dysfonctionnements
autorisé et peut conduire à un comportement erroné ou, dans le pire des cas, endommagerait le MCCAB !
du programme. Si la matrice n’est pas utilisée dans un croquis,
(9) Les broches SV1 et SV7 sont des sorties de vous devez enlever les cavaliers sur le connec-
commutation pour les appareils externes. teur JP1 du MCCAB.
(10) Connecteurs pour la liaison série des modules
SPI et I2C externes. Avantages de l’arrangement matriciel
(11) Barrette de connexion SV2 avec 2×13 broches pour Les matrices LED sont souvent utilisées, par exemple
la connexion de modules externes. dans les stades, avec des LED colorées de forte
(12) Le connecteur SV4 est le distributeur des puissance pour générer des images animées.
tensions de fonctionnement de la carte. Ces Si nous devions piloter 9 LED individuellement, nous
tensions peuvent alimenter des composants internes aurions besoin de 9 broches du microcontrôleur. En
de la carte d’apprentissage ou des modules externes organisant les LED dans une matrice, nous aurons
avec des câbles Dupont. besoin de six broches seulement. Plus il y a de LED à
Les deux unités fonctionnelles un peu plus complexes, piloter, plus l’avantage de l’utilisation d’une matrice est
la matrice 3×3 LED et l’écran LCD (voir figure 1) seront grand : avec une matrice composée de huit colonnes et

42 juillet/août 2023 www.elektormagazine.fr


connections of all light-emitting diodes that are to light up in the currently
active row are set to HIGH level. The column connections of the LEDs in
the active row that are not to be lit are at LOW potential.

row 1 LOW row 1 HIGH row 1 HIGH row 1 LOW


row 2 HIGH row 2 LOW row 2 HIGH row 2 HIGH
row 3 HIGH row 3 HIGH row 3 LOW row 3 HIGH 

step 1 step 2 step 3 step 1 … Figure 3. Activation


progressive et cyclique
Figure 24: Periodic stepwise activation of the three rows of the matrix des trois lignes qui
composent la matrice.
For example, to light up the two LEDs A3 and C3, row 3 must be at LOW
huit lignes,
level nous
andpouvons
columnspiloter
A 64 LED,Calors
and qu’avec level,
at HIGH et même
whiledesthe
caractères
two rowspéciaux définis
lines 1 and par2l’utili-
des lignes
are de
atcontrôle
HIGH individuelles, 48 brochesBsupplé-
level and column sateur.
is at LOW L’afficheur utilisé comporte deux lignes de 16
level.
mentaires seraient nécessaires ! colonnes. Il est possible d’afficher un caractère dans
chaque colonne. Chaque caractère est formé des points
Pilotage de la matrice en mode multiplex d’une matrice 5×8, comme le montre la figure 4. Les
The LC (Liquid Crystal) Display
La figure 2 montre que chaque colonne et chaque séquences de bits de la matrice 5×8 points nécessaires
ligne The
de la matrice
Elektor surArduino
le MCCAB est Nanoconnectée
Training à troisBoard pour MCCAB
chaque caractère individuelwith
is equipped sont stockées
an LC- à l’inté-
LED. Par conséquent, le contrôle simultané de toutes rieur du contrôleur LCD selon la table ASCII.
Display (LCD) that enables the output of texts, numerical values and even
les lignes et colonnes ne fonctionnerait pas, car les LED L’ASCII est un code de 7 bits, alors que notre micro-
self-defined
qui devraient special
en fait être characters.
éteintes seraient allumées The display used
contrôleur has 2 lines
ATmega328P with
est une 16 de
« unité col-
8 bits »,
umns each, one character can be displayed in each column.
involontairement. Au lieu de cela, comme le montre ce qui signifie qu’il peut traiter un octet à la fois et Each character
la figure 3, une seule
is formed fromlignethe peutpoints
être activée of àala5fois  8 matrix,
stocker ses asdonnées
shownsous in la
Figure
forme 26. The Par
d’un octet.
et les required
colonnes doivent appliquer la
bit patterns ofséquence
the 5 de8bits conséquent,
dot matrix forleeach
huitième bit est généralement
individual charactermis à
de la ligne activée. Les deux autres lignes doivent être 0 lors du stockage des codes ASCII. Cependant, les
are stored inside the LCD controller according to the ASCII table from sec-
ouvertes pendant ce temps ou désactivées avec un développeurs du contrôleur d’affichage HD44780 (qui
tion 8.1.
niveau logique haut afin qu’aucun courant ne puisse est standard dans cette catégorie et que l’on trouve sur
les traverser.
Now, the ASCII code (see section 3.3.1) presque
is atous les modules
7-bit code (the LCD) n’ont
eighthpas voulu
bit oflaisser
Si les trois lignes sont rapidement activées les unes ce huitième bit inutilisé, et ont étendu le jeu de carac-
the ASCII character code has the value 0), but our microcontroller ATme-
après les autres comme dans la figure 3, et à cause de tères ASCII de 128 codes de caractères supplémentaires
ga328Prétinienne,
la persistance is an "8-bit machine",
on voit une image statiqueso it can(où process a byte
le huitième bit estin
à laone step
valeur and1).also
logique Pour cette
stores
des neuf LED. Le itsprogramme
data in utilisateur
byte format. contrôle Thela developers
raison, notre LCD of utilise
the également
display les controller
codes de carac-
matriceHD44780 (which
avec une boucle is dans
infinie, standard
laquelle in l’une this
des category
tères 128 àand can
255 (de be found
manière plus ouon almost
moins contiguë).
trois lignes,
all LCD 1, 2 ou 3, est mise did
modules) à un niveau
not want logique tobas leave Outre
theleseighth
95 caractères
bit ofimprimables
the byte correspondant
unused
cycliquement,
and extended tandis quethe les deux autres
ASCII lignes sont setauxby
character codes 32-126, l’ASCII
another 128 compte
characterégalement 33 carac-
codes,
mises à un niveau haut. Les connexions de colonne tères de contrôle, à savoir 0-31 et 127, qui sont « non
de toutes les LED à allumer dans la ligne active sont imprimables ». Comme ces caractères sont destinés
mises au niveau haut. Les connexions de colonne des à des fins de contrôle, l’écran ne les affiche pas. Le
LED qui doivent être éteintes dans la ligne active sont contrôleur d’affichage HD44780 est disponible en deux
44
mises à un niveau logique bas. versions : soit avec le code ROM A00, soit avec le code
Par exemple, pour allumer deux LED, A3 et C3, la ROM A02. La version A00 affiche des caractères vides
ligne 3 doit être au niveau bas et les colonnes A et C au pour les codes 106-31 ainsi que 128-159. La version
niveau
BIW SKU20413 haut, tandis
9783895765452 que lesHands-on
Microcontrollers deux lignes
Course forde la rangée,
Arduino 1 42 A02 affiche des caractères spéciaux pour ces espaces
Starters.pdf 09/02/2023 10:26

et 2, sont au niveau haut et la colonne B au niveau bas. d’adresses (voir tableau 1). Il est impossible de prévoir
Microcontrollers Hands-On Course for Arduino Starters
laquelle des deux versions de ROM est installée dans
LCD l’écran LCD du MCCAB, car c’est le fabricant du module
Le MCCAB d’Elektor est équipé d’un afficheur LCD qui LCD qui fait ce choix.
permet this purpose,
d’afficher the des
du texte, LCD has numériques
valeurs a cursor thatL’utilisateur
determines thedéfinir
peut position of the
jusqu’à huit cha-
caractères
racter to be written. The LCD library described in Chapter 3.15 contains
methods for positioning this cursor (see table in Figure 83).

column number
row number

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 

Figure 4. Illustration
de l’afficheur LCD du
MCCAB avec ses 16×2
caractères affichables.
Figure 26: Schematic diagram of the used LC-Display with 16  2 display-
able characters

Although the display can only show 16 characters in each row, the memo- lektor juillet/août 2023 43
Table 1. Allocation de mémoire de caractères pour les deux variantes
de HD44780
Code de caractère Code ROM A00 Code ROM A02
incluses dans la bibliothèque LCD, la zone de mémoire
0–7 caractères définis caractères définis
visible à l’afficheur peut être déplacée sur l’ensemble
par l’utilisateur par l’utilisateur
de la zone de mémoire.
8–15 caractères définis caractères définis La figure 5 comporte trois parties :
par l’utilisateur par l’utilisateur > en haut : la zone visible de l’afficheur dans le
16–31 (sans affichage) caractères visibles réglage de base, sans opérations de décalage
préalables.
32–127 caractères visibles caractères visibles
> au milieu : le contenu de l’afficheur par défaut
128–159 (sans affichage) caractères visibles après décalage à gauche.
160–255 caractères visibles caractères visibles > en bas : le contenu de l’afficheur par défaut après
Microcontrollers Hands-On Course for Arduino Starters
un décalage à droite.

Réglage du contraste de l’écran LCD


this purpose, the LCD has a cursor that determines the position of the cha-
spéciaux et les afficher sur l’écran LCD. Les codes ASCII Le MCCAB ne dispose pas d’un réglage de contraste
racter
0 à 7 sont to beà ces
attribués written. The LCD
huit caractères library pour
spéciaux. described
l’afficheurinLCD.
Chapter 3.15
Pour cette contains
raison, et parce que le
methods for positioning this cursor
En option, il est possible d’adresser ces mêmes huit (see table in Figure 83).
contraste de l’écran peut varier en fonction des condi-
caractères spéciaux par l’intermédiaire des codes tions environnementales (telles que la température)
ASCII 8 à 15. ou du vieillissement, le LCD est doté d’un potentio-
La figure 4 montre également la numérotation des mètre de réglage qui permet d’ajuster le contraste. Ce
lignes et des colonnes de l’afficheur, qui, dans les deux petit potentiomètre est accessible par le dessous de la
column number
cas, commence par 0. En spécifiant ces données, on carte et est marqué d’une flèche. Réglez le contraste
row number

peut écrire un0caractère


1 2 3à une 4 certaine
5 6 7 position.
8 9 10À11 12 avec13un14petit
15 tournevis lors de la première utilisation
cette fin, l’écran
0 LCD dispose d’un curseur qui déter- ou lorsque vous en avez besoin.
mine cette position. La bibliothèque LCD décrite dans
le guide contient
curseur.
1 des méthodes pour positionner ce
i
Astuce : Si aucun caractère n’est affiché lors
de la première utilisation de l’afficheur LCD,
Bien que l’afficheur ne puisse afficher que 16 carac- c’est probablement parce que le réglage du contraste
tères dans chaque ligne, la mémoire dans laquelle n’a pas été effectué correctement !
les caractères sont stockés dans le contrôleur d’affi-
chageFigure
dispose en26: faitSchematic diagram
de 40 emplacements of the used
mémoire LC-Display
Transmission with 16 du
de données  2microcontrôleur
display-
pour chaque ligne. Il abley a un characters
écart de 24 emplacements à l’écran LCD
mémoire entre la dernière adresse d’affichage, 39, de la Chaque module LCD est équipé d’un contrôleur d’affi-
Although
première the display
ligne et l’adresse de début,can only
64, de show 16chage
la deuxième characters
HD44780,inquieach
reçoitrow, the(ASCII)
les codes memo- des carac-
ligne (voir
ry in figure
which5). the characters are stored tères
inenvoyés par le microcontrôleur
the display controller via hasune interface,
40
Grâcememory
aux fonctions de décalage
locations (shift),
for each qui As
line. sontyougénère
can see les caractères
in Figure correspondants
27, there isdealagap matrice à
of 24 memory locations between the last display address 39 of the first
line and the start address 64 of the second line.

window position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 36 37 38 39
Display character
memory addresses
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 100 101 102 103

window position 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 36 37 38 39
visible area after left
shift
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 100 101 102 103

window position 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

 visible area after 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 36 37 38 39


right shift
64 65 66 67 68 69 70 71 72 72 74 75 76 77 78 79 80 81 100 101 102 103
Figure 5. Contenu de
l’afficheur avant et après
le décalage.
Figure 27: The visible content of the display before and after shifting

By means of shift commands, which are contained in the LCD library de-
44 juillet/août 2023 www.elektormagazine.fr
scribed in chapter 3.15 (see table in Figure 83), the memory area visible in
e, generates the corresponding characters of the 5  8 dot matrix
oned above from the codes and displays them on the display surface.
CD controller HD44780 has only a parallel in-
e for receiving the data to be displayed, i.e., RS
microcontroller writes a data byte consisting of RW
Microcontrollers Hands-On Course for Arduino Starters E

Microcontroller
bits D0 ... D7 into the input register of the

LC-Display
D0
y controller HD44780 on the LCD using three D1 
olThe
signals RS, RW and Eci-dessus
asdatashown in D2
second
points possibility
5×8 mentionnée of à partir desFigure
transmission
codes 28.
to the LCD controller
D3
HD44780,
Figure 6. Pilotage de
in which et les affiche.
the 8 data bits are transmitted in two packets of 4D4 bits each one l’afficheur LCD avec huit
method Leofcontrôleur
parallel LCDdata
HD44780 transfer
ne dispose would
que d’une consi- D5 bits de données et trois
after the other, does not really données
help either, because even inD6 this case, 7
ly limitinterface parallèle
the resources pouronrecevoir
the les Elektor Arduinoà lignes de commande.
pins ofafficher,
theBoardmicrocontroller would
c’est-à-dire que le microcontrôleur still
écritbe D7
un bound by the LCD, since the three
Training MCCAB, because
octet composé de huit bits, D0-D7, dans le registre the LCD
control signals
would d’entrée
already RS, RW,
occupy
du contrôleur E11
HD44780, are ofalso
puis surthe needed
le LCD16 in this case.
avec freely
trois signaux de thecommande : RS, RW et E,on comme
Figure 28
For pins
ble this reason,
of the ATmega328P LC-Display thele
microcontroller!
montre la figure 6. Cette méthode de transmission
Elektorde Arduino Nanolimiterait
données en parallèle Training Board
considérablement

2
MCCABlesis controlled
capacités du MCCAB via theLCD
car l’écran I occuperait
C bus RS Figure 7. Pilotage de
déjà 11 des 16 broches disponibles du47 microcontrô- RW l’afficheur LCD via le bus
(see section 2.7.3.1), a synchronous E
Microcontroller
leur ATmega328P ! I2C plutôt qu’en parallèle
SDA (voir figure 6).

LC-Display
serial bus that option
La deuxième consists of only one
pour la transmission da-
des données A4 D0

Adapter
au contrôleur HD44780, dans laquelle les huit bits de D1
ta line SDA and one clock line SCL and SCL
D2
données sont transmis en deux paquets de quatre bits A5
transmits then’estdata bit byutile, bitcar,using
452 Microcontrollers Hands-on Course for Arduino Starters.pdf 45
chacun, pas réellement même dans a D309/02/2023 10:26

D4
similarceprocedure
cas, sept broches to du microcontrôleur
that shown inseraient Fig- D5
encore utilisées par le LCD, puisque les trois 2 signaux
ure 18.de The data traffic D6
contrôle, RS, RW, E, sont via
égalementthe nécessaires
I C in-
D7
terfacedans is cecarried
cas. out using the two
Pour cette raison, le module LCD sur le MCCAB est
lines A4 (SDA) and A5 (SCL) of the
contrôlé via le bus I2C, un bus série synchrone qui Figure 29
ATmega328P consiste en une microcontroller
seule ligne de données(Figure (SDA), une
ligne d’horloge (SCL), et il transmet les données bit par
29).
bit. Le trafic de données via l’interface I C est réalisé
2

An additional
grâce à deuxadapter on the bottom
lignes du microcontrôleur ATmega328P, Des
of the LCDquestions,
module des converts
commentaires? the I 2C
A4 (SDA) et A5 (SCL) (voir figure 7). Contactez Elektor ([email protected]).
signalsUn
into parallel signals as shown in Figure 28. As Figure 29 shows, the
adaptateur supplémentaire situé sous le module
adapterLCDuses the
convertit above-mentioned
les signaux method
I2C en signaux parallèles. Cet of transmitting two sets of 4
bits inadaptateur facilite la méthode
succession via the mentionnée
dataci-dessus.
lines Il D4 … D7, i.e., first the data bits
permet de transmettre deux ensembles de quatre bits
D4 … D7 andviathen the data D4-D7,
bits c’est-à-dire
D0 … D3 are transmittedProduits over the same
à la suite les lignes de données
que…
lines D4 lesD7.
bits de données D4-D7, puis les bits de données > Microcontrollers Hands-on Course for
D0-D3 sont transmis sur les mêmes lignes, D4-D7. Arduino Starters (offre groupée)
Étanttwo
donné lines
que les lignes (SKU 20440)
Since the A4 A4andet A5A5
du microcontrôleur
of the microcontroller
• 1 × Guide : on the Elektor
Microcontrollers Arduino
Hands-On Course
sur le MCCAB sont de toute façon réservées à l’inter- 2
Nano Training Board MCCAB are for Arduino Starters
face I2C, aucune ressource n’est perdue avecreserved
ce type de for the I C interface anyway, no
• 1 × MCCAB Arduino Training Board
resources are lost
transmission with
à l’écran this
LCD car, type of
en principe, data transmission
plusieurs to the LCD, because
• 1 × Arduino Nano
participant peuvent être connectés au bus I2C en même https://elektor.fr/20440 2
in principle several participants can be connected to the I C bus at the
temps. Puisque chaque participant connecté au bus
same time.
occupe saSince each I2participant
propre adresse connected
C, il ne « voit » qu’il est to the bus has its own I 2C
adressé
address, it que lorsqu’un
only feelspaquet de données arrive
addressed avec a data packet with its address
when
l’adresse de ce participant. Le LCD du MCCAB occupe
arrives.généralement l’adresse I2C 0x27. Si l’adresse diffère
en raison du fabricant, cela est indiqué sur l’écran.
230215-04
The LC-Display on the Elektor Arduino Nano Training Board

i MCCAB usually has the I2C address 0x27. If the address dif-
fers due to the manufacturer, this is indicated on the display.
LIENS
[1] Elektor Arduino Nano Training Board MCCAB and Companion Guide: https://elektor.fr/20440
[2] Manuel d’utilisation de la carte MCCAB d’Elektor : https://elektor.fr/20440

lektor juillet/août 2023 45


zone D
Astuces, bonnes pratiques et
autres informations pertinentes

Source : Shutterstock / Metamorworks


sur le vif
luddisme moderne des images existantes. C’est devenu un peu
une addiction, et j’ai passé des heures à les
expérimenter, jusqu’à ce que de la fumée sorte
Ilse Joostens (Belgique) de mon clavier (figure 1). Les résultats allaient
de décevants à spectaculaires, et parfois même
Il est vrai que les performances du matériel informatique effrayants. En ce qui concerne ce dernier point,
sont en augmentation constante, ce qui permet également ma préférence pour le genre horreur peut offrir
une explication sous-jacente. Cette techno-
de développer des applications logicielles toujours plus logie est également au cœur de la creepy-
intelligentes. Lorsque je travaillais comme administrateur pasta autour de « Loab » [4][5], une femme
système il y a une vingtaine d’années, j’étais passionné démoniaque qui se cacherait au plus profond
des cavernes de l’IA.
par les nouvelles technologies et ma mission personnelle Naturellement, par curiosité, j’ai également
consistait à motiver les utilisateurs habituels d’ordinateurs essayé ChatGPT et, à première vue, le bot m’a
pour les nouvelles technologies. Cela n’a pas toujours été rappelé « Evarist the computer », un person-
nage de la série flamande pour la jeunesse
facile, c’est le moins que l’on puisse dire. Maintenant que je Merlina [6], à qui l’on pouvait demander
suis un peu plus âgé, et surtout plus sage, mon enthousiasme n’importe quoi. Les réponses à mes questions
pour les nouvelles technologies s’est un peu refroidi, et j’ai étaient correctes d’un point de vue linguis-
tique, mais, contrairement à Evarist, ChatGPT
un sentiment de malaise face aux récents développements manquait souvent sa cible et certaines
de l’IA. réponses étaient extrêmement hilarantes,
dans le style de Xavier De Baere (un célèbre
humoriste de la télévision flamande – NDLR).
L’absurdité artificielle veut la tradition, son rival, Google, ne veut pas Bien que ce ne soit pas l’objectif initial, il semble
À moins d’avoir vécu dans une grotte ces rester à la traîne et travaille actuellement sur que le robot puisse également générer du code
derniers mois (sans Internet), vous avez certai- un bot similaire portant le nom mélodieux de source. Un simple projet Arduino n’a pas posé
nement entendu parler de la nouvelle (r)évolu- Bard. Même Baidu entre dans la danse et a de problème (figure 2), mais une demande
tion technologique de l’intelligence artificielle, commencé à développer une version chinoise plus complexe d’écrire un programme C pour
et plus particulièrement du chatbot d’OpenAI, de ChatGPT appelée Ernie. un AVR, afin d’initialiser un CI WIZnet W5500
ChatGPT [1]. L’intérêt est énorme, et Micro- En tant que photographe amateur, j’étais déjà Ethernet avec une adresse IP fixe, sans utili-
soft s’engage pleinement dans l’IA générative intéressé par DALL-E [2], StabilityAI [3] et Fotor. ser de bibliothèques, est restée bloquée à
avec un investissement dans cette start-up à Ces applications permettent de convertir du chaque fois. Peut-être que la version payante
hauteur de 10 millions de dollars. Comme le texte en images, et de modifier ou combiner avec le GPT-4 d’OpenAI ferait mieux, mais

46 juillet/août 2023 www.elektormagazine.fr


Figure 1. Création avec IA par Ilse Joostens.

ce n’est pas une possibilité pour une appli-


cation pour laquelle je n’ai pas (encore) d’uti- Figure 2. ChatGPT écrit du code…
lisation spécifique. Je peux faire fonctionner
l’appareil moi-même, mais les questions les
plus ordinaires de la vie quotidienne, comme un grand fan, étant donné que les textes et les où la technologie de reconnaissance faciale
la façon de préparer un dîner végétarien à trois images générés sont essentiellement du plagiat est utilisée pour identifier les manifestants.
plats avec un dessert au chocolat ou des idées parce qu’ils sont basés sur le travail de millions En Flandre également, l’IA est appliquée aux
de bricolage pour les tout-petits, ne m’inté- de personnes. Par ailleurs, toute IA formée sur photos aériennes pour déterminer si quelqu’un
ressent pas particulièrement. la base de données historiques, qui contiennent a coupé plus d’arbres dans son jardin que ce
Tout comme « cloud » est un terme à la mode inévitablement des préjugés humains, reprend qui était autorisé. Personnellement, j’ai été
pour travailler et stocker des données via inter- ces partis pris, parfois sous une forme ampli- plusieurs fois victime d’un délit dans le passé,
net, et que le mot à la mode « IdO » désigne fiée. Je ne pense pas que ChatGPT écrira cette mais on n’a jamais cherché à retrouver les
des appareils tels que des lampes « intelli- chronique dans le futur, mais les choses sont auteurs. Par contre, tous les moyens sont
gentes » connectés à internet, « intelligence déjà assez difficiles pour les ventes en ligne de bons pour constater les petits délits commis
artificielle » est un terme global pour désigner photographies et d’œuvres d’art. Avec l’amé- par de bons citoyens, avec, comme triste fait
des algorithmes et des modèles puissants lioration constante des appareils photo, des marquant, le cas d’un habitant de Heusden-Zol-
liés au big data. Dans le cas de GPT-3, il s’agit smartphones, c’est un nouveau revers pour der qui rentrait d’un restaurant avec sa famille,
de 570 Go d’entrée, tandis que DALL-E 2 se les photographes amateurs et les artistes qui et s’est brièvement arrêté pour jeter une couche
contente de plus de 650 millions d’images. cherchent à gagner un peu plus d’argent [8]. pleine dans une poubelle publique venant de sa
Le terme « intelligence » n’est pas vraiment Il existe également de nombreuses possibi- fille malade. À sa grande surprise, il a reçu un
approprié, et les chercheurs qui entraînent lités d’utilisation abusive, allant des courriels peu plus tard par la poste un rapport de police
les réseaux neuronaux à rechercher des d’hameçonnage parfaits aux discours haineux de vingt pages (!), photos à l’appui, pour dépôt
connexions qui n’existent pas réellement créent et aux contrefaçons graves. Grâce à ChatGPT, illégal [9]. Apparemment, l’enfermement des
en fait une « absurdité artificielle », si l’on peut l’IA est aujourd’hui un sujet d’actualité, mais vrais criminels ne fait pas rentrer assez d’argent
l’exprimer ainsi [7]. elle existe depuis bien plus longtemps et peut dans les caisses.
également être utilisée – ou détournée - à C’est plus qu’il n’en faut pour faire de vous un
Le côté obscur de l’IA d’autres fins, par exemple par des agences luddite moderne.
J’admets que l’IA générative inspire et apporte gouvernementales comme en Chine, avec VF : Laurent Rauber — 230196-04
de nouvelles perspectives, mais je ne suis pas leur système de crédit social, ou aux ­États-Unis

LIENS
[1] ChatGPT : https://chat.openai.com
[2] DALL·E 2 : https://labs.openai.com
[3] StabilityAI’s Stable Diffisuion : https://huggingface.co/spaces/stabilityai/stable-diffusion
[4] Loab, an AI-generated entity : https://loab.ai
[5] YouTube : The Disturbing Art of AI (spooky!): https://youtu.be/i9InAbpM7mU
[6] Merlina: Remembering the hit BRT youth series from the 1980s [en néerlandais]: https://merlina.info/evarist/uitvindingen
[7] E
 OS Wetenschap: Kunstmatige Domheid [Artificial Stupidity, en néerlandais]:
https://eoswetenschap.eu/technologie/kunstmatige-domheid
[8] YouTube: AI Art Apocalypse : https://youtu.be/HDbu2rvhCk4
[9] N
 ieuwsblad: Heusdens gezin riskeert GAS-boete voor weggooien van pamper [en néerlandais] :
https://nieuwsblad.be/cnt/dmf20220901_96655325

lektor juillet/août 2023 47


CAPTEURS

B.a.ba capteur :
le capteur de
température DS18B20
connexion au bus 1-Wire

Mathias Claussen (Allemagne)


Si vous souhaitez enregistrer des températures à l’aide d’un micro-
Inclus dans de nombreux kits pour contrôleur, vous avez le choix entre plusieurs capteurs et systèmes
débutants, le capteur DS18B20 de bus. L’un des plus répandu est le DS18B20 de Dallas Semiconduc-
tor. Sa plage de mesure s’étend de -5 °C à 125 °C (-67° à +275 °F)
de Dallas Semiconductor facilite avec une précision impressionnante de ±0,5 °C. Sa polyvalence lui
la découverte de la mesure de permet de mesurer non seulement les températures ambiantes,
température. Avant de se lancer, mais aussi de surveiller les congélateurs et les chambres froides.
Dans cet article, nous examinons de plus près son fonctionnement
il vaut mieux connaître un peu le avec un microcontrôleur, avec des exemples comprenant le code
bus 1-Wire et la façon d’y connecter source et les schémas de câblage pour montrer comment l’intégrer
le capteur. Nous allons rapidement dans vos propres projets.

explorer ici les bases de Le DS18B20


l’utilisation du DS18B20, pour vous Le capteur DS18B20 utilise le système de bus 1-Wire, breveté
permettre de débuter sereinement par Dallas Semiconductor en 1989 et qui
permet la connexion de plusieurs
dans la mesure de température ! capteurs. Avec sa plage d’ali-
mentation de 3,0 V à 5,5 V, on
peut connecter directement le
DS18B20 aux GPIO de nombreux
appareils, de l’Arduino UNO au
Raspberry Pi Pico. Le bus 1-Wire
offre également un mode d’ali-
mentation parasite, où l’énergie est
prélevée sur la ligne de données qui
alimente le capteur. Cela signifie que
le bus 1-Wire ne nécessite qu’une seule
broche sur un microcontrôleur (MCU)
pour connecter plusieurs capteurs, ce
qui justifie son choix, en particulier sur
les cartes MCU les plus petites avec peu
de GPIO. Bien qu’il existe d’autres capteurs
Figure 1. Le DS18B20 dans Figure 2. Version étanche 1-Wire, nous nous concentrerons ici sur le
un boîtier TO-92. du DS18B20 avec câble. dispositif Dallas.

48 juillet/août 2023 www.elektormagazine.fr


Tous les nœuds sur l’unique ligne de données utilisent un pilote
à collecteur ouvert ; en cas de collision de données, lorsque deux
nœuds essaient par erreur de parler en même temps, il en résulte
simplement des données corrompues. Il ne peut jamais y avoir de
conflit matériel lorsqu’un nœud essaie de forcer la ligne de données
vers le haut alors qu’un autre essaie de la forcer vers le bas. Une
résistance de rappel est nécessaire parce qu’aucun des nœuds ne
peut forcer activement le bus vers VCC. La figure 4 montre la
connexion d’un capteur 1-Wire à un Arduino UNO.
Outre la connexion électrique, il faut un protocole pour le fonction-
Figure 3. Brochage du DS18B20. nement des appareils 1-Wire. Heureusement, la plupart des micro-
contrôleurs intègrent un UART qui peut être utilisé pour cela, sans
nécessiter de matériel particulier. La figure 5 présente un circuit
approprié.
Le capteur DS18B20 est disponible sous différentes formes, comme Pour la commande via UART, Analog Devices propose un article
le montrent les figures 1 et 2. Grâce au bus 1-Wire, il est désor- utile [1]. Alors que l’UART peut aider à réduire la charge du CPU,
mais très facile de connecter un plus grand nombre de capteurs. il n’est pas essentiel avec les MCU d’aujourd’hui. Même un petit
Bien que le protocole 1-Wire lui-même n’impose pas de limite au ATtiny est assez puissant pour adresser les capteurs connectés via le
nombre de capteurs pouvant être connectés au bus, les limites sont bus 1-Wire grâce à une solution purement logicielle, ne nécessitant
déterminées par les propriétés électriques du bus. qu’une broche d’E/S. La plupart des bibliothèques qui fonctionnent
avec le DS18B20 n’utilisent qu’un seul GPIO, ce qui rend l’utilisa-
Le bus 1-Wire tion d’un UART plutôt rare.
Pour connecter des capteurs au bus 1-Wire, trois fils sont néces-
saires : la masse (GND), les données (DQ) et la tension d’alimenta- Identification du capteur
tion (VCC). Le bus 1-Wire est bidirectionnel et fonctionne selon le Lorsque plusieurs capteurs sont connectés à un fil de bus commun,
concept contrôleur/cible (maître et esclave), où le contrôleur et la chacun d’eux doit pouvoir être adressé individuellement afin qu’un
cible échangent des données via la ligne de données. Le brochage seul capteur à la fois soit autorisé à écrire sur le bus et éviter que ses
du capteur DS18B20 est présenté à la figure 3. données ne soient brouillées ou corrompues par un autre capteur.

+5V

SCL SCL

Arduino Uno SDA Arduino Uno SDA


AREF AREF R1 R2
GND GND
100k

+5V
4k7

RESERVED 13 RESERVED 13
IC1
IOREF 12 IOREF 12 IC1
+5V 3
+5V
RESET 11 VDD RESET 11 3
2 VDD
3.3V 10 DQ 3.3V 10 2
1 DQ
5V 9 GND 5V 9 1
POWER
POWER

GND
GND 8 GND 8
T2 D
DS18B20 GND
GND DS18B20
DIGITAL (PWM)
DIGITAL (PWM)

VIN 7 VIN 7
G
6 6
A0 5 A0 5
2N7002 S
ANALOG IN

A1 4
ANALOG IN

A1 4
ICSP ICSP T1 D
A2 3
RESET

A2 3
RESET

MISO
MISO

SCK
SCK

A3 2 A3 2
G
A4 TX 1 A4 TX 1
A5 RX 0 A5 RX 0
2N7002 S
GND
MOSI
5V
GND
MOSI
5V

230060-004 230060-004

Figure 4. Schéma du circuit Arduino UNO avec un DS18B20. Figure 5. Schéma du bus 1-Wire du DS18B20 utilisant l’UART.

lektor juillet/août 2023 49


8-Bit CRC 48-Bit serial number 8-Bit family code (28h)

Figure 6. Format du message UUID du DS18B20.

Pour cela, chaque participant au bus 1-Wire dispose d’un code recherche le capteur suivant sur le bus. La recherche est termi-
d’identification unique, d’une largeur de 64 bits (UUID). Il se née lorsque tous les capteurs ont été identifiés. Les identifications
compose d’un code sur 8 bits indiquant la famille du capteur, d’un de tous les capteurs trouvés sont stockées dans addr.
numéro de série sur 48 bits et d’une somme de contrôle sur 8 bits Maintenant que le capteur a été identifié, on peut interagir avec lui.
(CRC) (figure 6). Le numéro de série ne figure toutefois nulle part Le premier octet, addr[0], contient le code indiquant la famille. Il
sur le capteur, mais réside en interne, stocké sur 8 octets en ROM. Il peut servir à déterminer si un capteur de température DS18B20,
peut être récupéré par logiciel à l’aide d’une fonction de recherche DS18S20 ou DS1822 a été trouvé, ou s’il s’agit d’un autre type de
sur le bus 1-Wire. On peut trouver l’algorithme de recherche sur la dispositif de bus 1-Wire.
page d’Analog Devices [2]. La séquence suivante apparaît à la ligne 69 :

Exemple de code pour Arduino ds.reset();


À partir du schéma de la figure 4, la configuration reste très simple. ds.select(addr);
Le capteur utilise une alimentation de 5 V comme l’Arduino UNO. ds.write(0x44, 1);
Le GPIO de l’Arduino UNO, connecté à la ligne de données ou DQ,
nécessite une résistance de rappel de 4,7 kΩ. La bibliothèque pour Une réinitialisation de tous les participants au bus est effectuée une
bus 1-Wire que nous utilisons ici est la bibliothèque OneWire de fois à l’aide de ds.reset(). Ensuite, en utilisant ds.select(addr),
Paul Stoffregen [3]. Le code d’exemple de la bibliothèque montre le capteur découvert est adressé. Pour demander une lecture de
aussi comment lire les données des capteurs DS18B20 (listage 1), température au capteur, il faut d’abord lancer une mesure. La
ce que nous pouvons maintenant examiner plus en détail. commande correspondante est ds.write(0x44, 1), où 0x44 est
Pour utiliser la bibliothèque, il faut d’abord l’inclure avec la commande reconnue par le capteur. Avec le deuxième paramètre
#include <OneWire.h> au début du croquis. Ensuite, avec (ici, 1), la broche d’E/S est forcée au niveau haut pour alimenter
OneWire ds(10), on affecte la broche 10 au fonctionnement de les capteurs tels que le DS18S20 en mode parasite. Le résultat de la
la ligne de données du bus 1-Wire. Avec ds.search(addr), on mesure de température est disponible après 750 à 1000 ms. Dans
cet exemple, on utilise un délai pour attendre la fin du traitement.
Lorsque la mesure de la température est terminée et que le résul-
tat est prêt, on peut le récupérer. Le capteur est à nouveau adressé
DS18B20 - La guerre des clones à l’aide de ds.select(addr) et on lui demande de lire la valeur
Le DS18B20 est un capteur répandu, souvent inclus stockée dans sa mémoire de travail (ds.write(0xBE)). Les neuf
dans divers kits de capteurs et kits de début pour octets stockés ici, comprenant la valeur de la température, vont
microcontrôleurs. Ces capteurs sont aussi très bon maintenant être envoyés.
marché ; vous pouvez en trouver un pour seule- Avec le DS18B20, la température est disponible après lecture sous
ment 30 centimes sur certains sites de vente en forme d’une valeur sur 16 bits, composée de deux octets de registre.
ligne. Les distributeurs tels que Mouser ou Farnell Si on utilise un capteur de type DS18S20 au lieu d’un DS18B20, les
vous feront cependant payer plus de 4 euros pour valeurs de registre ont un poids différent, si bien que leur position
un seul DS18B20. dans le registre doit être modifiée. L’exemple de code en tient
La popularité de ce capteur a incité certaines usines compte et effectue les 3 décalages vers la gauche nécessaires sur
malhonnêtes de fabrication de puces à produire la valeur brute.
leurs propres versions, qui ressemblent au capteur Le DS18B20 fournit la température avec une résolution de 12 bits
original et semblent se comporter comme lui, mais et prend 750 ms pour la conversion. Il peut, au choix, fournir des
qui peuvent s’écarter considérablement des carac- valeurs sur 11, 10 ou 9 bits, ce qui permet d’obtenir un temps de
téristiques de l’original après un examen plus appro- conversion plus rapide. Avec une résolution de 9 bits, la valeur des
fondi. Les distributeurs reconnus s’approvisionnent bits de poids faible n’est pas définie, ils peuvent donc être mis à zéro.
en composants auprès de fournisseurs certifiés. La température relevée par le capteur est toujours exprimée en
Pour vous assurer que vous disposez d’un capteur degrés Celsius ; votre logiciel devra effectuer la conversion en degrés
authentique, la page GitHub de Chris Petrich [4] Fahrenheit si nécessaire.
fournit des croquis Arduino pour tester votre capteur,
ainsi que de plus amples informations sur chaque Résumé
clone particulier et ses déviations par rapport à la Il est facile de connecter un capteur de température à un micro-
conception originale. contrôleur avec le DS18B20 et 1-Wire. Comme nous l’avons vu, en
utilisant la plateforme Arduino, il y a tout un tas de bibliothèques

50 juillet/août 2023 www.elektormagazine.fr


et d’exemples de code source pour alléger le processus. Avec cette
configuration, une seule broche du MCU est nécessaire pour
Produits
communiquer avec le capteur, et plusieurs capteurs peuvent être
connectés, ce qui permet à un petit MCU avec un GPIO libre de > Kit capteur Elektor 37-en-1 (SKU 16843)
prendre en charge plusieurs capteurs simultanément. https://elektor.fr/16843

VF : Denis Lafourcade — 230060-04


> Cytron Maker UNO (SKU 18634)
https://elektor.fr/18634

> Kit de développement MakePython ESP32 (SKU 20137)


Des questions, des commentaires ? https://elektor.fr/20137
Contactez Elektor ([email protected]).

LIENS
[1] Using a UART to implement a 1-wire-bus-master, Analog Devices :
https://analog.com/en/technical-articles/using-a-uart-to-implement-a-1wire-bus-master.html
[2] 1-Wire search algorithm, Analog Devices : https://analog.com/en/app-notes/1wire-search-algorithm.html
[3] OneWireLibrary par Paul Stoffregen sur GitHub : https://github.com/PaulStoffregen/OneWire
[4] Chris Petrich, “Your DS18B20 temperature sensor is likely a fake, counterfeit, clone...,” GitHub :
https://github.com/cpetrich/counterfeit_DS18B20

Listage 1. Exemple DS18B20 avec Arduino.


001 #include <OneWire.h>
002
003 // Exemple de température avec DS18S20, DS18B20, DS1822 OneWire
004 //
005 // http://www.pjrc.com/teensy/td_libs_OneWire.html
006 //
007 // La bibliothèque DallasTemperature peut faire tout ce travail pour vous !
008 // https://github.com/milesburton/Arduino-Temperature-Control-Library
009
010 OneWire ds(10); sur la broche 10 (une résistance de 4k7 est nécessaire)
011
012 void setup(void) {
013 Serial.begin(9600);
014 }
015
016 void loop(void) {
017
018 byte i;
019 byte present = 0;
020 byte type_s;
021 byte data[9];
022 byte addr[8];
023 float celsius, fahrenheit;
024
025 if (!ds.search(addr)) {
026 Serial.println("No more addresses.");
027 Serial.println(); suite à la page suivante

lektor juillet/août 2023 51


028 ds.reset_search();
029 delay(250);
030 return;
031 }
032
033
034 Serial.print("ROM =");
035 for(i = 0; i < 8; i++) {
036 Serial.write(’ ’);
037 Serial.print(addr[i], HEX);
038 }
039
040 if (OneWire::crc8(addr, 7) != addr[7]) {
041 Serial.println("CRC is not valid!");
042 return;
043 }
044
045 Serial.println();
046 // le premier octet en ROM identifie le type
047 switch (addr[0]) {
048
049 case 0x10:
050 Serial.println(" Chip = DS18S20"); // ou l’ancienne DS1820
051 type_s = 1;
052 break;
053
054 case 0x28:
055 Serial.println(" Chip = DS18B20");
056 type_s = 0;
057 break;
058
059 case 0x22:
060 Serial.println(" Chip = DS1822");
061 type_s = 0;
062 break;
063
064 default:
065 Serial.println("Device is not a DS18x20 family device.");
066 return;
067 }
068
069 ds.reset();
070 ds.select(addr);
071 ds.write(0x44, 1); // début de conversion, avec alimentation en mode parasite à la fin
072 delay(1000); // peut-être que 750ms suffisent, peut-être pas
073 // nous pourrions faire un ds.depower() ici, mais le reset s’en chargera.
074
075 present = ds.reset();
076 ds.select(addr);
077 ds.write(0xBE); // Lecture de la mémoire de travail
078
079 Serial.print(" Data = ");
080 Serial.print(present, HEX);
081 Serial.print(" ");
082 for (i = 0; i < 9; i++) { // nous avons besoin de 9 octets
083 data[i] = ds.read();
084 Serial.print(data[i], HEX);
085 Serial.print(" ");
086 }
087 Serial.print(" CRC=");
088 Serial.print(OneWire::crc8(data, 8), HEX);

52 juillet/août 2023 www.elektormagazine.fr


089 Serial.println();
090 // Conversion des données en température réelle
091 // comme le résultat est un entier signé sur 16 bits, il doit
092 // être stocké dans un type "int16_t", qui est toujours sur 16 bits,
093 // même lorsqu’il est compilé sur un processeur 32 bits.
094
095 int16_t raw = (data[1] << 8) | data[0];
096 if (type_s) {
097 raw = raw << 3; // résolution 9 bits par défaut
098 if (data[7] == 0x10) {
099 // le résidu donne une résolution complète de 12 bits
100 raw = (raw & 0xFFF0) + 12 - data[6];
101 }
102 } else {
103 byte cfg = (data[4] & 0x60);
104 // à une résolution plus faible, les bits de poids faible sont indéfinis, alors mettons-les à zéro
105 if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
106 else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
107 else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
108 // la résolution par défaut est 12 bits, le temps de conversion est de 750 ms
109 }
110
111 celsius = (float)raw / 16.0;
112 fahrenheit = celsius * 1.8 + 32.0;
113 Serial.print(" Temperature = ");
114 Serial.print(celsius);
115 Serial.print(" Celsius, ");
116 Serial.print(fahrenheit);
117 Serial.println(" Fahrenheit");
118 }

YOUR KEY TO WE are here for you!

CELLULAR
Join our free webinars on:
www.we-online.com/webinars

TECHNOLOGY
Adrastea-I is a Cellular Module with High Performance, Ultra-Low
Power Consumption, Multi-Band LTE-M and NB-IoT Module.

Despite its compact size, the module has integrated GNSS, integrated ARM Cortex
M4 and 1MB Flash reserved for user application development. The module is based
on the high-performance Sony Altair ALT1250 chipset. The Adrastea-I module,
certified by Deutsche Telekom, enables rapid integration into end products without
additional industry-specific certification (GCF) or operator approval. Provided that a
Deutsche Telekom IoT connectivity (SIM card) is used. For all other operators the
module offers the industry-specific certification (GCF) already.

www.we-online.com/gocellular
© eiSmart

• Small form factor • Long range/wordwide coverage


• Security and encryption • Multi-band support #GOCELLULAR

lektor juillet/août 2023 53


INITIATION

quels standards
pour unifier la domotique ?
Matter et Thread se distinguent

Stuart Cording (Elektor)

L’index tapote l’écran,


et voilà, les pièces
sont éclairées. Enfin,
presque toutes : entre une grande partie de la technologie dispo- Windows, mais on pouvait faire commu-
applis trop nombreuses, nible aujourd’hui. On y voit des serrures niquer un PC et un téléphone à l’aide d’un
électroniques, des achats sur Internet, des dongle et d’un logiciel.
incompatibilités assistants vocaux, et bien d’autres choses
matérielles et standards encore, le tout piloté par Windows XP et Côté audio, Bluetooth fournissait une inter-
différents, la maison CE [1]. En 1950, Ray Bradbury avait lui aussi face robuste aux systèmes de téléphonie des
entrevu ce que pourrait être une maison automobiles. Ces dispositifs plutôt encom-
est parfois moins automatisée dans la nouvelle Viendront de brants appartiennent désormais au passé,
intelligente qu’annoncé. douces pluies [2]. Si j’évoque le passé, c’est puisque de nos jours il suffit d’apparier
La solution ? D’autres qu’avant même de parler des protocoles nos smartphones avec un kit mains libres
Matter et Thread, il nous faut comprendre intégré à nos véhicules.
standards ! Mais Matter et d’où vient la complexité actuelle.
Thread y suffiront-ils ? L’architecture de Bluetooth est par essence
Naissance du sans-fil à courte celle d’un réseau personnel (PAN). La spéci-
portée fication permet à sept appareils esclaves
Lorsque l’idée d’un Internet des Objets a pris de se connecter à un maître pour former
Vous voici enfin à la maison après une forme, le sans-fil s’est imposé comme une un picoréseau, ou piconet (figure 1). Elle
journée difficile. Le système audio vous évidence pour sa connexion. Mais lequel ? autorisait aussi la création d’un scatter-
accueille avec votre musique préférée, les Le début des années 2000 ne laissait guère net (réseau dispersé) formé par plusieurs
pièces ont la température idéale, et votre de choix : wifi, modem cellulaire GSM, piconets (figure 2). Le débit théorique, de
four peaufine la cuisson de votre repas. Les ou Bluetooth. Les deux premiers étaient seulement 720 kbit/s à l’époque, chutait
stores s’empressent de tamiser l’ardeur du énergivores, et donc plutôt réservés aux toutefois de façon significative à mesure
soleil lorsque vous entrez dans le salon. dispositifs alimentés par batterie. Restait que des piconets étaient ajoutés, et aussi
Vous vous enfoncez dans le moelleux de Bluetooth, une technologie adaptée aux parce que le maître devait commuter
votre fauteuil, et aussitôt une lampe sur pied besoins du marché naissant des téléphones rapidement d’un esclave à l’autre pour
vous baigne d’une lumière idéale pour la mobiles et bon candidat au remplacement donner l’illusion d’un fonctionnement
lecture. Vous saisissez votre liseuse, qui bien d’IrDA, la liaison infrarouge utilisée par les instantané. La façon dont les piconets trans-
sûr s’ouvre à la bonne page. assistants numériques personnels (PDA) féraient leurs données était en outre laissée
pour la synchronisation des données. à celui qui implantait le réseau. J’ai participé
Ah, le rêve d’une maison intelligente ! Il à plusieurs projets de scatternets, et aucun
existe pour le concrétiser une foule de Parce qu’il opérait dans une bande ISM n’a semblé pouvoir être mis en pratique.
protocoles, adaptés au sans-fil ou à la (Industrielle, Scientifique et Médicale)
connexion filaire, chacun conçu pour un centrée autour de 2,4 GHz et régie par Wibree l’économe
domaine particulier, avec ses propres appli- des directives internationales, Bluetooth La nécessité de maintenir l’émetteur-ré-
cations et caractéristiques. Le fantasme semblait idéal pour l’IdO. Le protocole était cepteur sous tension rendait Bluetooth
d’une maison automatisée ne date pas déjà au service de passerelles et ports série, inadapté aux capteurs alimentés par batte-
d’hier. À la fin des années 1990, Micro- et même d’imprimantes – à l’aide d’adapta- rie. Pour y remédier, Nokia développa
soft a publié une vidéo mettant en scène teurs. Il n’était pas encore pris en charge par Wibree, une technologie opérant elle aussi

54 juillet/août 2023 www.elektormagazine.fr


S
S Elektor
Elektor industrie
Industry

S
M S M
S
Zigbee et Z-wave
Figure 1. La version Bluetooth Classic
permet une liaison point à point (à gauche)
S D’autres standards pour l’IdO étaient dispo-
ou point à multipoint (à droite), et jusqu’à S nibles. Ainsi Zigbee (figure 3), une techno-
8 nœuds dans un piconet. logie reposant sur la norme IEEE 802.15.4,
apparue en 2003, révisée en 2006, œuvrant
sur la bande de 2,4 GHz, mais pouvant aussi
opérer sur 784 MHz (Chine), 868 MHz
(Europe) et 915 MHz (Australie et États-
Unis). Lancée également en 2003 mais
S par Zensys – rachetée plus tard par Silicon
S Labs - Z-wave opérait quant à elle dans la
S
bande des 868 MHz.

M S/S S Ces deux technologies offrent un


M/S mécanisme d’auto-réparation garantis-
sant un chemin entre émetteur et récep-
teur en cas de défaillance d’un nœud du
réseau. Le mécanisme agit en arrière-plan
S et n’implique pas l’utilisateur. Plusieurs
M
milliers de produits actuels reposent sur
Zigbee et Z-wave.
Figure 2. Bluetooth Classic autorisait
S Plus de problèmes que de
la formation de scatternets, mais sans
expliciter la méthode de transfert de solutions
données entre les piconets. Ces technologies posent toutefois problème
sur plusieurs points. D’abord, aucune ne se
connecte nativement à l’internet. À l’excep-
tion d’un appareil Bluetooth capable d’inte-
ragir avec un service en nuage via un smart-
phone proche, la connexion à l’internet
nécessite une passerelle matérielle reliée
à un routeur. Ensuite, l’interopérabilité
est inexistante. Vous pouvez opter pour
Zigbee, et découvrir plus tard qu’un produit
qui vous intéresse ne fonctionne qu’avec
Z-Wave. Un outil comme Node-RED [5] peut
arranger les choses, mais il ne convient
guère à l’utilisateur lambda.
Figure 3. Un exemple d’objet
connecté reposant sur Zigbee : Autre point délicat, la commande des objets
une ampoule Trådfri d’Ikea. connectés : en général une seule applica-
tion n’y suffit pas, et chacune a sa propre
méthode de commande. Dernier écueil,
la difficulté à faire dialoguer plusieurs
sur la bande de 2,4 GHz [3]. Au milieu des antenne et émetteur-récepteur, ainsi que appareils avec un même assistant vocal.
années 2000 apparurent ainsi des puces certains traits de leur pile logicielle. Ces Alexa (Amazon) en reconnaît plus que
hybrides Bluetooth/Wibree pour montres, versions restent toutefois incompatibles Google Home, et celui-ci plus qu’HomeKit
tensiomètres, claviers sans fil, etc. Wibree entre elles [4]. (Apple) [6].
fut adopté par Bluetooth SIG, l’organisme en
charge de la spécification Bluetooth, et fut Malgré une consommation d’énergie C’est pour répondre à certaines de ces préoc-
rebaptisé plus tard Bluetooth Low Energy adaptée aux capteurs IdO alimentés par cupations que l’industrie a fait ce qu’elle sait
(BLE). De nos jours les versions Classic et pile, il aura fallu attendre 2017 pour être faire de mieux : introduire une nouvelle
BLE résident sur la même puce, partagent en mesure de créer un réseau maillé BLE. technologie, Thread.

lektor juillet/août 2023 55


Can become
a router if needed

Nœuds Thread
Le nœud d’un réseau maillé Thread est un
dispositif d’un des deux types suivants [8] :
FTD (Full Thread Device) ou MTD (Minimal
Thread Device). Un MTD ne peut être qu’un
Border dispositif terminal (End Device, ED) et néces-
Router Leader REED FED MED SED Router site un nœud routeur pour accéder au
réseau Thread. Un routeur peut prendre
Figure 4. Thread repose sur le standard 6LoWPAN d’IPv6 en charge 511 ED. Il existe deux types de
et possède un mécanisme d’auto-réparation que n’ont pas MTD : le Minimal End Device (MED), dont
ses concurrents. l’émetteur-récepteur est toujours actif, et le
Sleepy End Device (SED), dont l’émetteur-ré-
cepteur ne vérifie que périodiquement la
présence de messages. Un nœud SED, p. ex.
un capteur, est en général alimenté par pile.

Un FTD a son émetteur-récepteur toujours


activé et possède deux variantes. La
première est le Router. Il s’occupe des
nouveaux nœuds qui rejoignent le réseau
Figure 5. Présentation de
solutions Matter par Espressif et achemine les paquets. Le premier nœud à
lors du salon Embedded prendre le rôle de Router est appelé Leader.
world 2023. Il prend en charge les nouveaux nœuds du
réseau devenant Router. Il ne peut y avoir
qu’un seul Leader et jusqu’à 32 Router. Si
le Leader est défectueux ou supprimé, un
autre Router prend le relais. Si le rôle de
Router est inutile (car il y en a suffisamment
dans le maillage), le FTD peut devenir REED
(Router Eligible End Device). Il fonctionne
comme un ED jusqu’à ce que sa fonction de
routeur soit requise, auquel cas il est promu.

La seconde variante est le Full End Device


Figure 6. Présentation par (FED). Un FED agit comme un ED, mais
Silicon Labs d’un cas pratique garde trace de plus de données qu’un MED
d’utilisation de Matter avec des
réseaux Zigbee et Z-wave.
(comme la multidiffusion et le mappage
des adresses IPv6). Ce profil convient aux
appareils alimentés par le secteur.

Thread ? Thread-t-on jamais… à IPv6, comme la compression d’en-tête, Pour relier un réseau Thread à des services
Formée en 2014, l’alliance Thread Group la fragmentation et le réassemblage des en nuage, un ou plusieurs nœuds dits
s’était donnée pour objectif de créer une paquets. routeurs de bordure (Border Router) sont
technologie de réseau sans fil à faible nécessaires. Leur rôle est de relier les autres
consommation et faible latence, capable La sécurité est aussi plus robuste – et obliga- nœuds à un réseau local par Ethernet ou
de rivaliser avec les solutions de l’époque. toire. Comme dans tout réseau TCP/IP, les wifi (figure 4). Ils pourraient être intégrés
Elle aussi opère sur 2,4 GHz, mais repose sur données sont cryptées de bout en bout, à des appareils tels que des TV intelligentes,
le protocole Internet (IP), plus précisément autrement dit tout dispositif servant de des routeurs wifi ou des assistants vocaux
sur une version d’IPv6 appelée 6LoWPAN. routeur ne peut pas lire les données le déjà reliés à l’internet.
Cette version adapte le protocole IP aux traversant. Enfin, le transfert de données
besoins des appareils de faible puissance se fait avec une latence deux fois moins L’atout d’un réseau Thread est que ses
et aux réseaux sans fil IEEE 802.15.4 utili- moindre que celle de Zigbee, et sept fois nœuds communiquent par IP sécurisé,
sés. Elle y ajoute des mécanismes inutiles moins élevée que celle de Bluetooth [7]. là où Zigbee, Z-Wave et Bluetooth doivent

56 juillet/août 2023 www.elektormagazine.fr


Elektor industrie

traduire toute communication internet prend en charge la plupart des objets lendemain. Certes, ce standard sert unique-
en leurs protocoles propriétaires. Autre domotiques de base (ampoules, prises de ment d’interface aux passerelles de Zigbee
avantage, la couche d’application, celle sur courant, thermostats…) et quelques assis- & Cie, et non aux réseaux eux-mêmes, mais
laquelle s’appuient en général les applis et tants vocaux. D’autres produits (appareils cela devrait favoriser son succès, de même
les interfaces web, est agnostique. L’intero- ménagers, caméras…) devraient figurer sur que sa prise en charge des appareils wifi et
pérabilité entre appareils compatibles avec la prochaine spécification [13]. Ethernet. Les fabricants de biens coûteux
Thread et assistants domotiques devrait et durables – comme les appareils électro-
donc s’améliorer. Qui l’emportera ? ménagers – savent que la quasi-totalité de
Nous voici donc, après une décennie leurs clients dispose du wifi, ce qui devrait
Thread prend également en charge une d’IdO pour la domotique, plongés au leur faire préférer Matter. Autre argument
(autre) nouvelle technologie : Matter. cœur d’une nouvelle bataille « VHS contre en sa faveur, il est plus orienté vers l’utilisa-
Betamax » [14], qui plus est de complexité teur que les autres. Sera-t-il pour autant le
Matter, ou la promesse de croissante. Thread devrait jouer un rôle standard de facto dans dix ans ? Seul l’ave-
l’interopérabilité clé puisqu’il résout le problème de longue nir nous le dira.
Matter a été initié fin 2019 par un groupe de date de Zigbee, Z-Wave et Bluetooth Mesh,
travail appelé CHIP (Connected Home over IP à savoir la nécessité d’une passerelle pour VF : Hervé Moreau — 230226-04
Project). Un des membres en est l’alliance traduire le protocole IP en celui utilisé par
CSA (Connectivity Standards Alliance) [9], ces réseaux sans fil. Avec Matter, ce ne
anciennement alliance Zigbee. Son rôle seront plus quelques géants de l’électronique Des questions,
(parmi d’autres) est de délivrer une certi- grand public qui décideront des applications des commentaires ?
fication « Matter ». Le standard Matter et assistants vocaux à utiliser pour comman- Envoyez un courriel à l’auteur
repose sur la couche de transport TCP/IP, der leurs produits, mais bien l’utilisateur. ([email protected]) ou
et peut donc également opérer avec Thread contactez la rédaction d’Elektor
et n’importe quel appareil domotique Ether- Matter, c’est aussi la garantie qu’une instal- ([email protected]).
net ou wifi. lation ne deviendra pas obsolète du jour au

Matter est une couche logicielle qui


définit la façon dont les appareils commu-
niquent entre eux afin d’autoriser pour
leur commande n’importe quel système LIENS
domotique ou assistant vocal. Parmi ses [1] Microsoft Smart Home, 1999 [YouTube] : https://bit.ly/3zoDVCv
qualités figure Multi-Admin, une fonction [2] Viendront de douces pluies [Wikipedia EN] : http://bit.ly/3ZR73x7
qui permet d’utiliser différentes applica- [3] E. Grabianowski, Is Wibree going to rival Bluetooth?, HowStuffWorks :
tions pour un même appareil. Une ampoule http://bit.ly/3nHHTnb
pourrait ainsi être commandée par un [4] M. Afaneh, Bluetooth vs. Bluetooth Low Energy: What’s the Difference?, avril 2022 :
interrupteur mural, par l’appli fournie par http://bit.ly/3KvmiaA
le fabricant, et par l’assistant vocal auquel [5] R. Dullier, Control a Z-Wave plug using a Zigbee button!, mars 2021 :
elle serait connectée. Un assistant vocal http://bit.ly/3nHRdHB
de Google devrait donc pouvoir comman- [6] M. Timothy, Amazon Alexa vs. Google Home vs. Apple HomeKit: What’s the Best
der des appareils d’Amazon ou d’Apple. Smart Home System?, MakeUseOf, mars 2023 : http://bit.ly/40C3wDY
Du moins en théorie. Car rien ne garantit [7] Benchmarking Bluetooth Mesh, Thread, and Zigbee Network Performance,
que cette promesse de compatibilité sera Silicon Labs : http://bit.ly/3Ge74UF
tenue en pratique. Comme le note Simon [8] Node Roles and Types, Google, février 2023 : http://bit.ly/3m5ZmVN
Hill dans un article publié sur Wired, l’accès [9] Site de l’alliance CSA : http://bit.ly/3nF6qcm
à certaines fonctions ou paramètres avancés [10] S. Hill, Here’s What the ‘Matter’ Smart Home Standard Is All About, Wired, octobre
pourrait encore nécessiter un appareil ou 2022 : http://bit.ly/3zrpWf7
une application du même écosystème [10]. [11] Solutions Espressif pour Matter : http://bit.ly/3zsb545
[12] Vidéo de Silicon Labs : Matter over Wi-Fi and Thread Demo :
Plusieurs fabricants de puces, dont Espres- http://bit.ly/3nFZ2gZ
sif [11] et Silicon Labs [12], ont présenté [13] Vidéo de Silicon Labs : Matter over Wi-Fi and Thread Demo : http://bit.ly/410zh9D
des exemples pratiques de commande [14] D. Owen, The Betamax vs VHS Format War, MediaCollege.com, mai 2005 :
avec Matter, Thread et Wi-Fi (figure 5 http://bit.ly/3U78JRD
et 6). La spécification Matter actuelle

lektor juillet/août 2023 57


TUTO

Matter, ou la
concorde
des objets
Testez Matter avec la carte Thing
Plus Matter et Simplicity Studio

Rob Reynolds (SparkFun)

Quel écosystème choisir pour un


projet domotique ? Sempiternelle
question, dont Matter entend
être la réponse puisque ce
nouveau protocole vise à unifier
la communication entre tous les
appareils de l’IdO. Découvrez son
potentiel avec une application
très simple créée avec la carte de Nordic Semiconductor, se sont réunis à l’époque pour élaborer un
développement Thing Plus Matter de protocole de communication à même d’unifier l’Internet des Objets.
Sparkfun et l’EDI Simplicity Studio de Matter, le fruit de cette collaboration, est un protocole open-source,
libre de droits, qui permet aux appareils de communiquer par wifi,
Silicon Labs. Ethernet, Bluetooth Low Energy et Thread. Des appareils « certi-
fiés Matter » pourront ainsi communiquer entre eux quelle que
soit la technologie sans fil utilisée, autrement dit sans qu’il soit
Bien qu’il soit à vocation universaliste, l’Internet des Objets (IdO) nécessaire de traduire un protocole en un autre.
reste aujourd’hui encore gouverné par de multiples protocoles de Concrètement, concepteurs, fabricants et consommateurs n’auront
communication. Ce caractère disparate oblige les concepteurs, plus à choisir entre des produits compatibles avec HomeKit (Apple),
et par ricochet les utilisateurs, à opter pour l’un ou l’autre de ces Alexa (Amazon) ou Weave (Google). Le fabricant voit son processus
protocoles et, par force, à s’y tenir. Cette contrainte est en passe de conception simplifié, le consommateur y gagne en compatibilité.
d’être levée grâce au standard de connectivité open source Matter. Un des grands avantages de Matter est qu’il simplifie la confi-
Sa couche d’application permet aux développeurs et aux fabri- guration et la gestion d’un système domotique. Si ledit système
cants d’appareils de créer des écosystèmes fiables et sécurisés, et comprend des appareils certifiés Matter, l’utilisateur pourra le confi-
d’accroître la compatibilité entre les objets connectés d’un même gurer rapidement et facilement, sans avoir besoin de compétences
système domotique. techniques particulières. Et comme la sécurité est primordiale, le
protocole prend en charge le cryptage de bout en bout, autrement
Matter en bref dit sécurise la transmission de données entre appareils.
Le projet Matter a démarré en 2019 sous le nom CHIP (Connected Autre avantage clé pour la plupart d’entre nous, Matter est open
Home over IP Project). Des acteurs majeurs tels qu’Amazon, Apple source. Tout ce qui a trait au protocole est disponible sur le dépôt
et Google, ainsi que l’alliance Zigbee et diverses entreprises comme GitHub de Matter [1] : code source, documentation, scripts,

58 juillet/août 2023 www.elektormagazine.fr


Figure 1. Installation de
Simplicity Studio.

exemples, et plus généralement tout ce dont un concepteur a Lorsque vous lancez Simplicity Studio pour la première fois, l’ins-
besoin pour créer un produit compatible avec Matter. talleur cherche les mises à jour disponibles et, s’il y en a, vous les
Tout cela est bien beau, mais bon nombre d’entre nous restent présente. Cliquez sur Update All pour les télécharger et les instal-
aujourd’hui encore relégués au rang de simple consommateur, ler afin de disposer des derniers ajouts et améliorations. S’il n’y a
sans possibilité de prototypage pour tester Matter, sinon en partant aucune mise à jour supplémentaire, ou si votre système est confi-
de zéro. Heureusement, les choses évoluent avec la sortie de la guré pour les faire automatiquement, l’installeur passe à l’étape
carte de développement Thing Plus Matter de SparkFun Electro- suivante.
nics [2] – disponible dans l’e-choppe, cf. l’encadré Produit. Grâce Après redémarrage (si celui-ci était nécessaire), l’installeur vous
à son écosystème Qwiic, Thing Plus Matter offre une méthodologie demande si vous souhaitez installer votre carte en la branchant, ou
agile pour la conception et le prototypage de produits reposant sur si vous souhaitez procéder à une installation par type de technologie
Matter. Le module sans fil MGM240P de Silicon Labs fournit une (sans-fil, Xpress, microcontrôleur, capteurs). Sélectionnez Install
connexion sécurisée pour les protocoles 802.15.4 à communication by connecting devices (fig. 2), puis branchez votre carte Thing Plus
maillée (Thread) et Bluetooth Low Energy 5.3, et il s’intègre native- Matter dans un port USB.
ment au protocole Matter de Silicon Labs. Les cartes Thing Plus Le programme demande alors s’il doit installer les paquets requis.
comprennent un connecteur Qwiic auquel peuvent être branchés Cliquez sur Yes. Après installation, la fenêtre devrait indiquer 1
sans soudure des circuits I2C de la famille Qwiic Connect System, et Device Found, avec un identifiant tel que :
leur facteur de forme est compatible avec Feather.
 J-Link (000449050174)(ID: 000449050174)
Configuration de Simplicity Studio
Vous ferez vos premiers pas de développeur Matter avec l’enceinte Cochez la case associée et cliquez sur Next. Deux options d’ins-
Nest Hub de Google, mais avant cela il vous faut installer et confi- tallation se présentent. L’option Auto installe pour nous tous les
gurer l’EDI Simplicity Studio de Silicon Labs. Je ne détaillerai pas paquets nécessaires. L’option Advanced nous laisse choisir quels
toutes les étapes, reportez-vous au tutoriel de SparkFun [3] si vous paquets nous souhaitons – mais si cette option vous semble le choix
avez besoin de compléments. évident, il est fort probable que vous ne soyez pas en train de lire
Rendez-vous sur le site de Silicon Labs [4] pour y télécharger Simpli- cet article. Sélectionnez donc Auto, puis Next (fig. 3). Acceptez
city Studio (en version 5 au moment de la rédaction de cet article). les termes de la licence (Master Software License Agreement) pour
Cliquez sur le bouton qui correspond à votre système d’exploita- que l’installation démarre. L’opération prend un certain temps et
tion. La page qui s’ouvre vous invite à vous connecter avec votre nécessitera un redémarrage une fois terminée. C’est généralement
compte – créez-en un si vous n’en avez pas, c’est gratuit. Lancez à cet instant que le développeur sérieux quitte son poste de travail
l’installeur une fois le programme téléchargé (fig. 1). et va se faire un café.

lektor juillet/août 2023 59


Figure 2. Installation par périphériques connectés. Figure 3. Les deux options d’installation des paquets.

Après redémarrage, Simplicity Studio vous invite cette fois-ci dans le port USB de votre ordinateur. Une façon de s’assurer que
à accepter le contrat de licence d’utilisateur final, puis affiche – le clignotement vient bien du code est d’en modifier l’intervalle
enfin ! – la fenêtre Welcome to Simplicity Studio. Vous devriez voir dans le fichier blink.c. Ouvrez-le avec l’explorateur, et repérez la
votre module MGM240P sous Connected Devices. Cliquez sur Start ligne ci-dessous, en théorie la 31 (fig. 6) :
pour ouvrir la page d’information Thing Plus ; elle contient une
présentation de la carte, des exemples et démos de projets, de la #define TOOGLE_DELAY_MS 500
documentation, et divers outils. Ouvrez l’onglet Example Projects
and Demos, entrez le mot-clé Blink dans la barre de recherche Filter Remplacez 500 par une valeur qui ne laissera aucun doute sur
on keywords, puis cliquez sur le bouton Create associé à Platform - l’origine du clignotement, p. ex. 100 pour un clignotement très
Blink Bare-metal (fig. 4). rapide, ou 3000 pour un tempo beaucoup plus mesuré. Le résultat
La fenêtre qui s’ouvre permet de changer le nom ou l’emplacement effacera tout doute. Pour le voir, faites un clic droit sur le dossier
du projet. Donnez à votre projet un nom parlant, p. ex. FirstBlink- MatterBlinkExample, puis choisissez comme précédemment Run
Demo, puis cliquez sur Finish. Une fois le projet compilé, Simplicity as/1 Silicon Labs ARM Program. Observez la fréquence de cligno-
Studio affiche sur la gauche un explorateur appelé Project Explorer. tement de la LED bleue, et concluez vous-même.
Faites un clic droit sur le dossier principal du projet – qui devrait
avoir pour nom MatterBlinkExample – puis sélectionnez Run as/1 Pour aller plus loin : tutoriel Nest Hub
Silicon Labs ARM Program (fig. 5). Félicitations, vous communiquez avec votre carte Thing Plus
Le menu Run as compile le script et l’écrit dans la mémoire de Matter depuis Simplicity Studio en utilisant le protocole Matter.
la carte. Vous devriez alors voir clignoter sa LED bleue toutes les Les choses intéressantes commencent maintenant. Être en mesure
demi-secondes. Ceci dit, il est fort probable que votre carte ait de dialoguer avec votre enceinte Nest Hub va en effet vous permettre
commencé à clignoter au moment même où vous l’aviez insérée d’intégrer à votre système domotique des dispositifs conçus par

Figure 4. Onglets Example Projects et Demos. Figure 5. Compilation et exécution du script.

60 juillet/août 2023 www.elektormagazine.fr


l)
e r à N e s t Hub (tutorie
g Plus Mat t tutorials/
Relier Thin/learn.sparkfun.com/ oogle-nest-hub
https:/ o-g
g -t h in g -p lu s-matter-t
connectin

Figure 6. Cette valeur détermine la fréquence de clignotement de la LED.

vous-même à l’aide de cartes telles que la Thing Plus Matter (fig. 7).
Drew, ingénieur chez SparkFun, et Mariah, technologiste créative,
vous expliquent comment procéder dans un tutoriel et une vidéo
publiés sur SparkFun [5].
Cette technologie étant récente, tutoriels et exemples sont encore
peu nombreux, mais de nouveaux apparaissent chaque jour. Prenez
une longueur d’avance en utilisant Matter dès aujourd’hui, ce proto-
cole contribue à l’unification de la domotique et se répand sur
toutes les plateformes.
VF : Herve Moreau — 230224-04

Des questions, des commentaires ?


Envoyez un courriel au service d’assistance de SparkFun
([email protected]), ou contactez Elektor ([email protected]).

Figure 7. La carte Thing Plus Matter et l’enceinte Nest Hub.

​À propos de l’auteur
Rob Reynolds a rejoint SparkFun en
2015, et depuis cinq ans y exerce comme
technologiste créatif. Il s’appuie sur son
expérience dans le domaine des arts
Produits
pour créer des projets, des vidéos et des
tutoriels qui sont le plus souvent à la fois > Carte SparkFun Thing Plus Matter​(MGM240P)
instructifs et divertissants. Vous pouvez le suivre sur Twitter à https://elektor.fr/20442
@thingsrobmade.

r la carte
Plus d’infos su

LIENS
[1] Matter sur GitHub : https://github.com/project-chip/connectedhomeip
[2] Carte de développement Thing Plus Matter de SparkFun : https://www.sparkfun.com/products/20270
[3] Tutoriel détaillé de SparkFun : https://bit.ly/42NRVlI
[4] Simplicity Studio : https://silabs.com/developers/simplicity-studio
[5] Tutoriel Thing Plus Matter et Nest Hub : https://bit.ly/3VRcQCl

lektor juillet/août 2023 61


Elektor Infographie
IdO et capteurs

Perspectives sur l’IdO


L’IdO est encore un sujet brûlant. En fait, on déployées par les membres de la communauté
pourrait dire que l’innovation dans l’IdO n’en d’Elektor. Le marché total des capteurs de l’IdO 5 tendances
est qu’à ses débuts. Selon McKinsey, la valeur devrait passer d’environ 10,9 milliards de dollars technologiques des
totale de l’IdO pourrait atteindre 12,5 billions en 2022 à 22,1 milliards de dollars en 2027 [2]. capteurs IdO
de dollars d’ici 2030 [1]. Les capteurs sont des Cette croissance potentielle ouvre de nouvelles > Capteurs intelligents
éléments clés de l’IdO, et ils sont présents perspectives aux électroniciens professionnels > Capteurs à ultra-basse
dans d’innombrables applications conçues et et aux makers. consommation
> Capteurs logiciels et
virtuels
Cellular IoT Connections by Segment and Technology > Fusion de capteurs
> Biocapteurs
2021
2G / 3G
2022 NbIoT / CatM

4G / 5G
2023
12,5 billions
2024 de dollars
Estimation de la valeur totale de l’IdO
d’ici 2030 selon McKinsey.
0 1 2 3 4 5 billion
Source : Ericsson [3]

Le protocole Matter
Le protocole Matter permet aux appareils domotiques de commu-
niquer entre eux, indépendamment de leur fabricant. Il normalise
la configuration des appareils de différentes marques. Selon la
Connectivity Standards Alliance, « en se basant sur le protocole
37 %
Pourcentage de résidences connectées
à l’Internet et possédant un appareil

68 %
Internet (IP), Matter permettra la communication entre les appa- domotique. [6]
reils domotiques, les applications mobiles et les services cloud,
et définira un ensemble spécifique de techniques de connexion
basées sur le protocole IP pour la certification des appareils » [4].
Appareils pris en charge par Matter : ponts, contrôleurs, serrures
de porte, commandes de chauffage, de ventilation et de climati- Pourcentage de propriétaires
sation, éclairage et électricité, appareils multimédias, capteurs de d’appareils (ou de propriétaires prévus)
sécurité et de surveillance, volets roulants et stores. qui pensent que la certification Matter
est importante. [6]

Devices supported by Matter

HVAC Controls Window Coverings Safety and Lighting and Door Locks Media Devices Controllers &
and Shades Security Sensors Electrical Bridges
Source : CSA [5]

62 juillet/août 2023 www.elektormagazine.fr


Technologie 5G
2 trillions
La 5G - la cinquième génération de technologie cellulaire sans
fil – offre de nombreux avantages aux entreprises et aux consom- de dollars
mateurs : une connectivité de plus en plus rapide et sécurisée, L’augmentation potentielle du PIB mondial
une latence réduite, une plus grande autonomie de la batterie, et si la 5G est déployée dans les domaines
bien plus encore. Depuis son lancement en 2019, elle est devenue commerciaux clés suivants : commerce de
l’une des technologies les plus importantes pour l’industrie. détail, industrie, soins de santé et mobilité. [8]

50 %
Pourcentage de personnes participant à
une enquête de l’IEEE ayant déclaré que
Où les participants à l’enquête de l’IEEE voient-ils la
5G jouer un rôle ? [7]
>
>
Apprentissage à distance
Télémédecine
>
>
Transport et contrôle du trafic
Production/assemblage
la 5G figurait parmi les 5 technologies les > Loisirs > Efficacité énergétique
plus importantes en 2022. [7] > Communications quotidiennes

Évolution de l’IdO
Kevin Ashton, pionnier de la technologie et auteur, a inventé le terme « Internet des objets » à la fin des années
1990. Consultez la frise chronologique suivante pour découvrir quelques moments clés de l’histoire de l’internet
des objets.
1998 2007 2009
1982 Bluetooth Premier iPhone Google développe des voitures
Distributeur de coca 1990 autonomes
connecté de l’université - Premier 1995 2005 2014
Carnegie Mellon navigateur web Introduc- Appareil Google 2022
1969 - « The Internet tion de connecté de rachète Lancement
ARPANET Toaster » l’IPv6 Nabaztag Nest de Matter

1980 1991 1997 2010 2018


Introduction de l’Ethernet Protocole de Invention 2006 Création de Sigfox Intelligence
transfert hypertexte du wifi Informatique en artificielle
1983 (HTTP) nuage, AWS 2008 des objets
Système de noms de domaine (DNS) - IPSO Alliance (AIoT)
1999 - Premier téléphone Android
- Kevin Ashton invente l’« Internet des objets ». - Les appareils connectés > le nombre de
- Centre d’identification automatique du MIT personnes

LIENS
[1] McKinsey & Company, “ What is the Internet of Things? “, 17 août 2022 :
https://www.mckinsey.com/featured-insights/mckinsey-explainers/what-is-the-internet-of-things
[2] S. Sinha, “ 5 IoT sensor technologies to watch “ IoT Analytics, 4 janvier 2023 : https://iot-analytics.com/5-iot-sensor-technologies/
[3] Ericsson, “ IoT Connections Outlook “ : https://www.ericsson.com/en/reports-and-papers/mobility-report/dataforecasts/iot-connections-outlook
[4] CSA, “ Matter: The Foundation for Connected Things “ : https://csa-iot.org/all-solutions/matter/
[5] CSA, “ Matter Executive Overview “ : https://csa-iot.org/wp-content/uploads/2022/09/22-Matter-Executive-Overview-One-Pager.pdf
[6] C. White, “ The Wait Is Over and Matter 1.0 Is Here “, Parks Associates, 6 octobre 2022 : https://www.parksassociates.com/blog/article/matter-is-here
[7] IEEE, “ Advancing Connectivity in 2023 “ IEEE Transmitter, 24 octobre 2022 : https://transmitter.ieee.org/advancing-connectivity-in-2023/
[8] McKinsey & Company, “ What Is 5G? “, 7 octobre 2022 : https://www.mckinsey.com/featured-insights/mckinsey-explainers/what-is-5g

lektor juillet/août 2023 63


avec Amey Inamdar
directeur du marketing technique chez Espressif

Matter, ExpressLink,
Rainmaker — de quoi s’agit-il ?
Questions de Tam Hanna (Hongrie) et Jens Nickel (Elektor) leurs multicœurs avec ses puces ESP32 et ESP32-S3. La
prise en charge de l’accélération de l’IA dans l’ESP32-S3
Au salon Embedded World 2023 à Nuremberg, est bénéfique pour les applications d’apprentissage
Espressif, bien connu pour son célèbre automatique en périphérie. Des accélérateurs matériels
et des encodeurs multimédias ont également été ajoutés
microcontrôleur ESP32, a présenté de aux puces les plus récentes.
nombreuses solutions d’automatisation En outre, les SoC d’Espressif sont dotés de fonctions
destinées à faciliter la vie des développeurs (et de sécurité qui garantissent que tous les appareils
construits répondent aux exigences de sécurité. La
des utilisateurs) d’applications IdO. Cependant, plupart des puces sont également dotées de périphé-
il n’est pas facile de comprendre ce qui se cache riques de sécurité innovants, tels que le périphérique
derrière de nouveaux termes comme ExpressLink de signature numérique, qui offre une fonctionnalité
matérielle intégrée semblable à celle d’un élément de
ou RainMaker. Dans cet entretien, Amey Inamdar, sécurité.
directeur du marketing technique chez Espressif, En plus de cela, Espressif a également évolué en tant que
nous éclaire à ce sujet. Il répond également à fournisseur de solutions complètes, où nous identifions
les points faibles des clients et y répondons efficace-
des questions d’ordre général sur la gamme de ment avec des solutions qui vont au-delà du matériel et
produits de son entreprise. des kits de développement logiciel (SDK). Les modules
ESP RainMaker, ESP Insights et ESP ZeroCode en sont
de bons exemples.

Elektor : Parlez-nous d’Espressif aujourd’hui. Quel Elektor : Au salon embedded world, Espressif a
est votre objectif ? Comment la société a-t-elle évolué présenté des solutions domotiques utilisant des
depuis sa création en 2008 ? cartes ESP32 connectées à Amazon Web Service
Amey Inamdar : Espressif s’est attaché à démocrati- (AWS). Nous avons entendu parler de « RainMaker »
ser le segment de l’IdO avec des solutions de connec- et « ExpressLink ». Pouvez-vous nous en dire plus sur
tivité wifi innovantes, abordables, et centrées sur les ces deux solutions ? Sont-ils indépendants ou peuvent-
développeurs. Nous avons veillé à ce que notre matériel ils fonctionner ensemble ?
soit facilement accessible et à ce que nos logiciels soient Amey Inamdar : ESP RainMaker est une implémen-
disponibles dans la communauté des logiciels libres. tation IoT cloud que vous pouvez déployer dans votre
Cette philosophie est toujours au cœur des préoccupa- propre compte AWS. Elle dispose également d’un
tions d’Espressif. Cependant, notre objectif s’est élargi firmware SDK open-source, d’applications télépho-
avec l’évolution des exigences du marché. niques et de compétences d’assistant vocal. ESP RainMa-
Espressif continue, non seulement à améliorer la ker est basé sur l’architecture sans serveur d’AWS et
connectivité wifi et BLE en ajoutant le wifi 6, la prise utilise AWS IoT Core et les services connexes en interne.
en charge bibande et le Bluetooth LE(5) à son porte- ExpressLink est un module de connectivité qui fournit
feuille, mais aussi à répondre aux besoins émergents une simple interface de commande AT au micro-
du marché en supportant la norme 802.15.4 comme contrôleur hôte et offre une connectivité transparente
base pour les protocoles Thread et ZigBee. Nous n’avons à AWS IoT Core et aux services connexes, tels que la
jamais cessé d’améliorer les aspects de la connecti- transmission à distance (OTA). ExpressLink réduit
vité liés à la consommation d’énergie et aux perfor- la complexité de la construction et de la gestion des
mances RF. Nous avons également ajouté des périphé- appareils connectés.
riques d’interface de pointe à nos produits. ESP RainMaker et ExpressLink sont complémen-
De plus, Espressif a été le pionnier des microcontrô- taires. Les clients peuvent utiliser l’un ou l’autre, ou

64 juillet/août 2023 www.elektormagazine.fr


les deux ensemble pour créer facilement des appareils
connectés.

Elektor : Commençons par RainMaker [1]. Selon


la documentation, les fonctions de RainMaker sont
accessibles via ESP-IDF. Depuis l’automne, une inter-
face Arduino est également disponible. Pour un usage
professionnel, recommanderiez-vous toujours l’IDF ?
Amey Inamdar : ESP-IDF est un kit de développement
logiciel (SDK) pour la création d’applications IdO. Ce
n’est pas le seul cadre logiciel, mais ESP-IDF est le projet
dans lequel nous introduisons d’abord le support pour
les nouveaux produits que nous lançons. ESP-IDF est
un projet open-source, et il constitue également la base
de nombreux autres structures logicielles, applications
et solutions d’Espressif.
Arduino fournit une interface simple et permet de tirer
parti des bibliothèques et des pilotes de périphériques reil particulier. Même les applications pour téléphone 
existants. ESP-IDF offre plus de flexibilité aux clients fournies dans les boutiques d’applications en ligne
qui souhaitent développer des applications multitâches génèrent dynamiquement l’interface utilisateur sur Figure 1. RainMaker
connecte les
avec un accès à toutes les API natives du SDK. Les clients la base de la description fournie par l’appareil. Par clients (comme les
peuvent choisir entre l’interface Arduino et l’IDF en exemple, si l’appareil indique qu’il s’agit d’une table smartphones) et les
fonction de leurs domaines d’utilisation. de mixage sonore dotée de huit faders de fréquences appareils basés sur
différentes, et que chacun d’entre eux est représenté ESP32 via un backend
Elektor : De nombreux utilisateurs semblent apprécier par un curseur allant de la valeur minimale à la valeur du cloud, qui est basé
sur AWS.
RainMaker, mais ils sont réticents à l’héberger sur le maximale, les applications pour téléphone modifie-
cloud AWS. RainMaker peut-il être utilisé sans AWS ? ront automatiquement l’interface utilisateur en consé-
Une telle solution est-elle prévue pour l’avenir ? quence, et aucune modification ne sera nécessaire du
Amey Inamdar : Il existe plusieurs approches pour côté du cloud.
créer des plateformes IdO dans le cloud. Vous pouvez
utiliser l’environnement Platform as a Service (PaaS) avec Elektor : Ne serait-il pas judicieux de laisser Rainmaker
simplement des conteneurs ou des machines virtuelles accessible à d’autres fabricants de microcontrôleurs,
d’entreprises de cloud. Cependant, ces implémentations par exemple Microchip ?
dans le cloud nécessitent des efforts techniques pour Amey Inamdar : Le protocole ESP RainMaker et le
maintenir la flexibilité et le coût. Très peu de clients SDK de l’appareil sont entièrement open-source, et
peuvent gérer ce type de DevOps. C’est pourquoi nous nous n’avons aucun problème à utiliser ESP RainMa-
avons décidé de baser ESP RainMaker sur l’architecture ker avec des microcontrôleurs qui ne proviennent pas
AWS Serverless qui fournit une solution sans mainte- d’Espressif.
nance avec une tarification en fonction de l’utilisation.
Dans ce contexte, vous pouvez voir que, en raison de Elektor : Venons-en à ExpressLink [3]. On peut lire sur
choix conscients faits en faveur des clients, il n’est pas Internet que « les modules compatibles ExpressLink
facile d’utiliser RainMaker sans AWS. fournissent une simple interface série par laquelle le
microcontrôleur hôte se connecte aux services AWS
Elektor : Les spécifications de RainMaker prévoient IoT, transformant ainsi n’importe quel produit hors
des types d’appareils standard, dont la plupart relèvent ligne en un produit connecté au cloud ». Comme nous
de la maison intelligente (stores, ventilateurs, alarmes pouvons le voir sur une page web AWS [4] d’Espressif,
antivol, etc.) [2]. Cependant, le système pourrait être il semblerait qu’il n’y ait qu’une seule carte compatible
utilisé pour d’autres applications telles que l’éclairage disponible.
de studio et l’équipement vidéo, sans parler des équipe- Amey Inamdar : Oui, mais il s’agit simplement d’une
ments de production cinématographique. Envisa- carte de développement pour l’évaluation et le proto-
gez-vous d’élargir le champ d’application ou voyez- typage autour du module compatible ExpressLink (qui
vous RainMaker uniquement dans le domaine de la est essentiellement un module ESP32-C3 avec un microlo- L’industrie
maison intelligente ?
Amey Inamdar : Le systeme de gestion du cloud
giciel préprogrammé faisant toute la magie AWS ~ Ndlr).
Nous avons choisi un facteur de forme compatible
de la maison
(backend) de l’ESP RainMaker est totalement indépen- avec Arduino pour cette carte de développement. La intelligente a
dant des types d’appareils. Il assure le transfert et le
stockage de données temporelles. Aucun travail n’est
disposition des broches de cette ESP32-C3-AWS-Ex-
pressLink-DevKit est compatible avec celle de la carte
besoin de
donc nécessaire pour prendre en charge un type d’appa- Arduino Zero et peut être directement branchée dessus. normalisation.

lektor juillet/août 2023 65


Figure 2. RainMaker
est livré avec un SDK
puissant et une longue
liste de types d’appareils
prédéfinis.

Elle peut également être facilement connectée à d’autres fois-ci, les acteurs les plus importants de l’écosystème
microcontrôleurs hôtes, tels que le Raspberry Pi. se sont réunis sous l’égide de la Connectivity Standards
Alliance et ont fait preuve d’engagement pour assurer le
Elektor : En ce qui concerne Matter [5], Espressif est succès de la normalisation. En outre, les considérations
l’un des premiers et des plus importants fournisseurs de relatives à la conception du protocole ont largement
solutions. Comment êtes-vous parvenu à cette position contribué à son succès. Exemples notables : garantir la
unique ? Qu’est-ce qui vous a fait prendre conscience sécurité cryptographique pour toutes les communica-
de la valeur de cette norme ? tions, prendre en charge les transports wifi et Thread,
Amey Inamdar : L’industrie de la maison intelligente utiliser la chaîne de blocs pour l’authentification et
avait besoin d’une normalisation, les tentatives précé- l’OTA sécurisé, et quelques autres.
dentes ayant été infructueuses. Cette expérience utilisa- Espressif est dans une position unique pour offrir la
teur fragmentée à fait en sorte que les consommateurs solution la plus complète pour Matter avec du matériel,
avaient du mal à utiliser les appareils connectés, et les des logiciels, des solutions prêtes à l’emploi et des
fabricants avaient des difficultés à les construire. Cette services. Espressif propose des puces et des modules

Figure 3. ExpressLink
est un module de
connectivité qui fournit
une interface de
commande AT simple au
microcontrôleur hôte.

66 juillet/août 2023 www.elektormagazine.fr


Figure 4. Actuellement, seules quelques cartes
de développement ExpressLink d’Espressif et
d’autres sociétés sont disponibles.

pour construire des accessoires Wi-Fi Matter, des acces-


soires Thread Matter, des routeurs Thread Border, ainsi
que des passerelles Matter. Esp-matter est un SDK
open-source qui fournit des outils et des exemples pour
créer des accessoires Matter. Le service de provisionne-
ment DAC d’Espressif fournit des modules provisionnés
de manière sécurisée avec des certificats d’attestation
d’appareil afin que les clients n’aient pas à se soucier
d’une fabrication sécurisée et complexe. Le service
d’assistance à la certification d’Espressif aide les clients
à faire certifier leurs accessoires compatibles avec
Matter. Et les modules ESP ZeroCode sont livrés avec
des firmwares pré-certifiés pour des appareils simples,
afin que les clients puissent construire directement
des accessoires compatibles avec Matter sans avoir à
développer quoi que ce soit de leur côté.

Elektor : L’ESP32-P4 nous montre qu’Espressif sort


du marché traditionnel des modules de communica-
tion. Étant donné que des fournisseurs tels que ST et l’innovation et le choix de l’architecture du SoC et du
Microchip offrent à leurs clients une génération de code sous-système de communication, l’ouverture en termes
automatisée, quel est l’argument de vente unique que de logiciels et d’informations, l’absence de compro-
vous voyez pour le P4 ? mis sur les caractéristiques de sécurité, l’efficacité de la
Amey Inamdar : L’ESP32-P4 dispose d’un ensemble de chaîne d’approvisionnement et la flexibilité de la fabri-
caractéristiques intéressantes, telles qu’une meilleure cation sont quelques-uns de ces facteurs de différen-
puissance de calcul, des périphériques améliorés et ciation.
une architecture de mémoire. L’ESP32-P4 peut être Vf : Laurent Rauber — 230227-04
associée à n’importe quelle autre puce de connecti-
vité Espressif. Une fois jumelée, elle débloquera des
possibilités d’utilisation intéressantes dans le segment
-
des appareils IdO haut de gamme. Le principal atout
b e d d e d world 2023r la
de l’ESP32-P4 sera le support logiciel standardisé grâce
u salon em ording su
auquel le même ESP-IDF supportera l’ESP32-P4, ce qui Espressif a vidéo avec Stuart C ustry :
d
permettra aux développeurs de transférer leurs appli- regardez lae YouTube Elektor InaA
cha în FnUtAJX 2
youtu.be/E
cations d’apprentissage et de portage de manière trans-
parente des autres SoC Espressif vers l’ESP32-P4. En
outre, le reste de l’écosystème, avec les interpréteurs de
langage de haut niveau, le support RTOS, les SDK et les
composants logiciels, restera utilisable sur l’ESP32-P4.

Elektor : Étant donné que de plus en plus de fournis-


seurs se lancent dans le domaine des modules, que À propos de Amey Inamdar
comptez-vous faire pour rester à la pointe du marché Amey est directeur du marketing technique chez Espres-
à long terme ? sif. Il a 20 ans d’expérience dans le domaine des systèmes
Amey Inamdar : Nous voulons continuer à faire ce embarqués et des appareils connectés, avec des rôles dans
qu’il faut pour nos clients, et nous pensons que cela l’ingénierie, la gestion de produits et le marketing technique.
nous aidera à maintenir notre position de leader à long Il a travaillé avec de nombreux clients pour construire des appareils connectés
terme. Je ne pense pas qu’il y ait une seule dimension basés sur la connectivité Wi-Fi et Bluetooth avec succès.
à cela. Un niveau élevé d’intégration dans notre SoC,

LIENS
[1] Page internet d’ESP RainMaker® : https://rainmaker.espressif.com/
[2] Types d’appareils standards prédéfinis ESP RAINMAKER : https://rainmaker.espressif.com/docs/standard-types.html
[3] Page internet AWS IoT ExpressLink : https://aws.amazon.com/iot-expresslink/
[4] Produits ExpressLink sur AWS Partner Device Catalog : https://devices.amazonaws.com/search?page=1&sv=iotxplnk
[5] Solutions d’Espressif pour Matter : https://espressif.com/en/solutions/device-connectivity/esp-matter-solution

lektor juillet/août 2023 67


IDO

guide d’introduction
à la sélection de kits
de développement
de microcontrôleurs L’ère du tout connecté
Il ne fait aucun doute que nous sommes

pour applications
entrés dans l’ère du tout connecté, tant
les appareils connectés sont omnipré-
sents. Nous en portons certains sur nous,

IoT et IIoT
d’autres servent à surveiller avec précision
notre consommation d’électricité ou nous
avertissent lorsqu’un visiteur se présente à
notre porte… ce ne sont pas les exemples
qui manquent. Pour ce qui est des proces-
sus de production industrielle, l’avène-
Mark Patrick (Mouser Electronics) ment de l’Internet industriel des objets
(IIoT) transforme la manière dont les usines
L’Internet des objets (IoT) fait désormais partie de notre fonctionnent et contribue au gain d’effica-
environnement. Les ingénieurs en développement embarqué cité général des équipements. En seulement
une décennie, nous avons changé notre
qui se lancent dans une nouvelle conception IoT doivent façon d’interagir avec le monde qui nous
accorder une attention toute particulière à certains facteurs entoure et de contrôler notre environne-
tels que la consommation d’énergie, les capacités de détection ment. Depuis que nous nous sommes
habitués à avoir instantanément accès à
et la connectivité sans fil. Or, ce n’est pas chose facile étant toutes les informations relatives à certains
donné la pression des délais de commercialisation. Les kits aspects de notre vie professionnelle ou
de développement IoT offrent une plateforme de prototypage privée, nous nous demandons comment
nous faisions auparavant pour vivre sans
viable et pratique sur laquelle baser une conception, mais tous téléphone mobile.
sont loin de présenter les mêmes capacités. Il convient donc En voiture aussi, nos habitudes ont changé
d’être attentif non seulement aux exigences de l’application, depuis que nous recevons en temps réel les
dernières informations sur le trafic ou des
mais surtout aux fonctionnalités et aux capacités du kit. Dans avertissements en cas de ralentissement
cet article, nous aborderons quelques-uns des nombreux sur notre trajet. Grâce aux appareils de
éléments à prendre en compte lorsque l’on choisit un kit de surveillance médicale connectés à Inter-
net, des patients peuvent aujourd’hui se
développement IoT pour une nouvelle conception. rétablir dans le confort de leur foyer tout en
ayant l’assurance qu’un personnel médical

68 juillet/août 2023 www.elektormagazine.fr Article commandité


s’occupe de la surveillance et se tient prêt à interrogés ont également leur importance. Conseils et astuces pour
intervenir en cas de besoin. La connectivité : comment le disposi- bien choisir son kit de
L’industrie a rapidement adopté l’IoT, une tif IoT doit-il interagir avec un système de développement IoT
technologie tout juste émergente sous contrôle hôte ? Une communication sans Les kits de développement offrent aux
l’impulsion d’initiatives gouvernementales fil fiable est-elle disponible dans chaque cas ingénieurs embarqués un moyen pratique
comme l’Industrie 4.0 visant à soutenir d’utilisation ou est-il préférable de recou- et rapide de prototyper une conception.
l’automatisation, à améliorer l’efficience des rir à une méthode de communication Dans cette partie de notre guide, nous
processus et à rationaliser les opérations. filaire ? Le volume de données à transfé- passerons en revue quelques-uns des
Désormais, une légion de capteurs surveille rer ainsi que la fréquence de transmission paramètres à prendre en compte lorsqu’il
et rapporte l’avancement de chaque étape de ces données dépendent aussi du type s’agit de choisir un kit approprié. Les
d’un processus en envoyant les données de capteur utilisé. Un réseau maillé sans principaux fournisseurs de microcontrô-
collectées au système de contrôle et d’ana- fil peut offrir un mode de communica- leurs proposent un large choix de kits de
lyse de l’automatisation. tion plus robuste dans le cas d’un déploie- développement et d’évaluation de dispo-
Le déploiement de l’IoT et de l’IIoT apporte ment à grande échelle, mais cela exige sitifs IoT. Le mieux est donc de guider son
des avantages considérables, mais, sur le que tous les dispositifs IoT fonctionnent choix en fonction des exigences de l’appli-
plan de l’ingénierie électronique, le dévelop- de cette manière. Si l’on opte pour un mode cation précédemment exposées. Voici une
pement d’un dispositif IoT rencontre aussi de communication sans fil, les décisions liste non exhaustive de fonctionnalités à
son lot de difficultés. techniques porteront sur la création d’une considérer au moment de sélectionner une
conception discrète ou sur le choix d’un plateforme de kit de développement.
Tour d’horizon des exigences module homologué.
liées à la conception d’un La source d’alimentation : quel serait La source d’alimentation électrique :
dispositif IoT le profil de consommation d’énergie de > Comment la carte est-elle alimentée ?
Bien qu’il existe une grande variété d’appli- votre dispositif IoT ? Certaines applica- USB à partir d’un poste de travail hôte
cations IoT, leur conception est régie par tions, certaines fréquences de commu- ? Batterie ? La source d’alimentation
un ensemble d’exigences fonctionnelles de nication et certains protocoles sans fil envisagée suffit-elle à son alimentation
base globalement identiques, qu’il s’agisse impliquent une consommation d’énergie électrique ? La carte dispose-t-elle d’un
de concevoir un capteur de pression pour qui dépasse la capacité d’une petite batte- circuit de gestion de puissance (PMIC)
un processus industriel ou un détecteur de rie. Pour certains scénarios de déploiement, auquel vous auriez accès pour essayer
présence dans un bureau. un branchement au secteur est-il dispo- d’autres sources d’alimentation ?
Lors de la collecte de données initiale en nible ? Certains capteurs IoT de dernière > Est-il possible de placer une sonde
vue d’établir les spécifications techniques génération utilisent des technologies de de courant en ligne pour mesurer la
générales d’un nouveau dispositif IoT, il collecte d’énergie pour se passer complè- consommation d’énergie en temps
convient de tenir compte de chacun des tement de l’alimentation par batterie. Il réel à des fins de profilage ? Si oui, cela
aspects énumérés ci-dessous, car ce sont s’agit alors de capter l’énergie de diverses inclut-il tout ce qui se trouve sur la
eux qui définissent l’architecture fonction- sources d’énergie ambiante (énergie solaire, carte et tous les modules supplémen-
nelle et la conception du dispositif. vibratoire, thermique…) pour charger un taires, capteurs, etc. ?
La détection : les capteurs sondent tous supercondensateur.
les aspects de notre environnement, de la L’interface utilisateur : est-il prévu qu’un Les capteurs :
température à la pression atmosphérique en utilisateur puisse interagir avec votre dispo- > La carte est-elle équipée des types de
passant par les mouvements des personnes. sitif IoT ? Est-il toujours possible d’instal- capteurs que votre application utilisera ?
Par exemple, les données collectées par une ler et de connecter le dispositif au système > Est-il possible d’ajouter des capteurs
caméra peuvent servir à alimenter une hôte s’il n’est pas en cours d’utilisation ? supplémentaires ? Soit en utilisant une
application d’apprentissage automatique Faut-il prévoir un dispositif d’affichage connexion périphérique ou un format
pour la détection d’objets dans le but de ou un quelconque dispositif d’indication complémentaire conforme aux normes
confirmer qu’une étiquette a été correcte- comme des voyants ? de l’industrie comme le mikroBUS
ment apposée sur une bouteille. Plusieurs Les applications d’analyse et de Click ?
choix techniques dépendent de ce qui doit contrôle dans le cloud : la raison d’être > Quelles interfaces périphériques sont
être détecté et à quelle fréquence. D’autres de l’IoT est de permettre à des appareils de accessibles ? I2C, UART, SPI, GPIO ?
paramètres à prendre en compte sont le se connecter à un système de contrôle hôte. > La carte ou le microcontrôleur dispose-
coût, la taille et la complexité du capteur. Les exigences logicielles du capteur et la t-il d’un convertisseur analogique-nu-
Une thermistance utilisée pour mesurer façon dont il interagit avec le système hôte mérique (CAN) que vous pourriez
la température nécessitera des compo- varient en fonction du mode de connexion utiliser ? Des composants de condi-
sants supplémentaires dans le domaine et des protocoles y afférents. Doit-on dispo- tionnement de signal supplémentaires
analogique et un traitement logiciel avant ser d’une liaison de données permanente sont-ils nécessaires ?
la conversion en une forme numérique. pour diffuser un flux de données ou les
Le nombre de capteurs nécessaires et données peuvent-elles être envoyées par La connectivité :
la fréquence à laquelle ils doivent être lot à intervalles réguliers ? > De quelles options de connectivité

Article commandité lektor juillet/août 2023 69


Figure 1. Le kit de développement IoT EV36W50A
de Microchip (Source : Microchip).

filaire/sans fil la carte dispose-t-elle ?


Ethernet, Wi-Fi, LoRa, BLE, ISM, etc.
> En l’absence de connectivité embar-
quée, est-il possible d’en ajouter
facilement une ? Le fabricant recom-
mande-t-il et prend-il en charge un
module sans fil approprié ? Une option
d’interface tierce (mikroBUS Click, etc.)
est-elle présente ?
> Le micrologiciel de la carte peut-il être
mis à jour par un mode de communica-
tion sans fil ?

Les ressources de calcul :


> La carte est-elle dotée du microcontrô-
leur que vous avez l’intention d’utili-
ser ? L’avez-vous déjà utilisé et dispo-
sez-vous déjà de chaînes d’outils de
développement adaptées ?
> Les ressources de calcul de la carte
sont-elles suffisantes pour exécu-
ter l’application IoT, les protocoles > De quelles fonctionnalités de sécurité nalités matérielles pour le contrôle
hôtes et des piles de protocoles de intégrées le microcontrôleur dispose- utilisateur ?
connectivité ? t-il et ces fonctionnalités sont-elles > Un dispositif d’affichage est-il présent ?
> Si le microcontrôleur est doté d’un utilisables avec votre application ? Ce dispositif est-il nécessaire dans
émetteur-récepteur sans fil intégré, l’application finale ?
pouvez-vous contrôler indépendam- Le contrôle utilisateur : > Des voyants peuvent-ils être comman-
ment ses modes de veille à des fins > La carte est-elle équipée de boutons, de dés depuis votre code ? Sont-ils
d’économie d’énergie ? curseurs tactiles ou d’autres fonction- disponibles en quantité suffisante ou

Figure 2. Le schéma
fonctionnel de la carte
de développement
Microchip WFI32-IoT
EV36W50A (Source :
Microchip).

70 juillet/août 2023 www.elektormagazine.fr Article commandité


Figure 3. Le kit de développement pour suivi Figure 4. Le module de diversité d’antennes xG24-RB4188A de Silicon Labs monté sur une carte mère
d’actifs STEVAL-ASTRA1B (Source : ST). Silicon Labs Wireless Kit Pro (Source : Silicon Labs).

pouvez-vous en ajouter rapidement à numérique. La présence d’une prise mikro- La conception de référence pour
l’aide d’un port GPIO de rechange ? BUS permet aux développeurs d’ajouter su i v i d ’a c t i f s m u l t i co n n ec t i v i té
des capteurs ou des périphériques supplé- STEVAL ASTRA1B de STMicroelectronics
Le support logiciel : mentaires. Le module de microcontrôleur La figure 3 présente le kit de dévelop-
> Quelle chaîne d’outils de développe- sans fil est également équipé d’une antenne pement et la conception de référence
ment est recommandée pour cette intégrée. La carte peut être alimentée par un STEVAL ASTRA1B [3]. Ce kit spécifique-
carte ? En disposez-vous déjà ? poste de travail hôte ou une batterie LiPo. ment conçu pour le prototypage et l’évalua-
> Un pack de support de carte complet Un PMIC intégré permet en outre de rechar- tion des applications de suivi d’actifs intègre
(BSP) est-il inclus ? ger la batterie par l’hôte USB. deux modules de connectivité sans fil : un
> Quels pilotes, bibliothèques et microlo- module de microcontrôleur STM32WB-
giciels supplémentaires sont néces- La figure 2 présente le schéma fonctionnel 5MMG [4] sans fil à courte portée 2,4 GHz
saires ? Sont-ils libres de droits ? de la carte WFI32-IoT et met en évidence BLE/ZigBee et un module de microcontrô-
> Vérifiez quelles sont les exigences les composants Microchip intégrés à la leur sans fil STM32WL55JC longue portée
relatives à la licence du micrologiciel et carte. La carte est préchargée pour la communication par LPWAN (par
de l’intergiciel auprès du fabricant de avec une image de démons- exemple LoRa).
la carte. tration prête à l’emploi (OOB)
> La carte est-elle fournie avec une démo capable de lire les capteurs embar- Le STEVAL ASTRA1B comprend un
préinstallée pour présenter les fonction- qués et d’envoyer les données dans ensemble complet de capteurs capables
nalités de la carte ? La communica- le cloud d’Amazon AWS. Le code de mesurer plusieurs paramètres
tion avec des fournisseurs de services de démonstration et les instructions environnementaux et de mouve-
populaires tels que Microsoft Azure ou complètes sont disponibles dans un dépôt ment. Un module GNSS fournit
Amazon AWS est-elle comprise ? GitHub [2]. des données de localisation en
> D’autres exemples de démo et de
code sont-ils disponibles pour cette
carte ? Existe-t-il un écosystème de
bibliothèques et de partenaires de
développement ?

Présentation de diverses cartes


de développement IoT
La carte de développement WFI32-IoT de
Microchip
La Microchip WFI32, référence
EV36W50A [1], est une carte de développe-
ment IoT complète, entièrement intégrée et
autonome (figure 1). Le WFI32-IoT intègre
un module sans fil Microchip WFI32E01PC
Wi-Fi 802.11 basé sur la famille de micro-
contrôleurs PIC. Côté capteurs embar-
qués, nous y trouvons un circuit intégré
de température I2C numérique Microchip
et un circuit intégré de lumière ambiante Figure 5. Un exemple de kit de développement LR1120 proposé par SEMTECH (Source : SEMTECH).

Article commandité lektor juillet/août 2023 71


aborder quelques-unes des questions qui
doivent s’imposer à l’esprit des ingénieurs
en développement embarqué au moment
de choisir une carte de développement
appropriée. Outre les points mentionnés,
il convient aussi de tenir compte des aspects
spécifiques de l’application finale.
Alors, qu’allez-vous développer ?
230338-04

Figure 6. La carte Ultra-Low Press Click de Mikroe (Source : Mikroe).

extérieur. Enfin, la carte est livrée avec un gestion des stocks et de prévention des vols.
élément sécurisé STSAFE, une batterie de Comme nous l’avons précédemment
480 mAh et une démo OOB composée d’un mentionné, il est possible d’ajouter des
tableau de bord pour le suivi d’actifs et d’une capteurs ou des périphériques supplémen-
application pour smartphone. taires à une carte de développement. Nous
expliquions également à propos de la carte
Silicon Labs xG24-RB4188A Microchip que celle-ci est équipée d’une
Le xG24-RB4188A de Silicon Labs [5] est un prise mikroBUS. Le mikroBUS, développé
module de diversité d’antenne enfichable par Mikroe, est rapidement devenu un À propos de l’auteur
pour le prototypage d’applications sans fil standard industriel adopté par de nombreux Mark Patrick est responsable de la création
2,4 GHz (figure 4). Il se branche sur la carte fournisseurs de semiconducteurs pour leurs et de la diffusion du contenu technique
de démarrage sans fil Silicon Labs BRD4001. cartes de développement et d’évaluation. La – un contenu essentiel à la stratégie de
Le module accueille un système sur puce technologie mikroBUS rassemble les proto- Mouser visant à soutenir, informer et
Gecko sans fil EFR32 de Silicon Labs, un coles de connectivité sérielle SPI, UART et inspirer son public d’ingénieurs. Avant
commutateur RF, un réseau correspon- I2C ainsi que des signaux d’alimentation, de diriger l’équipe de marketing technique,
dant et deux connecteurs d’antenne SMA. analogiques et MLI dans un format de prise Patrick faisait partie de l’équipe de marke-
La sortie RF de l’EFR32 est de +20 dBm. compact. Mikroe a développé des centaines ting achat de la région EMEA et jouait un
de cartes Click [8] utilisant ce facteur de rôle essentiel dans l’établissement et le
Le kit de développement LR1120 de forme pratique. développement des relations avec les
SEMTECH La carte Mikroe Ultra-Low Press Click [9] en principaux partenaires et fournisseurs.
Pour prototyper des applications est un exemple. Conçue pour les mesures En plus d’avoir occupé divers postes dans
LoRa LPWAN basées sur le microcontrô- pneumatiques à basse pression, elle est les départements techniques et marke-
leur sans fil LR1120 de SEMTECH [6], le dotée du capteur de pression TE Connec- ting, Patrick a travaillé pendant huit ans
fabricant propose une gamme de kits de tivity SM8436. Celui-ci communique à l’aide chez Texas Instruments, dans les services
développement [7] LR1120 semblables de l’interface I2C (figure 6). support et ventes techniques. Ingénieur
au kit illustré à la figure 5. Des variantes expérimenté, passionné de synthétiseurs
régionales de ces kits sont disponibles en Aller de l’avant avec votre kit de vintage et de motos, il n’hésite pas à les
fonction de la bande ISM sub-GHz (bande développement IoT réparer. Patrick est titulaire d’un diplôme
industrielle, scientifique et médicale). Le Les cartes de développement simplifient d’ingénieur en électronique avec mention
LR1120 convient aux applications multi- grandement le prototypage d’applications très bien de l’université de Coventry.
régionales de géolocalisation des actifs, de IoT. Dans ce bref article, nous avons pu

LIENS
[1] EV36W50A WFI32 carte de développement IoT de Microchip Technology : https://bit.ly/3Vw4L5U
[2] WFI32-IoT sur GitHub : https://github.com/MicrochipTech/WFI32-IoT
[3] STMicroelectronics Carte d’évaluation de suivi d’actifs STEVAL-ASTRA1B : https://bit.ly/3LwN4P6
[4] STM32WB5MMG module sans fil 2,4 GHz: https://bit.ly/3NFird0
[5] xG24-RB4188A carte radio à diversité d’antennes de Silicon Labs : https://bit.ly/3LBRFQ5
[6] Semtech LR1120 Wi-Fi/GNSS Scanner + LoRa Transceiver : https://bit.ly/428oET8
[7] Kit de développement LR1120: https://bit.ly/42rdGaO
[8] Click Boards™ - Mikroe : https://bit.ly/3LAaH9j
[9] Ultra-Low Press Click - Mikroe : https://bit.ly/3LXr2GH

72 juillet/août 2023 www.elektormagazine.fr Article commandité


Article commandité lektor juillet/août 2023 73
INITIATION

un condensateur
n’est pas toujours
capacitif !
René Kalbitz (Würth Elektronik eiSos) technique, le concepteur doit parfois s’appuyer sur de
tels spectres pour sélectionner un composant adapté à
Les condensateurs sont par définition des son circuit. Afin de faciliter sa tâche, Würth Elektronik
composants capacitifs. Ce qui semble pure eiSos a créé REDEXPERT [1], un outil en ligne qui fournit
les spectres de nombreux composants ainsi que diffé-
lapalissade n’est pourtant vrai que sous rentes mesures d’intérêt. Cet article explique comment
certaines conditions et plages de fréquences. déduire certaines propriétés électriques de ces spectres.
Cet article montre comment le spectre Circuit équivalent
d’impédance de divers types de condensateurs Le circuit de la figure 1 sert à modéliser le spectre
permet d’anticiper leur comportement, d’impédance de tout type de condensateur, de la pastille
capacitif ou non. céramique multicouche au supercondensateur.

CS représente la capacité d’un condensateur idéal. Un


condensateur réel subit des pertes qui « ralentissent »
Les ingénieurs se servent souvent des paramètres S pour sa charge. Ces pertes sont représentées par la résis-
représenter les propriétés électriques d’un condensa- tance-série équivalente (ESR, toutes les abréviations de
teur en function de la frequence. L’étude de ces spectres cet article sont en anglais). La résistance de la charge
fournit des informations sur la nature électrochimique, et celle des fils de connexion contribuent également à
physique et technique du composant. Pour être perti- la résistance ESR.
nentes, les caractéristiques cherchées doivent être
dépouillées des effets parasites et des artefacts de La capacité d’un condensateur idéal est définie par l’équa-
mesure toujours présents. Puisqu’il n’est pas toujours tion différentielle
possible d’inclure toutes les données dans une fiche

où dQ est la variation de charge à la surface du conden-


sateur, et dV la variation de tension aux bornes du
condensateur.


Tout courant alternatif parcourant un conducteur
Figure 1. Modèle métallique induit un champ magnétique qui s’oppose
standard d’un à ce courant. Dans le modèle considéré (dit L-C-R, ou
condensateur : capacité standard), cette propriété est représentée par l’induc-
CS, résistance-série tance-série équivalente (ESL), LESL sur la figure 1.
équivalente RESR,
inductance-série
équivalente LESL , et CS, RESR, et LESL permettent de décrire la majorité des
résistance de fuite RLeak . spectres. Dans l’approche la plus simplifiée, suffisante

74 juillet/août 2023 www.elektormagazine.fr Article commandité


v­ isualiser la relation entre l’amplitude complexe |Ẑ| et
les autres paramètres du modèle (à l’exception de RLeak).
­L’expression mathématique de ces paramètres est donnée
en annexe du lien [2].

L’impédance peut aussi servir à exprimer la capacité


complexe :

Figure 2. Représentation vectorielle de l’impédance dans le L’ensemble des grandeurs précédentes – comme Re(Ẑ),
plan complexe. RLeak est négligée par souci de simplicité. Im(Ẑ), |Ẑ| ou l’angle de perte δ – peut être mesuré à l’aide
d’analyseurs de réseau ou d’impédance. Tout compo-
sant électronique (pas juste les condensateurs) peut être Figure 3. Spectres
caractérisé par un jeu de variables dépendantes de la d’impédance |Ẑ| pour
WCAP-FTBE (haut)
en ingénierie électrique, ces trois paramètres ne varient fréquence, telles que Re(Ẑ) et Im(Ẑ) ou Re(Ĉ) et Im(Ĉ). Ce et WCAP-STSC (bas)
pas avec la fréquence, autrement dit sont des constantes. n’est toutefois qu’au travers de circuits équivalents comme calculés d’après le
celui de la figure 1 qu’il est possible d’interpréter les modèle standard.
La perte de charge dans le temps, c.-à-d. le courant de
fuite, peut être décrite avec une bonne approximation 
par la résistance ohmique idéale RLeak.La valeur de RLeak
est d’ordinaire bien supérieure à RESR, et peut donc être
ignorée (RLeak → ∞). Son effet n’apparaît sur le spectre
qu’à des fréquences très basses, sous 1 Hz [2].

Spectres d’impédance et de capacité


Avant d’aborder les spectres, explicitons leur contexte
théorique. Le circuit ci-dessus peut être décrit par
diverses grandeurs à valeurs complexes qui dépendent de
la fréquence : l’impédance Ẑ, la capacité Ĉ, le paramètre
de diffusion Ŝ (paramètre S), ou encore la permittivité ε̂ ,
L’impédance peut s’écrire Ẑ = Re(Ẑ) + I x Im(Ẑ), où Re(Ẑ)
est la partie réelle et Im(Ẑ) la partie imaginaire ; ou, sous
forme polaire :

où |Ẑ| est le module et ϕ l’argument. Dans le plan


complexe (fig. 2), ϕ mesure l’angle entre Re(Ẑ) (abscisse)
et le vecteur complexe Ẑ. Physiquement, |Ẑ| est le rapport
entre la tension et l’intensité, tandis que ϕ représente le
déphasage entre la tension et le courant à une fréquence
donnée. L’angle de déphasage ϕ et l’angle de perte sont
reliés par :

En électricité, on utilise aussi couramment l’amplitude


|Ẑ| et sa résistance-série équivalente RESR = Re(Ẑ). Sur
la figure 2, la résistance-série équivalente du modèle
standard (celui de la fig. 1) correspond à la partie réelle
de l’impédance. La figure 2 permet également de

Article commandité lektor juillet/août 2023 75


Fréquence propre fLC de l’élément L-C :

Fréquence propre fLeak de l’élément RLeak-C :

Fréquence propre fRL de l’élément RESR-L :


Les figures 3 et 4 montrent deux cas de figure majeurs :

Figure 4. Spectre de valeurs mesurées. L’ajustement de CS, RESR, LESL et RLeak Oscillation de Lorentz : fRC > fLC pour CS = 4.7 µF (courbe
capacité Re(Ĉ) calculé permet de calculer la réponse fréquentielle basique de bleue) ;
d’après le modèle n’importe quel condensateur. Les figures 3 et 4 montrent
standard. L’ordonnée
rouge de gauche est
les spectres d’impédance et de capacité de condensa- Relaxation de Debye : fRC < fLC pour CS = 50 F (courbe
pour WCAP-STSC teurs de 4,7 µF et 50 F obtenus avec cette technique. rouge).
(courbe rouge), Les angles de perte et de déphasage correspondants
l’ordonnée bleue de sont indiqués à l’annexe du lien [2]. Les paramètres de Sur la figure 3, les pointillés noirs et bleus indiquent
droite est pour WCAP- ces deux exemples sont les suivants : les parties purement capacitives et inductives. f RC, la
FTBE (courbe bleue).
fréquence propre de l’élément RC, est la fréquence à
> Supercondensateur (WCAP-STSC) : CS = 50 F, laquelle le condensateur peut être chargé et déchargé.
RESR = 15 mΩ, LESL = 5 nH et RLeak = 10 MΩ, L’inverse de cette fréquence correspond en gros à la
> Condensateur à film (WCAP-FTBE) : CS = 4.7 µF, durée d’une charge effectuée sous une tension idéale
RESR = 5 mΩ, LESL = 5 nH et RLeak = 10 MΩ. constante. Au-dessus de fRC, le condensateur n’est plus
complètement chargé (relativement à la tension maximale
Ces deux condensateurs, WCAP-FTBE (4,7 µF) et du signal).
WCAP-STSC (50 F), appartiennent à la famille de conden-
sateurs de Würth Elektronik eiSos. Sur les graphiques, CS, Sur le spectre de capacité du supercondensateur, f RC
RESR, LESL et RLeak sont supposés constants et indépen- correspond à un point d’inflexion et le haut de la courbe
dants de la fréquence (tableau 1). forme un épaulement (fig. 4). Pour des fréquences
inférieures à f RC, la capacité peut être déduite de la
Les parties les plus significatives d’un spectre sont courbe. Après le point f RC, le spectre d’impédance de
décrites par quatre fréquences propres : la figure 3 inférieure montre un plateau au point RESR.

Fréquence propre fRC de l’élément RESR-C : La fréquence propre fLC de l’élément LC est la fréquence
pour laquelle le couplage de l’inductance parasite et de la
capacité déclenche un phénomène de résonance lorsque
fRC > fLC (fig. 3 supérieure). Sous fRC (pour des fréquences
inférieures), le condensateur a un comportement capacitif,
c.-à-d. peut stocker une charge électrique ; sa réponse
est inductive au-dessus de fRC. La résonance au point fLC
Paramètres électriques WCAP-FTBE WCAP-STSC se traduit par un minimum étroit sur le spectre d’impé-
CS 4,7 µF 50 F dance de WCAP-FTBE (fig. 3 supérieure). La valeur RESR
RESR 5 mΩ 15 mΩ correspond à ce minimum. En pratique, un condensateur
ne doit pas être utilisé à fLC ou au-dessus de cette valeur.
LESL 5 nH 5 nH
RLeak 10 MΩ 10 MΩ Le spectre de capacité du condensateur FTBE de
Tableau 1. Paramètres utilisés pour le calcul des spectres 4,7 nF montre un pôle (fig. 4). Cette singularité reflète

76 juillet/août 2023 www.elektormagazine.fr Article commandité


une réponse physique, pas seulement un artefact de prétation basique des spectres. Les fréquences propres
mesure : le système de mesure, composé du conden- mentionnées ici forment à cet égard un bon outil d’ana-
sateur et de l’inductance parasite, se comporte comme lyse puisqu’elles « pointent du doigt » les parties utiles
un circuit résonnant, c.-à-d. comme un oscillateur (cf. [2] d’un spectre mesuré. La note d’application ANP109 [2]
pour les détails). examine plus en profondeur les spectres mesurés de
quatre types de condensateurs :
f Leak est la fréquence propre de l’élément RLeak-C. En
deçà de cette fréquence, le condensateur se comporte > supercondensateur WCAP-STSC
comme une résistance valant RLeak. Cet effet est à peine > électrolytique à l’aluminum WCAP-AIGB
visible sur le spectre, hormis pour des fréquences bien > condensateur à film WCAP-FTBE
inférieures à 1 Hz ou avec une petite valeur de RLeak. > pastille céramique multicouche WCAP-CSGP

La fréquence propre f RL de l’élément R ESR-L est la VF : Hervé Moreau — 230318-04


fréquence au-dessus de laquelle le condensateur se
comporte comme une inductance de valeur LESL (fig. 3
inférieure). Les cas où fRC < f LC marquent le début de
l’augmentation de l’impédance aux hautes fréquences.
À propos de l’auteur
Les deux exemples présentés ici montrent qu’un modèle René Kalbitz a étudié la physique aux universités de Potsdam
relativement simple permet de décrire le comporte- (Allemagne) et de Southampton (Royaume-Uni). Sa thèse
ment de condensateurs de grandes et petites capaci- de doctorat porte sur les semi-conducteurs et les isolants
tés. Les spectres calculés fournissent toutes les carac- organiques. Il a poursuivi ses travaux de recherche à l’Institut
téristiques que fourniraient des spectres mesurés. Les Fraunhofer de Recherche Appliquée sur les Polymères. Il a
mesures apportent bien sûr plus d’informations, mais rejoint Würth Elektronik en 2018 comme chef de produit pour les superconden-
le modèle L-C-R permet de déterminer des paramètres sateurs, et supervise les projets de recherche et de développement dans le
utiles aussi bien à un travail d’ingénierie qu’à une inter- domaine des condensateurs.

LIENS
[1] Simulateur en ligne REDEXPERT : https://redexpert.we-online.com/redexpert/
[2] René Kalbitz, « Impedance spectra of different capacitor technologies «. Würth Elektronik AppNote ANP109 : https://www.we-online.com/
en/support/knowledge/application-notes?d=anp109-impedance-spectra-of-different-capacitor-technologies

Article commandité lektor juillet/août 2023 77


LOGICIEL

horloge NTP
en CircuitPython
pourquoi utiliser ce langage de programmation ?

Michael Bottin (France)


Il est même préférable d’utiliser dans ce
Nous découvrons l’une des alternatives utiles à cas MicroPython. Mais pour un maker, un
Python, conçue pour être suffisamment simple étudiant ou un enseignant n’ayant pas de
connaissances particulières en Python, le
pour fonctionner sur des microcontrôleurs : choix de CircuitPython peut être intéres-
CircuitPython. Ici, nous réalisons un projet avec sant. La chaîne de développement est
un Raspberry Pi Pico W, qui récupère l’heure très conviviale, le langage apporte une
couche d’abstraction supplémentaire et la
d’un serveur NTP et l’affiche sur un écran LCD. majorité des informations liées à ce langage
(documentation, bibliothèques, tutoriels,
forum…) sont centralisées sur le web.
Python est un des langages de program- pour qu’elle puisse piloter les différents C’est pour cette raison que j’ai choisi d’uti-
mation parmi les plus populaires. C’est un périphériques disponibles dans un micro- liser CircuitPython pour cet article, afin
langage interprété ce qui rend la phase de contrôleur (GPIO, PWM, I2C, SPI, UART…). d’offrir aux lecteurs désirant démarrer
développement plus rapide contrairement Deux versions ont vu le jour : en Python sur microcontrôleur une porte
à un langage comme le C/C++ qui néces- > MicroPython développé par Damien d’entrée facile. La communauté autour
site d’être compilé avant son exécution. George dès 2013 [1] de CircuitPython est également très
En revanche, cette absence de compilation > CircuitPython développé par Limor dynamique. De nouvelles versions sortent
oblige à ce qu’un environnement d’exécu- Fried (PDG d’Adafruit), Scott Shawcroft régulièrement (version actuelle 8.x), de
tion soit installé sur la cible au préalable. et beaucoup d’autres contributeurs dès nouvelles bibliothèques également. Un
Depuis plus de 30 ans, ce langage conti- 2017 [2]. grand nombre de cartes populaires à base
nue son avancée dans le monde des PC et de microcontrôleur supportent ce langage.
du cloud. Il couvre des domaines comme Ces deux langages partagent tous deux CircuitPython peut également être employé
le calcul scientifique, le développement la même implémentation du langage sur des SBC comme Raspberry Pi, Beagle-
web (back-end), le développement logiciel, Python (CPython). CircuitPython est un Bone, Odroid ou encore Jetson via l’API
l’écriture de scripts système, le Machine dérivé open-source de MicroPython. Toute Blinka.
Learning, le Big Data (analyse et visua- évolution de MicroPython est rapidement
lisation de données). Il est utilisé par de répercutée sur CircuitPython. Il y a déjà eu Ambition de cet article
nombreuses compagnies comme Google plusieurs articles sur l’utilisation de Micro- Cet article constitue une découverte de l’uti-
(« Python où nous pouvons, C ++ où nous Python dans cette revue, mais à ma connais- lisation du langage CircuitPython à travers
devons »), Youtube, Instagram, Spotify, Intel, sance, aucun sur CircuitPython. une simple application.
Facebook, Dropbox, Netflix, Pixar, Reddit… Je vais donc vous présenter comment vous
Il était donc prévisible que ce langage fasse Quel est l’intérêt de pouvez très rapidement mettre en œuvre
son entrée dans le monde de l’électronique CircuitPython vis-à-vis de une horloge synchronisée sur le web
embarquée. Mais pour cela, il a fallu créer MicroPython ? grâce à CircuitPython. Le projet propose
une version allégée pour qu’elle puisse Soyons clair, pour un informaticien habitué également de choisir l’heure locale d’une
tourner sur un microcontrôleur mais égale- au Python souhaitant utiliser ce langage vingtaine de pays dans le monde. L’horloge
ment une version tournée vers le hardware dans le monde de l’embarqué, aucun. se synchronisera grâce à une connexion wifi

78 juillet/août 2023 www.elektormagazine.fr


Figure 2. Modules utilisés.

réseau est indisponible. Une pile garantira la navigation (SB Components [4])
également le maintien de l’heure de la RTC > Un module avec une horloge temps
à jour en absence d’alimentation. réel DS3231 (SB Components [5])
L’algorigramme général du fonctionnement
de l’horloge est présenté à la figure 1. Remarque : le microcontrôleur RP2040
dispose également en interne d’une horloge
Présentation du matériel temps réel RTC. Vous pourriez l’utiliser à la
Un grand nombre de cartes de développe- place du module Pico RTC Hat, cependant la
ment (et donc de microcontrôleurs) peuvent RTC du RP2040 n’est pas aussi précise dans
être facilement programmées avec le le temps et ne dispose pas d’une connexion
langage CircuitPython. J’ai choisi ici la carte vers une batterie de sauvegarde.
Raspberry Pico W à la fois car elle est très
populaire, peu coûteuse, disponible chez un Schéma de câblage
grand nombre de revendeurs dont Elektor [3] Même si l’on utilise des modules du
et qu’elle dispose d’une interface Wifi. Toute- commerce qui facilitent la mise en œuvre
fois, elle ne dispose ni d’un écran d’affichage, de la partie hardware, on a besoin de
ni d’une horloge temps-réel. Il est donc connaître les connexions entre ces modules
Figure 1. Algorigramme général du nécessaire d’ajouter quelques composants afin de pouvoir écrire les lignes de code
fonctionnement de l’horloge NTP. supplémentaires pour notre projet. du programme de notre application. La
Plutôt que de réaliser une carte dédiée, figure 3 présente les interconnexions réali-
(­ préconfigurée au niveau SSID et mot de j’ai choisi ici d’assembler des modules du sées entre les différents modules ainsi que
passe) et récupérera son horodatage via un commerce pour réaliser ce projet. Trois les noms donnés à ces connexions, noms
serveur NTP (Network Time Protocol) dédié. modules empilés suffisent au projet (cf. qui seront réutilisés dans le programme.
Cette horloge sera aussi en mesure de figure 2) : (Notez que le brochage indiqué dans la
maintenir l’heure à jour en absence de > Un module Raspberry Pico W (atten- documentation GitHub de SB Components
réseau grâce à l’horloge temps réel (RTC) tion à bien prendre la version W qui est incorrect au moment de la rédaction de
embarquée qui sauvegardera l’heure dispose d’une interface Wifi) cet article, mais leur code source indique
réseau lorsque celui-ci est disponible et > Un module d’affichage avec un écran l’affectation correcte des broches illustrée
qui fournira elle-même l’heure lorsque le LCD 240x135 pixels et un joystick pour dans la figure 3).

Figure 3. Interconnexions réalisées entre les différents modules.

lektor juillet/août 2023 79


Figure 4. Site web de CircuitPython. Figure 5. Sélection du Pico W parmi les cartes Figure 6. Téléchargement du fichier .UF2.
compatibles avec CircuitPython.

Installation CircuitPython Vous n’avez rien d’autre à faire. Une CircuitPython existe sur le lecteur
Le microcontrôleur RP2040 de la Raspberry fois CircuitPython flashé sur la carte CIRCUITPY, il s’exécute automatiquement.
Pico W n’intègre pas CircuitPython lorsque Raspberry Pico W, un lecteur CIRCUITPY De ce fait, on pourrait tout simplement
vous achetez le module. Avant toute chose, doit apparaître dans votre navigateur. éditer ce fichier dans un éditeur de texte et
vous allez donc devoir le « flasher » sur la l’enregistrer pour qu’il s’exécute. Toutefois,
carte. Utilisation du lecteur CIRCUITPY l’écriture d’un programme s’accompagne
Tout comme il y a des versions différentes Voici quelques points importants à généralement d’une phase de débogage.
de compilateur C selon la cible utilisée, il y a respecter lors de l’utilisation de ce lecteur L’utilisation d’un EDI permet alors d’accé-
autant de versions de CircuitPython qu’il y a CIRCUITPY : der à des outils comme une console pour
de cartes qui le supportent. Au moment où > TIl s’utilise comme une clef USB. Vous obtenir un retour sur ses erreurs.
ces lignes sont écrites, plus de 380 cartes du pouvez ajouter, supprimer des fichiers/ L’EDI que l’on va utiliser ici est Mu Editor [7].
commerce sont compatibles avec Circuit- dossiers depuis votre explorateur C’est une solution logicielle simple dispo-
Python. Il y a bien évidemment la plupart de fichiers. Sa capacité représente la nible gratuitement sous Windows, Mac OSX
des cartes récentes d’Adafruit, mais égale- mémoire Flash disponible sur le micro- et Linux. Il est également possible d’utiliser
ment de Pimoroni, d’Expressif, de SeeedS- contrôleur RP2040 pour y stocker Thonny, VS Code, Atom ou encore PyCharm
tudio, de Waveshare, de LilyGo, de Cytron, votre code et vos ressources (images, en installant l’extension CircuitPython
de DFRobot, de Wiznet… audio…). La figure 7 présente l’interface de l’EDI
La majorité d’entre elles utilisent des micro- > Il n’y a pas de précaution à prendre Mu Editor. La barre d’outils est réduite à
contrôleurs de chez Microchip (SAMD21/ lorsque vous branchez le Raspberry l’essentiel :
SAMD51), de chez Nordic (nRF52840), Pico W à votre ordinateur. En • Mode : choix du langage de program-
d’Expressif (ESP32) et de la Fondation revanche, il est plus que souhai- mation. Veillez à bien être dans le mode
Raspberry (RP2040). Vous devez donc table de l’éjecter à la manière d’une CircuitPython.
télécharger la version de CircuitPython clef USB lorsque vous voulez la • New : création d’un nouveau fichier vide
qui correspond à la carte Raspberry Pico W : débrancher ; faute de quoi, vous • Load : chargement d’un fichier existant.
> Dans un navigateur, rendez-vous risquez de corrompre le système de En mode CircuitPython et si votre carte
sur le site web de CircuitPython [6] fichiers. Raspberry Pico W est bien branchée, le
(figure 4). > En ouvrant le fichier boot.txt, vous logiciel vous ouvre automatiquement le
> Cliquez sur le lien Downloads puis pouvez contrôler quelle version de dossier du lecteur CIRCUITPY.
recherchez la carte Pico W (figure 5). CircuitPython est installée sur la carte • Save : sauvegarde du fichier en cours
> Téléchargez alors le fichier UF2 dispo- Raspberry Pico W. (onglet actif). Un petit point rouge à côté
nible sur la page affichée (figure 6). > Dès que la carte Raspberry Pico W du nom du fichier dans l’onglet vous
est alimentée via son port micro- indique qu’il y a eu des modifications
Le microcontrôleur RP2040 de la carte USB (grâce à votre ordinateur ou un depuis la dernière sauvegarde.
Raspberry Pico W contient déjà un bootloa- chargeur secteur), le code CircuitPy- • Serial : affiche/masque la console. Il est
der qui facilite l’installation de CircuitPy- thon s’exécute. Mais seuls les fichiers préférable de toujours afficher la console
thon dans ce dernier. Voici la démarche nommés code.py ou main.py vont s’exé- (REPL) car c’est dans celle-ci que s’affiche-
pour installer la version de CircuitPython cuter. Prenez bien soin de nommer ront les messages d’erreurs ou les infor-
que vous venez de télécharger : votre fichier de travail code.py. mations de votre programme.
1. Déconnectez la carte Raspberry Pico W > Il est préférable (mais pas obligatoire) • Plotter : affiche/masque un graphe dérou-
de votre ordinateur de travail de copier les fichiers images dans lant permettant de visualiser des données
2. Maintenez le bouton BOOTSEL appuyé un dossier ./images, les fichiers de numériques envoyées depuis le code.
de la carte Raspberry Pico W pendant que bibliothèques dans un dossier ./lib,… • Zoom-in et Zoom-out : augmente ou réduit
vous la connectez à votre ordinateur via Cela permet d’avoir une arborescence la taille de la police d’affichage.
un câble micro-USB (compatible avec un propre pour vos projets. • Theme : bascule entre un thème clair (Day),
transfert de données). sombre (night) ou à fort contraste.
3. Un lecteur RPI-RP2 doit apparaître dans Utilisation de l’EDI • Check : recherche les erreurs de votre
votre explorateur de fichier. CircuitPython étant un langage interprété, code, même celles qui n’empêchent pas
4. Copiez alors le fichier UF2 que vous avez il n’y a donc pas de phase de compilation. son exécution.
téléchargé sur le lecteur RPI-RP2. Si un fichier code.py contenant du code • Tidy : nettoie votre code en supprimant,

80 juillet/août 2023 www.elektormagazine.fr


thèque supplémentaire n’est donc à instal-
ler. La connexion à un réseau wifi néces-
site de fournir le SSID du réseau et son
mot de passe. Pour éviter que ces infor-
mations apparaissent directement dans
le code, CircuitPython utilise des variables
d’environnement.
Figure 7. L’interface de l’EDI Mu Editor. Un fichier settings.toml [12] situé à la racine
du lecteur CIRCUITPY va donc contenir ces
informations « secrètes ». On pourrait y
par exemple, les espaces inutiles ou les > Start Here! (concernant l’interface) [8] stocker toute information confidentielle
lignes vides inutiles. > What is a REPL? (concernant la console comme des clefs d’API. Dans notre cas, il
• Help : aide en ligne. REPL) [9] ne contient que le SSID et le PW du réseau
• Quit : quitte l’éditeur. > Plotting Data with Mu (concernant le auquel vous souhaitez connecter votre
graphe déroulant) [10] Raspberry Pico W (cf. figure 8). (Remarque :
Voici donc le déroulement classique du > Raccourcis clavier [11] ce fichier n‘est pas éditable dans l’EDI, vous
développement d’un programme dans l’EDI : devez utiliser un éditeur de texte pour le
> Vous ouvrez le fichier Code.py du Maintenant que ces informations sont créer et le remplir)
lecteur CIRCUITPY données, vous allez pouvoir vous intéres- Le code pour se connecter au réseau est
> Vous modifiez le code dans la zone ser sur le projet, à savoir l’horloge NTP. présenté dans le listage 1. Vous pouvez
d’édition. rapidement constater que le code est très
> Vous enregistrez les modifications du Test de la connexion wifi compact :
fichier. CircuitPython gère le wifi en natif sur la > Ligne 2 : importation de la biblio-
> Vous observez le résultat de l’exécution carte Raspberry Pico W. Aucune biblio- thèque os qui permet d’accéder aux
dans la console. Vous repartez à l’étape
n°2 si des erreurs sont survenues
durant l’exécution.

Vous trouverez davantage d’informations


à l’adresse suivante : Figure 8. SSID et password dans le fichier settings.toml.

Listage 1. Code pour se connecter au réseau wifi


1 # CircuitPython’s own libraries
2 import os
3 import ipaddress
4 import wifi
5
6 print()
7 print("Connecting to Wi-Fi")
8
9 # connect to your Wi-Fi network with SSID/PASSWORD in ’settings.toml’
10 wifi.radio.connect(os.getenv(’CIRCUITPY_WIFI_SSID’), os.getenv(’CIRCUITPY_WIFI_PASSWORD’))
11
12 print("Connected to Wi-Fi")
13
14 # pings Google DNS server
15 ipv4 = ipaddress.ip_address("8.8.8.8")
16 print("Ping google.com: %f ms" % (wifi.radio.ping(ipv4)*1000))

lektor juillet/août 2023 81


Figure 9. Téléchargement des bibliothèques (la date figurant dans le nom du fichier sera évidemment
différente.

variables d’environnement du fichier


settings.toml.
> Ligne 4 : importation de la biblio-
thèque wifi qui permet la connexion au
réseau.
> Lignes 6,7 et 12 : ces lignes ne sont
pas obligatoires, elles permettent juste
d’informer l’utilisateur dans la console.
> Line 10 : une seule ligne suffit ici à la
connexion physique au réseau.
> Lines 3, 14–16 : ces lignes ne sont pas
obligatoires, elles permettent de faire
un petit test (ping) en interrogeant un
serveur sur le web et ainsi vérifier que
la connexion wifi fonctionne correc-
tement puis afficher le résultat sur la
console série.

Ajout des bibliothèques utiles


CircuitPython contient un grand nombre
de bibliothèques fondamentales, mais il
ne peut pas contenir toutes les librairies
disponibles car cela saturerait inutilement Figure 10. L’horloge NTP affichée dans la console série.
la mémoire Flash du microcontrôleur. Il est
donc nécessaire, selon les exigences de
vos projets, d’installer des bibliothèques ii. adafruit_imageload création d’un socket qui permet-
supplémentaires. iii. adafruit_display_text tra le maintien de la connexion
L’installation de bibliothèques supplémen- b. Les fichiers : client-serveur.
taires se résume en CircuitPython à copier i. adafruit_debouncer.mpy > Ligne 22 : instanciation d’un client
les fichiers correspondants sur le lecteur ii. adafruit_ds3231.mpy NTP via le socket. L’attribut tz_offset
CIRCUITPY. Pour n’avoir à le faire qu’une iii. adafruit_ntp.mpy permet de régler le décalage horaire
seule fois, vous allez installer ici toutes les iv. adafruit_st7789.mpy entre le fuseau horaire GMT (Greenwich
bibliothèques utiles pour la version finale v. adafruit_ticks.mpy Mean Time) et votre fuseau horaire.
du projet. 8. Copiez l’ensemble de votre sélection dans Étant en France, mon fuseau horaire
Voyons la démarche : le dossier lib du lecteur CIRCUITPY. CET correspond au fuseau horaire
1. Créez un dossier lib sur votre lecteur GMT +1, d’où la valeur +1. Vous devez
CIRCUITPY s’il n’existe pas déjà. Remarque : CircUp est un outil écrit en l’ajuster à votre fuseau. Le serveur par
2. Toutes les bibliothèques disponibles sont Python qui permet de vérifier la version défaut est celui d’Adafruit (mais on
téléchargeables sous forme d’une archive de vos bibliothèques, de les mettre à jour peut le modifier) et le timeout est de
unique sur le site de Circuit Python et d’installer leurs dépendances. [13]. 10 secondes par défaut.
(remarque : elles sont aussi disponibles > Lignes 24-32 : dans une boucle
individuellement sur Github) Affichage de l’heure dans la infinie, on affiche l’heure dans la
3. Sur la page du site, cliquez sur le lien console console au rythme du rafraîchissement
Libraries. Dans le précédent programme, vous avez souhaité (ici 1 seconde – ligne 29). Pour
4. Téléchargez alors l’archive correspondant connecté votre Raspberry Pico W au réseau cela, on utilise l’attribut ntp.datetime.
à votre version de CircuitPython, 8.x dans wifi. Vous allez maintenant interroger un Celui-ci renvoie un tuple nommé de
notre cas (cf. figure 9). serveur NTP dédié pour qu’il vous fournisse la classe time qui contient les infor-
5. Dézippez la où vous le souhaitez sur votre la date et l’heure. Le code permettant la mations de date et d’heure du serveur.
ordinateur. récupération de l’heure et son affichage On accède à chaque élément du tuple
6. Dans le dossier de l’archive dézippée, dans la console (figure 10) est disponible par son champ nommé [15]. On utilise
ouvrez le dossier lib. dans le listage 2. l’instruction try…except pour intercep-
7. Sélectionnez : Voyons ce qui a été ajouté : ter une exception qui correspondrait à
a. Les dossiers : > Lignes 5 et 18 : importation de la la non réception d’une donnée une fois
i. adafruit_register bibliothèque native socketpool et que la durée de timeout est écoulée.

82 juillet/août 2023 www.elektormagazine.fr


Listage 2. Code permettant la récupération de l’heure.
1 # CircuitPython own’s libraries
2 import time
3 import os
4 import wifi
Figure 11. L’horloge NTP affichée sur l’écran LCD.
5 import socketpool
6
7 # CircuitPython external libraries
8 import adafruit_ntp
9
10 print("Connecting to WiFi")
11
12 # connect to your WiFi network with SSID/PASSWORD in ’settings.toml’
13 wifi.radio.connect(os.getenv(’CIRCUITPY_WIFI_SSID’), os.getenv(’CIRCUITPY_WIFI_PASSWORD’))
14
15 print("Connected to WiFi")
16
17 # Setting up a socket
18 pool = socketpool.SocketPool(wifi.radio)
19
20 # Initialize a NTP client to get time
21 # Set offset time in hours to adjust for your timezone, for example: GMT+1 => +1
22 ntp = adafruit_ntp.NTP(pool, tz_offset=+1)
23
24 # infinite loop
25 while True:
26 try :
27 # displays network time on console
28 print(f"::")
29 # refresh rate
30 time.sleep(1)
31 except :
32 print("NTP lost")

Affichage de l’heure sur l’ecran displayio : pour la gestion des fournissant le bus précédent et en
LCD graphiques précisant sa définition (width=135 ,
Pour cette étape, nous allons utiliser l’écran busio : pour le bus de communication h e i g h t = 2 4 0 ) et les offsets en x
plutôt que la console pour l’affichage de SPI (rowstart=40) et y (colstart=53). Les
l’heure. CircuitPython dispose d’une biblio- terminalio : pour disposer d’une police valeurs de ces deux derniers paramètres
thèque native générique appelée displayio de caractères pour l’affichage s’expliquent par le fait que la définition
qui permet de fournir des méthodes et des 2. Bibliothèques externes à CircuitPy- maximale du driver ST7789 est 320x240
attributs communs pour tous les écrans thon : et que celle de notre écran n’est que de
supportés par CircuitPython. adafruit_st7789 : pour la gestion de 240x135 (Cf. figure 12).
Ici, l’écran embarqué sur le module LCD l’écran LCD 4. En CircuitP ython, tout élément
couleurs a les caractéristiques suivantes : adafruit_display_text : pour l’affichage graphique doit appartenir à un groupe.
> Il utilise le protocole SPI de zone de texte sur l’écran On commence donc par créer un groupe
> Sa définition est de 240x135 pixels display_group puis une zone de texte
> Son driver est le ST7789 On configure ensuite tout l’affichage : time_label. On ajoute la zone de texte
1. On crée le bus de communication SPI au groupe. Et enfin on affiche le groupe
Vous pouvez télécharger le code via le lien à SPI_bus. sur l’écran.
la fin de l’article. Il serait long de le détailler 2. On crée le bus display_bus qui relie 5. Pour mettre à jour l’affichage de l’heure
ici, mais voici les principales étapes pour le Raspberry Pico W à l’écran LCD. Il sur le LCD, il suffit, dans la boucle infinie,
aboutir au résultat de la figure 11 : contient le bus SPI mais également deux de modifier l’attribut text de notre zone
1. Bibliothèques natives à CircuitPython : signaux supplémentaires (Command et de texte time_label en y copiant la
board : pour accéder aux noms des chip_select). chaîne de caractères que l’on affichait
broches du Raspberry Pico W 3. On crée enfin l’écran display en lui précédemment dans la console.

lektor juillet/août 2023 83


Listage 3. Code pour la RTC.
1 # SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
2 # SPDX-License-Identifier: MIT
3
4 # Simple demo of reading and writing the time for the DS3231 real-time clock.
5 # Change the if False to if True below to set the time, otherwise it will just
6 # print the current date and time every second. Notice also comments to adjust
7 # for working with hardware vs. software I2C.
8
9 import time
10 import board
11 import busio
12 import adafruit_ds3231
13
14 i2c = busio.I2C(scl=board.GP7, sda=board.GP6)
15 rtc = adafruit_ds3231.DS3231(i2c)
16
17 # Lookup table for names of days (nicer printing).
18 days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
19
20 # pylint: disable-msg=using-constant-test
21 if True: # change to True if you want to set the time!
22 # year, mon, date, hour, min, sec, wday, yday, isdst
23 t = time.struct_time((2023, 03, 09, 14, 58, 15, 3, -1, -1))
24 # you must set year, mon, date, hour, min, sec and weekday
25 # yearday is not supported, isdst can be set but we don’t do anything with it at this time
26 print("Setting time to:", t) # uncomment for debugging
27 rtc.datetime = t
28 print()
29 # pylint: enable-msg=using-constant-test
30
31 # Main loop:
32 while True:
33 t = rtc.datetime
34 # print(t) # uncomment for debugging
35 print(
36 "The date is {} {}/{}/{}".format(
37 days[int(t.tm_wday)], t.tm_mday, t.tm_mon, t.tm_year
38 )
39 )
40 print("The time is {}:{:02}:{:02}".format(t.tm_hour, t.tm_min, t.tm_sec))
41 time.sleep(1) # wait a second

Test de l’horloge temps réel RTC circuit populaire DS3231 qui emploie le bus supportent pas le protocole I2C [17]. Il faut
On pourrait s’arrêter là car notre horloge I2C pour sa communication avec le module donc préciser quelles sont celles qui sont
synchronisée sur le web fonctionne bien, Raspberry Pico W. physiquement reliées au composant RTC
mais que se passe-t-il si la connexion au Avant de combiner la RTC avec le serveur DS3231 (cf. figure 3). Lors de l’exécution,
réseau est interrompue ou si l’on coupe l’ali- NTP, vous allez pouvoir la tester seule. vous devriez obtenir dans la console un
mentation du montage pendant un certain C’est la bibliothèque adafruit_ds3231 qui résultat similaire à celui de la figure 13.
temps ? est nécessaire. Comme la majorité des
Pour éviter de perdre l’heure actuelle, une bibliothèques CircuitPython, elle dispose Code final
horloge temps réel va être ajoutée. Couplée d’exemples et de tutoriels en ligne [16]. La fonction première du projet est mainte-
à une batterie de sauvegarde (pile CR1220), Dans le code proposé dans ce tutoriel, vous nant réalisée. Le code final est disponible
elle maintiendra l’heure à jour pendant devez juste modifier les premières lignes en téléchargement sur [24]. la figure 14
des années en absence d’alimentation conformément au listage 3. En effet, de présente l’aspect général de l’affichage
via le port micro-USB. Cette RTC utilise le nombreuses cartes Raspberry Pico W ne sur l’écran. On peut constater que l’aspect

84 juillet/août 2023 www.elektormagazine.fr


Figure 15. Spritesheet des digits.

graphique a été amélioré et que des


éléments nouveaux figurent sur l’écran.
Encore une fois, une explication complète
du code serait fastidieuse. Un tutoriel,
disponible sur [18], fournit toutes les bases
nécessaires.
Qu’est-ce qui change vis-à-vis des précé-
dents codes ?
Figure 12. Offset de l’écran ST7789. > Le code de gestion de l’horloge temps
réel RTC a été mixé avec celui de la
récupération de l’heure via le serveur
NTP.
> L’affichage de l’heure se fait mainte-
nant à l’aide d’images bitmap prépa-
rées dans un logiciel dédié. On
utilise notamment la bibliothèque
adafruit_imageload pour les charger en
mémoire. Pour éviter de charger une
image à chaque changement de digit
(risque de ralentissement), on utilise ici
une spritesheet comme en animation
(figure 15). On définit ensuite quelle
portion de l’image on désire afficher.
On procède de même pour les points
clignotants.
> Avec le joystick disponible sur le
module 1.14” LCD hat for Pico, on peut
sélectionner un pays et voir ainsi
l’heure actuelle dans ce pays et le
décalage horaire engendré. Pour éviter
les rebonds du joystick, on utilise ici
une bibliothèque adafruit_debouncer.
Cette dernière a besoin de la biblio-
thèque adafruit_ticks pour fonctionner.
Figure 13. Résultats de l’horloge RTC.

Figure 14.
Interface finale. Figure 16. Spritesheet des drapeaux.

lektor juillet/août 2023 85


Figure 17. Arborescence des bibliothèques.

> L’affichage du drapeau utilise aussi un > Documentation : bibliothèques natives la Raspberry Pico (W) (c’est toute la force
bitmap sous forme de spritesheet avec de CircuitPython [20] de CircuitPython avec son unified hardware
25 pays disponibles (figure 16). > Documentation : bibliothèques API). Et si vous êtes bloqué, vous pouvez
> Les textes correspondant à la ville et externes [21] toujours m’envoyer vos questions à mon
au décalage horaire utilisent des labels > Tutoriels de démarrage en CircuitPy- adresse mail.
comme on l’a fait lorsque l’on a affiché thon [22], [23] 220633-04
l’heure sur le LCD précédemment.
Il y a également un livre publié chez Elektor
L’arborescence des bibliothèques internes que j’ai écrit en 2020 avec la version 5.3 Des questions, des commen-
et externes utilisées dans le projet est repré- de CircuitPython (figure 18). Certes, il taires ?
sentée sur la figure 17. y a eu beaucoup de nouveautés depuis Si vous avez des questions ou des
cette édition, mais les bases du langage propositions/suggestions d’articles,
Conclusion demeurent inchangées et le code se trans- envoyez un courriel à l’auteur
On pourrait bien sûr imaginer des évolu- pose facilement à d’autres modules comme ([email protected]), ou
tions à ce projet comme utiliser un écran contactez Elektor ([email protected]).
LCD avec une définition plus importante
(en se limitant toutefois à 320x240 vis-à-
vis de la puissance du Raspberry Pico W)
ou ajouter des alarmes sonores utilisateur
ou encore afficher les données météos
Produits
actuelles pour notre position… Il est assez
aisé de programmer ces améliorations en > Raspberry Pi Pico RP2040 W
CircuitPython à l’aide des documenta- https://elektor.fr/20224
tions des bibliothèques en ligne, de très
nombreux tutoriels existants sur le site
> Michael Bottin, Initiation au
langage CircuitPython et à la puce
d’Adafruit… nRF52840 (livre en français)
N’hésitez pas à vous lancer dans un projet https://elektor.fr/19523
personnel en utilisant ce langage Circuit-
Python, vous découvrirez par vous-même
sa simplicité d’utilisation.
> Téléchargement : CircuitPython pour le
Raspberry Pi Pico W [18]
> Téléchargement : bibliothèques Figure 18. Livre « Initiation au language
externes [19] circuitpython et à la puce nRF52840 «.

86 juillet/août 2023 www.elektormagazine.fr


LIENS
[1] MicroPython : https://fr.wikipedia.org/wiki/MicroPython
[2] CircuitPython : https://en.wikipedia.org/wiki/CircuitPython
[3] Raspberry Pico W chez Elektor : https://elektor.fr/raspberry-pi-pico-rp2040-w
[4] Module d’affichage avec un écran LCD pour le Pico : https://shop.sb-components.co.uk/products/1-14-lcd-hat-for-pico
[5] Module avec une horloge temps réel pour le Pico : https://shop.sb-components.co.uk/products/pico-rtc-hat
[6] Site web de CircuitPython : https://circuitpython.org/
[7] Mu Editor : https://codewith.mu/en/download
[8] Interface de Mu Editor : https://codewith.mu/en/tutorials/1.2/start
[9] Console REPL : https://codewith.mu/en/tutorials/1.2/repl
[10] Graphe déroulant : https://codewith.mu/en/tutorials/1.2/plotter
[11] Raccourcis clavier : https://codewith.mu/en/tutorials/1.2/shortcuts
[12] Fichier TOML : https://fr.wikipedia.org/wiki/TOML
[13] L’outil Circup : https://learn.adafruit.com/keep-your-circuitpython-libraries-on-devices-up-to-date-with-circup/
[14] UTC (Coordinated Universal Time): https://timeanddate.com/worldclock/timezone/utc
[15] Classe time : https://docs.python.org/3/library/time.html#time.struct_time
[16] Tutoriels et exmples avec la bibliothèque adafruit_ds3231 :
https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/circuitpython
[17] Brochage du Pico W : https://datasheets.raspberrypi.com/picow/PicoW-A4-Pinout.pdf
[18] Version de CircuitPython pour le Raspberry Pico W : https://circuitpython.org/board/raspberry_pi_pico_w/
[19] Bibliothèques externes de CircuitPython : https://circuitpython.org/libraries
[20] Bibliothèques natives de CircuitPython : https://docs.circuitpython.org/en/latest/shared-bindings/index.html#modules
[21] Tutoriels de démarrage en CircuitPython : https://docs.circuitpython.org/projects/bundle/en/latest/drivers.html
[22] Tutoriels de démarrage en CircuitPython 1 : https://learn.adafruit.com/welcome-to-circuitpython/circuitpython-essentials
[23] Tutoriels de démarrage en CircuitPython 2 : https://learn.adafruit.com/welcome-to-circuitpython/
[24] Téléchargement du logiciel : https://elektormagazine.fr/220633-04

MagPi, le magazine officiel du Raspberry Pi


12 mois
6 x MagPi : Plus de
Édition 100 projets
imprimée Le prix

Accès aux
54,95 €
archives en
ligne du MagPi
COMMANDEZ DÈS MAINTENANT AU
WWW.MAGPI.FR/ABO

www.magpi.fr Magazine

lektor juillet/août 2023 87


REVUE

Figure 1. Le Phambili
Newt est livré avec un
support de bureau en
bois découpé au laser.

construisez un
écran IdO sympa avec le Phambili Newt
Clemens Valens (Elektor)
Une batterie est censée alimenter le Newt, mais elle
Découvrez le Phambili Newt, un module n’est pas incluse dans le kit. Heureusement, vous
d’affichage compact et personnalisable pouvez aussi le faire fonctionner à partir d’un chargeur
de téléphone de type USB-C. Selon la documenta-
qui offre bien plus qu’on ne le pense. tion, une batterie Li-Po avec une capacité minimale
Examinons ses caractéristiques de 500 mAh permettrait à l’appareil de fonctionner
uniques, des fonctionnalités de base aux jusqu’à deux mois entre deux charges. La batterie doit
être équipée d’un connecteur JST à deux contacts.
possibilités passionnantes d’applications Outre le module Newt, le kit comprend également
programmables par l’utilisateur, ce qui en un support en bois découpé au laser et du matériel
fait un outil intéressant pour les passionnés de montage. Le support vous permet de placer l’appa-
reil sur votre bureau, par exemple, mais il est un peu
d’appareils IdO. bancal lorsque vous appuyez sur les touches. Une
option plus stable consiste à monter les quatre pieds
magnétiques et à fixer le Newt sur un réfrigérateur
Le Phambili Newt est un écran qui peut être fixé au ou sur toute autre surface métallique.
mur, alimenté par batterie, toujours allumé, qui va
chercher des informations sur Internet et les afficher. Que fait le Phambili Newt ?
Le module est légèrement plus grand qu’une carte Après le déballage, le Newt ne fait pas grand-chose
de crédit et comporte 10 pavés tactiles ainsi qu’un puisqu’il attend qu’une connexion wifi soit confi-
afficheur E-Ink de 2,7 pouces (240 x 400 pixels). gurée premièrement. Dès la mise sous tension, il
Derrière l’écran se trouve un microcontrôleur ESP32-S2 donne des instructions sur la façon de le connecter
que vous pouvez programmer avec Arduino, Circuit- à votre réseau. C’est assez facile, mais un peu lent,
Python, MicroPython [1] ou ESP-IDF. Bien qu’il soit et j’ai observé plusieurs redémarrages de l’appareil
destiné à des applications où il est constamment avant qu’il ne se connecte à mon réseau. Lorsqu’il s’est
allumé, il est doté d’un minuscule interrupteur à finalement connecté, il a affiché la date et l’heure, puis
glissière qui permet de l’éteindre. s’est bloqué.

88 juillet/août 2023 www.elektormagazine.fr


FigureFigure 2. Avec ses pieds magnétiques,
vous pouvez fixer le Newt sur un réfrigérateur
ou sur tout autre objet métallique. 

J’avais remarqué que la version du micrlogiciel chargé


sur mon Newt était la v0.0.11, et j’ai donc cherché une
version plus récente. Après avoir chargé la dernière
version (v1.1.15) [2], le Newt fonctionne comme prévu.
La mise à jour du micrologiciel est facile : connectez
le Newt à un ordinateur et copiez le nouveau fichier
du micrologiciel sur le disque externe qui est créé.
Avec le micrologiciel approprié, le Newt se connecte
rapidement à mon réseau et affiche l’heure, la date et
les informations météorologiques de l’endroit où je
me trouve. L’affichage des données météorologiques
alterne avec une citation toutes les trois minutes.
Une pression sur la touche supérieure droite ouvre
un menu en bas de l’écran. Il y a trois « pages » avec
alarme et minuterie, des informations sur la météo
et la qualité de l’air, un calendrier et d’autres choses
que vous pourriez trouver utiles ou amusantes. Le
menu permet également d’accéder aux réglages et à
la mise à jour du micrologiciel. Malheureusement, la
vis de fixation gêne un peu la touche du menu (tout
comme la vis proche de la touche inférieure gauche).

Créer vos propres applications pour


le Phambili Newt Figure 3. Voici l’affichage
après avoir mis le Newt
Même si la fonctionnalité de base du Newt est intéres-
sous tension pour la
sante, ce n’est probablement pas la raison pour laquelle première fois.
vous en voudriez un. Sa véritable force réside dans le
fait qu’il est possible de le pirater, pour ainsi dire. Le 
code source du micrologiciel est disponible sur GitHub,
ainsi que des instructions sur la façon de configurer
l’EDI Arduino [3] pour écrire vos propres applications
Newt.
Un connecteur I²C au format Qwiic (SparkFun) vous Des questions, des commentaires ?
permet de connecter des capteurs et d’autres exten- Envoyez un courriel à ([email protected]).
sions au Newt, le transformant en un véritable appareil
IdO au lieu d’une simple horloge connectée.

Conclusion
L’ESP32-S2 est un microcontrôleur puissant, même s’il
ne dispose que du wifi seulement et pas du Bluetooth. Produit
L’écran noir et blanc est très agréable et rapide, contrai-
> Phambili Newt Afficheur IdO 2,7 pouces
rement aux afficheurs E-Ink normaux. L’affichage est (alimenté par ESP32-S2)
instantané. La combinaison de ces deux éléments en https://elektor.fr/20230
fait un module très sympa avec de nombreuses possi-
bilités d’application, en particulier dans le domaine de > SparkFun Environmental Combo Breakout –
l’IdO à faible consommation d’énergie. Le connecteur CCS811/BME280 (Qwiic)
https://elektor.fr/19580
d’extension I²C offre encore plus d’options.
VF : Laurent Rauber — 230345-04

LIENS
[1] Günter Spanner, « MicroPython pour l’ESP32 et ses copains (partie 1) » :
https://www.elektormagazine.fr/magazine/elektor-180/59780
[2] Dernière version du micrologiciel sur Newt :
https://phambili-pub.s3.amazonaws.com/Newt.ino_latest.bin
[3] Comment configurer l’EDI Arduino :
https://github.com/Phambili-Tech/Newt_Display/wiki/Arduino-Setup

lektor juillet/août 2023 89


INITIATION

détecteur de mouvement
Doppler HB100 théorie et pratique

LM358 Module
VCC
IN
OUT
GND MOD1 SCL
PWR LED

ARDUINO UNO SDA


AREF
GND
RESERVED 13
IOREF 12
RESET 11
3.3V 10
5V 9
POWER

GND 8
GND
DIGITAL (PWM)

+5V VIN 7
OSC GND
Tx Rx 6
ANT ANT A0 5
MIX
ANALOG IN

A1 4
ICSP
A2 3
RESET

MISO
SCK

A3 2
HB100 A4 TX 1
Tx Rx
ANT ANT A5 RX 0
IF GND
GND
MOSI
5V

Bottom View
230205-017

Stefano Lovati (Italie)


Le détecteur à infrarouge fonctionne par détection des infrarouges
La détection des mouvements d’êtres émis par l’objet tandis que le capteur à µ-ondes est émetteur et analyse
humains, d’animaux ou d’objets utilise des les réflexions sur l’objet. Le capteur à µ-ondes a l’avantage de pouvoir
détecter d’autres objets que des corps chauds. En outre, il n’est pas
capteurs appropriés dits « de mouvement ». affecté par la température ambiante, possède une large plage de
Nous étudions ici un type de capteur mesure et une grande sensibilité. Grâce à ses caractéristiques, il est
spécifique, apprécié pour ses capacités très utilisé dans l’industrie, le transport, le contrôle automatique des
portes, les détecteurs de stationnement et comme compteur de vitesse.
uniques et sa valeur pédagogique : le capteur Comme il peut détecter différents types d’objets, dans de nombreuses
à micro-ondes. Ce dispositif de détection de applications réelles, combiné à un autre type de capteur il permet une
mouvement repose sur l’effet Doppler, déjà détection ciblée et infaillible. Par ex., associé à un capteur de présence à
infrarouge (PIR), le capteur à µ-ondes permet de déterminer à coup sûr
utilisé dans les systèmes radar modernes. le passage ou la présence d’une personne, en éliminant les possibles
sources de perturbation.

90 juillet/août 2023 www.elektormagazine.fr


Remarques sur l’effet Doppler où v est la vitesse de l’objet détecté en m/s et λ la longueur d’onde en
Considérons une source sonore : l’effet Doppler désigne la variation mètres. Cette formule n’est valable que si la vitesse v est radiale, c.-à-d.
de fréquence (hauteur) du son perçu par un auditeur quand, soit sans composante transversale, comme c’est le cas si l’objet à détec-
elle se rapproche ou s’éloigne de lui, soit l’auditeur se rapproche ou ter (celui qui réfléchit le signal) et la source (l’émetteur) se déplacent
s’éloigne d’elle. En pratique, chacun de nous a pu expérimenter cet latéralement. Dans le cas le plus général, l’équation ci-dessus prend
effet, en remarquant comment le son produit par une sirène (que pour la forme ci-après.
simplifier, nous supposons monotone et de fréquence fixe) est modifié
lorsque la source se rapproche ou s’éloigne de nous. Cet effet, forma-
lisé par le physicien autrichien Christian Doppler, s’applique à toutes (Équation 2)
les ondes qu’elles soient de nature électromagnétique (radio, lumière,
rayons X), matérielle (son, vagues), etc.). Ce changement apparent
de fréquence entre source d’onde et récepteur est déterminé par le où α est l’angle que forme la direction du signal transmis/réfléchi avec
mouvement relatif entre eux. la direction du mouvement de l’objet à détecter. On remarquera que si
l’objet à détecter ne se déplace que perpendiculairement à la direction
Pour mieux comprendre l’effet Doppler, supposons qu’une source du signal émis, l’effet Doppler est nul (fD = 0). C’est pourquoi, dans les
émette un son de longueur d’onde et de fréquence constantes. Si la combats aériens de type Top Gun, où l’on utilise des radars sophisti-
source et le récepteur sont immobiles, le récepteur « entend » une qués exploitant précisément l’effet Doppler, les pilotes menacés par
fréquence sonore identique à celle que la source émet. Le récepteur un radar tentent toujours d’adopter une trajectoire perpendiculaire à
perçoit chaque seconde le nombre exact de périodes que la source celle de l’ennemi, ce qui complique la détection radar et le suivi de
produit. En revanche, en cas de déplacement relatif de l’un vers l’autre, leurs position et vitesse.
le récepteur en perçoit plus car il va à la rencontre des ondes émises
en se rapprochant de la source. Il interprétera cette variation comme Dans le cas spécifique d’un radar transmettant des ondes électroma-
un son de fréquence plus élevée. Inversement, si la source et le récep- gnétiques (comme celui du capteur utilisé pour cet article), la formule
teur s’éloignent l’un de l’autre, ce dernier percevra moins de périodes ci-après exprime la valeur absolue (le module) de la fréquence Doppler
sonores chaque seconde et donc un son de fréquence plus basse. fD :

Voyez la représentation graphique de ce concept (figure 1). Si le


véhicule s’approche de la source (l’émetteur), l’onde réfléchie a une (Équation 3)
fréquence plus élevée ; cependant, si le véhicule s’éloigne, l’onde
réfléchie a une fréquence moins élevée que l’onde d’origine.
où vr st la vitesse radiale, fTX la fréquence du signal transmis et c0 la
Quelques équations vitesse de la lumière.
Pour un système radar, la formule ci-après donne la valeur en Hertz
du décalage de fréquence fD appelé fréquence Doppler. Le module HB100
Cet article étudie les caractéristiques de l’un des capteurs de détection
de présence à effet Doppler les moins chers : le HB100. En bref, c’est
(Équation 1) un module intégré monté sur un circuit imprimé de taille extrêmement
compacte comprenant un émetteur de µ-ondes (bande X), un circuit
récepteur, un mélangeur et toute la section RF. Pour rassurer nos
lecteurs, je précise que même si les fréquences concernées sont assez
élevées (environ 10 GHz), il n’y a pas de risque pour la santé en raison
de la très faible puissance d’émission. Le principe de fonctionnement
de ce module, vendu quelques euros par les grands distributeurs de
composants, est très intéressant sur le plan technique et pédago-
gique. En effet, le module utilise un circuit superhétérodyne sur lequel
reposent les systèmes radar modernes et son schéma classique se
retrouve dans de nombreux récepteurs RF. La figure 2 montre l’aspect
extérieur du module, qui est très compact, avec le boîtier métallique
qui sert d’écran de protection pour la partie RF. La figure 3 montre
l’arrière du module qui quant à lui, sert d’antenne émettrice-réceptrice

The HB100 miniature motion sensor is a e détecteur de mouvement


Figure 1. Exemple d’application de l’effet Doppler. (Source : miniature HB100 est un module émetteur-récepteur Doppler opérant
physicsopenlab.org, CC BY 4.0) à 10,525 GHz, donc en bande X. Il abrite un oscillateur à résonateur

lektor juillet/août 2023 91


Figure 3. Vue inférieure du module HB100. (Source : [7])

sa taille et de sa forme. C’est justement la fréquence du signal que


le module envoie aux deux antennes rectangulaires gravées sur le
Figure 2. Vue de dessus du module circuit imprimé et visibles du côté gauche de la figure 4. Tout obsta-
HB100. (Source : [6]) cle se trouvant sur le chemin du faisceau émis le réfléchira avec une
différence de fréquence fonction du mouvement de l’objet par rapport
au module d’émission. Aux vitesses ordinaires, cette différence reste
diélectrique (DRO) et une paire d’antennes, gravées directement sur faible. La manipulation d’un signal RF en bande X est très ardue, sur
la carte imprimée. Ce module est idéal pour réduire l’incidence des le plan matériel, mais surtout pour le logiciel. La solution à cet écueil
fausses alarmes dans les systèmes de détection d’intrusion, en parti- est justement apportée par le circuit superhétérodyne et, plus précisé-
culier s’il est associé à un capteur infrarouge passif (PIR) classique. Les ment, par le mélangeur RF (v. fig. 4). Sa fonction est de « combiner » le
systèmes d’ouverture automatique de porte et compteurs de vitesse signal transmis avec celui reçu par les deux antennes rectangulaires,
de véhicule peuvent aussi utiliser ce capteur. Les avantages princi- visibles à droite (v. fig. 4). Si un mélangeur reçoit deux signaux d’entrée
paux du module HB100 sont les suivants : de fréquences fe1 et fe2, il produit deux signaux de sortie de fréquences
fs1 et fs2 respectivement égales à fe1 + fe2 et fe1 – fe2. Ainsi, dans notre cas,
> détection de mouvement sans contact ; deux signaux l’un à 20 GHz environ (somme des fréquences émise et
> mesure non affectée par la température, l’humidité, le bruit, l’air, la reçue) et l’autre en BF (différence des dites fréquences). Ce mécanisme
poussière ; adaptation à des conditions environnementales parti- résout élégamment notre problème, car il transforme le problème de la
culièrement difficiles ; mesure d’un signal en bande X en la mesure d’un signal BF facilement
> excellente immunité aux interférences radio ; gérable par un µcontrôleur courant à faible coût, par ex. Arduino. En
> faible puissance rayonnée = absence de risque pour l’homme et mouvement radial, selon la vitesse de l’objet on aurait par ex. 1 kHz à
conformité aux réglementations de la Federal Communication 185 km/h (vitesse très élevée) et 30 Hz à 5,5 km/h (homme qui marche).
Commission (FCC) ;
> distance de détection élevée, jusqu’à 20 m ; Le signal appelé FI (Fréquence Intermédiaire) en sortie du mélangeur
> détection non limitée aux humains, mais étendue aux objets est justement le signal de différence. Ce processus courant en RF, est
froids ; aussi dit abaisseur de fréquence (down-conversion en anglais) : son
> haute directivité des ondes radio ; but est de réduire une fréquence élevée pour simplifier sa manipulation.
> faible consommation d’énergie ; La fréquence ainsi obtenue est appelée « fréquence intermédiaire »
> capacité à fonctionner en mode CW (Continuous Wave, c.-à-d. pour la distinguer de la fréquence d’origine, dite de « bande de base ».
transmission continue du signal radio) et en mode Pulse (trans-
mission de courtes impulsions périodiques) ; L’examen de la figure 4 révèle aussi la présence de 4 broches seule-
> compacité, faible épaisseur. ment. Elles sont nécessaires pour connecter le module à un µcontrô-
leur ou à un circuit de mesure : 2 broches de masse, 1 broche pour
Nous passons à l’analyse détaillée du module en lien avec son schéma- l’alimentation positive en 5 V et 1 broche pour le signal de sortie FI
bloc (figure 4). Commençons par l’oscillateur qui, comme déjà indiqué, en BF. Le but est de traiter un signal dont la fréquence n’est que de
est un DRO accordé à la fréquence de 10,525 GHz. Un disque céramique, quelques Hz ou kHz, en laissant la tâche ardue du traitement matériel
généralement en titanate de baryum (Ba2Ti9O20) sert de chambre de du signal µ-ondes au module HB100. Il reste cependant un problème :
résonance pour l’énergie RF. La fréquence de résonance dépend de le signal de sortie du capteur a une faible amplitude. Nous verrons
plus loin comment le traiter.

Pour une utilisation pratique, le module doit être monté avec les
antennes (v. figure 3) dirigées vers la zone à couvrir par la sortie
GH1420 rayonnée, en les orientant de manière à obtenir la meilleure couver-
+5V ture. Les diagrammes de rayonnement des antennes, en azimut et en
OSC GND
Tx Rx élévation sont donnés (v. figure 5).
ANT ANT
MIX
Signal de sortie
La broche IF représente le signal de sortie du module, correspondant
Tx Rx au décalage de fréquence déterminé par la vitesse et la direction de
ANT ANT
IF GND tout objet éclairé par l’antenne. L’amplitude du signal de décalage de
Figure 4. Schéma- fréquence Doppler, est proportionnelle à l’énergie reçue et réfléchie en
Bottom View
bloc du capteur.
230205-004 partie par l’objet. Elle vaut quelques µvolts (μV). Pour cette raison un
(Source : [5]) amplificateur BF à gain élevé est normalement connecté à la broche

92 juillet/août 2023 www.elektormagazine.fr


Figure 5. Diagrammes
de rayonnement de
l’antenne. (Source : [1])

FI afin d’amplifier le signal de sortie. Par ailleurs, la fréquence du quelques µV d’amplitude apparaît sur cette sortie. Dans les applications
décalage Doppler est proportionnelle à la vitesse du mouvement. pratiques, il est obligatoire de l’amplifier suffisamment, de préférence en
Rappelons l’ordre de grandeur : une marche humaine type (5 à 6 km/h insérant un filtre passe-bas éliminant toutes les fréquences parasites
en direction du capteur) produit un décalage de fréquence de l’ordre au-delà de quelques centaines de Hertz. La fiche technique [1] et la note
de 30 Hz. La tension BF sur la broche de sortie IF est proportionnelle d’application [2] du capteur sont très utiles à cet égard. Cette dernière,
à l’intensité du signal reçu (RSS). Les équations données ci-dessus présente deux schémas possibles de circuit de conditionnement du
permettent de calculer la fréquence Doppler. Si le sujet éclairé par signal. Le 1er (v. figure 6), s’applique au mode d’émission en continu
le capteur approche ou recule le long de la ligne radiale, la formule (CW) et est basé sur l’AOP à gain élevé LM324 de Texas Instruments.
précédente est simplifiée et prend la forme suivante, où vr est la vitesse
radiale, exprimée en km/h : Le 2è circuit, (v. figure 7), s’applique au mode Impulsion, dans lequel
l’émetteur émet des impulsions successives selon une fréquence de
(Équation 4) répétition donnée et avec un rapport cyclique donné (en anglais PRF,

Les caractéristiques techniques du module principale sont :

> tension de fonctionnement :


5 V ± 0,25 V ; +5V2
> courant type absorbé en mode
transmission continue : 60 mA
maximum, 37 mA ;
R6

> taille : 61,2 x 61,2 mm ;


100k

> portée de détection : entre 2 m et


16 m ; C9
R7
C8
> fréquence d’émission : 10,525 GHz ;
100k

> précision de fréquence : 3 MHz ; Motion


100n 100µ
R5
> puissance de sortie min. : Sensor
330k

13 dBm EIRP ; C6
5 Preamp
> niveau des harmoniques : IC2
3
1
C2 R2 IC1B
7
6
< -10 dBm ; 4µ7
2
IC1A 8k2

> courant moyen type : 2 mA ; 4µ7


R1
> largeur minimale de l’impulsion R3 1M

d’émission : 5 µs ;
1M
C1
+5V2
> cycle de fonctionnement minimal : C3 2n2

1%
R10 R4 2n2
12k

10k

16
IC1 = LM324
Circuit de traitement du C4 IC1
signal 8
GND
La sortie du capteur HB100 (broche IF),
4µ7

est un signal BF reflétant le décalage 230205-006

Doppler de fréquence du signal reçu. La


difficulté est qu’un signal non amplifié de Figure 6. Circuit de conditionnement pour le mode CW. (Source : [5])

lektor juillet/août 2023 93


+5V2

T2 R6

100k
BC548

R9 R7
C9 C8

100k
51k
100n 100µ
Motion R5
Sensor T1

330k
R11 5
C6 R8 Preamp
3 7
IC2 12k C2 IC1B
5k1

R2
1 6
BC547 4µ7 IC1A 8k2
2
4µ7
R1
R3 1M
1M
C1
+5V2
C3 2n2
+5V2
R10 R4 2n2
C7 C5
0V
12k

10k
16
Pulse Generator IC1 = LM324
100n 100n
C4 IC1
8
GND
4µ7

230205-007

Figure 7. Circuit de conditionnement pour le mode pulsé. (Source : [5])

abréviation de Pulse Repetition Frequency). À ce sujet, le fabricant en déduire la vitesse à laquelle la « cible » potentielle se déplace. Le
du HB100 suggère d’utiliser une PRF de 2 kHz et un rapport cycli- croquis en question utilise une bibliothèque spécifique développée
que de 4 %. pour la mesure précise des fréquences. En effet, pour mesurer une
fréquence en bande audio ou inférieure, il faut déterminer la période
Outre l’AOP à gain élevé LM324, ce circuit utilise deux transistors. du signal d’entrée avec une grande précision. Pour ce faire, la biblio-
Comme on le voit en bas à gauche (figure 7), le mode impulsion peut thèque utilise un module Counter and Capture (Compteur et capture)
être produit en agissant directement sur l’alimentation du module, de très précis, fourni par l’architecture matérielle du µcontrôleur ATmega.
manière à respecter la PRF et le rapport cyclique suggérés ci-des- La bibliothèque renvoie la période mesurée sous forme de nombre
sus par le fabricant. C.-à-d. que dans ces conditions, le transistor de entier avec 1/16 µs de résolution. Déduire la fréquence, se résume à
commutation ajouté en série est passant toutes les 0,5 ms (2 kHz) et diviser la fréquence de l’horloge par la valeur renvoyée par la biblio-
le reste seulement 4 % de ce temps soit 0,02 ms. thèque. Dans notre cas, nous fixons la fréquence d’horloge à 16 000 400
pour compenser les possibles imprécisions de la carte Arduino.
Toutefois, pour simplifier l’utilisation du capteur, un AOP à usage
général, a été choisi. Il est livré monté sur un circuit imprimé avec un
connecteur et un potentiomètre de réglage du gain. Le module, très
bon marché et facilement disponible, est basé sur le LM358, (figure 8).
Le LM358 fournit une amplification monovoie avec un gain variable
entre 1× et 100×, réglable à l’aide du potentiomètre : tourner la vis dans
le sens horaire diminue le gain ; tourner la vis dans le sens antihoraire
augmente le gain. En outre, le module est équipé d’un témoin LED de
présence de l’alimentation du module. L’AOP LM358 peut traiter des
signaux jusque 700 kHz (donc bien au-dessus de la bande qui nous
intéresse) et peut être alimenté avec une tension comprise entre 3 V
et 32 V. Le module comporte 4 broches d’interface : VCC , GND, Signal
In et Signal Out (figure 8).

Essais avec Arduino


Pour l’essai du capteur Doppler HB100, une classique carte Arduino
UNO et le module amplificateur LM358 (ou bien, tout autre amplificateur
à grand gain et faible bruit, à voie et alimentation uniques) conviennent.
En exécutant un croquis spécifique, une carte Arduino UNO peut
détecter la fréquence du signal fourni par le module, et le cas échéant Figure 8. Le module d’amplification LM358.

94 juillet/août 2023 www.elektormagazine.fr


Figure 9. Installation de la bibliothèque FreqPeriod. Figure 10. Mouvements rapides de la main devant l’antenne du capteur.

Cette bibliothèque n’est pas incluse dans la bibliothèque officielle


Arduino, mais elle s’installe facilement dans l’EDI une fois le fichier
Listage 1. Croquis Arduino.
.zip disponible à l’adresse [3] téléchargé. À cet effet, ouvrez l’EDI
Arduino, sélectionnez l’élément de menu Sketch Include Library Add #include <FreqPeriod.h>
.ZIP Library..., (v. figure 9). Puis sélectionnez le fichier .zip de la biblio- double lfrq;
thèque téléchargée ci-avant. Fermez et redémarrez l’EDI : la nouvelle long int pp;
bibliothèque y est alors disponible.
void setup() {
Le croquis est présenté ici (listage 1). Il est très compact et relativement
simple. La fonction setup(), initialise la ligne série (à 9600 bps) et la Serial.begin(9600);
bibliothèque FreqPeriod par la méthode begin(). La boucle loop(), FreqPeriod::begin();
acquiert en 1er la période du signal d’entrée en appelant la méthode Serial.println("FreqPeriod Library Test");
getPeriod(). Elle calcule et affiche ensuite les valeurs correspon-
dantes de la fréquence (en Hertz) et de la vitesse radiale (en km/h). }

Pour vérifier le fonctionnement du croquis, il faut connecter le capteur void loop() {


HB100 et le module amplificateur LM358 à la carte Arduino. Les
connexions sont visibles sur l’illustration de tête de cet article. pp = FreqPeriod::getPeriod();

Mettons ensuite le circuit sous tension et activons le moniteur série if (pp) {


de l’EDI Arduino et observons les résultats. En déplaçant par ex. la Serial.print ("period: ");
main (v. figure 10) devant l’antenne du capteur HB100 (dont on se Serial.print(pp);
souvient qu’elle est située à l’arrière de la carte imprimée, côté opposé Serial.print(" 1/16us / frequency: ");
au conteneur métallique), nous devrions voir une variation de la vitesse lfrq = 16000400.0 /pp;
calculée par le croquis. Serial.print(lfrq);
Serial.print(" Hz ");
La sortie envoyée via l’interface série est illustrée (v. figure 11). Serial.print(lfrq/19.49);
Serial.println( " km/h ");
Le calcul de cette vitesse, permet de concevoir des algorithmes }
complexes pour des applications relatives au fonctionnement des
portes (battantes ou coulissantes), à l’allumage automatique de l’éclai- }
rage des escaliers, à l’ouverture des portes piétonnes, à la détection

lektor juillet/août 2023 95


Figure 11. Sortie sur le moniteur série.

d’intrusion, à la vidéo-surveillance, etc. Le module fournit une assez À propos de l’auteur


bonne sensibilité s’il fonctionne dans sa limite de portée, soit environ Fort de son diplôme d’ingénierie électronique obtenu au Politecnico
20 mètres. On peut améliorer les performances en utilisant un circuit di Milano, Stefano entama une carrière de développeur de microlo-
amplificateur de gain plus élevé que celui offert par le LM358 (100×). giciels et de logiciels. Au fil des ans, il vécut de l’intérieur la trans-
formation progressive du monde embarqué, depuis les premiers
Conclusion µprocesseurs 8 bits - programmables uniquement en assembleur -
Cet article avait pour objet de présenter un capteur très intéressant jusqu’aux plus récents Soc, FPGA, DSP et logiques programmables
et peu connu, le capteur Doppler de mouvement HB100. Particuliè- aux performances et caractéristiques exceptionnelles. Il s’intéresse
rement bon marché et facilement interfacé avec un µcontrôleur, le à tout ce qui touche technologie et électronique et consacre ses
HB100 permet d’apprendre et d’expérimenter les techniques et concepts loisirs en partie à l’étude de nouveaux composants et à la réalisa-
principaux de détection de signaux sur lesquels reposent les radars tion de petits projets.
commerciaux sophistiqués et coûteux. Les applications de ce capteur
ne manquent pas : il ne fait aucun doute que de nombreux électroni-
ciens réfléchissent déjà à d’autres développements futurs.
VF : Yves Georges — 230205-04 Produits
> YDLIDAR X2 Lidar - Télémètre laser 360 degrés (8 m)
https://elektor.fr/18941
Des questions, des commentaires ?
Si vous avez des questions techniques, n’hésitez pas à envoyer > Arduino Uno Rev3
un courriel à l’équipe éditoriale d’Elektor ([email protected]). https://elektor.fr/15877

> Arduino Uno Mini (édition limitée​)


https://elektor.fr/20098

LIENS
[1] Fiche technique du module HB100 : https://limpkin.fr/public/HB100/HB100_Microwave_Sensor_Module_Datasheet.pdf
[2] Note d’application HB100 : https://limpkin.fr/public/HB100/HB100_Microwave_Sensor_Application_Note.pdf
[3] B
 ibliothèque de mesures de fréquence :
https://github.com/Jorge-Mendes/Agro-Shield/tree/master/OtherRequiredLibraries/FreqPeriod
[4] Logiciel sur la page web de ce projet : https://elektormagazine.fr/230205-04
[5] Schémas des circuits : https://mantech.co.za/Datasheets/Products/MSAN-001_AGILSENSE.pdf
[6] Source de la photo de la vue de dessus : https://mantech.co.za/Datasheets/Products/HB100_RADAR.pdf
[7] Source de la photo de vue de dessous :
https://kuongshun-ks.com/uno/uno-sensor/hb100-microwave-doppler-radar-wireless-module-moti.html

96 juillet/août 2023 www.elektormagazine.fr


LOGICIEL

guide de programmation

bare-metal (1) pour STM32 et autres microcontrôleurs

Sergey Lyubka (Irlande)

Vous souhaitez programmer des Un microcontrôleur (μC, ou MCU) est un micro-ordinateur. Il est
microcontrôleurs et interagir avec généralement doté d’un processeur, d’une mémoire vive, d’une
mémoire flash pour stocker le code et d’un ensemble de broches.
leurs niveaux matériels pour mieux Certaines broches sont utilisées pour l’alimentation du microcontrô-
comprendre leur fonctionnement ? leur, généralement désignées par GND (masse) et VCC. D’autres
Ce guide destiné aux développeurs broches sont utilisées pour communiquer avec le microcontrôleur
en appliquant une tension de niveau haut ou bas à ces broches.
vous aidera à démarrer en utilisant L’un des exemples de communication les plus simples est de relier
simplement le compilateur GCC et une LED à une broche : l’une des bornes de la LED est reliée à la
un manuel de référence. Les notions masse (GND) et l’autre est reliée à une broche de signal avec une
résistance de limitation de courant en série. Le micrologiciel peut
apprises ici vous aideront à mieux appliquer une tension de haut ou bas niveau sur une broche de
comprendre le fonctionnement des signal, ce qui fait clignoter la LED (figure 1).
cadres tels que Cube, Keil et Arduino.
Dans ce guide en deux parties, nous
utiliserons le contrôleur STM32F429
de la carte Nucleo-F429ZI, mais,
Matériel et outils nécessaires
vous pouvez facilement appliquer Tout au long de ce guide, nous utiliserons une carte de développe-
les connaissances acquises à d’autres ment Nucleo-F429ZI (disponible chez Mouser et d’autres distribu-
microcontrôleurs. teurs). Pour suivre ce tutoriel, téléchargez le manuel de référence
du MCU STM32F429 [1] puis le manuel d’utilisation de la carte de
développement [2].
Pour démarrer, les outils suivants sont nécessaires :
ARM GCC, https://launchpad.net/gcc-arm-embedded - pour la
compilation et l’édition des liens
GNU make, https://gnu.org/software/make - pour la construction
automatisée
VCC
ST link, https://github.com/stlink-org/stlink - pour le flashage
GND

Nous présentons ici les instructions d’installation pour Linux


(Ubuntu).
Lancez un terminal, puis exécutez :
$ sudo apt -y update
$ sudo apt -y install gcc-arm-none-eabi make
stlink-tools
Figure 1. Le code du micrologiciel peut appliquer une tension de niveau haut
ou bas sur une broche de signal, ce qui fait clignoter une LED. Pour configurer les outils sur un Mac ou un PC Windows, voir [3].

lektor juillet/août 2023 97


2MB Flash 192KB RAM
0 0xffffffff...
Figure 2. Emplacements des zones de la
0x08000000 0x20000000 mémoire flash et de la mémoire vive du
STM32F429.

Mémoire et registres à une certaine adresse, qui correspond à une certaine fonction du
L’espace d’adressage d’un microcontrôleur à 32 bits, par exemple le périphérique en question. En écrivant des valeurs dans un registre –
STM32F429 de STMicroelectronics, est divisé en zones. Par exemple, en d’autres termes, en écrivant une valeur de 32 bits à une certaine
une zone mémoire (à une adresse spécifique) est attribuée à la adresse mémoire – nous pouvons contrôler le comportement d’un
mémoire flash interne du microcontrôleur. Les instructions du périphérique donné. En consultant ces registres, nous pouvons
micrologiciel sont lues et exécutées en lisant dans cette zone de relire leurs contenus ou leurs configurations.
mémoire. Une autre zone est la RAM, qui est également attribuée Il existe de nombreux périphériques différents. Parmi les plus
à une adresse spécifique. Nous pouvons lire et écrire n’importe simples, on trouve les ports GPIO (General Purpose Input Output),
quelle valeur dans la région RAM. qui permettent à l’utilisateur de configurer les broches du micro-
La section 2.3.1 du manuel de référence du STM32F429 [1] explique contrôleur en mode « sortie » et de leur appliquer un niveau haut
que la zone RAM commence à l’adresse 0x20000000 et a une ou bas. Il est également possible de les configurer en mode « entrée
taille de 192 KB. La section 2.4 nous indique que la mémoire flash » et de lire leurs tensions. Il existe un périphérique UART qui peut
commence à l’adresse 0x08000000. Notre microcontrôleur dispose transmettre et recevoir des données série sur deux broches grâce
de 2 Mo de mémoire flash, donc les zones flash et RAM sont répar- à un protocole série. Il existe de nombreux autres périphériques.
ties comme montré dans la figure 2. Un périphérique existe souvent sous plusieurs « versions », par
Le manuel nous indique également qu’il existe de nombreuses exemple GPIOA, GPIOB, etc., qui contrôlent différents ensembles
autres zones mémoires. Leurs plages d’adresses sont indiquées dans de broches du microcontrôleur. De même, on trouve UART1, UART2,
la section 2.3 « Memory map ». Par exemple, il existe une zone « etc., qui permettent l’implémentation de plusieurs canaux UART.
GPIOA » qui commence à 0x40020000 et qui a une taille de 1 Ko. Sur le STM32F429, il y a plusieurs périphériques GPIO et UART.
Ces zones mémoires correspondent à différents périphériques dans Par exemple, le périphérique GPIOA commence à l’adresse
le microcontrôleur – un circuit en silicium qui permet à certaines 0x40020000. Les registres GPIO sont décrits dans la section 8.4 [1].
broches de se comporter d’une manière particulière. Une zone Le manuel de référence indique que le registre GPIOA_MODER a un
mémoire périphérique est un ensemble de registres de 32 bits. offset de 0, ce qui signifie que son adresse est 0x40020000 + 0. Le
Chaque registre représente une plage de mémoire de 4 octets située format du registre est illustré dans la figure 3.

Figure 3. La description des registres GPIO est disponible dans le manuel de référence. Un registre MODER contrôle 16 broches physiques. (Source : [1])

98 juillet/août 2023 www.elektormagazine.fr


000011000000

Le manuel indique que le registre MODER de 32 bits est une série tous les autres bits (combinés par ET avec 1). Il est important de
de valeurs de 2 bits, 16 au total. Par conséquent, un registre MODER conserver la valeur existante, car nous ne voulons pas modifier les
contrôle 16 broches matérielles, les bits 0...1 contrôlent la broche 0, paramètres dans d’autres plages de bits. En général, si nous voulons
les bits 2...3 contrôlent la broche 1, et ainsi de suite. La valeur de effacer N bits à la position X, nous pouvons écrire ce qui suit :
2 bits permet de coder le mode de fonctionnement de la broche : 0
signifie entrée, 1 signifie sortie, 2 signifie « fonction alternative » (un REGISTER &= ~((2^N - 1) << X);
comportement spécifique décrit ailleurs), et 3 signifie analogique.
Le nom du périphérique étant GPIOA, les broches sont nommées Enfin, nous voulons attribuer une valeur spécifique à une plage
« A0 », « A1 », etc. Pour le périphérique GPIOB, le nom des broches de bits donnée. Nous décalons cette valeur de X positions vers la
serait « B0 », « B1 »... gauche, et nous la combinons par OU logique avec la valeur actuelle
Si nous écrivons la valeur 0 dans le registre MODER de 32 bits, nous du registre (afin de conserver les valeurs des autres bits) :
mettrons les 16 broches, de A0 à A15, en mode entrée :
REGISTER |= VALUE << X;
* (volatile uint32_t *) (0x40020000 + 0) = 0;
// Set A0...A15 to input mode Programmation de périphériques aisée
Dans le paragraphe précédent, nous avons appris qu’il est possible
Nous aborderons la signification du qualificateur volatile ultérieu- d’écrire et lire un registre périphérique en accédant directement à
rement. En définissant des bits spécifiques, nous pouvons configu- certaines adresses de la mémoire. Examinons l’extrait qui permet
rer des broches spécifiques dans le mode souhaité. Par exemple, de configurer la broche A3 en sortie :
cet extrait configure la broche A3 en sortie :
* (volatile uint32_t *) (0x40020000 + 0) &= ~(3 << 6);
* (volatile uint32_t *) (0x40020000 + 0) &= ~(3 << 6); // Clear bit range 6...7
// Clear bit range 6...7 * (volatile uint32_t *) (0x40020000 + 0) |= 1 << 6;
* (volatile uint32_t *) (0x40020000 + 0) |= 1 << 6; // Set bit range 6...7 to 1
// Set bit range 6...7 to 1
Sans commentaires détaillés, un tel code serait assez difficile à
Expliquons ces opérations. Notre objectif est de mettre les bits 6...7, comprendre. Nous pouvons réécrire ce code et le rendre beaucoup
qui sont responsables de la broche 3 du périphérique GPIOA, à une plus lisible. L’idée est de représenter le périphérique sous la forme
valeur spécifique (1, dans notre cas). Cela se fait en deux étapes. Tout d’une structure contenant des champs de 32 bits. Les registres dispo-
d’abord, nous devons effacer le contenu actuel des bits 6...7, car ils nibles pour le périphérique GPIO sont décrits dans la section 8.4
peuvent déjà contenir une certaine valeur. Ensuite, nous devons du manuel de référence. Il s’agit de MODER, OTYPER, OSPEEDR,
définir les bits appropriés pour obtenir la valeur que nous voulons. PUPDR, IDR, ODR, BSRR, LCKR, AFR. Leurs décalages (offsets) sont
Nous devons donc commencer par mettre à 0 la plage de bits 6...7 0, 4, 8, etc. Cela signifie que nous pouvons les représenter sous
(deux bits en position 6). Comment mettre à 0 un certain nombre la forme d’une structure avec des champs de 32 bits, et créer un
de bits ? Les quatre étapes sont décrites dans le tableau 1. #define pour GPIOA :
Notez que la dernière opération fait passer N bits à la position X à
0 (combinés par ET logique avec 0), mais conserve les valeurs de struct gpio {
volatile uint32_t MODER, OTYPER, OSPEEDR,
PUPDR, IDR, ODR, BSRR, LCKR, AFR[2];
};
Tableau 1. Mise à zéro de certains bits. #define GPIOA ((struct gpio *) 0x40020000)

Bits (12 premiers Ensuite, pour définir le mode de la broche GPIO, nous pouvons
Action Expression
bits sur 32) définir une fonction :
Choisir un nombre avec 3 000000000011
N ensembles de bits // Enum values are per reference manual: 0, 1, 2, 3
contigus : 2^N-1, ici N = 2 enum {GPIO_MODE_INPUT, GPIO_MODE_OUTPUT,
Décaler ce nombre de X (3<<6) 000011000000 GPIO_MODE_AF, GPIO_MODE_ANALOG};
positions vers la gauche
static inline void gpio_set_mode
Inverser le nombre : ~(3<<6) 111100111111
(struct gpio *gpio, uint8_t pin, uint8_t mode) {
transformer les zéros en
gpio->MODER &= ~(3U << (pin * 2));
uns et les uns en zéros
// Clear existing setting
ET logique avec la valeur VAL &= xxxx00xxxxxx
gpio->MODER |= (mode & 3) << (pin * 2);
existante ~(3<<6)
// Set new mode
}

lektor juillet/août 2023 99


Nous pouvons réécrire le code pour A3 comme suit : est un élément commun à tous les microcontrôleurs ARM : Il s’agit
d’un tableau d’adresses 32 bits de gestionnaires d’interruptions.
gpio_set_mode(GPIOA, 3 /* pin */, GPIO_MODE_OUTPUT); Les 16 premières entrées sont réservées par ARM et sont communes
// Set A3 to output à tous les microcontrôleurs ARM. Le reste des gestionnaires d’inter-
ruptions est spécifique au microcontrôleur en question – il s’agit de
Le microcontrôleur possède plusieurs périphériques GPIO (aussi gestionnaires d’interruptions pour les périphériques. Les micro-
appelés banques) : A, B, C, ... K. D’après la section 2.3, ils sont espacés contrôleurs plus simples avec peu de périphériques ont peu de
de 1 Ko : GPIOA est à l’adresse 0x40020000, GPIOB à 0x40020400, gestionnaires d’interruption, et ceux qui sont plus complexes en
et ainsi de suite : ont plusieurs.
La table vectorielle du STM32F429 est documentée dans le
#define GPIO(bank) ((struct gpio *) tableau 62 du manuel de référence [1]. On y apprend qu’il existe
(0x40020000 + 0x400 * (bank))) 91 gestionnaires de périphériques, en plus des 16 standards.
Chaque entrée de la table vectorielle est une adresse d’une fonction
Nous pouvons définir une numérotation qui inclut la banque et le que le microcontrôleur exécute lorsqu’une interruption matérielle
numéro de la broche. Pour cela, nous utilisons une valeur uint16_t (IRQ) est déclenchée. Les deux premières entrées, qui jouent un
de 2 octets, où l’octet de poids fort désigne la banque GPIO, et l’octet rôle clé dans le processus de démarrage du microcontrôleur, font
de poids faible désigne le numéro de la broche : exception. Ces deux premières valeurs sont un pointeur de pile
initial et l’adresse de la fonction de démarrage (un point d’entrée
#define PIN(bank, num) ((((bank) - ’A’) << 8) | (num)) du micrologiciel à exécuter).
#define PINNO(pin) (pin & 255) Dans le code, nous devons donc veiller à ce que la deuxième valeur de
#define PINBANK(pin) (pin >> 8) 32 bits dans la mémoire flash contienne l’adresse de notre fonction
de démarrage. Au démarrage, le microcontrôleur lira cette adresse
Ainsi, nous pouvons spécifier des broches pour n’importe quelle dans la mémoire flash et passera à la fonction de démarrage.
banque GPIO :
Micrologiciel minimal
uint16_t pin1 = PIN(’A’, 3); // A3 - GPIOA pin 3 Créons un fichier, main.c, et spécifions notre fonction de démarrage,
uint16_t pin2 = PIN(’G’, 11); // G11 - GPIOG pin 11 qui ne fait rien au départ (commence par une boucle infinie), et
spécifions également une table vectorielle qui contient 16 entrées
Réécrivons la fonction gpio_set_mode() pour qu’elle reçoive la standard et 91 entrées STM32. Dans l’éditeur de votre choix, créez
configuration de la broche : et ouvrez le fichier main.c et entrez ce qui suit :

static inline void gpio_set_mode(uint16_t pin, uint8_t // Startup code


mode) { __attribute__((naked, noreturn)) void _reset(void) {
struct gpio *gpio = GPIO(PINBANK(pin)); for (;;) (void) 0; // Infinite loop
// GPIO bank }
uint8_t n = PINNO(pin); // Pin number
gpio->MODER &= ~(3U << (n * 2)); extern void _estack(void); // Defined in link.ld
// Clear existing setting
gpio->MODER |= (mode & 3) << (n * 2); // 16 standard and 91 STM32-specific handlers
// Set new mode __attribute__((section(".vectors")))
} void (*tab[16 + 91])(void) = {_estack, _reset};

Le code pour A3 est simple : Pour la fonction _reset(), nous avons utilisé les attributs naked
et noreturn spécifiques au compilateur GCC – ils signifient que
uint16_t pin = PIN(’A’, 3); // Pin A3 le prologue et l’épilogue de la fonction standard ne doivent pas
gpio_set_mode(pin, GPIO_MODE_OUTPUT); // Set to output être créés par le compilateur et que la fonction ne retourne rien.
L’expression void (*tab[16 + 91])(void) signifie : définir un
Notez que nous avons créé une API initiale utile pour le périphé- tableau de 16 + 91 pointeurs vers des fonctions qui ne renvoient rien
rique GPIO. D’autres périphériques, tels que UART (communica- (void), et reçoivent deux arguments. Chacune de ces fonctions
tion série) et autres, peuvent être configurés de la même manière. est un IRQ handler (Interrupt ReQuest handler). Un tableau de ces
Il s’agit d’une bonne pratique de programmation qui rend le code gestionnaires est appelé une table vectorielle.
clair et lisible par l’utilisateur. La table vectorielle tab est placée dans une section séparée appelée
.vectors – nous en aurons besoin plus tard pour indiquer à l’éditeur
Démarrage du microcontrôleur et table vectorielle de liens de placer cette section au début du micrologiciel généré,
Lorsqu’un microcontrôleur ARM démarre, il lit une « table vecto- consécutivement, au début de la mémoire flash. Les deux premières
rielle » située au début de la mémoire flash. Une table vectorielle entrées sont la valeur du registre du pointeur de pile et le point

100 juillet/août 2023 www.elektormagazine.fr


000011000000

d’entrée du micrologiciel. Nous laissons le reste du tableau vecto- Script Linker


riel rempli de zéros. Créez un fichier appelé link.ld, et copiez-collez le contenu de [4].
L’explication est donnée ci-dessous :
Compilation
Compilons notre code. Démarrez un terminal (ou l’invite de ENTRY(_reset);
commande sous Windows) et exécutez :
Cette ligne indique à l’éditeur de liens la valeur de l’attribut «
$ arm-none-eabi-gcc -mcpu=cortex-m4 main.c -c entry point » dans l’en-tête ELF généré – il s’agit donc d’une copie
de ce que contient une table vectorielle. Il s’agit d’une aide pour
Cela fonctionne ! La compilation a produit un fichier, main.o, débogueur (tel qu’Ozone, décrite dans la deuxième partie de ce
qui contient notre micrologiciel minimal qui ne fait rien. guide) qui nous permet de placer un point d’arrêt au début du micro-
Le fichier main.o est au format binaire ELF, qui contient plusieurs programme. Un débogueur ne connaît pas la table vectorielle, il
sections (voir listage 1). se fie donc à l’en-tête ELF.
Notez que les adresses VMA/LMA des sections sont fixées à 0, ce
qui signifie que le fichier main.o est incomplet, car il ne contient MEMORY {
pas d’informations sur l’emplacement de ces sections dans l’espace flash(rx) : ORIGIN = 0x08000000, LENGTH = 2048k
d’adressage. Nous devons utiliser un éditeur de liens pour produire sram(rwx) : ORIGIN = 0x20000000, LENGTH = 192k /*
le fichier du micrologiciel complet, firmware.elf, à partir de main.o. remaining 64k in a separate address space */
La section .text contient le code du micrologiciel, qui dans notre }
cas consiste simplement en une fonction _reset(), de deux octets –
une instruction de saut à sa propre adresse. Il y a deux sections Cela indique à l’éditeur de liens que nous avons deux zones
.data et .bss vides [8] (pour les variables non initialisées, mais mémoires dans l’espace d’adressage, ainsi que leurs adresses et
déclarées, cette section est généralement remplie avec des 0). leurs tailles.
Notre micrologiciel sera copié dans la mémoire flash à la position
0x8000000, mais notre section de données doit être dans la RAM – _estack = ORIGIN(sram) + LENGTH(sram); /* stack points
par conséquent, notre fonction _reset() doit copier le contenu de to end of SRAM */
la section .data vers la RAM. Elle doit également écrire des zéros
dans toute la section .bss. Dans notre cas, les sections .data et Cela indique à l’éditeur de liens de créer un symbole, _estack,
.bss sont vides, mais modifions tout de même la fonction _reset() contenant une valeur à la fin de la zone RAM. Ce sera la valeur
pour les gérer correctement. initiale de notre pile !
Pour ce faire, nous devons savoir où commence la pile et où
commencent les sections data et bss. Nous pouvons le spécifier .vectors : { KEEP(*(.vectors)) } > flash
dans le script linker, qui est un fichier contenant les instructions .text : { *(.text*) } > flash
de l’éditeur de liens concernant l’emplacement des différentes .rodata : { *(.rodata*) } > flash
sections dans l’espace d’adressage et sur les symboles à créer.

Listage 1. Compilation du fichier main.o


$ arm-none-eabi-objdump -h main.o
...
Idx Name Size VMA LMA File off Algn
0 .text 00000002 00000000 00000000 00000034 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00000000 00000000 00000036 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000036 2**0
ALLOC
3 .vectors 000001ac 00000000 00000000 00000038 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA
...

lektor juillet/août 2023 101


Listage 2. Code de démarrage.
int main(void) {
return 0; // Do nothing so far
}

// Startup code
__attribute__((naked, noreturn)) void _reset(void) {
// memset .bss to zero, and copy .data section to RAM region
extern long _sbss, _ebss, _sdata, _edata, _sidata;
for (long *src = &_sbss; src < &_ebss; src++) *src = 0;
for (long *src = &_sdata, *dst = &_sidata; src < &_edata;) *src++ = *dst++;

main(); // Call main()


for (;;) (void) 0; // Infinite loop in the case if main() returns
}

Ces lignes indiquent à l’éditeur de liens de placer la table vecto- dans une boucle infinie lorsque main() s’arrête (voir listage 2).
rielle dans la mémoire flash en premier, suivie de la section .text Le diagramme de la figure 4 illustre comment _reset() initia-
(code du micrologiciel), puis des données en lecture seule .rodata. lise .data et .bss.
Vient ensuite la section .data : Le fichier firmware.bin n’est qu’une concaténation des trois
sections : .vectors (table vectorielles IRQ), .text (code) et .data
.data : { (données). Ces sections ont été créées conformément au script de
_sdata = .; /* .data section start */ l’éditeur de liens : .vectors se situe au début de la mémoire flash
*(.first_data) suivi par .text et .data se situe bien au-dessus. Les adresses dans
*(.data SORT(.data.*)) .text se trouvent dans la mémoire flash, et les adresses dans .data
_edata = .; /* .data section end */ se trouvent dans la mémoire vive. Si une fonction a une adresse,
} > sram AT > flash par exemple 0x8000100, elle se trouve exactement à cette adresse
_sidata = LOADADDR(.data); dans la mémoire flash. Mais si le code accède à une variable de la
section .data par son adresse, par exemple 0x20000200, il n’y a
Notez que nous demandons à l’éditeur de liens de créer les symboles rien à cette adresse, car, au démarrage, la section .data du fichier
_sdata et _edata. Nous les utiliserons pour copier la section de firmware.bin réside dans la mémoire flash ! C’est pourquoi le code
données en RAM dans la fonction _reset(). de démarrage doit déplacer la section .data de la mémoire flash
Idem pour la section .bss : vers la RAM.
Nous sommes maintenant prêts à produire le fichier du microlo-
.bss : { giciel complet, firmware.elf :
_sbss = .; /* .bss section start */
*(.bss SORT(.bss.*) COMMON) $ arm-none-eabi-gcc -T link.ld -nostdlib main.o -o
_ebss = .; /* .bss section end */ firmware.elf
} > sram
Examinons les sections du fichier firmware.elf – voir listage 3.
Code de démarrage La section .vectors se trouve au tout début de la mémoire flash,
Nous pouvons maintenant mettre à jour la fonction _reset(). Nous à l’adresse 0x8000000, suivie par la section .text à l’adresse
copions la section .data dans la RAM, et initialisons la section .bss 0x80001ac. Notre code ne crée pas de variables, il n’y a donc pas
avec des zéros. Ensuite, nous appelons la fonction main() - et entrons de section de données.

0x08000000 0x02000000

FLASH RAM
firmware.bin
.vectors .text .data .data .bss

_reset() copies .data section from FLASH to RAM...

Figure 4. Le diagramme montre comment _reset() initialise .data et .bss.

102 juillet/août 2023 www.elektormagazine.fr


Listage 3. Extrait du fichier firmware.elf 000011000000

$ arm-none-eabi-objdump -h firmware.elf
...
Idx Name Size VMA LMA File off Algn
0 .vectors 000001ac 08000000 08000000 00010000 2**2
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000058 080001ac 080001ac 000101ac 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
...

Flasher le micrologiciel De plus, toute action peut avoir une liste de dépendances. Par
Nous pouvons maintenant flasher le micrologiciel ! Tout d’abord, exemple, firmware.elf dépend de notre fichier source, main.c. Chaque
extrayez les sections du fichier firmware.elf en un seul bloc binaire fois que le fichier main.c est modifié, la commande make build
contigu : recrée firmware.elf :

$ arm-none-eabi-objcopy -O binary firmware.elf firmware.bin build: firmware.elf


firmware.elf: main.c
Utilisons ensuite l’utilitaire st-link pour flasher le firmware.bin. COMPILATION COMMAND
Branchez votre carte sur le port USB et exécutez :
Nous pouvons maintenant créer un Makefile pour notre microlo-
$ st-flash --reset write firmware.bin 0x8000000 giciel. Nous définissons une action build/target :

C’est fait ! Nous avons flashé un micrologiciel qui ne fait rien. CFLAGS ?= -W -Wall -Wextra -Werror -Wundef -Wshadow
-Wdouble-promotion \ -Wformat-truncation -fno-common
Makefile : automatisation de la construction -Wconversion \ -g3 -Os -ffunction-sections -fdata-
Au lieu de taper ces commandes de compilation, d’édition de liens sections -I. \ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard
et de flashage, nous pouvons utiliser l’outil de ligne de commande -mfpu=fpv4-sp-d16 $(EXTRA_CFLAGS)
make pour automatiser l’ensemble du processus. L’utilitaire make LDFLAGS ?= -Tlink.ld -nostartfiles -nostdlib --specs nano.
utilise un fichier de configuration appelé Makefile, dans lequel il specs -lc -lgcc -Wl,--gc-sections -Wl,[email protected]
lit les instructions d’exécution. Cette automatisation est très utile, SOURCES = main.c
car elle permet également de documenter le processus de création build: firmware.elf
du micrologiciel, les drapeaux de compilation utilisés, etc. firmware.elf: $(SOURCES)
Il existe un excellent tutoriel sur Makefile [5]. Je le recommande à arm-none-eabi-gcc $(SOURCES) $(CFLAGS)
ceux qui veulent s’initier à make. Ci-dessous, j’énumère les concepts $(LDFLAGS) -o $@
les plus essentiels nécessaires à la compréhension de notre Makefile
bare-metal simple. Ceux qui sont déjà familiers avec make peuvent Nous y définissons les drapeaux de compilation. ?= représente
sauter cette section. une valeur par défaut ; nous pouvons les remplacer à partir de la
Le format du fichier Makefile est simple : ligne de commande :

action1: $ make build CFLAGS="-O2 ...."


command ... # Comments can go after hash symbol
command .... # IMPORTANT: command must be preceded with Nous définissons les variables CFLAGS, LDFLAGS, et SOURCES. Puis
the TAB character nous indiquons à make que si une instruction build est reçue, un
action2: fichier firmware.elf doit être créé. Ce dernier dépend du fichier
command ... # Don’t forget about TAB. Spaces won’t work! main.c, et pour le créer, make doit lancer le compilateur arm-none-ea-
bi-gcc avec les drapeaux donnés. La variable spéciale $@ se développe
Nous pouvons utiliser make avec le nom de l’action (également en un nom de cible – dans notre cas, firmware.elf.
appelé target) pour exécuter l’action correspondante : Appelons make :

$ make action1 $ make build arm-none-eabi-gcc main.c -W -Wall -Wextra


-Werror -Wundef -Wshadow -Wdouble-promotion -Wformat-
Il est possible de définir des variables et de les utiliser dans les truncation -fno-common -Wconversion -g3 -Os -ffunction-
commandes. Les actions peuvent également correspondre aux sections -fdata-sections -I. -mcpu=cortex-m4 -mthumb
noms des fichiers qui doivent être créés : -mfloat-abi=hard -mfpu=fpv4-sp-d16 -Tlink.ld -nostartfiles
-nostdlib --specs nano.specs -lc -lgcc -Wl,--gc-sections
firmware.elf: -Wl,-Map=firmware.elf.map -o firmware.elf
COMPILATION COMMAND .....

lektor juillet/août 2023 103


Listage 4. Extrait du fichier main.c du projet Blinky LED.
#include <inttypes.h>
#include <stdbool.h>
#define BIT(x) (1UL << (x))
#define PIN(bank, num) ((((bank) - 'A') << 8) | (num))
#define PINNO(pin) (pin & 255)
#define PINBANK(pin) (pin >> 8)

struct gpio {
volatile uint32_t MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFR[2];
};
#define GPIO(bank) ((struct gpio *) (0x40020000 + 0x400 * (bank)))

// Enum values are per datasheet: 0, 1, 2, 3


enum { GPIO_MODE_INPUT, GPIO_MODE_OUTPUT, GPIO_MODE_AF, GPIO_MODE_ANALOG };

static inline void gpio_set_mode(uint16_t pin, uint8_t mode) {


struct gpio *gpio = GPIO(PINBANK(pin)); // GPIO bank
int n = PINNO(pin); // Pin number
gpio->MODER &= ~(3U << (n * 2)); // Clear existing setting
gpio->MODER |= (mode & 3) << (n * 2); // Set new mode
}

Si nous l’exécutons à nouveau : clean:


rm -rf firmware.*
$ make build
make: Nothing to be done for ’build’. Le code source complet du projet se trouve dans le dossier minimal
de Step 0 [6].
L’utilitaire make examine les temps de modification de la dépen-
dance main.c et firmware.elf – et ne fait rien si firmware.elf est LED clignotante
à jour. Mais si nous modifions main.c, le prochain make build Maintenant que nous avons configuré l’infrastructure build / flash,
recompilera : il est temps que notre firmware apprenne à effectuer une tâche
utile, par exemple faire clignoter une LED. La carte Nucleo-F429ZI
$ touch main.c # Simulate changes in main.c possède trois LED intégrées. Dans la section 6.5 du manuel d’utili-
$ make build sation de la carte Nucleo [2], nous pouvons savoir à quelles broches
sont connectées les LED intégrées :
Il ne reste plus que la cible flash : > PB0 : LED verte
> PB7 : LED bleue
firmware.bin: firmware.elf > PB14 : LED rouge
$(DOCKER) $(CROSS)-objcopy -O binary $< $@ flash:
firmware.bin Modifions le fichier main.c et ajoutons nos définitions pour PIN,
st-flash --reset write $(TARGET).bin 0x8000000 gpio_set_mode(). Dans la fonction main(), nous configurons la LED
bleue en sortie, et nous lançons une boucle infinie. Tout d’abord,
Voilà, c’est fait ! Maintenant, la dernière commande make flash crée copions les définitions des broches et des GPIO dont nous avons
un fichier firmware.bin, et le flashe sur la carte. Elle recompilera parlé précédemment. Notez que nous ajoutons également une
le micrologiciel si le fichier main.c change, parce que firmware.bin macro de commodité, BIT(x) (voir listage 4).
dépend de firmware.elf, et celui-ci, à son tour, dépend de main.c. Lorsque certains microcontrôleurs sont mis sous tension, tous
Donc, le cycle de développement consisterait en ces deux actions leurs périphériques sont alimentés et activés automatiquement.
en boucle : Les périphériques des microcontrôleurs STM32 restent désactivés
par défaut afin d’économiser de l’énergie. L’activation d’un périphé-
# Develop code in main.c rique GPIO doit se faire via l’unité RCC (Reset and Clock Control).
$ make flash Dans la section 7.3.10 du manuel de référence, nous constatons
que le registre AHB1ENR (AHB1 peripheral clock enable register) est
Il est conseillé d’ajouter une cible clean pour supprimer les artefacts responsable de l’activation ou de la désactivation des banques GPIO.
de build : Tout d’abord, nous ajoutons une définition pour toute l’unité RCC :

104 juillet/août 2023 www.elektormagazine.fr


000011000000

struct rcc { while (count--) asm("nop");


volatile uint32_t CR, PLLCFGR, CFGR, CIR, AHB1RSTR, }
AHB2RSTR, AHB3RSTR, RESERVED0, APB1RSTR, APB2RSTR,
RESERVED1[2], AHB1ENR, AHB2ENR, AHB3ENR, RESERVED2, Enfin, nous pouvons modifier notre boucle main pour faire cligno-
APB1ENR, APB2ENR, RESERVED3[2], AHB1LPENR, AHB2LPENR, ter une LED :
AHB3LPENR, RESERVED4, APB1LPENR, APB2LPENR, RESERVED5[2],
BDCR, CSR, RESERVED6[2], SSCGR, PLLI2SCFGR; for (;;) {
}; gpio_write(pin, true);
#define RCC ((struct rcc *) 0x40023800) spin(999999);
gpio_write(pin, false);
Selon la documentation du registre AHB1ENR, les bits 0 à 8 inclus spin(999999);
configurent l’horloge pour les banques GPIO GPIOA-GPIOE : }

int main(void) { Le code source complet du projet est disponible dans le dossier
uint16_t led = PIN(’B’, 7); // Blue LED blinky de l’étape 1 [7]. Lancez make flash et admirez la LED bleue
RCC->AHB1ENR |= BIT(PINBANK(led)); qui clignote !
// Enable GPIO clock for LED Dans la deuxième partie de cet article, nous aborderons la sortie
gpio_set_mode(led, GPIO_MODE_OUTPUT); UART, le débogage, l’implémentation d’un serveur web, les tests
// Set blue LED to output mode automatiques, et bien plus encore. Restez à l’écoute !
for (;;) asm volatile("nop"); // Infinite loop 220665-04
return 0;
} À propos de l’auteur
Sergey Lyubka est ingénieur et entrepreneur. Il est titulaire d’un
Il ne reste plus qu’à découvrir comment activer ou désactiver une Master en physique de l’université d’État de Kiev, en Ukraine.
broche GPIO, puis à modifier la boucle principale pour activer une Sergey est directeur et cofondateur de Cesanta, une entreprise
broche de LED, ajouter un délai, désactiver puis ajouter un délai. technologique basée à Dublin, en Irlande (Embedded Web Server
Selon la section 8.4.7 du manuel de référence, le registre BSRR est for electronic devices : https://mongoose.ws). Il est passionné par
responsable de la mise de la tension au nivau haut ou bas. Les 16 la programmation embarquée « bare-metal » de réseaux.
bits de poids faible sont utilisés pour mettre le registre ODR ( i.e.
mettre la broche à l’état haut), et les 16 bits de poids fort sont utili-
sés pour réinitialiser le registre ODR (i.e. mettre la broche à l’état Des questions, des commentaires ?
bas). Définissons une fonction API pour cet effet : Envoyez un courriel à l’auteur ([email protected])
ou contactez Elektor ([email protected]).
static inline void gpio_write(uint16_t pin, bool val) {
struct gpio *gpio = GPIO(PINBANK(pin));
gpio->BSRR |= (1U << PINNO(pin)) << (val ? 0 : 16);
}
Produit
Ensuite, nous devons implémenter une fonction de délai. Nous > Dogan Ibrahim, Nucleo Boards Programming with the
n’avons pas besoin d’un délai précis pour l’instant, alors définis- STM32CubeIDE, Elektor
sons une fonction, spin(), qui exécute simplement une instruc- https://elektor.fr/19530
tion NOP un certain nombre de fois :
> Dogan Ibrahim, Programming with STM32 Nucleo Boards,
Elektor
static inline void spin(volatile uint32_t count) { https://elektor.fr/18585

LIENS
[1] Manuel de référence RM0090 pour STM32F429 : https://bit.ly/3neE7S7
[2] Manuel d’utilisation de la carte Nucleo-144 (UM1974) : https://bit.ly/3oIBXKZ
[3] Cet article sur GitHub : https://github.com/cpq/bare-metal-programming-guide
[4] Contenu du fichier link.ld : https://github.com/cpq/bare-metal-programming-guide/blob/main/step-0-minimal/link.ld
[5] Tutoriel pour Makefile : https://makefiletutorial.com/
[6] Programme de démonstration minimal (Step 0) : https://github.com/cpq/bare-metal-programming-guide/blob/main/step-0-
minimal
[7] Programme de démonstration blinky (Step 1) : https://github.com/cpq/bare-metal-programming-guide/blob/main/step-1-blinky
[8] .bss [Wikipedia] : https://fr.wikipedia.org/wiki/Segment_BSS

lektor juillet/août 2023 105


REVUE

multimètre
Siglent SDM3045X
Philippe Demerliac (France) gamme donnée. Par exemple, le SDM3045X sur sa
gamme la plus sensible de 600 mV pourra afficher
Il est toujours utile d’avoir un multimètre des variations de 10 µV (0,6 / 60000), sur sa gamme
portatif classique. Un multimètre de 600 V, 10 mV, sa limite maximum étant de 1 000 V
avec dans ce cas une résolution de 100 mV. (La gamme
table, cependant, offre beaucoup plus de ne monte pas à 6 000 V, pour des raisons d’isolation,
fonctionnalités et un confort d’utilisation. pas de résolution).
Le multimètre de table SDM3045X de Sur les modèles offrant de meilleures résolutions, on
pourra avoir plus de chiffres significatifs.
Siglent est l’un de ces appareils. Attention de ne pas confondre résolution et justesse.
Si on lit une mesure de 1,0000 V sur l’écran, est-on sûr
que la tension est de 1 V à 100 µV prés ? Non, car même
correctement étalonné les spécifications indiquent
Je possède déjà de nombreux appareils Siglent, une erreur maximale de 0.06 % +- 8 digits. Donc
appareils que j’apprécie et sont d’excellente facture. une tension comprise entre 0,9932 V et 0.1.0068 V,
Dans les nombreuses familles d’instruments qu’ils ces limites étant des maximums, généralement, les
proposent, il me manquait le multimètre de table. appareils sont meilleurs.
Cette lacune vient d’être comblée et je peux maintenant Faut-il en déduire que les chiffres les plus bas sont
partager avec vous mes impressions sur le SDM3045X. inutiles ? Non, car ils permettent de comparer des
Siglent propose 3 familles de multimètres : SDM3045X, mesures et de voir leurs évolutions dans un sens ou
SDM3055 et SDM3065X dans l’autre.
Ces modèles offrent globalement les mêmes Pour revenir à notre SDM3045X, est-ce que
fonctionnalités mais diffèrent par leurs résolutions 60 000 points suffisent ou faut-il éventuellement
qui est de 4 ½ digits pour le 3045 (60 000 points), 5 ½ prendre des modèles au-dessus ? La réponse à cette
(240 000 points) pour le 3055 et 6 ½ (2 200 000 points) question dépend bien évidemment de l’usage. Ce que
pour de 3065. Les modèles 55 et 65 offrent aussi une je peux dire, c’est que pour un usage « Amateur » et
meilleure sensibilité basse, 200 mV / 200 µA contre même pro, cette résolution est plus que suffisante, voir
600 mV / 600 µA pour le 45. même souvent superflue. J’ai utilisé et utilise encore
De plus les modèles 3055 et 3065 offrent l’option des multimètres ayant de moins bonne résolution sans
SC qui permet d’avoir plusieurs entrées de mesures que cela ne pose le moindre souci dans 90 % des cas.
programmables. Vous pouvez facilement télécharger la fiche technique
Ces modèles partagent le même boitier et la même de ce modèle sur le site de Siglent [1] et voir pour
ergonomie. Les prix varient bien sûr avec la résolution. chaque type de mesure et chaque gamme, la résolution
Alors justement, parlons u peu de la résolution, elle et l’erreur max garantie par le constructeur.
est exprimée en « Digit », nombre de chiffres signi- En parlant de justesse, les multimètres sont livrés avec
ficatifs, ou en points. Le nombre de points indique un certificat de calibration prouvant que l’appareil était
le nombre de valeurs distinctes affichables pour une dans les limites annoncées, voir souvent meilleur.

106 juillet/août 2023 www.elektormagazine.fr


çais]:
v u e e n v id éo [en franmM4
Cette re outu.be/iTW9O_Jq
https://y

Siglent indique à ce sujet : L’appareil est livré avec un cordon secteur, 2 cordons
de mesure souples de très bonne qualité, un câble USB
« SIGLENT a déterminé que l’étalonnage en usine de A/B pour connexion à un PC, un certificat de calibra-
cet instrument n’est pas affecté de manière signifi- tion et une notice d’utilisation basique en anglais.
cative par un stockage allant jusqu’à 180 jours avant Il est possible de télécharger des manuels détaillés
la première utilisation. L’intervalle d’étalonnage doit complets (dont un en français) sur le site de Siglent.
commencer au moment où l’appareil est mis en service L’appareil donne une impression de qualité et la
ou 180 jours après la “date d’étalonnage” figurant sur finition est impeccable. Les touches en plastiques
le certificat reçu avec l’appareil. » souples offrent un toucher agréable. Le bouton de
mise en route n’est pas un « Vrai » interrupteur ce
Faut-il d’ailleurs réétalonner ces multimètres qui fait que l’appareil est toujours en veille. Personnel-
périodiquement ? lement, je préfère une vraie déconnexion du secteur,
Dans un cadre professionnel c’est conseillé, voire et coupe tout quand je n’utilise pas ces appareils via
obligatoire si on veut respecter certaines normes, une prise munie d’un interrupteur global.
dans un cadre amateur, facultatif. L’écran est très lisible. Lors de la mise en route, il faut
Par expérience, les matériels modernes dérivent assez compter un temps d’initialisation de quelques dizaines
peu avec le temps. Si on peut le faire, il est juste conseillé de secondes. De toutes manières, il est conseillé de ne
de vérifier périodiquement la justesse de l’appareil. pas allumer/éteindre ces appareils pour de courtes
Il existe des centres de métrologie agréés qui peuvent périodes, la justesse maximum étant garantie après
effectuer ces étalonnages, mais c’est une opération un temps de chauffe (10 à 30 mn). Mais on peut bien
relativement couteuse comparée au prix de l’appa- sûr l’utiliser avant.
reil. Même si Siglent n’est pas très prolixe sur l’éta- Contrairement semble-t-il aux modèles supérieurs
lonnage, on trouve sur le net des « hacks » pour le munis de ventilateurs un peu bruyants, le SDM3045X
faire soi-même, ce qui suppose quand même d’avoir en est dépourvu et donc silencieux, exceptés parfois
les sources étalons adéquates. quelques discrets cliquetis de relais.
En résumé, dans bien des cas, ce n’est pas vraiment La face arrière, propose deux prises BNC, une entrée
un souci et votre multimètre vous servira fidèlement pour déclencher les mesures via un signal externe,
de longues années. et une sortie qui indique que la mesure est effectuée.
Le SDM3045X est un multimètre de table, et donc, bien Ces prises sont surtout utiles pour des bancs de mesures
qu’il soit transportable, n’est pas vraiment destiné à un automatiques et rarement utilisées en usage courant.
usage mobile sur le terrain. Déjà, il n’est pas autonome On y trouve aussi un connecteur LAN RJ45 et une prise
et nécessite une alimentation secteur, ensuite il faut le USB B pour relier l’appareil à un PC.
poser sur une table ou au moins un support stable pour Un emplacement est aussi prévu pour fixer un câble
l’utiliser. Les multimètres de table offrent générale- antivol.
ment de meilleures caractéristiques et surtout plus de Le fusible 10 A de l’ampèremètre est aussi accessible
fonctionnalités que les modèles autonomes comme la pour être changé facilement en cas de surintensité. Figure 1. Face arrière.
connectivité, la mesure 4 fils, un affichage plus riche,
etc... 
Il est possible de les poser devant soi de manière stable
et l’usage est clairement plus confortable, sans compter
que l’alimentation secteur dispense de la contrainte
de changement des piles ou de recharges périodiques.
Le SDM3045X permet de mesurer des tensions et
des courants en continus et alternatifs (RMS) jusqu’à
100 kHz (donc parfait pour la BF), des résistances (2 fils
ou 4 fils pour les résistances très faibles), la continuité,
les seuils des diodes, les condensateurs et la tempé-
rature avec différents capteurs (il intègre la compen-
sation de soudure froide pour les thermocouples).
Cela couvre la majorité des besoins courants. Il permet
aussi de mémoriser les valeurs lues, de faire des statis-
tiques dessus voir des alarmes en cas de dépassement.

Premières impressions
Comme pour les autres appareils Siglent, il est livré
dans un emballage bien conçu qui le protège parfai-
tement contre les chocs. Je vous conseille si vous le
pouvez de le conserver précieusement.

lektor juillet/août 2023 107


montre l’évolution dans le temps de la mesure
sur des périodes aussi basse qu’une seconde, très
pratique pour voir l’évolution des valeurs dans
le temps. Dans tous ces modes, les échelles et le
limites peuvent être calculées automatiquement
ou forcées manuellement.
> Un mode statistique qui montre les valeurs
moyennes, min, max, l’écart type etc. des
mesures.
> L’affichage « Dual » qui permet dans certains cas
d’afficher 2 paramètres en même temps, comme

la tension et la fréquence.
> Un mode dB / dBm pouvant faire des mesures
Figure 2. Mode Lors de la première mise en route, je vous conseille de relatives en dB, ou des mesures de puissance en
histogramme. vérifier que le firmware est à jour. Siglent fait souvent dBm pour une impédance de charge qu’il faut
évoluer ses appareils et les mises à jour sont facilement paramétrer. (ATTENTION : ce réglage ne change
téléchargeables sur leur site. en rien l’impédance d’entrée du multimètre, il faut
La mise à jour éventuelle se fait via une clé USB mettre la charge souhaitée de manière externe)
branchée sur la face avant. > Un mode limites qui permet visuellement de voir
si la valeur mesurée est comprise entre 2 bornes
Utilisation courante paramétrables, ceci est très pratique pour des
L’utilisation courante est simple et intuitive. On réglages de circuit répétitifs sans avoir à interpré-
passe facilement d’un mode de mesure à l’autre via ter les valeurs.
les boutons de la face avant. > Le mode « probe hold », un de mes préférés,
Il est possible de changer la vitesse de mesure qui qui mémorise automatiquement les mesures
joue sur la résolution. Dans bien des cas, le mode stables consécutives. Quel confort pour trier des
rapide sera suffisant avec un temps de réponses quasi composants.
instantané. > On peut aussi paramétrer finement le mode
Le changement de gamme automatique réduit aussi d’acquisition, la vitesse d’échantillonnage, s’il est
grandement les manipulations nécessaires. On peut
cependant à tout moment choisir la gamme manuel-
lement facilement.
En tension/courant alternatif, il offre une bande
passante de 100 kHz et une mesure RMS vraie.
Comme la plupart des multimètres, il faut cependant
apporter manuellement une correction du facteur de
crête pour les signaux dissymétriques, la doc donne
toutes les précisions sur ce point.
En mode continuité ou test diode on peut ajuster le
seuil du bip et son volume ce qui est un plus.
Dans toutes les mesures, on peut fixer un mode
« relatif » afin de voir les variations autour d’une
valeur mémorisée.
On peut aussi stopper manuellement l’acquisition et
mémoriser la dernière mesure à tout moment. Figure 3. L’affichage « Dual ».

Particularités intéressantes
Le SDM3045X se comporte donc comme un multi-
mètre de base mais il offre des possibilités addition-
nelles qui peuvent parfois bien faciliter la vie, voyons
ici les principales :
> Différents modes d’affichage, un bargraphe qui
permet de bien visualiser l’ordre de grandeur
de la mesure et sa variation, un mode histo-
gramme qui montre graphiquement la distribu-
tion statistique des mesures effectuées, ce qui
permet d’un coup d’œil de voir les valeurs les
plus fréquentes et pour finir un mode courbe qui Figure 4. Mode « limit ».

108 juillet/août 2023 www.elektormagazine.fr


Figure 5. Mode « probe hold ».

auto, manuel ou déclenché par le signal « trigger »


externe dont on peut définir la valeur et la polarité.
> On peut mémoriser sur clé USB les valeurs
mesurées et/ou les réglages courants afin de les
rappeler facilement. 
> Le mode thermomètre accepte différents types de
thermocouples courants (avec compensation de > Le rapport qualité-prix Figure 6. L’application
la soudure froide) et aussi des capteurs résistifs. > La documentation détaillée en français Windows EasyDMM.
(Note : il n’y a pas de sonde de température livrée > Les mises à jour facilement disponibles
avec l’appareil)
> Une aide intégrée permet de rappeler l’utilisation J’ai regretté :
et les branchements à effectuer pour les mesures. > L’interrupteur qui fait juste une mise en veille
(En Anglais) > Le manuel de service dispo mais avec peu d’infos
pratiques
Utilisation avec PC 230126-04
L’appareil est pilotable par SPI via USB ou LAN Ether-
net. Les drivers LabVIEW sont disponibles sur le site
Siglent. Des questions, des commentaires ?
La documentation du protocole est disponible pour Envoyez un courriel à l’auteur ([email protected]) ou
piloter l’appareil. contactez Elektor ([email protected]).
De plus, Siglent offre gratuitement l’application
Windows EasyDMM qui permet facilement de piloter
tous les multimètres Siglent, de visualiser les mesures
et de les exporter en CSV.
Cette application, malgré son look un peu vieillot
fonctionne très bien. À propos de l’auteur
Philippe Demerliac, né en 1962, est un concepteur de circuits
Conclusion électroniques à vocation scientifique, passionné par la
Je n’ai jamais été déçu par les appareils de mesures mécanique de précision, les appareils de mesure, l’usinage
Siglent et ce multimètre m’a globalement fait une très des métaux et la science en général depuis très longtemps.
bonne impression aussi. Il est pratique et couvre sans Bien que sa carrière professionnelle se soit orientée vers les logiciels, il s’inté-
doute la plupart des besoins d’un labo de dépannage resse au domaine de l’électronique. Dans le but contribuer à la communauté et
ou de R & D. Le prix est certes un peu plus élevé que lui rendre tout ce qu’elle lui apporte, Philippe a créé le site web cyrob.org et, et
des modèles Asiatiques d’entrée de gamme, mais la plus tard, une chaîne YouTube en français : youtube.com/@Cyrob-org
qualité du produit le justifie. Le rapport qualité prix
est excellent et si vous voulez investir dans un multi-
mètre de table de qualité pratique et performant, je
ne peux que vous le conseiller. En résumé :
J’ai particulièrement apprécié :
Produits
> La facilité d’utilisation
> La qualité globale et l’écran hyper lisible > Multimètre numérique Siglent SDM3045X
> La richesse des fonctionnalités offertes https://elektor.fr/17892
> Le silence (Pas de ventilateur)

LIENS
[1] Fiche technique du Siglent SDM3045X : https://www.siglenteu.com/wp-content/uploads/dlm_uploads/
2022/12/SDM3045X_DataSheet_E03A.pdf

lektor juillet/août 2023 109


COMPOSANTS

microprocesseurs
pour systèmes embarqués
drôle de composants

David Ashton (Australie) tait d’avoir 64 Ko de mémoire, et 8 bits pour


les données. Il y a ensuite divers signaux
Les électroniciens et les amateurs de l’embarqué ont de contrôle, tels que les signaux de lecture/
aujourd’hui l’embarras du choix en ce qui concerne la puissance écriture et de synchronisation. Toutes les
puces périphériques que vous connectez
de calcul, grâce à la vaste panoplie de microcontrôleurs ont principalement une seule fonction.
proposée. Mais il n’en a pas toujours été ainsi, alors plongeons Pour la mémoire, vous incluez une ROM
dans les systèmes embarqués du passé... (préprogrammée ou EPROM) et de la RAM,
qui doit être dynamique si vous voulez une
quantité de mémoire décente. Cela néces-
Aujourd’hui, même les microcontrôleurs bas développeurs de systèmes embarqués était sitait des temps de rafraîchissement bigre-
de gamme tels que l’AVR ATtiny à 8 broches difficile. Ils s’appuyaient sur des micropro- ment compliqués, nécessitant souvent
ont jusqu’à 8 Ko de mémoire flash et jusqu’à cesseurs dépourvus de mémoire sur puce l’emploi d’une puce séparée. Les périphé-
512 octets d’EEPROM et de SRAM. Ensuite, (à l’exception des registres) ou de périphé- riques étaient également ajoutés séparé-
il y a l’offre concernant les périphériques : riques. Au lieu de cela, toutes ces bonnes ment. Les timers, compteurs, ports d’entrée/
deux minuteries/compteurs, une interface choses devaient être ajoutées pour former sortie, UART pour la communication série,
série, un CA/N à quatre canaux, un chien un système complet. CA/N, contrôleurs CRT (qui avaient des
de garde et un comparateur analogique. Il Cela signifiait qu’il fallait attacher d’autres sorties pour piloter les écrans), et ainsi de
exécutera votre code à 10 MHz et supportera périphériques au bus du microprocesseur, ce suite. Chaque puce était un monstre en deux
une large plage de tension d’entrée. qui était très particulier. Généralement, il y rangées de 24 à 40 broches, généralement
En comparaison, la vie des premiers avait 16 bits pour les adresses, ce qui permet- adapté au microprocesseur du même fabri-

110 juillet/août 2023 www.elektormagazine.fr


Figure 1. Datant du milieu des années 1980, cette carte est équipée d’un microprocesseur 8085.
Combinée à six autres cartes (voir l’en-tête de l’article), elle est devenue aussi complète que les
microcontrôleurs d’aujourd’hui !

cant, fonctionnant à un maximum de 4 MHz. instructions telles que « ADC B » signi- le 8085 en 8086 sur 16 bits, utilisé dans le
Mais,le plaisir ne s’arrêtait pas là. Viennent fiaient « ajouter le contenu du Registre B premier PC XT d’IBM, puis en 80286, 80386,
ensuite les circuits intégrés logiques de base au Registre A, avec indication de retenue ». 80486 et les Pentiums qui sont encore utili-
pour le décodage et la mise en mémoire Les langages tels que le C n’étaient qu’une sés dans les PC aujourd’hui. Il convient de
tampon, connus sous le nom de logique de lueur dans l’œil de leur créateur, même si, noter que les ordinateurs monocartes à base
liaison. Les puces logiques programmables, avec un peu de chance, vous pouviez obtenir de microprocesseurs étaient encore courants
telles que les GAL, les PAL et les UAL, étaient un interpréteur BASIC. Si votre programme jusque dans les années 1990, plutôt que les
populaires pour cette tâche, mais parfois les ne fonctionnait pas ou devait être réécrit, il microcontrôleurs.
fabricants intégraient cette fonctionnalité vous suffisait d’effacer l’EPROM et de recom- Lorsque le 8080 est sorti, j’avais tout juste 18
dans des puces personnalisées dédiées. mencer la programmation. Une fois que ans et je me souviens d’avoir lu des articles à
Intel a ouvert le bal en 1974 avec le vénérable vous aviez votre programme final, vous son sujet dans les magazines d’électronique
8080, dont on peut dire qu’il a annoncé le pouviez le faire graver sur des mémoires de loisir de l’époque. J’ai eu la chance de
véritable début de l’ère des microproces- ROM. Ces dernières étaient moins chères, travailler sur des équipements à micropro-
seurs. Il avait besoin de l’assistance de mais il était impossible de les effacer ! cesseur au début de ma carrière, ce qui était
deux puces, le générateur d’horloge 8224 D’autres fabricants de microprocesseurs ont passionnant. Mes fonctions étaient axées
et le contrôleur de bus 8228. Fait inhabi- également pris le train en marche. Motorola sur un peu de programmation et beaucoup
tuel pour les ingénieurs d’aujourd’hui, il avait son 6800, MOS Technology le 6502 et de recherche de pannes. J’ai eu la chance de
nécessitait également des alimentations National Semiconductor le SC/MP. Certains suivre cette technologie tout au long de ma
de ±5 V et de +12 V. Les versions ultérieures, anciens concepteurs d’Intel ont formé Zilog, carrière, et elle m’a toujours fasciné. Compa-
comme le 8085 (figure 1), n’avaient besoin qui a proposé le Z80 (figure 2), une sorte de rés aux microcontrôleurs d’aujourd’hui, les
que d’une alimentation de +5 V. Cepen- 8080 de luxe. La plupart de ces puces ont anciens microprocesseurs étaient certes
dant, il était plus complexe en raison de été utilisées dans les premiers ordinateurs particuliers, mais travailler dessus était
son étrange schéma de multiplexage de personnels, tels que les Sinclair ZX80/81 et toujours très amusant.
bus. Cela nécessitait une logique de liaison Spectrum (Z80), le Commodore 64 (variante VF : Laurent Rauber — 230047-04
supplémentaire, bien qu’une ligne de puces 6502), et bien d’autres. Le projet SC/MP
périphériques 8085 dédiées était disponible. d’Elektor datant de 1978 est un autre bon
Pendant le développement, les programmes exemple [1].
étaient stockés dans des EPROM UV, En 1980, Intel a introduit le 8051. Celui-ci
mémoires mortes programmables effaçables disposait d’une petite quantité de ROM
par exposition aux rayons ultraviolets. (parfois EPROM) et de RAM, mais aussi de
Grâce à une petite fenêtre au-dessus de la quatre ports 8 bits, d’un UART et de deux
puce, le contenu pouvait être effacé à l’aide compteurs/timers. Avec tout cela dans un
d’un effaceur d’EPROM, une boîte avec une seul système, on peut dire que c’est là que
ampoule UV, une minuterie et un plateau l’ère des microcontrôleurs a commencé.
coulissant pour l’EPROM. La lumière UV Le reste, comme on dit, appartient à l’his-
effaçait le contenu en 20 à 30 minutes. toire. L’architecture 8051 est toujours utili-
Ensuite, elle pouvait être reprogrammée sée aujourd’hui, mais avec beaucoup plus de
à l’aide d’un programmateur d’EPROM fonctions périphériques que ses ancêtres,
branché sur le port série ou parallèle de tout en se débarrassant des bus et de la
votre PC. Je ne sais pas comment on procé- logique d’interconnexion du passé.
dait avant l’avènement des PC ! Cependant, je Le 8051 et les dispositifs 68xx de Motorola
me souviens d’avoir vu des programmateurs ont donné naissance à la gamme riche et
munis de claviers au format hexadécimal polyvalente de microcontrôleurs que nous
entrer des données dans chaque emplace- connaissons et aimons aujourd’hui : AVR,
Figure 2. Le Z80 de Zilog était un autre cheval de
ment de mémoire... PIC, et une multitude d’autres basés sur bataille des premiers systèmes embarqués. Il est
La programmation se faisait en code ARM, donnant naissance à des cartes comme ici accompagné d’un contrôleur d’E/S série (SIO)
machine, en entrant des valeurs hexadé- Arduino et Raspberry Pi. Intel a transformé et d’un circuit compteur/timer (CTC).
cimales dans chaque emplacement de
mémoire. L’autre option était le langage LIENS
assembleur qui utilisait des mnémoniques [1] J. Buiting, « SC/MP Computer d’Elektor », circuits de vacances 2022, Elektor :
pour les opérations et des étiquettes pour https://www.elektormagazine.fr/magazine/elektor-264/60879
les variables et les sections de code. Des

lektor juillet/août 2023 111


MICROCONTRÔLEURS

la documentation
des microcontrôleurs
sans peine (3)
schémas de principe, et autres documents

Figure 1. Le circuit de réinitialisation offre très peu d’options de configuration, certaines sources de réinitialisation étant liées à la broche
d’alimentation VCC. (Source : Microchip Technology)

Stuart Cording (Elektor) Cette fois-ci encore, nous allons nous focaliser spécifiquement sur
le microcontrôleur 8 bits PIC16F18877 de Microchip Technology
Dans les parties précédentes de cette et nous vous conseillons donc de télécharger la fiche technique
série d’articles [1], nous avons abordé [2] si vous souhaitez suivre notre démarche.

les fonctionnalités des registres et Commençons par la réinitialisation


examiné le schéma de principe d’une Si le périphérique d’horloge est la partie la plus importante d’un
horloge. Nous présentons ici d’autres microcontrôleur, la mise en œuvre du circuit de réinitialisation est
le deuxième bloc essentiel. Tout comme l’horloge, il ne doit être
schémas en précisant aussi où configuré qu’une seule fois (s’il existe des options de configuration),
trouver le reste de la documentation et vous éviterez bien des problèmes ultérieurs si vous comprenez
nécessaire. bien ce qui peut provoquer une réinitialisation.
Dans l’exemple de la page 100 (figure 1), nous pouvons voir que
deux broches (représentées par des carrés contenant une croix,

112 juillet/août 2023 www.elektormagazine.fr


Figure 2. Le schéma de principe de TIMER0 montre que le dispositif possède plusieurs sources d’horloge et qu’il peut même produire un signal de sortie en
plus des signaux d’interruption internes. (Source : Microchip Technology)

du côté gauche) peuvent effectuer des réinitialisations. Elles La plupart des logiciels de conception assistée par ordinateur
viennent s’ajouter à différentes autres sources internes. L’une (CAO) contiennent les blocs schématiques de votre processeur,
d’entre elles est l’instruction RESET, deux autres résultent de situa- ainsi que l’« empreinte » des différents boîtiers pour la conception
tions de débordement de la pile (sur- ou sous-capacité), tandis que du circuit imprimé. Toutefois, s’ils font défaut, la fiche technique
d’autres encore sont liées au temporisateur « chien de garde ». contiendra probablement des dessins techniques pour chaque
Représentés en orange, une série de mécanismes de réinitialisa- boîtier et l’empreinte associée. Dans le cas présent, ils se trouvent
tion, notamment la détection de la mise sous tension et les baisses à la page 639.
de tension électrique (brown-out), sont liés à la broche d’alimenta- Le boîtier SOIC illustré à la figure 3 est présenté pages 645 et 646.
tion du microcontrôleur. Dans le cas présent, le dispositif propose Pour les concepteurs de circuits imprimés, l’information la plus
un contrôle limité, toutes les sources d’interruption étant pour utile aujourd’hui est peut-être la hauteur du boîtier si la production
l’essentiel des signaux de réinitialisation possibles (représentés du dispositif est en volume limité (ils connaissent déjà la largeur et
en vert). Comme nous l’avons vu dans un précédent article avec la longueur). De nos jours, de nombreux boîtiers comportent égale-
le registre STATUS, il est possible dans certains cas de déterminer ment une « pastille métallique » intégrée qui doit être soudée au
la cause de la réinitialisation précédente . circuit imprimé pour une meilleure dissipation thermique. Ce n’est
pas le cas ici. Sinon, des indications sur la manière de le connec-
Schémas de principe des périphériques ter seraient données. Vous devrez peut-être aussi vérifier si cette
Les schémas de principe des périphériques sont aussi divers que pastille est connectée à la masse de l’appareil ou à une autre broche.
complexes. Nous avons choisi ici une partie d’un simple temporisa-
teur (TIMER0) page 396 (figure 2). Représenté en orange, un groupe Quelles sont les informations facultatives d’une
de bits d’un registre (vraisemblablement unique) permet une sélec- fiche technique de microcontrôleur ?
tion parmi différentes sources d’entrée pour ce périphérique TIMER0. Comme vous le savez maintenant, une fiche technique contient de
En vert, nous voyons également qu’une broche du périphérique nombreuses informations. Toutefois, certains éléments sont facul-
peut servir de source, et que le bloc a la possibilité d’émettre un tatifs car ils rendraient la fiche trop volumineuse ou parce qu’ils sont
signal vers une broche . communs à de nombreux appareils et méritent une documentation
Bien que vous puissiez reconnaître la bascule D [3],sur le côté spécifique. Il s’agit notamment des éléments suivants :
droit, connectée à la broche de sortie, différents blocs du schéma > Jeu d’instructions du processeur : si le nombre d’instruc-
sont tout simplement des carrés. Les représentations de certains, tions est faible (moins de 60 à 70), elles peuvent toutes être
comme le prédiviseur (prescaler) et le postdiviseur (postscaler), vont incluses, avec une explication, dans la fiche technique. Si ce
de soi. Il en va de même pour le bloc SYNC, mais un développeur n’est pas le cas, il existe probablement un document séparé
devra probablement lire le texte d’accompagnement en détail pour dans lequel chaque instruction sera expliquée en détail.
comprendre pleinement sa fonction. Les diagrammes et le texte > Exemples de code : ils apparaissent plus souvent lorsque le
vont ainsi souvent de pair dans les fiches techniques. Il est parfois microcontrôleur est encore essentiellement programmé en
nécessaire d’écrire quelques lignes de code de test pour vraiment assembleur. Les exemples de code en langage de haut niveau,
comprendre le fonctionnement de certains périphériques. le C par exemple, n’ont guère de sens, puisque le compilateur
définit les instructions précises utilisées.
Création d’un circuit imprimé > Exemples de circuits : ils sont le plus souvent associés à des
À un moment donné, le dispositif doit être mis en œuvre sur fonctionnalités propres au microcontrôleur sélectionné,
un circuit imprimé pour le produire en série, si nécessaire. comme l’oscillateur ou l’alimentation, ou à des interfaces

lektor juillet/août 2023 113


Figure 3. Les plans du boîtier indiquent ses dimensions (à gauche) ainsi
que la configuration recommandée pour le circuit imprimé (à droite).
(Source : Microchip Technology)

légèrement plus complexes qui ont des exigences spécifiques peut faire, ces documents offrent une vue globale de ce que
en matière de charge de signaux, comme l’USB. Toutefois, il peuvent accomplir tous les microcontrôleurs d’une même
est très probable que ces circuits soient abordés plus en détail gamme.
dans une note d’application relative au sujet. > Notes d’application : cette partie explique en détail comment
utiliser des périphériques spécifiques, ou un groupe de
Quelles sont les informations généralement périphériques, pour mettre en œuvre une application ou une
absentes d’une fiche technique de interface. Si la fiche technique peut décrire, par exemple,
microcontrôleur ? comment utiliser un périphérique CAN (Controller Area
Les éléments suivants sont normalement exclus des fiches Network), une note d’application indiquera plutôt comment
techniques et figurent dans d’autres documents. C’est générale- l’exploiter dans le cadre d’un réseau CAN, avec des conseils
ment parce qu’ils concernent un sujet commun à une large gamme sur les protocoles logiciels de haut niveau et la sélection
de microcontrôleurs. d’émetteurs-récepteurs appropriés.
> Flashage de la mémoire du microcontrôleur : ce sujet est > Spécification de programmation : pour la programmation
normalement traité séparément pour la programmation des dans des environnements de production de masse, elle
microcontrôleurs dans le cadre de la production de masse. explique en détail les tensions et les temporisations requises,
> Utilisation d’outils de développement : le compilateur, l’envi- ainsi que le ou les protocoles éventuels utilisés pour l’inter-
ronnement de développement intégré (IDE) et les outils de face de programmation.
débogage disposent de leur propre documentation.
> Explication détaillée du cœur du processeur : ce point fait Comment assimiler ces documentations
souvent l’objet d’un document séparé, en particulier pour les volumineuses ?
cœurs 16 et 32 bits. Malheureusement, il n’existe pas de moyen particulier pour assimi-
> Explication détaillée des périphériques complexes : les ler rapidement toutes les informations associées à un microcontrô-
périphériques USB, les interfaces graphiques et les périphé- leur et à l’ensemble de ses outils. Si vous débutez, il est probable-
riques Ethernet font généralement l’objet de documents ment préférable de lire la fiche technique parallèlement à un livre
distincts, car l’inclusion de chacun d’entre eux pourrait ou à un article sur le microcontrôleur concerné. Elektor ne propose
doubler la taille de la fiche technique du microcontrôleur. pas seulement des livres pour ceux qui s’intéressent aux micro-
> Errata : cette partie répertorie les erreurs contenues dans la contrôleurs PIC ; il existe également des livres de démarrage pour
documentation, ou les solutions de contournement pour les microcontrôleurs STM32 [4] et ARM [5] en général. Et pourquoi
résoudre les bogues matériels non corrigés. ne pas essayer un simple projet MSP430 [6] ?
La combinaison d’exemples pratiques et de deux types de
Quelles sont les autres documentations mises à documents explicatifs écrits (un livre/article et la fiche technique
votre disposition ? elle-même) pourra vous aider. Si vous êtes plus avancé(e), la
Outre la fiche technique, les documents suivants sont générale- meilleure approche consiste à vous focaliser sur les sections
ment proposés : qui concernent le cœur du processeur, l’arborescence d’horloge
> « Manuel de référence de la gamme » : alors que la fiche et le bloc de réinitialisation, puis les périphériques que vous
technique vous indique précisément ce qu’un microcontrôleur souhaitez utiliser. Vous devrez ensuite vous familiariser avec la

114 juillet/août 2023 www.elektormagazine.fr


documentation de la chaîne d’outils du compilateur. Faites égale- Des questions, des commentaires ?
ment bon usage des bibliothèques logicielles et des exemples pour Envoyez un courriel à l’auteur ([email protected]).
améliorer votre compréhension. Si vous avez besoin d’aide supplé-
mentaire, posez des questions sur les forums.
Les fiches techniques peuvent être difficiles à lire et à comprendre,
et elles ne sont pas particulièrement enthousiasmantes sur le plan
Produits
littéraire. Pour autant, elles sont (la plupart du temps) exactes et
constituent une description technique de la fonctionnalité (la section > T. Hanna, Microcontroller Basics with PIC, Elektor 2020
« errata » peut servir à déterminer la confiance à accorder à la fiche https://elektor.fr/19188
consultée). Gardez-les à portée de main, et, avec le temps, vous
comprendrez bien comment elles sont construites et formulées.
> A. Pratt, Programming the Finite State Machine,
Elektor 2020
https://elektor.fr/19327
VF : Pascal Godart — 230286-04

LIENS
[1] Série relative à la documentation des microcontrôleurs : https://elektormagazine.com/tags/microcontroller-documentation
[2] Fiche technique du microcontrôleur Microchip Technologies PIC16F18877 : https://microchip.com/en-us/product/PIC16F18877
[3] Bascules D: https://fr.wikipedia.org/wiki/Bascule_(circuit_logique)
[4] Livre sur les microcontrôleurs STM32 pour débutants: https://elektor.com/programming-with-stm32-nucleo-boards-e-book
[5] Microcontrôleurs à base de processeurs ARM : https://elektor.fr/embedded-in-embedded
[6] Projet MSP430 simple : https://elektormagazine.fr/labs/elektorpost-no-1-led-earring

SOLUTIONS LOGICIELLES DE TEST ET MESURE


Nous livrons maintenant votre
solution logicielle numérique adaptée
à votre équipement.

Choisissez votre logiciel de test et


mesure et recevez-le par e-mail dans
les 72 heures suivant l’achat.

lektor juillet/août 2023 115


PROJET
r- L a b
kto s.
le

co
E

m
BEST O
F

Ele
station météo LoRa
to

m
o

k
r- L a b s.c

à faible puissance
réalisez vous-même une station météo à longue portée

Edward Ringel (États-Unis)

Lorsque mon ancienne station de température et


d’humidité à distance a fini par tomber en panne,
je l’ai remplacée par un système de ma propre
conception : un capteur à l’extérieur et un affichage
à l’intérieur tous deux alimentés par batterie et
connectés via LoRa. Mettre au point un dispositif
fiable capable de supporter l’hiver du nord-est des
États-Unis n’a pas été simple ! Mais voyez plutôt...

La fonctionnalité minimale du système était leur et d’une unité radio pour communiquer
le développement d’un capteur extérieur entre elles. Les deux stations de mesure
distant, alimenté par piles (figure 1), et pour l’extérieur et l’intérieur ont également
d’un affichage intérieur, lui aussi équipé besoin de capteurs et d’une commande de
d’un capteur et alimenté par piles. Pendant minuterie, dont il sera question plus loin.
le développement du projet, j’ai ajouté un Les trois stations sont constituées des
serveur web très simple. « briques de base » suivantes :
Pour ce faire, je voulais utiliser l’environ-
nement Arduino et ses nombreuses biblio- > • Station extérieure : Artemis Nano,
thèques de haute qualité. Pour simplifier le module radio LoRa, minuterie,
projet, je prévoyais d’utiliser des compo- capteurs
sants sur étagère et qu’on puisse souder à > • Station intérieure : Artemis Thing
la main. Enfin, la réduction de la consom- Plus, module radio LoRa, minuterie,
mation d’énergie était une priorité. Impré- capteurs, affichage
vue au départ, la climatisation efficace du > • Station de base ou station
capteur extérieur s’est avérée étonnamment domotique : Raspberry Pi Pico, Arduino
difficile. Mini, module radio LoRa
Des considérations générales m’ont permis
de déterminer quel matériel / quelles cartes Parlons de consommation
devaient être utilisés – voir plus loin pour Des mesures de température, d’humidité et
en savoir plus et les difficultés rencontrées. de pression barométrique sont effectuées
Tout d’abord, il faut une station extérieure, périodiquement. La consommation d’éner-
Figure 1. Capteur enneigé suspendu près de une station intérieure et une station de gie est minimisée en plaçant le dispositif
notre voie d’accès. base. Cette dernière collecte les données de mesure à distance dans un état de faible
des deux stations de mesure et les transmet consommation ou de veille, en le réveillant,
à un ordinateur. Les trois unités ont donc en effectuant et en transmettant les relevés,
besoin d’au moins une carte microcontrô- puis en le ramenant dans un état de faible

116 juillet/août 2023 www.elektormagazine.fr


Figure 2. Mon écran ePaper affiche la température (en °F), l’humidité Figure 3. Première itération de la carte d’affichage. Première version du
relative et la pression barométrique non corrigée/non normalisée. Les circuit d’affichage, avant la modification de la carte Artemis et l’ajout du
indices « i » et « o » désignent l’intérieur et l’extérieur. Seule la pression TPL5111. Optocoupleurs, MOSFETs, TPL5110, interrupteurs pour la recharge,
extérieure est affichée. youpi !

consommation. Le rapport cyclique de la d’affichage intérieure, mais choisir l’écran même que le capteur extérieur / la radio.
consommation d’énergie est représenté a été facile : ePaper a la plus faible consom- Comme je devais couper l’alimentation
par TON / TTOT . La consommation d’éner- mation d’énergie. Cette technologie ne des cartes, la meilleure solution était une
gie effective est régie par : consomme du courant que lors du rafraî- puce de minuterie à très faible consomma-
chissement de l’affichage (c’est pourquoi tion. Ces dispositifs possèdent un circuit
> La consommation de l’appareil lorsqu’il le Kindle équipé d’ePaper peut afficher de minuterie interne, dont l’intervalle est
est en marche et qu’il traite des instruc- un graphique alors qu’il est inactif et ne réglé par une simple résistance externe,
tions ou des données. consomme pas d’énergie). Le WaveShare et s’utilisent avec un microcontrôleur.
> La fraction du temps pendant laquelle dispose d’un bel écran ePaper de 10,7 cm. Lorsque la minuterie se déclenche, le flux
l’appareil est en marche pour collecter Les instructions étaient difficiles à suivre de courant est activé. Lorsque le micro-
et envoyer (ou afficher) des données et j’ai dû générer quelques polices de carac- contrôleur a terminé sa tâche, il envoie un
- la minimisation du cycle d’utilisa- tères, mais comme le montre la figure 2,
tion affecte de manière significative la l’écran a bien fonctionné.
consommation globale. J’ai utilisé des capteurs Bosch BME280 Tableau 1. Cartes et consommation
> La consommation de l’appareil entre pour les mesures. Ces unités mesurent Consommation
les mesures. Idéalement, il ne devrait la température, l’humidité et la pression Carte électrique (mA)
pas y avoir de consommation entre les barométrique (T/H/P) et disposent de Teensy 3.5 74,5
instants d’échantillonnage, mais ce bibliothèques I2C robustes. Leur consom-
Raspberry Pi Pico 20,4
n’est pas une attente réaliste. mation de courant est négligeable.
Un mécanisme de minuterie contrôlait le Teensy 4.1 92,6
J’ai testé la consommation d’énergie de rapport cyclique. La carte microcontrôleur, ESP32 Adafruit
125,0
base de plusieurs cartes microcontrôleurs la radio et le capteur devaient être allumés Huzzah Feather
en les mettant sous tension sans exécuter de et éteints - cela n’aurait eu aucun sens d’uti- Artemis Thing Plus 8,5
programmes ni attacher de périphériques. liser une carte microcontrôleur efficace qui
Generic
Voir le tableau 1 pour les résultats (ceux- consommait 20 µA en veille alors que la 70,3
ESP32-WROOM
ci peuvent ne pas représenter la consom- radio consommait 20 mA. Plutôt que de
mation d’énergie après un réglage fin tel coder la mise en veille du microcontrôleur Consommation d’énergie de différents
que la désactivation des interfaces périphé- et la mise en veille de la radio, j’allumais et microcontrôleurs sous tension, alimentés en 5 V
riques, le ralentissement de l’horloge, etc.) À j’éteignais l’ensemble de l’appareil. pour Vin, mais sans exécution de programme.
La consommation d’énergie est régie, non
la lumière de ces résultats, j’ai décidé d’uti- Le régulateur 3,3 V de la carte Artemis
seulement par le microcontrôleur, mais aussi
liser les cartes Artemis de Sparkfun. a une puissance de sortie maximale de par d’autres composants de la carte (LED,
L’utilisation de l’énergie a également été 600 mA, suffisante pour alimenter tous régulateurs de tension, mémoire externe,
un facteur dans la conception de la station les composants de l’affichage intérieur de configuration sans fil, etc.)

lektor juillet/août 2023 117


message DONE à la minuterie, et le flux de la broche d’activation du régulateur 3,3 V sur Arduino et simplifient la mise en œuvre.
courant est désactivé. J’ai travaillé avec la les cartes Artemis (figure 4). Cette implé- La fréquence porteuse proche du gigahertz
puce TPL5110 sur une carte maison et sur la mentation a nécessité la suppression de la permet une meilleure pénétration des
carte Adafruit, toutes deux en combinaison résistance CMS de rappel R1 sur l’Artemis murs et des bâtiments et de plus grandes
avec une première version de la carte d’affi- Nano (figure 5), ou R3 sur l’Artemis Thing distances de transmission. Les protocoles
chage (figure 3). Mes tribulations avec ce Plus (figure 6), mais m’a permis de contrô- de transmission sont optimisés pour les
petit truc sont documentées dans [1]. ler toute l’alimentation de la carte. Ces petits paquets de données. Ils n’ont pas
J’ai finalement utilisé un TPL5111 connecté à résistances rappellent la broche ENABLE besoin de signaux d’échange qui prennent
du régulateur de tension au plus, sauf si la du temps ni de surcharge de sécurité. En
broche est mise à la masse. Pour finir, les revanche, la charge de garantir la livraison
cartes modifiées ont constitué une solution des données repose sur le programmeur
astucieuse, le circuit complet ne consom- plutôt que sur les protocoles de transmis-
VIN VIN mant que 20 µA en veille. sion intégrés.
U2 Les TPL5110 et TPL5111 sont des puces À ce stade, vous pouvez vous demander
R3
IN OUT
R4
intéressantes qui méritent d’être étudiées, comment le capteur et les stations d’affi-
EN GND NC en particulier dans le domaine des capteurs chage communiquent. Après tout, les temps
10k

IdO distants. Les cartes Adafruit sont des TON des deux appareils se chevauchent
1k

C4 C5
implémentations formidables et offrent une rarement. Si le capteur s’allume et trans-
excellente flexibilité de conception. met des données, la station d’affichage sera
D4
1µ 1µ

EN probablement éteinte. La solution a consisté


Transmission des données
RED
en une troisième station, toujours active,
230013-17
J’ai choisi les cartes HopeRF LoRa à 915 MHz basée sur un Raspberry Pi Pico ne conte-
pour la transmission des données (d’autres nant pas de capteurs mais fonctionnant
Figure 4. Régulateur de tension Artemis. La pays peuvent exiger une fréquence diffé- comme un concentrateur et un transmet-
broche ENABLE est rappelée au plus par R3 rente). De nombreuses bibliothèques teur de données, relié à un ordinateur. Je
(R1 sur Artemis Nano). Cette résistance doit
sont disponibles pour l’environnement l’appellerai la station domotique. Son seul
être retirée. La broche ENABLE est destinée
au régulateur de tension de la carte, pas au
microcontrôleur.

Data Flow Diagram

PC
Figure 5. Carte Artemis Nano. R1 est entouré
en blanc. Contrairement à la Thing Plus, il n’y
a pas de connecteur EN mais un connecteur
« PSWC ». La broche ENABLE du TPL5111 doit
être reliée au trou entouré en vert une fois que R1 Home Station Outdoor Station
(powered on continuously)
est retiré. Notez que R1 se trouve à l’arrière de la (powered on every 5 min.)
carte et doit être retirée avant le montage. Data Collector Outdoor T/H/P

Mudroom Sensor Indoor Station


(powered on every 5 min.) (powered on every 5 min.)

Mudroom T Indoor T/H/P; Display

Figure 6. Carte Artemis Thing Plus. R3 est


entourée en blanc. La broche ENABLE du
TPL5111 peut être reliée directement à la broche Figure 7. Schéma du flux de
EN (entourée en bleu) après que la résistance a données de la station météo.
été retirée.

118 juillet/août 2023 www.elektormagazine.fr


Figure 8. Carte du capteur noyée dans la résine. Notez le petit carré de Figure 9. Détail du boîtier du capteur. Tous les orifices d’aération
plastique dans le coin supérieur gauche qui empêche la résine de recouvrir sont grillagés pour protéger des attaques biologiques plus que des
le capteur. Notez également l’adaptateur USB-C à angle droit (à gauche, au cyberattaques ;-).
milieu) qui permet d’accéder à la carte pour la recharge et les mises à jour
logicielles.

périphérique est la radio et quelques LED domotique transfère cette demande à Bien que cela puisse sembler être une utili-
pour le débogage. Son régulateur de tension l’ordinateur. Elle envoie alors les obser- sation extravagante d’un microcontroleur,
peut supporter un courant de quelques vations extérieures les plus récentes à la les appareils sont si bon marché que cela se
centaines de milliampères, et j’ai alimenté station intérieure, qui met alors à jour justifie. J’encourage la communauté Elektor
la radio à partir de ce régulateur. Le Pico est l’affichage et s’éteint. à me faire part de ses commentaires sur la
alimenté par le port USB d’un PC et commu- façon de mieux résoudre ce problème. Deux
nique en série grâce à un programme en Au fil du temps, j’ai constaté des blocages versions du logiciel de la station domotique
Processing. Quelques centaines de lignes répétés de la station domotique avec pour sont fournies [2], l’une destinée à être utili-
de code suffisent pour tracer la pression conséquence l’impossibilité de mettre à jour sée avec le programme en Processing, l’autre
barométrique et afficher un tableau des l’affichage et le programme en Processing. indépendante d’une connexion informa-
relevés sur une page web. La figure 7 Les messages postés sur plusieurs forums tique et ne nécessitant qu’une alimenta-
illustre le flux de données comme suit : d’assistance suggèrent que la puce de l’émet- tion électrique telle qu’un vieux chargeur
1. Le capteur extérieur se réveille toutes teur-récepteur LoRa SX1276 peut se figer et de téléphone avec le connecteur USB appro-
les cinq minutes et envoie les relevés de provoquer ce comportement, bloquant à la prié. Le code en Processing est encore en
température, d’humidité et de pression fois la radio et le microcontrôleur lorsqu’elle chantier et ne prétend pas être une solution
(T/H/P) à la station domotique. Il n’y a pas est laissée en marche pendant de longues complète ni exempte de bogues.
de retour entre la station domotique et le durées. Ce comportement n’a jamais été
capteur extérieur. Le capteur extérieur constaté avec la station d’affichage ni celle Climatisation
s’éteint après la transmission sans de mesure, qui ont des cycles de mise sous Au début, mon capteur extérieur tombait
confirmation de réception par la station et hors tension fréquents. en panne par intermittence en cas de
domotique. La solution pour la Pico a été d’utiliser un changements rapides de température et
2. La station domotique stocke les relevés second microcontrôleur, un Arduino Mini, d’humidité, et je soupçonnais la conden-
les plus récents du capteur extérieur en comme minuterie intelligente. La sortie du sation. Après avoir examiné toutes mes
mémoire vive. Les relevés extérieurs sont Mini était connectée à la broche d’activa- soudures et mon câblage et n’avoir trouvé
également envoyés à l’ordinateur pour tion du Pico, ce qui permettait d’éteindre aucun défaut, j’ai décidé d’enrober de résine
traitement ultérieur. le régulateur de tension pendant 500 ms ma carte extérieure. J’ai imprimé en 3D un
3. La station intérieure d’affichage avec son toutes les heures. Une sortie de la Pico était boîtier pour mon circuit imprimé et une
capteur se réveille toutes les 5 minutes. connectée à la Mini, signalant le moment petite protection à placer autour de la carte
Elle mesure les paramètres intérieurs où le flux de données serait le moins vulné- du capteur pour qu’elle ne soit pas recou-
T/H/P, envoie ces informations à la rable aux effets d’une réinitialisation : la verte par la résine (figure 8). Je me suis
station domotique et conserve une copie réinitialisation du matériel ne se produi- servi d’un adaptateur USB-C à 90° pour
des mesures en mémoire vive. rait qu’après une mise à jour des données conserver l’accès au connecteur USB-C de
4. Lorsqu’elle reçoit une demande de mise et alors que le Pico ne recevrait pas de la carte Artemis.
à jour de la station d’affichage, la station nouvelles informations. J’ai utilisé de la résine époxy marine

lektor juillet/août 2023 119


Liste des composants
Résistances
R1 = voir texte
R2 à R4 = 1 M Ω ; 1/4 W
R5 = 680 Ω ; 1/4 W Pour cela, l’unité centrale envoie un signal
R6 à R8 = 360 Ω ; 1/4 W DONE à la minuterie, ce qui permet de
combler les lacunes du logiciel. À l’excep-
Semi-conducteurs tion du code WaveShare, je n’ai pas inclus
D1 = LED bleue de bibliothèques dans le téléchargement du
D2 = LED rouge logiciel. Celles-ci sont facilement ajoutées
D3 = LED jaune à votre environnement par l’EDI Arduino.
D4 = LED verte J’ai utilisé la bibliothèque Sparkfun BME280
parce qu’il n’y a aucune dépendance de code
Cartes autre que Wire.h. La bibliothèque Sandeep
2 × BoB TPL5111 (Adafruit Industries) Mistry LoRa a fourni toutes les fonctionna-
1 × Raspberry Pi Pico lités nécessaires et n’avait aucune dépen-
1 × Artemis Thing Plus (Sparkfun) dance de code autre que SPI.h.
1 × Artemis Nano (Sparkfun) Comme la station domotique ne peut pas
2 × cartes de connexion BME280 (ASIN B08DHTGNHR *) coordonner les transmissions entre les
1 × BoB FTDI basique 3.3 V (Sparkfun) capteurs et la station d’affichage, les colli-
3 × Émetteurs-récepteurs LoRa HopeRF RFM95CW 915 MHz certifiés FCC (Anarduino.com) sions de données et les pertes de données
1 × Arduino Pro Mini, 3,3 V 8 MHz (voir texte) qui en résultent sont inévitables. La chaîne
de données est envoyée deux fois avec un
Autres délai entre les transmissions pour réduire le
2 × Connecteurs ST à 4 broches (ASIN B01DUC1M2O* ; voir Conseils de réalisation) risque de données non délivrées. Au global,
1 × Écran ePaper 10,7 cm (WaveShare ; ASIN B074NR1SW2*) la perte de quelques points de données par
3 × Plaques perforées FR4 double face 7 X 9 cm (ASIN B08F7X8JHV*) jour est acceptable pour une application
2 × Batteries rechargeables LiPo18560 non critique.
2 × Supports pour les batteries 18650 Au cours du développement, j’ai réalisé que
Kit de résine époxy (ASIN B07TVWTG829*) la station domestique pourrait commu-
Adaptateur USB-C à 90° (ASIN B0BBVWF54L*) niquer avec un ordinateur et envoyer les
Barrettes et fils selon les besoins observations météorologiques à une base
de données, une page web ou autre. Il s’agit
* Les codes ASIN font référence à des numéros d’inventaire Amazon consultables. d’un travail en cours. J’ai écrit un serveur
de pages web rudimentaire en Processing,
un langage dérivé de Java avec une base
d’utilisateurs étendue et de nombreuses
transparente bon marché, disponible sur Logiciels et données bibliothèques de qualité. Comme indiqué,
Amazon. L’époxy marine est formulé pour Le logiciel pour les trois stations utilise les le code Processing est fourni, ainsi que les
durcir très lentement et donne à l’utilisa- bibliothèques LoRa et le code WaveShare. croquis Arduino. Bien qu’il puisse y avoir
teur plus de temps pour travailler avec le Pour les stations intérieure et extérieure, des similitudes superficielles, il ne s’agit pas
matériau. Comme je ne recherchais pas il faut des bibliothèques pour le capteur d’un projet LoRaWan, et la station d’accueil
un résultat esthétique parfait et que je ne BME280. Vous pouvez télécharger gratui- n’est pas une passerelle LoRa.
voulais pas que mes idiots de chats soient tement les paquets complets à l’adresse [2]. Ma configuration surveille les condi-
couverts d’époxy, j’ai placé le récipient La charge de codage pour le TPL5111 est tions extérieures, les conditions dans ma
sur un chauffe-plats électrique à environ triviale. J’ai échangé la simplicité du code et cuisine (emplacement de l’affichage) et un
65° C. En moins d’une heure, l’époxy était le raccourcissement du TON contre la garan- troisième capteur dans notre vestibule, qui
à l’épreuve des pattes. J’ai ensuite laissé le tie de transmission des données. Après la est exposée au risque de gel en hiver. Les
durcissement se terminer pendant la nuit à mesure, une courte chaîne est créée qui données du capteur du vestibule n’appa-
température ambiante (18-20° C). Le circuit contient les observations et l’identifica- raissent que sur la page web. Le nombre de
imprimé est logé dans un bocal en plastique tion de la station d’envoi ; cette chaîne est capteurs et d’affichages qui peuvent être
ventilé peint en blanc (figure 9) et les trous envoyée deux fois (voir ci-dessous). Les pris en charge avec cette configuration est
de ventilation sont grillagés pour protéger transmissions de la station domotique à la limité. Avec l’augmentation du trafic sur le
le capteur contre les insectes. station d’affichage comprennent également réseau, la perte de données due aux colli-
Avant de résiner le circuit, j’ai confirmé, des données temporelles afin que l’affichage sions finira par devenir inacceptable. De
par des tests, que l’époxy ne court-circui- puisse indiquer l’heure de la dernière mise nombreux facteurs influent sur ce phéno-
terait pas les fils nus et ne perturberait pas à jour. mène, notamment la précision des résis-
les connexions électriques. Depuis que j’ai On dirait que le code n’est pas complet. tances de synchronisation du TPL5111, les
résiné le circuit, il n’y a plus eu de pannes En réalité, l’exécution du code s’arrête facteurs environnementaux et, surtout,
intermittentes. lorsque le régulateur de tension est coupé. la fréquence d’échantillonnage et/ou de

120 juillet/août 2023 www.elektormagazine.fr


Conseils de réalisation
1. Retirer R1 et R3 : Voir les images pour l’identification 10. Carte d’interface radio : j’ai utilisé un BoB pour la
des résistances R1 et R3 qu’il faut retirer du Nano et de radio de Diycon.nl (LoRa Node PCB 100 Shield Only
la Thing respectivement. Si vous ne le faites pas, les pour RFM92/RFM95). Il est facile d’y fixer une antenne
circuits ne fonctionneront pas. filaire ou un connecteur d’antenne.

2. Connexion ENABLE sur Artemis Nano : voir figure 5 11. Antenne radio : j’ai utilisé une simple antenne filaire ¼
pour la connexion ENABLE sur Nano. J’ai pris une photo d’onde. La longueur de fil correcte pour 915 MHz est de
du bas de la carte. Vous ne devez PAS utiliser la broche 78 mm, soudée au connecteur central de la carte radio.
à la masse !
12. Résine : très salissante. Gants, récipients jetables
3. Circuit imprimé principal : n’importe quel circuit pour mesurer et mélanger, bâtons de mélange jetables
imprimé peut être utilisé, mais les articles référencés et chiffon. Assurez-vous que la carte fonctionne
étaient pré-étamés, en FR4, de taille adéquate et parfaitement avant de procéder. L’adaptateur USB-C
résistants aux retouches. à 90° doit être installé, et la minuterie doit avoir la
bonne résistance. Le récipient peu profond doit être
4. Fréquence radio : achetez une carte radio légale pour légèrement plus grand que la carte et la batterie. Ne
votre pays. pas immerger le BME280 dans l’époxy. J’ai fait une
protection autour du capteur (la résine remontera
5. Connexion au système Qwiic : le connecteur JST par les trous, protégez donc aussi le dessous). Vous
mentionné s’adapte parfaitement au système QWIIC, pouvez également connecter le capteur par des fils
mais les couleurs NE correspondent PAS à la convention au connecteur QWIIC et maintenir la carte du capteur
Sparkfun. Pour ces connecteurs, blanc = GND, jaune = au-dessus de la résine pendant qu’elle durcit. Chauffer
3.3 V, noir = SDA, et rouge = SCL. doucement la résine accélère considérablement le
temps de durcissement. Les trois points clés sont
6. Cartes BME280 : soyez prudent lors de l’achat de que le capteur ne soit pas recouvert de résine, que
cartes BME. Certains vendeurs d’Amazon remplacent le connecteur USB-C reste accessible à travers
(sciemment ou non) les puces BMP280 par des puces l’adaptateur et qu’à l’exception de la carte du capteur,
BME280. La version BMP est moins chère et semble tous les composants du circuit imprimé soient
presque identique, mais les bibliothèques pour BME recouverts.
ne fonctionneront pas et vous n’aurez pas de données
d’humidité. 13. Le boîtier : il y a plusieurs problèmes de conception.
Les trous de ventilation doivent être situés et protégés
7. Notes sur la connexion WaveShare : l’unité WaveShare afin que l’eau ne puisse s’infiltrer à l’intérieur du boîtier
est livrée avec un câble facile à utiliser. Violet = BUSY, qu’en contrant la gravité. Deuxièmement, le boîtier
Blanc = RESET, Vert = DC, Orange = CS, Jaune = CLK, doit être réfléchissant ou au moins peint en blanc pour
Bleu = DIN (MOSI), Marron = GND, Gris = Vcc. L’unité minimiser l’effet de serre. Troisièmement, le boîtier
n’a pas de connexion MISO. doit être léger. L’inertie thermique d’un boîtier lourd et
volumineux rendra vos mesures lentes et imprécises.
8. Intervalle de temps du TPL5111 : l’intervalle de temps Enfin, le boîtier doit être protégé d’une manière ou
du TPL5111 est programmé à l’aide d’un potentiomètre d’une autre contre les insectes.
intégré ou d’une résistance externe. Le site web
d’Adafruit et la fiche technique du circuit intégré 14. Batteries 18560 : les batteries vantant des densités
fournissent un tableau des valeurs de résistance pour d’énergie impossibles à des prix ridiculement bas sont
différents intervalles de temps. Si vous utilisez une omniprésentes sur Amazon et eBay. Soyez sceptique
résistance externe, vous devez couper une trace au dos face à ces affirmations. Les piles de marque avec de
de la carte. Si la consommation est vraiment critique, la 2500 à 3500 mAh sont un choix sûr !
LED d’activité peut également être retirée du circuit en
coupant une trace.

9. Connexion de la batterie aux cartes Artemis : la


batterie se connecte à la carte à l’aide d’un câble JST à 2
fils disponible partout.

lektor juillet/août 2023 121


ANT
915MHz
78mm

Figure 10. Circuit de la station


d’affichage.

GND
ANT
GND
GND DIO5
DIO3 RST
DIO4 NSS
3V3 SCK
DIO0 MOSI
DIO1 MISO
R2 DIO2 GND
Artemis Thing Plus

1M
16 2 LoRa Node PCB 100 Shield
17 1
0 0
4 12
5 11
6 13
R3
7 A5
8 A4
1M

9 A3
VUSB A2
Batt EN A1
BME280 VBAT A0
R4
GND

SDA
SCL
VIN

GND
+
NC
1M


3V3
GND
QWIIC

10 RST RST
3V3
SDA
SCL

USB

VCC
Batt
GND
4.2 inch e-Paper Module
Enable Timer DIN
400 X 300 Pixels
VDD CLK
GND CS
Delay DC
R1
ENout RST
Done TPL5111 BUSY ANT
915MHz
78mm

230013-024 GND
ANT
GND

GND DIO5
VIN DIO3 RST
BME280

GND DIO4 NSS


SCL 3V3 SCK
SDA DIO0 MOSI
DIO1 MISO
DIO2 GND

LoRa Node PCB 100 Shield


8 TX1 9
7 SCL3 RX1 10
6 SDA3 SCK 11
A5 MOSI 12
4 MISO 13
A3 A14
A2 Artemis A15

GND
Nano A16
3V3 QWIIC 3V3
SDA
SCL RST
A1 GND
A0 VIN Batt
PSWC

– + Enable Timer
USB VDD
GND
Delay
ENout
Batt Done TPL5111

230013-025

Figure 11. Circuit du capteur distant.

122 juillet/août 2023 www.elektormagazine.fr


GND

GRN
RX1
VCC

TX0
BLK
RAW TX0

demande de mise à jour. Il n’y a pas de limite GND RX1

au nombre d’affichages n’effectuant pas de


RST RST
VCC GND
A5
demandes de données. Les unités effectuant To Computer
A3 A4 D2
A2 D3
des demandes de données contribuent au USB A1 D4

trafic radio. C’est le trafic radio total, et non

FTDI Basic 3V3


A0 D5
A7
D13 D6
les transmissions de mesures des capteurs, RX A6
D12 D7

qui limite le réseau. Le calcul des limites


TX D11 D8
RESET
D10 D9

théoriques des différentes configurations

DTR GRN
GND BLK
est laissé à l’appréciation du lecteur. Connect

TXO
CTS
3V3

RXI
for Power
Arduino Pro Mini

Considérations pratiques ANT


915MHz
78mm
Le matériel est câblé à la main. Lisez atten- 1
GP0
USB
VBUS
40

tivement l’encadré Conseils de réalisa-


2 39
GP1 VSYS
3 38
GND LED GND
tion. Les capteurs communiquent via I2C. 4
5
GP2 3V3_EN
37
36

BOOTSEL
J’ai utilisé le système Qwiic de Sparkfun,
GP3 3V3_OUT
6 35
GP4 ADC_VREF

qui est très pratique. Il est facile de câbler


7 34
GP5 GP28
8 33
GND GND
un connecteur compatible Qwiic aux
R5 R6 R7 R8
9 32
GP6 GP27
680Ω

360Ω

360Ω

360Ω

GND
ANT
GND
petites cartes BME280 disponibles sur
10 31
GP7 GP26 GND DIO5
11 30
GP8 RUN DIO3 RST
Amazon et eBay. Veillez à acheter une BME 12
GP9 GP22
29
DIO4 NSS
D1 D2 D3 D4 13 28
plutôt qu’une BMP280 si vous souhaitez 14
GND
GP10
GND
GP21
27
3V3
DIO0
SCK
MOSI
obtenir des informations sur l’humidité. BLUE RED YELLOW GREEN
15
16
GP11 RPi PICO GP20
26
25
DIO1 MISO

Le module HopeRF a un pas de 2 mm au


GP12 GP19 DIO2 GND
17 24
GP13 GP18

lieu de 2,54 mm, ce qui nécessite un BoB ou 18


19
GND GND
23
22

une soudure soignée. J’utilise une simple


GP14 GP17 LoRa Node PCB 100 Shield
SWCLK

SWDIO
20 21
GND

GP15 GP16

antenne filaire ¼ d’onde. 230013-026

J’ai utilisé FontEdit pour créer une police


de 36 points pour l’affichage ePaper. Les
instructions de WaveShare sont difficiles Figure 12. Circuit de la station domotique.
à comprendre, mais j’ai fini par dévelop-
per un code fonctionnel. Si vous utilisez un
MCU autre que l’Artemis, n’oubliez pas que
les tables de polices et le tampon bitmap De ce fait, certaines connexions ont été Des questions, des commen-
consomment beaucoup de mémoire vive. basées sur l’optimisation de la disposition taires ?
J’ai utilisé une batterie rechargeable au physique de l’ensemble du circuit. Envoyez un courriel à Elektor à l’adresse
lithium 18560 pour l’alimentation. Voir les Bonne lecture ! [email protected].
Conseils de réalisation pour des obser- VF : Denis Lafourcade — 230013-04
vations sur l’approvisionnement en 18560.
D’autres configurations d’alimentation sont
possibles, mais les piles alcalines ne sont À propos de l’auteur
absolument pas recommandées pour les Ed Ringel est un médecin semi-retraité
Produits
températures inférieures à -18° C. spécialiste des soins respiratoires et
Les schémas (voir figures 10 à 12) sont intensifs. Il profite de la nature du Maine > Kit capteur SparkFun
indicatifs. Les nouvelles cartes 32 bits avec sa femme, écrit de la science-fiction, https://elektor.fr/19620
sont flexibles, avec de nombreuses broches fabrique des objets avec son imprimante
supportant les interruptions et avec des 3D et développe des projets électroniques
> Raspberry Pi Pico RP2040
https://elektor.fr/19562
interfaces SPI, I2C et UART alternatives. avec des microcontrôleurs.

LIENS
[1] Tribulations : https://forums.adafruit.com/viewtopic.php?p=927526
[2] Ce projet sur Elektor Labs : https://elektormagazine.fr/labs/low-power-lora-weather-station

lektor juillet/août 2023 123


RÉTRONIQUE

Transverter pour
la bande des 70 cm
Jan Buiting PE1CSI (Elektor)

En 1981, Elektor a impressionné la


communauté des radioamateurs
avec un transverter (convertisseur
pour émission/réception)
soigneusement conçu pour la
bande des 70 cm, qui était alors
une partie plutôt vide du spectre
radioélectrique utilisée par de
véritables expérimentateurs
pour communiquer dans l’espace
sans téléphone portable, vous
imaginez !

Le transverter 70 cm (430-440 MHz) présenté


ici dans cet article a fait l’objet de deux articles
publiés dans Elektor en juin et octobre 1981 [1]
[2]. C’est un excellent exemple de projet
destiné aux radioamateurs ne souhaitant
pas débourser la somme exorbitante qu’était
l’achat d’un appareil du commerce à l’époque.
Ces mêmes passionnés de radio souhaitaient Prototype du transverter 70 cm construit par Gerrit, PA0HKD et
Ed, PE1CJP pour Elektor Labs en 1981. Un émetteur-récepteur
la BLU (Bande Latérale Unique) sur le 70 cm
Icom IC211 2-m tous modes commande le transverter.
de la même manière qu’ils avaient pu profiter
de ce mode en ondes courtes ainsi que sur
la bande des 2 m (144 à 146 MHz) pendant l’époque, « elektorisèrent » le projet original de de l’audio, des microcontrôleurs et autres
de nombreuses années. En contraste avec l’auteur. Ils veillèrent à la reproductibilité par alimentations. Ils firent finalement d’une pierre
la FM, la BLU est un mode linéaire requé- le lecteur et au respect des normes légales deux coups en gravant des lignes microstrip
rant une bonne linéarité de tous les étages quand il s’agissait des niveaux des harmo- à même le cuivre de la platine.
de l’émetteur/récepteur jusqu’à l’embase niques et signaux parasites.
d’antenne même. Ed se souvienne fort bien des tracas que Fort et clair
représenta la mise sur circuit imprimé au Au début des années 80, la bande des 70 cm
Attention : les radioamateurs au standard Elektor non seulement en raison était particulièrement intéressante, n’étant pas
travail des parasites produits par la section de l’exci- uniquement l’endroit de rencontre d’amateurs
Le concepteur du transverter est J. de Winter teur 288 MHz mais aussi de l’inexpérience ayant fabriqué leur propre équipement à 100 %
PE0PJW. Gerrit Dam PA0HKD, l’un des des dessinateurs de platine de l’époque en ce (y compris la télévision amateur - ATV) mais
concepteurs d’Elektor, et Ed Warnier (PE1CJP qui concernait les spécificités des signaux à aussi des épris de la communication par satel-
devenu PA1EW depuis) en stage chez nous à 400 MHz, habitués qu’ils étaient au continu, lite qui permettait des QSO intercontinentaux

124 juillet/août 2023 www.elektormagazine.fr


Schéma du circuit de la section UHF du transverter. En 1981, il a fallu que les dessinateurs d’Elektor créent un nouveau symbole pour ces
« lignes microstrip » et qu’on ajoute un terme au dictionnaire technique des rédacteurs.

en CW (Onde Entretenue Pure) et BLU, travail-


lant tous à des puissances d’émission relative-
ment faibles (mais avec des antennes haute-
ment directionnelles).

Le transverter 70 cm d’Elektor a été très appré-


cié par les radioamateurs, car il est apparu
au bon moment et a été adapté parfaitement
à leurs besoins. Le projet a été brillamment Une partie du circuit imprimé du transverter, reproduite à partir du numéro
conçu et parfaitement documenté dans deux d’octobre 1981. Ces zones rectangulaires entre les lignes noires épaisses
ne sont pas de courts-circuits, mais des ligness « microstrip » accordés,
articles du magazine Elektor, suivis d’une
fonctionnant à environ 430 MHz. Il ne s’agit pas de quelque chose que l’on
publication UFB (ultra-fine business). peut faire glisser, déposer et tracer automatiquement !

220214-04

LIENS
Des questions, des commen- [1] J. de Winter, « transverter 70 cm (1) », Elektor 10/1981 :
taires ? https://www.elektormagazine.fr/magazine/elektor-198110/51639
Envoyez un courriel à l’auteur [2] J. de Winter, « transverter 70 cm(2) », Elektor 11/1981 :
( [email protected]). https://www.elektormagazine.fr/magazine/elektor-198111/51653

lektor juillet/août 2023 125


ETHICS IN ELECTRONICS

Climate Calling Engineers


Move Fast and Fix Things

By Priscilla Haring-Kuipers Our supply chain has already been impacted by the more frequent
occurring extreme weather, making factories freeze or catch fire.
The sixth synthesis report by the Water is fast becoming a contested resource, and factories should
Intergovernmental Panel on Climate look into either recycling or using seawater.

Change (IPCC) is clear: “Human We have not done nothing. Agreements made at Kyoto and Paris
activities, principally through have helped. Social movements have accelerated climate action. We
emissions of greenhouse gases, have can still save ourselves with climate resilient development based
on science, indigenous knowledge and local context. High-tech
unequivocally caused global warming.” and low-tech solutions working together.
What are we going to do about it?
“Individuals with high socio-economic status contribute dispropor-
tionately to emissions, and have the highest potential for emissions
The sixth synthesis report by the Intergovernmental Panel on reductions, e.g., as citizens, investors, consumers, role models, and
Climate Change (IPCC) is the collective scientific wisdom on climate professionals.” [1] That means us. What we do and what we demand
change and how to fix it. [1] They inform the UN. The main message of our governance makes a big difference. What you choose to
of their latest report has hope: “There are multiple, feasible and work on as an engineer will either contribute to a liveable world
effective options to reduce greenhouse gas emissions and adapt or to further heating up the place. When we support developing
to human-caused climate change, and they are available now,” [2] regions with our technological development, they can leapfrog to
but currently, we are not applying the technical solutions we have low-emissions solutions with us.
with enough vigour, scale or speed.
Stop That
Calling all engineers! There is a lot to do, so let me give you some If we are ever to stay under 2°C of global warming, a lot of fossil
highlights: fuels are going to have to stay in the ground. Today, new fossil fuel
developments are still being funded, and the fossil fuel industry
Current Climate receives more money in private investments, public subsidies and
We are now at 1.1°C global warming and will likely reach 1.5°C tax breaks than developments tackling climate adaptation and
in the early 2030s and shoot up to 3.5°C this century if we don’t mitigation. [1] Simply ending fossil fuel subsidies would lower
change drastically. “There is a rapidly closing window of oppor- greenhouse gas emissions with 10% by 2030, while improving
tunity to secure a liveable and sustainable future for all.” [1] We public revenue that could be redirected to our necessary transi-
have already caused a lot of damage across ecosystems. More than tion. If your work or your pension funds are connected to the fossil
climate scientists estimated earlier. We have lost many species, fuel industry, you might want to start looking for a way to decouple
nearly 50% of coastal wetlands, and we are impacting ecosystems before the well is shut down. Our electronics are heavy on petro-
in ways that are not reversible. Cities have become hotter and the chemicals and will be looking to shift to bio-based alternatives.
air we breathe more polluted. Opportunities abound.

126 juillet/août 2023 www.elektormagazine.fr Article commandité www.ethicsinelectronics.com


By Priscilla Haring-Kuipers, made with DALL-E: Electronics engineer soldering a product to achieve a future save from
climate change.

Carbon pricing such as carbon taxes or emission trading have led Cities are critical in this transition. We can build or retrofit to match
to some low-cost emission reduction measures but have not been our new low-emission lifestyles and make space for cycling and
very successful to promote the higher-cost measures that are neces- walking, teleworking and electric public transport. More plants and
sary to shift an industry. We need more. Luckily, climate laws are water in cities would help cool during heatwaves, process heavy
increasing, and they are helping to fight climate change causes and rainfall slower and keep moist during droughts while benefiting the
effects. Climate-related litigation is growing and has already had health and well-being of all who live there. Engineers should work
an effect on the “outcome and ambition of climate governance.” on building materials and practices, sustainable urban planning and
[1] It is likely that climate law will grow in the near future, both maintenance, digital communities and smart transport solutions.
internationally and on regional levels. The WEEE regulations and Many cities have already announced a net-zero emissions target.
the Supply Chain Act are early versions of what is coming. Your My city started a green jobs market for all the technical roles we
efforts and your company can be ahead of the curve, riding the are going to need to develop, install and maintain this bright new
green wave, or you can be dragged along by legislation, but every- future. Your city might have a similar initiative.
one is coming eventually.
Carbon capture is most reliably done by reforestation, improved
Technology for the Win forest management, soil carbon sequestration, peatland restoration
“If all technically available options were used, global emissions and coastal blue carbon management. Protecting high-carbon
could be at least halved by 2030, at manageable costs.” [1] We need ecosystems would have an immediate impact. Globally, we need
tons of engineers to roll out, scale up, improve and adapt to local to protect 30-50% of our land and water to maintain a resilient
circumstances many of the already available and proven solutions. biodiversity. Throw your skill set behind any project that supports
conservation and restoration.
In the last decade, the cost of solar energy has dropped by 85%,
wind energy by 55% and lithium-ion batteries by 85%. Meanwhile, Your time is now.
deployment has increased over tenfold for solar and over a hundred- 230265-01
fold for electric vehicles. In some areas and industries, keeping the
old is becoming more expensive than changing to the new. Work on No Geo-Engineering
whatever you can to push, develop and spread this development. Blocking the sun with solar shields or sulfur is a no-go. Short-term
and local cooling effects are likely, but the amount of green house
Green energy will not only curb our emission, but the economic gases would still grow and the acidification of our oceans would
benefit in air quality alone would offset the cost of the transition. continue. We don’t know enough about the effects on the targeted
Co-development of energy efficiency and renewable energy will region nor our global ecology. Once it is up and running, turning
create a happy feedback loop of improvement. Work on big renew- it off could cause “rapid climate change.” The risks are too great,
ables and small-scale nets, smart-grids, transmission and capacity and the reward is too uncertain.
is very much needed.

WEB LINKS
[1] IPCC, “AR6 Synthesis Report: Climate Change 2023,” 2023: https://www.ipcc.ch/report/ar6/syr/
[2] IPCC, “Urgent climate action can secure a liveable future for all,” March 20, 2023:
https://www.ipcc.ch/2023/03/20/press-release-ar6-synthesis-report/

Article commandité www.ethicsinelectronics.com lektor juillet/août 2023 127


lektor store
www.elektor.fr

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

SparkFun DataLogger IoT (9DoF)


Le SparkFun DataLogger IoT (9DoF) est un enregistreur de données
préprogrammé qui enregistre automatiquement les données des
capteurs IMU, GPS, ainsi que divers capteurs de pression, d’humidité
et de distance. Tout cela sans écrire une seule ligne de code ! Le
DataLogger détecte, configure et enregistre automatiquement les
capteurs Qwiic. Il a été spécialement conçu pour les utilisateurs qui
ont simplement besoin de capturer une grande quantité de données
dans un fichier CSV ou JSON et de revenir à leur projet principal.

Prix : 94,95 €
Prix (membres) : 85,46 €

www.elektor.fr/20487

Ensemble d’alimentation numérique Miniware


MDP-XP (MDP-M01 + MDP-P906)
Le MDP (Mini Digital Power System) est un système
d’alimentation linéaire programmable en courant
continu basé sur une conception modulaire, capable
de connecter différents modules pour les utiliser selon
les besoins. Le MDP-XP se compose d’un module
de contrôle d’affichage (MDP-M01) et d’un module
d’alimentation numérique (MDP-P906).

Prix : 269,00 €
Prix (membres) : 242,10 €

www.elektor.fr/20458

128 juillet/août 2023 www.elektormagazine.fr


Short Circuits: The 4-Pack Carte de développement PÚCA
(plateforme compatible Arduino) DSP ESP32

Prix : 99,95 € Prix : 69,95 €


Prix (membres) : 89,96 € Prix (membres) : 62,96 €

www.elektor.fr/20474 www.elektor.fr/20504

The Raspberry Pi The Elektor Power Supply


Zero 2 W GO! Book Collection (clé USB)

Prix : 34,95 € Prix : 49,95 €


Prix (membres) : 31,46 € Prix spécial : 34,95 €

www.elektor.fr/20445 www.elektor.fr/20451

lektor juillet/août 2023 129


hexadoku
casse-tête pour elektorniciens

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

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


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

LES GAGNANTS
La solution de la grille du numéro de mai/juin 2023 est EB0C8.
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.

130 juillet/août 2023 www.elektormagazine.fr


Rejoignez la
c mmunauté Elektor
Devenez membre Ge mOb eLD
maintenant ! m rship

accès à l’archive numérique depuis 1978 !


8x magazine imprimé Elektor
8x magazine numérique (PDF)
10 % de remise dans l’e-choppe et des
offres exclusives pour les membres
accès à plus de 5000 fichiers Gerber

Également disponible accès à l’archive numérique d’Elektor


10 % de remise dans l’e-choppe
abonnement G R E E Nmembership
8x magazine Elektor (PDF)
accès à plus de 5000 fichiers Gerber
sans papier !

www.elektormagazine.fr/membres

lektor juillet/août 2023 131


La plus large sélection de
composants électroniques™
En stock et prêts à être expédiés

mouser.fr
132 juillet/août 2023 www.elektormagazine.fr

Vous aimerez peut-être aussi