URL:     https://linuxfr.org/users/epeios/journaux/de-l-iot-dans-la-poche
Title:   De l'IoT dans la poche
Authors: Claude SIMON
Date:    2026-07-17T09:54:01+02:00
License: CC By-SA
Tags:    électronique, diy, iot, python3, android, ios et esp32
Score:   6


# Introduction

Je m'intéresse depuis quelques temps à des microcontrôleurs comme le Raspberry Pico (2) W, l'ESP8266, l'ESP32… surtout pour voir ce qu'on l'on pouvait tirer du Wi-Fi dont ils sont équipés.

De fil en aiguille, je me suis retrouvé avec un kit mécatronique de poche, alimenté par batterie, et qui, grâce au Wi-Fi, est pilotable à distance, notamment avec un smartphone.

J'ai animé quelques ateliers de programmation centrés sur ces kits, majoritairement à destination de collégiens, qui ont connus un franc succès.

C'est de l'électronique tout ce qu'il y a de plus basique et s'appuyant sur des composants très faciles à trouver. Si vous ne savez pas quoi faire lors de vos longues ~~soirées d'hiver~~ journées de canicule…

> NOTA : en cliquant sur les photos ci-dessous, vous aurez accès à leur version agrandie.

# Présentation du kit

En cliquant sur l'image ci-dessous, vous aurez accès à une petit vidéo (hébergé sur une instance [PeerTube](https://fr.wikipedia.org/wiki/PeerTube)) qui montre les différents composants du kit en action.

