Projets électroniques pour l'été 2023
Projets électroniques pour l'été 2023
(B) 16,50 €
(CH) 29,00 FS
(CAN) 20.99 $ca
+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
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
IO15 BOOT
PB3 PA5 IO2
TXD0
IO35
12 +5V
29 ESP32 R4
IO4 IO34
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 !
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
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
FOCUS
construisez un
écran IdO sympa
avec le Phambili Newt 88 116
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
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
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).
VCC R-78E5.0-0.5 +5V
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
• Elek
r lab to
to
r la
Ele
b
TESTED
ab
Ele
to
rl
to
k
r la
b • Ele k
+5V
Figure 1. Le contrôleur
C3
J4
é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
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).
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
stroboscope RVB
avec
Arduino
un instrument utile,
instructif et distrayant
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
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-
100
100
100
100
100
100
100
100
T1 T2 T3
BC547 BC547 BC547
R10 R11 R12
10k
10k
10k
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
Okay!
Stop!
EPB EPB
Receiver Transmitter
bouton-poussoir
d’urgence sans fil
sécurité renforcée avec LoRa
lab
Elek
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
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.
VCC
AUX
TXD
GPIO34 GPIO3/RX0
M0
M1
18 21
GPIO11/SDCMD GPIO7/SD0
pour ses capacités sans fil. Vous pouvez utiliser n’importe 19
5V GPIO6/SDCLK
20
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
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
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
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
6k8
6k8
à 0,7 V, le transistor est bloqué et la tension de sortie est de 0 V.
Rs
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 :
comparateur à
hysteresis à niveaux
indépendants
simulations, feuilles de calcul et algèbre
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).
5.0V
4.5V
4.0V
3.5V
3.0V
2.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 :
2e cas : B fixe
3e cas : F fixe
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.
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
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
LIEN
[1] Téléchargements pour cet article : https://elektormagazine.fr/200559-04
analyseur d’impédance
basé sur un ESP32
simple, comportant peu de composants et de faible coût !
+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
5V 3V3
USB
230039-013
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.
inductance_mH=
mean(1e3*Zabs./(2*pi*xx*1e3))*1e3
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].
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
visite à domicile
encourageons les réalisations personnelles
la carte
d’apprentissage
MCCAB pour
Arduino Nano
plateforme pour le cours
« Microcontrollers Hands-On Course »
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.
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.
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.
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
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
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
B.a.ba capteur :
le capteur de
température DS18B20
connexion au bus 1-Wire
+5V
SCL SCL
+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.
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 :
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
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
quels standards
pour unifier la domotique ?
Matter et Thread se distinguent
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.
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.
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
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, ou la
concorde
des objets
Testez Matter avec la carte Thing
Plus Matter et 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é.
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
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
À 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
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]
HVAC Controls Window Coverings Safety and Lighting and Door Locks Media Devices Controllers &
and Shades Security Sensors Electrical Bridges
Source : CSA [5]
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
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
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
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.
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
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
Figure 2. Le schéma
fonctionnel de la carte
de développement
Microchip WFI32-IoT
EV36W50A (Source :
Microchip).
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 ?
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
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.
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
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].
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
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
horloge NTP
en CircuitPython
pourquoi utiliser ce langage de programmation ?
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).
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,
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.
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
Figure 14.
Interface finale. Figure 16. Spritesheet des drapeaux.
> 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 «.
Accès aux
54,95 €
archives en
ligne du MagPi
COMMANDEZ DÈS MAINTENANT AU
WWW.MAGPI.FR/ABO
www.magpi.fr Magazine
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é.
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
détecteur de mouvement
Doppler HB100 théorie et pratique
LM358 Module
VCC
IN
OUT
GND MOD1 SCL
PWR LED
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
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
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,
13 dBm EIRP ; C6
5 Preamp
> niveau des harmoniques : IC2
3
1
C2 R2 IC1B
7
6
< -10 dBm ; 4µ7
2
IC1A 8k2
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
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
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).
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
guide de programmation
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
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])
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
}
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
// 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++;
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
$ 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 :
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 :
struct gpio {
volatile uint32_t MODER, OTYPER, OSPEEDR, PUPDR, IDR, ODR, BSRR, LCKR, AFR[2];
};
#define GPIO(bank) ((struct gpio *) (0x40020000 + 0x400 * (bank)))
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
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.
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.
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 ».
LIENS
[1] Fiche technique du Siglent SDM3045X : https://www.siglenteu.com/wp-content/uploads/dlm_uploads/
2022/12/SDM3045X_DataSheet_E03A.pdf
microprocesseurs
pour systèmes embarqués
drôle de composants
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
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.
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
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
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
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
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
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.)
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µ
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
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
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.
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
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
GRN
RX1
VCC
TX0
BLK
RAW TX0
DTR GRN
GND BLK
est laissé à l’appréciation du lecteur. Connect
TXO
CTS
3V3
RXI
for Power
Arduino Pro Mini
BOOTSEL
J’ai utilisé le système Qwiic de Sparkfun,
GP3 3V3_OUT
6 35
GP4 ADC_VREF
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
SWDIO
20 21
GND
GP15 GP16
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
Transverter pour
la bande des 70 cm
Jan Buiting PE1CSI (Elektor)
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
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.
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/
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].
Prix : 94,95 €
Prix (membres) : 85,46 €
www.elektor.fr/20487
Prix : 269,00 €
Prix (membres) : 242,10 €
www.elektor.fr/20458
www.elektor.fr/20474 www.elektor.fr/20504
www.elektor.fr/20445 www.elektor.fr/20451
La dernière page de votre magazine propose Une grille hexadoku est composée de chiffres du système
toujours une grille de sudoku particulière. hexadécimal, de 0 à F. Remplissez le diagramme de 16 x 16 cases
de telle façon que tous les chiffres hexadécimaux de 0 à F (0 à 9
Éteignez le fer à souder, oubliez les écrans,
et A à F) n’apparaissent qu’une seule et unique fois dans
rangez les pinces et les fils. Faites travailler chaque rangée, colonne et carré de 4 x 4 cases (délimités par
votre matière grise d’une autre façon : attrapez un filet gras). Certains chiffres, déjà placés dans la grille, en
un crayon pour remplir la grille d’hexadoku. définissent la situation de départ.
N’oubliez pas d’envoyer votre réponse pour Pour participer, inutile de nous envoyer toute la grille, il suffit de
tenter de gagner un bon d’achat. nous donner la série de chiffres sur fond grisé.
LES GAGNANTS
La solution de la grille du numéro de 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.
www.elektormagazine.fr/membres
mouser.fr
132 juillet/août 2023 www.elektormagazine.fr