Si vous avez suivi tous les cours sur le CH32V003, vous en savez
largement assez pour vous lancer dans vos propres projets, de l'idée
de départ au produit fini. Le but du présent document est de vous
donner quelques pistes pour vous aider à vous lancer.
Quelques idées de projets
Se lancer, oui, mais quoi faire ? C'est une question que me
posent souvent les débutants, donc je vous ai préparé une petite
liste ci-dessous, avec un niveau de complexité croissant.
Jeu vidéo rétro
Avec un écran graphique OLED et quelques boutons poussoir et/ou
joysticks ou potentiomètres, vous pouvez créer un jeu vidéo rétro comme
pong,
snake ou tetris. Le niveau de difficulté matériel est très
faible et la difficulté logicielle modérée. C'est un bon projet pour
commencer à voler de ses propres ailes.
Sapin de Noël électronique
Un
peu kitsch mais amusant à faire, ce petit sapin avec animations
lumineuses et mélodies de circonstance ajoutera une petite touche
technologique à vos décorations de Noël. Il comporte 3 parties,
l'étoile du sommet, la guirlande de LED et un buzzer pour la
mélodie. 3 boutons poussoir permettent de choisir le comportement
de chaque partie.
Vous trouverez un exemple de réalisation ici, basé
sur une autre famille de micro-contrôleurs. Vous n'aurez aucun
mal à faire mieux que moi, je ne suis pas doué pour les travaux
manuels et ça se voit... :D
Arroseur automatique
Si vous aimez à la fois partir en vacances et les plantes en pot,
vous êtes immanquablement confronté au problème de leur arrosage en
votre absence. Comme il n'est pas toujours possible de trouver
quelqu'un pour s'en occuper, vous pourriez apprécier les services
d'un arroseur automatique.
L'idée de base est de noter combien vous apportez d'eau à chaque
plante et à quel intervalle de temps, par exemple 1 litre tous les
2 jours pour telle plante. Ensuite, vous brancherez un tuyau principal
sur votre robinet à partir duquel vous desservirez plusieurs petites
électrovannes, une par plante à arroser. Si vous n'ouvrez qu'une
électrovanne à la fois, il est assez facile de calculer, en fonction
de la pression de l'eau, le temps nécessaire pour distribuer la
quantité d'eau voulue.
Au niveau matériel, vous aurez besoin d'un micro-contrôleur
cadencé par un quartz, car l'oscillateur RC interne n'est pas assez
précis pour gérer la date et l'heure, on observe une dérive
significative au bout de seulement quelques minutes. Vous aurez
aussi besoin d'alimenter votre arroseur sur secteur car des
batteries ne tiendraient pas bien longtemps. Prévoyez quand même
une batterie de sauvegarde pour conserver la date, l'heure et tous
vos réglages en cas de coupure de courant, mais cette batterie
n'alimentera que le micro-contrôleur et pas le reste de l'appareil.
Enfin, vous voudrez sans doute utiliser un module LCD 2004 et un
clavier matriciel pour un bon confort d'utilisation.
Le schéma suivant montre comment mettre en place une batterie de
sauvegarde. La diode Schottky 1N5819 est d'utilisation très courante, vous
pouvez en faire un petit stock. Elle présente l'avantage d'avoir une
très faible chute de tension directe (VF), 0.34V dans notre
cas, contre 0.7V à 1V pour une diode classique genre 1N4007.
Le
genre d'électrovanne dont vous avez besoin ressemble à celle ci-contre.
Son avantage est que vous pouvez utiliser les mêmes tuyaux plastiques
transparents que les aquariophiles pour arroser vos plantes. Notez que
électrovanne se dit solenoid valve en anglais, ça pourra
faciliter vos recherches. Vous voulez un modèle "normalement ouvert"
(normally open), c'est-à-dire qui ne laisse pas passer l'eau
en l'absence de courant. On trouve assez facilement des électrovannes
avec une tension de service de 4.5V ou 5V, qui pourront alors
partager l'alimentation du micro-contrôleur si celui-ci fonctionne
sous 5V. Sinon, vous devrez avoir une alimentation séparée pour les
électrovannes.
Attention, vous ne pourrez pas connecter directement une
électrovanne à une ligne de GPIO, les électrovannes ont besoin de
beaucoup trop de courant pour cela. Il vous faudra donc utiliser un
circuit d'interface comme le ULN2003A. Si votre électrovanne consomme 500mA
ou moins, vous pourrez en commander jusqu'à 7 avec un seul ULN2003A :
Si votre électrovanne consomme plus de 500mA, il vous faudra mettre
2 darlingtons en parallèle pour chacune, comme indiqué ci-dessous, et
il vous faudra alors 2 ULN2003A pour commander 7 électrovannes. Il est
très improbable que vos électrovannes consomment plus de 1A, donc vous
n'aurez pas besoin de tripler les darlingtons.
Station météo
Une station météo installée à l'extérieur mesure classiquement la
température, la pression, l'humidité relative, les précipitations, la
vitesse et la direction du vent, à quoi peuvent encore s'ajouter
l'éclairement et l'indice UV B. Libre à vous de choisir ce qui vous
intéresse comme données. Vous pouvez ensuite décider d'enregistrer
ces données sur une carte SD et les décharger périodiquement en y
connectant un ordinateur portable, ou encore accéder directement aux
données via une liaison filaire ou radio.
Vous pouvez aussi décider de faire une station météo d'intérieur,
qui mesurera seulement la température, la pression, et l'humidité
relative et affichera joliment ces informations sur un écran graphique.
Voiture radiocommandée
On trouve différents modèles de châssis de voitures sur AliExpress,
dont un en plexiglas (chercher "robot car chassis") pour environ 10€,
ce qui permet de construire une voiture radiocommandée même quand on
n'est pas un as du modélisme. Vous trouverez des modèles à 2 ou 4 roues
motrices, selon votre ambition.
Vous pourrez y adjoindre des LED de différentes couleurs pour les
phares, feux de position et de direction, une LDR (ex. GL5528) pour allumer automatiquement
les phares quand il fait sombre, et un module HC-SR04 ou équivalent
pour détecter les obstacles.
Pour la communication avec le boîtier de commande, vous pouvez soit
utiliser une liaison infrarouge, par exemple basée sur le protocole
NEC bien connu des hobbyistes, soit utiliser un des modules radio
décrits plus loin dans ce document.
Pour le boîtier de commande, vous pouvez utiliser soit un seul
joystick (vitesse avant/arrière sur un axe, direction sur l'autre),
soit 2 joysticks séparés pour plus de commodité. Vous pouvez aussi
commander votre voiture à partir de votre PC en développant un
logiciel ad hoc.
Amazon utilise dans ses entrepôts de petits robots de ce type,
en plus sophistiqué, pour transporter les articles lors du traitement
des commandes. Ces robots sont capables de se repérer dans l'entrepôt,
d'aller se recharger automatiquement lorsque c'est nécessaire, et
communiquent par radio avec l'ordinateur central.
C'est encore le même principe qui est utilisé dans les tondeuses
automatiques qui œuvrent sur nos pelouses, et dans les aspirateurs
robots. La grosse différence avec les robots d'Amazon est que ces
systèmes sont totalement autonomes. Dans tous les cas, la complexité
du logiciel embarqué est telle qu'on n'utilise pas un simple
micro-contrôleur, mais un système fonctionnant sous Linux.
Carte d'entrées/sorties pour PC
Si vous souhaitez pourvoir contrôler capteurs et actionneurs à
partir de votre PC, vous aurez besoin d'une extension lui permettant
de s'interfacer avec des périphériques (I2C, SPI, PWM, GPIO), ou
commander directement des moteurs, relais, électrovannes, etc.
Pour connecter votre carte d'E/S au PC, vous avez différentes
possibilités, le plus simple étant d'utiliser l'UART du micro-contrôleur
via un adaptateur USB/TTL (indépendant, ou fait maison à partir d'un
CH340N), ou via
un module Bluetooth SPP comme les HC-04, HC-08D, AT-09, HM10, etc.
Pour contourner la limitation du micro-contrôleur en nombre de
lignes de GPIO, vous pouvez lui adjoindre un I/O expander
comme le MCP23S08
ou le MCP23S17,
ou encore le PCF8574.
Une autre solution est d'utiliser un 74HC595 pour les sorties et un 74HC165 pour les entrées. C'est moins
souple, mais aussi moins cher.
Pour la commande de moteurs, je vous recommande le BDR6126D. Si vous en mettez 2 sur
votre carte d'E/S, vous pourrez commander soit 2 moteurs à courant
continu, soit un moteur pas à pas.
Pour commander des dispositifs de puissance en courant continu
(ex. électro-aimant), vous pouvez utiliser un darlington comme le
TIP122 ou un
MOSFET comme le IRF640.
Il peut être nécessaire de leur adjoindre un radiateur.
Une fois décidé ce que vous voulez comme interfaces, il vous
faudra concevoir un protocole de communication entre le PC et la
carte, puis implémenter ce protocole à la fois dans votre firmware
et dans une bibliothèque côté PC. Vous utiliserez ensuite cette
bibliothèque dans vos applications PC pour communiquer avec les
périphériques connectés à la carte.
Rangement automatique de blocs Lego® ou Duplo®
Si vous avez des enfants et qu'ils jouent à ces jeux de construction,
vous pouvez vous amuser à faire une machine de tri et de rangement
automatique des blocs par couleur.
Le principe est de placer les blocs à ranger dans une trémie qui
laisse tomber une pièce à la fois sur un petit convoyeur (bande
transporteuse). Vous détecterez qu'une pièce est sortie de la trémie
par un couple LED et photo-transistor infrarouges placés en vis-à-vis.
Tant qu'il y a une pièce à trier, vous l'amenez sous un capteur de
couleur (module TCS34725). Une fois la couleur déterminée, vous
relancez le convoyeur pour amener la pièce à une navette qui la fera
tomber dans le bac de rangement correspondant à sa couleur, les bacs
étant disposés sous forme de matrice.
Vous pouvez très bien utiliser 2 micro-contrôleurs, un dédié à la
gestion du convoyeur et l'autre à celle de la navette. A vous de décider
de la manière dont les 2 micro-contrôleurs vont communiquer.
Ce projet n'est pas bien compliqué sur le plan logiciel, mais il
demande une bonne habileté manuelle pour réaliser toute la partie
mécanique du dispositif.
Dans les usines, on trouve des systèmes de ce type pour ranger
les palettes de produits finis dans un magasin automatique composé
d'étagères ad hoc. A la place de notre navette, c'est un chariot
élévateur automatique (un par rangée d'étagères) qui range les
palettes. Un ordinateur central pilote le tout et sait en permanence
quel type de produit est rangé à quel endroit et quels emplacements
sont disponibles. Le chariot élévateur peut aussi aller chercher une
palette donnée et la déposer sur un autre convoyeur qui l'amènera au
quai d'expédition où elle est attendue, l'ordinateur central gérant
aussi le traitement des commandes. Ces systèmes industriels
n'utilisent pas directement des micro-contrôleurs, mais des
automates programmables, mieux adaptés à l'environnement industriel
et aux capteurs et actionneurs spécifiques utilisés.
Où acheter le matériel ?
Pour les modules et la petite quincaillerie, il n'y a pas photo, c'est
sur AliExpress
qu'il faut aller.
Pour les composants, il faut comparer AliExpress aux distributeurs
spécialisés - LCSC,
Mouser et
DigiKey. Les
distributeurs garantissent du matériel neuf et authentique, mais ont
des frais de port beaucoup plus élevés. AliExpress peut être plus
avantageux pour les composants courants, mais il est prudent de
vérifier la réputation du vendeur et les commentaires des clients.
Comment assembler les composants ?
Matériel pour prototypage
Pour assembler des composants, vous avez besoin d'un support
appelé circuit imprimé (Printed Circuit Board, ou PCB en anglais).
Normalement, un circuit imprimé est fait sur mesure. Il vous
appartient de faire le schéma de principe de votre circuit à
l'aide d'un logiciel comme KiCAD, puis d'en dériver les
différents éléments permettant de réaliser le circuit imprimé
correspondant. A la fin, vous obtenez des fichiers Gerber que
vous pouvez communiquer à une entreprise comme JLCPCB, Elecrow ou encore PCBWay
qui fabriquera autant d'exemplaires du circuit imprimé que
vous voulez. Apprendre à utilisez KiCAD demande un peu de
temps, mais vous pouvez facilement trouver des tutoriels
sur le web, notamment YouTube.
Vous avez aussi le droit d'être impatient et de vouloir un
prototype tout de suite. Les premiers tests peuvent être faits
sur votre breadboard et vous pouvez ensuite réaliser quelque
chose de plus fini en utilisant des cartes de prototypage
formées d'un circuit imprimé comportant une grille de pastilles
au pas de 2.54mm. Vous insérez les composants dans les trous,
vous les soudez, et vous les reliez par des petits fils ou
avec les pattes des composants quand elles s'y prêtent.
Vous trouverez ces cartes en cherchant les mots-clés
"perforated board pcb" sur AliExpress. Il y en a plusieurs
types : des modèles à pastilles (que vous voulez) et
des modèles à bandes, des cartes simple face ou double face
(avec du cuivre des 2 côtés), et des cartes époxy ou
bakélite (le matériau isolant formant le support).
Les cartes en bakélite sont les moins chères, mais elles
sont généralement aussi plus fines et donc plus souples, ce
qui peut être un problème si vous y soudez des boutons poussoirs
ou si elles subissent toute autre forme d'efforts mécaniques.
Les vendeurs AliExpress les appellent parfois "paper PCB" car
le papier entre dans leur composition (voir la section
"Composés phénoliques en feuille" de la page Wikipedia). Les
plaques en bakélite sont marron et simple face. En voici un
exemple :
Les cartes époxy, aussi appelé FR4 sont un peu plus chères, un peu plus
épaisses et plus rigides. Elles sont la plupart du temps vertes
(d'autres couleurs existent) et existent en simple et double
face. En voici quelques exemples :
Pour relier les composants entre eux, le mieux est d'utiliser
du fil rigide normalement prévu pour la technique du wire
wrapping. Ce fil est fin, facile à dénuder avec un simple cutter,
facile à mettre en forme et existe en plusieurs couleurs, ce qui
facilite la vérification du câblage. Pour vous en procurer, utilisez
les mots-clés "wire wrapping wire" sur AliExpress et vous trouverez
ceci :
Pour le câblage des composants qui ne sont pas soudés sur la carte
(ex. modules, batteries, etc), vous utiliserez du fil de câblage
multibrins normal (mots-clés "electronic wire") ou du câble en nappe
("ribbon cable"), selon vos besoins. En effet, le fil rigide (monobrin)
ne résiste pas aux manipulations et doit être réservé au câblage des
composants soudés sur la plaque.
La taille des câbles est indiquée sous la forme d'un nombre suivi
de "AWG". Plus le nombre est grand, plus le fil est petit. Vous
trouverez ici un tableau de correspondance entre la jauge
et les autres caractéristiques du câble. Pour choisir la taille de
votre câble, vous devez avoir une idée du courant qui y circulera.
Recherchez dans la colonne "Ampacity" la valeur d'intensité
immédiatement supérieure à votre courant et voyez à quelle taille
ça correspond dans la colonne "AWG".
Notez que les câbles qui répondent à la désignation "electronic wire"
sur AliExpress ont une tension de service de 30V et sont donc adaptés
au câblage basse tension. Si vous devez faire du câblage côté secteur,
utilisez des câbles vendus à cet effet.
Enfin, pour les câbles des liaisons RS-485 ou RS-422, vous voudrez
utiliser les mots-clés "shielded twisted pair cable" et prendre le
câble comportant le nombre de paires adéquat.
Vous pourrez avoir besoin de supports de circuits intégrés
(mots-clés "ic socket") pour pouvoir récupérer ceux-ci facilement
lorsque vous passerez au circuit imprimé définitif. Ils ressemblent
à ceci :
Pour connecter des actuateurs (ex. moteur, électro-aimant),
vous aurez peut-être besoin de borniers à vis (mots-clés "terminal
block") comme ceux-ci :
Enfin, vous aurez certainement besoin de "headers" mâles et
femelles, par exemple pour connecter les modules à la carte
principale. Notez qu'il existe des headers droits (pattes à souder
dans le prolongement des broches ou réceptacles) et des modèles
coudés (pattes à souder formant un angle droit avec les broches
ou réceptacles). Les mots-clés sont "pin header" et "female
header". Ce que je fais pour éviter d'avoir trop de stock (il
existe de nombreuses variantes en nombre de broches), c'est
d'acheter des modèles à 40 broches et les couper avec un cutter.
Pour les headers femelles, c'est moche, mais c'est pour un prototype,
donc ça n'a pas grande importance. Voici des exemples :
Cas des composants à montage en surface (CMS/SMD)
Les conseils précédents fonctionnent très bien pour des
composants "through-hole" (ou THT, Through-Hole Type), mais de
nos jours, énormément de composants ne sont disponibles qu'en
version CMS (Composant à Montage en Surface), ou en anglais
SMD (Surface Mount Device) ou SMT (Surface Mount Type).
C'est en particulier le cas de la plupart des micro-contrôleurs,
dont le CH32V003. Les boîtiers les plus faciles à utiliser sont les
SOP-8, SOP-16, TSSOP-20 et LQFP-32.
Seuls certains micro-contrôleurs de la famille AVR (ex. ATmega644PA,
AVR64DA28) ou de la famille MCS-51 (ex. STC8G1K17A, STC8H8K64U) sont
disponibles en version THT, en boîtiers DIP-8, DIP-20, SKDIP-28 et
DIP-40.
Les transistors MOSFET aux caractéristiques intéressantes ainsi
que les régulateurs de tension (aka. LDO, Low Drop Out) ne sont
disponibles qu'en version CMS, généralement en boîtiers SOT-23-3,
SOT-23-5 ou SOT-223.
Pour pouvoir utiliser un CMS sur un carte de prototypage au
pas de 2.54mm, vous devrez souder le CMS sur un petit circuit
imprimé réalisant l'adaptation, puis connecter ce dernier à
votre carte (par exemple via des pin headers). Pour trouver
ces adaptateurs sur AliExpress, utilisez les mots-clés
"adapter plate pcb" avec le type de boîtier CMS en question.
Voici quelques exemples d'adaptateurs :
Pour souder des CMS, vous avez besoin d'une plaque chauffante.
Bien qu'on puisse utiliser pour cela une plaque de cuisson
vitro-céramique, il est plus confortable d'acheter pour quelques
euros une "PTC heating plate" et lui adjoindre un cordon secteur
avec interrupteur comme on en trouve en magasin de bricolage, ou
parfois même en grande surface. Notre plaque chauffante
ressemble à ça :
Vous aurez également besoin de pâte à souder spéciale CMS
(mots-clés "solder paste"), disponible sous forme de seringue
(ou en pot pour les conditionnements plus (trop) grands). Cette
pâte existe en plusieurs variantes de composition différente
permettant d'atteindre des points de fusion différents. Évitez
celles qui ont une température de fusion de plus de 300°C. A
part ça, le choix n'est pas critique. Voilà comment ça se
présente :
Faites attention au moment de l'achat, la pâte à souder est de
couleur grise. On trouve parfois également (à tort) sous le
nom de solder paste ce qui est en réalité du "flux", c'est-à-dire
une pâte jaune ou incolore qui agit comme décapant et comme
mouillant pour faciliter la soudure. Le flux est aussi disponible
en pot et en seringue et ressemble à ça :
lorsque vous achetez pâte à souder ou flux vendus
en seringue, privilégiez celles fournies avec une courte aiguille, ça
facilitera énormément l'application parcimonieuse du produit. Utilisez
une aiguille de couture pour nettoyer l'intérieur de l'aiguille de la
seringue après utilisation. La pâte à souder est très visqueuse et ne
part pas à l'eau chaude, contrairement au flux.
Enfin, vous aurez besoin de tresse à dessouder (mots-clés "solder
wick") d'une largeur de 2.5 ou 3mm. Voilà à quoi ça ressemble :
La procédure pour souder des CMS est la suivante :
Repérez le côté de l'adaptateur correspondant au boîtier
de votre CMS et placez-le vers le haut.
Mettez très peu de pâte à souder sur les emplacements
où viendront reposer les pattes de votre CMS.
Positionnez soigneusement votre CMS sur l'adaptateur en
vous aidant au besoin de brucelles.
Déposez l'adaptateur sur la plaque chauffante sans faire
bouger le CMS.
Allumez la plaque chauffante et attendez que la pâte à
souder devienne brillante. Vous verrez probablement le CMS
bouger sous l'effet de la tension superficielle de la soudure,
c'est normal et il se mettra tout seul en place.
Éteignez la plaque chauffante et disposez délicatement
avec vos brucelles l'adaptateur sur une petite planche de bois
pour le laisser refroidir.
Vérifiez à la loupe qu'il n'y ait pas de ponts de soudure
entre les pattes du CMS. S'il y en a, posez le bout de la tresse
à dessouder sur les pattes en question et chauffez-la avec votre
fer à souder. La soudure sera absorbée par capillarité dans la
tresse. Coupez le bout de la tresse plein de soudure. Répétez
l'opération jusqu'à ce qu'il n'y ait plus de ponts de soudure
visibles, puis contrôlez avec votre multimètre qu'il ne reste
pas de court-circuits qui vous auraient échappé à l'inspection
visuelle.
Évidemment, vous pouvez souder ainsi plusieurs composants sur
leurs adaptateurs en une seule opération.
Qu'il s'agisse de pâte à souder ou de fil à
souder, il est déconseillé de respirer la fumée qui se dégage lors
de l'opération de soudure. Un petit ventilateur USB peut la
dissiper facilement.
Alimentation électrique
Si votre appareil est alimenté sur batteries, vous voudrez
les loger dans un boîtier (mots-clés "battery holder"). Il en
existe plusieurs types, indépendants ou à souder sur circuit
imprimé, selon la taille de batterie et le nombre d'éléments,
avec ou sans interrupteur. Les tailles les plus courantes sont
AA, AAA et CR2032.
Si votre appareil est alimenté sur secteur, vous aurez besoin
d'une alimentation à découpage (mots-clés "switching power supply").
Il en existe avec différentes puissance et tension de sortie, donc
il faudra choisir celle qui convient à votre application. Il en
existe aussi avec plusieurs tensions de sortie, ce qui peut être
utile si vous alimentez votre micro-contrôleur sous 3.3V ou 5V et
des moteurs en 12V ou 24V, par exemple. Évidemment, vous devrez
adjoindre à votre alimentation un fusible et son porte-fusible,
ainsi probablement qu'un interrupteur. Une alimentation à découpage
ressemble à ceci :
Faites très attention lors de l'assemblage
de votre appareil qu'il ne soit pas possible de toucher accidentellement
un conducteur relié au secteur. On utilise souvent pour cela des
feuilles de plastique ou de carton solidaires de l'élément à mettre
hors d'atteinte (ex. bornes de l'interrupteur ou du porte-fusible).
Il est également possible d'utiliser du chatterton (ruban adhésif
isolant).
Capteurs environnementaux
Voici une sélection de modules que vous pourriez avoir envie d'utiliser
si vous réalisez une station météo, un thermostat d'ambiance, ou quelque
chose du même genre. J'ai volontairement exclu des capteurs comme la DS18B20
ou la DHT-11 car ils sont nettement moins pratiques à utiliser. Je ne parle
pas non plus des thermocouples, RTD et NTC, dont les utilisations sont plus
spécifiques.
Module
Interface
Grandeur
I2C
SPI
UART
ADC
Température
Humidité
Pression
Éclairement
UV B
TVOC
LM75
AHT20
HDC1080
BMP280
MS5611
BME280
VEML7700
BH1750
GUVA-S12SD
ML8511
AGS10
ENS160
GY-39
TVOC est l'abréviation de Total Volatile Organic Compounds, un
indicateur de la qualité de l'air intérieur.
Modules de communication
Dans toute cette section, nous parlerons des techniques de communication
entre (sous-)systèmes séparés par des distances allant en gros du mètre au
kilomètre. Ceci exclut donc des protocoles comme I2C ou SPI, qui sont
spécifiquement conçus pour des communications sur un même circuit imprimé,
ou à la rigueur des liaisons filaires très courtes.
Communications radio
Plusieurs technologies peuvent être utilisées pour établir des liaisons
radio entre différents systèmes :
Le plus simple est d'utiliser une paire de modules (un émetteur
et un récepteur) de communication en modulation ASK dans les bandes
433MHz ou 868MHz, soumises à certaines restrictions. Il suffit de
relier chaque module à la ligne correspondante d'un UART et la
présence du module radio est totalement transparente du point de
vue du code. Du fait de la possibilité d'interférences, vous devez
cependant prévoir a minima une détection d'erreur. Ces modules sont
bien adaptés au cas d'une transmission unidirectionnelle, par exemple
pour contrôler une voiture radiocommandée. Si on souhaite contrôler
plusieurs récepteurs indépendamment, il faut le gérer par programme
en assignant une adresse à chaque récepteur.
Pour établir une liaison point-à-point bidirectionnelle entre
2 systèmes, on peut utiliser des modules Bluetooth SPP. Leur utilisation n'est pas
transparente car il faut apparier les 2 modules et les configurer
en utilisant des commandes AT (voir leur documentation), mais
une fois ceci réglé, ils se comportent comme une liaison série
normale. On peut utiliser 2 modules pour connecter 2 systèmes,
ou un seul module pour connecter un système embarqué à un PC.
Il existe de nombreux modules de ce type, les plus intéressants
étant à mon avis : HC-05, AT-09 ou HM10 (les 2 sont identiques),
HC-04, HC-08D. Ils acceptent une large plage de tension d'alimentation,
mais certains d'entre eux n'acceptent que des signaux de contrôle en
3.3V, donc il faut en tenir compte lors de la conception (par exemple
alimenter tout le système en 3.3V, ou utiliser des "level shifters"
si le micro-contrôleur est alimenté en 5V).
Le nRF24L01+ et ses nombreux clones (ex. BK2425, Si24R1) utilise
la même bande de fréquences que Bluetooth (2.4GHz) pour permettre
des échanges bidirectionnels entre un maître et plusieurs esclaves
(6 canaux). Il demande une programmation spécifique, mais elle est
assez simple. L'interfaçage avec le micro-contrôleur se fait via
SPI.
Il existe de nombreux modules permettant de connecter un
micro-contrôleur à un réseau WiFi, les plus connus étant basés
sur les célèbres ESP8266 et ESP8285. L'interfaçage avec le
micro-contrôleur est fait via un UART et la configuration du
module utilise des commandes AT, de manière comparable aux
modules Bluetooth.
Si vous souhaitez faire des connections à longue distance,
vous pourrez vous intéresser aux modules LoRa.
N'espérez cependant pas de miracles : les débits sont
très faibles et la portée va de quelques kilomètres à quelques
dizaines si les conditions sont très favorables. C'est cependant
une bonne solution si vous souhaitez gérer un réseau étendu
de télémétrie ou d'alertes, par exemple. Notez que les modules
LoRa utilisent les bandes de fréquence 433MHz et 868MHz qui sont
soumises à certaines restrictions.
Notez également que certains micro-contrôleurs intègrent directement
un périphérique BLE (Bluetooth Low Energy) et/ou WiFi (ex. CH582, CH32V208,
ESP32-C3, ESP32-C6, BL602, BL616), voire même IEEE 802.15.4 pour la
domotique (ex. BL702, ESP32-C6, ESP32-H2, BL616). Dans ce cas, vous
n'avez donc pas besoin d'un module de communication externe.
Réglementation
L'exploitation des radiofréquences est un domaine très strictement
réglementé et contrôlé. Si vous émettez des signaux radio, vous devez
donc vous renseigner sur les contraintes que vous devez respecter. En
France, l'organisme compétent est l'Agence Nationale des FRéquences
(ANFR). L'ANFR publie sur son site le Tableau National de Répartition
des Bandes de Fréquences (TNRBF) dont vous trouvez la dernière version
consolidée sur cette page.
Certaines bandes de fréquences sont librement utilisables moyennant
le respect de certaines contraintes. C'est notamment le cas des bandes
433MHz, 868MHz, 2.4GHz et 5.8GHz.
Dans la version du 13 mars 2024 du TNRBF, c'est l'annexe 7 "Fréquences
utilisables pour certains matériels de faible puissance et de faible
portée" page 257 qui vous intéresse. Vous y trouverez notamment que :
Dans la bande de 433.05 à 434.79 MHz, pour des applications
autres que vocales, La puissance de votre émetteur ne doit pas
dépasser 10mW et le coefficient d'utilisation est au maximum de 10%.
Dans la bande de 868 à 868.6 MHz, la puissance de votre
émetteur ne doit pas dépasser 25mW et le coefficient d'utilisation
est au maximum de 1%.
Dans la bande de 2400 à 2483.5 MHz, la puissance de votre
émetteur ne doit pas dépasser 10mW.
Dans la bande de 5725 à 5875 MHz, la puissance de votre
émetteur ne doit pas dépasser 25mW.
Pour ces 2 dernières bandes, les modules que vous achetez sont
conçus pour respecter la réglementation, donc vous n'avez pas de
souci à vous faire. Par contre, pour les 2 premières, il est de
votre responsabilité de respecter le coefficient d'utilisation.
Le coefficient d'utilisation est défini page 5 de cette
décision comme le rapport entre le temps d'émission observé
sur la durée de la période d'observation (1h). Un coefficient
d'utilisation de 10% signifie donc que vous ne pouvez pas
émettre plus de 6 minutes au total par tranche de 1h. Un
coefficient de 1% correspond à 36 secondes d'émission par
tranche de 1h.
Autres modes de communication
Si une liaison série filaire convient à votre application,
vous pouvez utiliser un adaptateur RS-232, RS-485 ou RS-422.
Ces 2 derniers protocoles sont différentiels et ont une bonne immunité
au bruit, ce qui rend possible des liaisons assez longues dans un
environnement électrique très perturbé (ex. usine). La distance
maximale entre les 2 équipements les plus distants dépend de la
vitesse de communication.
RS-232 et RS-422 sont des protocoles point-à-point full-duplex
(2 équipements peuvent communiquer simultanément dans les 2 sens),
alors que RS-485 est multi-points half-duplex (un maître communique
avec plusieurs esclaves reliés au même bus). Le protocole MODBUS
RTU, utilisé par les automates programmables, repose sur RS-485.
S'il vous convient vous pouvez l'utiliser pour vos propres projets
au lieu de réinventer la roue.
Si vous avez besoin d'un bus plus sophistiqué entre
différents sous-systèmes (ex. dans un robot, un véhicule), vous
pouvez utiliser les protocoles CAN ou LIN. Ceux-ci ont été
créés pour l'automobile et ils sont supportés par de nombreux
micro-contrôleurs, dont le CH32V307 que nous utiliserons plus tard.
Beaucoup de micro-contrôleurs, dont le CH32V307, disposent d'un
ou 2 périphériques USB, généralement USB 2.0 (full speed ou
high speed). Les micro-contrôleurs les plus simples fonctionnent
seulement en mode device alors que les plus puissants supportent
aussi les modes host et/ou OTG.
Certains micro-contrôleurs, comme le CH32V307, supportent également
Ethernet, ce qui vous permet de dialoguer via TCP/IP avec
d'autres équipements sur un réseau local.
Enfin, vous pourriez vouloir communiquer par liaison infra-rouge.
Il y a différentes possibilités (ex. IrDA), mais le cas de figure le
plus fréquent est celui de la communication avec une télécommande.
Vous trouverez sur AliExpress pour environ 1€ des petites télécommandes
utilisant le protocole NEC, très facile à utiliser à la fois sur le
plan matériel et logiciel. Vous trouverez un exemple d'implémentation
avec le CH32V003 ici.