Réaliser vos propres projets

Introduction

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 :

  1. Repérez le côté de l'adaptateur correspondant au boîtier de votre CMS et placez-le vers le haut.

  2. Mettez très peu de pâte à souder sur les emplacements où viendront reposer les pattes de votre CMS.

  3. Positionnez soigneusement votre CMS sur l'adaptateur en vous aidant au besoin de brucelles.

  4. Déposez l'adaptateur sur la plaque chauffante sans faire bouger le CMS.

  5. 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.

  6. Éteignez la plaque chauffante et disposez délicatement avec vos brucelles l'adaptateur sur une petite planche de bois pour le laisser refroidir.

  7. 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.


Copyright (c) 2025 Vincent DEFERT - Tous droits réservés