[![](https://tubefree.org/lazy-static/thumbnails/6b1d33a8-e5da-4ef7-a599-da7a4977bee8.jpg)](https://tubefree.org/w/wbgcbQz3wo6KVVyvGRsk9N)

Le kit est animé par une application Python qui tourne sur mon smartphone grâce à [Termux](https://termux.dev/). Bien entendu, ce type d'application tourne sans problème sur un ordinateur de type PC avec un environnement de développement Python tout ce qu'il y de plus classique.
À noter que l'on peut également faire tourner ce type d'application sous iOS, grâce à [iSH](https://ish.app/).

Voici une photo avec presque tous les composants constituant ce kit. Il manque tout ce qui est relatif aux servomoteurs, qui sont un ajout de dernière minute (pour rappel, cliquer sur une photo vous donne accès à sa version agrandie).

[![](https://zelbinium.org/Kits/Ravel/Bits_thumb.webp)](https://zelbinium.org/Kits/Ravel/Bits.webp)

Voyons maintenant les composants en détails.

# Le microcontrôleur

Le microcontrôleur est un ESP32-C3 SuperMini. En plus du firmware [MicroPython](https://fr.wikipedia.org/wiki/MicroPython), il y a un programme maison qui sera abordé plus bas.

[![](https://zelbinium.org/Kits/Ravel/ESP32_thumb.webp)](https://zelbinium.org/Kits/Ravel/ESP32.webp)

# Le buzzer

Le buzzer est un buzzer ***passif***, dont on peut modifier la fréquence du son émis, contrairement au buzzer ***actif***. Il sera piloté par un signal [PWM](https://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion). Accessoirement, on peut influer dans une certaine mesure sur le timbre et le volume du son émis en jouant sur le ratio du signal PWM.

[![](https://zelbinium.org/Kits/Ravel/Buzzer_thumb.webp)](https://zelbinium.org/Kits/Ravel/Buzzer.webp)

# L'anneau RGB

L'anneau utilisé est constitué de 8 DELs RVB WS2812. Attention : il en existe deux tailles, comme on peut le voir ci-dessous :

[![](https://zelbinium.org/Kits/Ravel/RingSizes_thumb.webp)](https://zelbinium.org/Kits/Ravel/RingSizes.webp)

Le plus petit à l'avantage d'avoir un diamètre intérieur qui correspond pile poil au diamètre d'un buzzer. On va donc pouvoir enfiler l'anneau sur le buzzer et assurer son maintien en le coinçant légèrement contre l'ESP32.

L'anneau vient généralement soudé avec deux câbles (en-haut sur la photo). Ces deux câbles sont trop longs et trop rigides pour pouvoir être utilisés avec ce kit. Le câble de sortie, qui permet de brancher un autre anneau, est, de plus, inutile. Il convient donc de les dessouder et de remplacer celui d'entrée par un autre modèle (en-bas sur la photo).

[![](https://zelbinium.org/Kits/Ravel/RingCables_thumb.webp)](https://zelbinium.org/Kits/Ravel/RingCables.webp)

Le câble est figé par de la résine UV pour limiter les risques de rupture lors de sa manipulation.

Chacune des couleurs (RVB) peut prendre une valeur de 0 à 255, mais seules les valeurs les plus basses sont intéressantes car, plus les valeurs sont élevées, plus la différence de luminosité perçue entre deux valeurs consécutives est faible. Au final, je n'utilise que la plage des valeurs de 0 à 31.

# L'écran OLED

Il s'agit d'un *SSD1106*, d'une taille de 0,96 pouces et d'une définition de 128 par 64. Il se pilote par [I2C](https://fr.wikipedia.org/wiki/I2C).

[![](https://zelbinium.org/Kits/Ravel/OLED_thumb.webp)](https://zelbinium.org/Kits/Ravel/OLED.webp)

# L'afficheur LCD

Il s'agit d'un afficheur LCD1602 de 2 lignes de 16 caractères. Il existe en plusieurs couleurs d'affichage, par exemple noir sur fond vert, ou encore blanc sur fond bleu…

[![](https://zelbinium.org/Kits/Ravel/LCD_thumb.webp)](https://zelbinium.org/Kits/Ravel/LCD.webp)

On lui adjoint un PCF8574, ce qui permet de le piloter avec [I2C](https://fr.wikipedia.org/wiki/I2C). Ce composant n'est pas placé sur un support, mais soudé directement sur le PCB pour des questions d'encombrement. Pour ce faire, ses pattes sont redressées (en-bas sur la photo) et soudées directement sur le PCB.

[![](https://zelbinium.org/Kits/Ravel/PCF8574Pins_thumb.webp)](https://zelbinium.org/Kits/Ravel/PCF8574Pins.webp)

Pour pouvoir régler le contraste de l'afficheur une fois le composant soudé, il faut percer le PCB au niveau du potentiomètre du module PCF8574.

# Les servomoteurs

J'utilise des servomoteurs de 180° référencé SG90 qui ont un plage de tension de fonctionnement acceptant le 5V.

[![](https://zelbinium.org/Kits/Ravel/Servo_thumb.webp)](https://zelbinium.org/Kits/Ravel/Servo.webp)


Ces servomoteurs peuvent être à l'origine de pics de courant qui occasionnent des chutes de tensions provoquant l'extinction du kit ou le redémarrage du microcontrôleur. Pour éviter cela, un condensateur électrolytique de 2200µF/10V est placé entre le 5V et le GND. Ce condensateur a un diamètre de 1 cm, ce qui permet de le glisser sous l'afficheur LCD. Les condensateurs de plus de 2200µF et/ou 16V sont moins pratiques avec ce kit de par leur diamètre de minimum 13 mm.

# Le booster

Le booster prend en entrée les 3.7 V de la batterie Li-Po et sort du 5V (2A). Le modèle utilisé a, de plus, une entrée K qui permet de piloter la mise sous/hors tension du kit. Ce booster est équipé d'une prise USB-C qui permet de recharger la batterie. En option, il y a une prise USB-A (non visible sur la photo, car placée en-dessous du booster) qui peut servir d'alimentation.

[![](https://zelbinium.org/Kits/Ravel/Booster_thumb.webp)](https://zelbinium.org/Kits/Ravel/Booster.webp)

Là aussi, les câbles seront figés par de la résine UV.

# Autres composants

Voici les autres composants également visible sur la photo d'ensemble.

Il y a une batterie Li-Po 3.7 V de 2500mAH, Elle tient facilement plusieurs jours.

Il y a un bouton poussoir (j'ai pris un modèle pour souris, à la fois pour sa taille réduite et sa durabilité) qui est placé entre l'entrée K du booster et le GND. Un appui met le kit sous tension, deux appuis le met hors tension.

Il y a également un interrupteur à bascule qui est placé sur la sortie 5V du booster, avant le condensateur. Utile pour éviter que le kit ne demeure sous tension lorsque l'on met la batterie en charge.

Les dimensions du PCB sont de 8 cm par 6 cm.

La pochette est une pochette pour cartes Uno.

À titre indicatif, pour relier les différents composants, j'ai utilisé un fil monobrin AWG26.

# Vues d'ensemble

Voici le PCB avec les supports pour les différents composants. Notez l'orifice pour accéder au potentiomètre permettant de régler le contraste de l'afficheur LCD.

[![](https://zelbinium.org/Kits/Ravel/PCBSockets_thumb.webp)](https://zelbinium.org/Kits/Ravel/PCBSockets.webp)

Même photo avec, en plus, les différents composants qui sont soudés directement sur le PCB, plus les câbles des servomoteurs et le condensateur compensant les chutes de tension occasionnés par les servomoteurs.

[![](https://zelbinium.org/Kits/Ravel/PCBSolderedHidden_thumb.webp)](https://zelbinium.org/Kits/Ravel/PCBSolderedHidden.webp)

Et enfin, le kit entièrement peuplé.

[![](https://zelbinium.org/Kits/Ravel/Kit_thumb.webp)](https://zelbinium.org/Kits/Ravel/Kit.webp)

# Câblage

Voici le schéma électronique du kit.

[![](https://zelbinium.org/Kits/Ravel/Diagram_thumb.webp)](https://zelbinium.org/Kits/Ravel/Diagram.webp)

Ce schéma et les indications ci-dessus devrait permettre la réalisation du kit, si l'on est un tant soit peu familier avec l'électronique et la manipulation d'un fer à souder.
On peut également utiliser des [*breadboard*](https://fr.wikipedia.org/wiki/Platine_d%27exp%C3%A9rimentation) : les différents composants s'enfichent parfaitement dessus et on peut alimenter le circuit via la prise USB-C du microcontrôleur…

# La partie logicielle

Le dépôt <https://github.com/epeios-q37/ucuq-python> contient à la fois le programme à installer sur le microcontrôleur et le module *Python* permettant de piloter à distance ce kit. Vous y trouverez également le code source de différentes applications pilotant ce kit, notamment celle ayant servi pour les vidéos. Ce dépôt détaille également comment installer et configurer le logiciel destiné au microcontrôleur.
Le kit et la module *Python* se connectent tous deux à un *daemon* dont le code source est dans le dépôt <https://github.com/epeios-q37/ucuq>. Ce dépôt n'est utile que pour ceux qui veulent utiliser leur propre serveur en lieu et place de celui mis à disposition en libre accès.

La description de l'API se trouve à l'adresse <https://zelbinium.org/fr/ucuq/api/>. Pour simplifier son utilisation, cette API cache volontairement tous les aspects liés au matériel (protocoles de communication, broches utilisées…). Cette API s'appuie sur des classes et des fonctions avec lesquelles on spécifie les paramètres matériels, ce qui donne la possibilité de créer ultérieurement ses propres montages.
Vous trouverez d'autres renseignements à propos du kit à <https://zelbinium.org/fr/ucuq>.

# Bonus

Deux vidéos supplémentaires sur ce kit :

- <https://tubefree.org/w/3MzzYFV25snQos4XmV7RuJ> (pas de son) ;
- <https://tubefree.org/w/a1e1CoT1W4EqEKHkfB7GLL> (le son est une composante essentielle de cette vidéo).

