Retour aux projets
Illustration stylisée de l'écran rond de Dum-E et de sa grille de perception spatiale
personnelEn cours

Dum-E, le deskpet fait maison

Création d'un compagnon robotique autonome autour de l'ESP32-S3

Dum-E est mon projet personnel à long terme en robotique : un petit quadrupède conçu pour percevoir son environnement, réagir avec un visage expressif, se déplacer de façon organique, écouter, parler et recevoir des mises à jour OTA. Cette page en est le hub et évoluera à chaque phase de développement.

Aperçu du comportement

Un visage qui réagit

Cette vidéo montre le comportement implémenté : la grille de profondeur sélectionne une direction, Brain la transforme en consigne de regard et LVGL interpole les pupilles vers la cible.

L'article de la phase 1 détaille la classification du capteur, l'animation LVGL et les files de messages FreeRTOS.

Cahier des charges cible

Implémenté

Perception 3D

Un capteur Time-of-Flight VL53L5CX transforme une grille de profondeur en neuf directions spatiales.

  • • Mesure 4 × 4 à 4 Hz
  • • Interruption avec repli à 100 ms
Implémenté

Écran expressif

Un écran rond GC9A01 de 240 × 240 pixels affiche des expressions vectorielles et un regard animé.

  • • LVGL 9.5
  • • Deux bandes SPI DMA de 240 × 40 pixels
Planifié

Mouvement du quadrupède

Quatre servos MG90S, interpolation non bloquante et séquences de mouvements organiques.

  • • Rail d'alimentation 5 V dédié
  • • Tâche moteur cible à 50 Hz
Planifié

Interaction vocale

Des voies microphone et haut-parleur I2S pour le wake-word et le retour audio.

  • • Buffers audio en PSRAM
  • • Détection locale de mots-clés
Planifié

Maintenance sans fil

Deux partitions applicatives préparent des mises à jour OTA sûres.

  • • Partitionnement prêt
  • • Deux slots OTA de 4 Mo
  • • Intégration runtime planifiée

Architecture système

Les capteurs périphériques transmettent leurs données via des files de messages FreeRTOS. Le thread Brain réceptionne ces informations afin d'émettre les commandes correspondantes.

Perception

VL53L5CX - zone de détection via I2C

Centrale inertielle

LSM6DSOX - Tilt et mouvement via I2C

Microphone

INMP441 - Acquisition audio via I2S

File de messages de capteurs

Brain

Thread centrale de contrôle

File de message de commandes

Afficheur LCD

GC9A01 - Avec LVGL via SPI (DMA)

Servomoteurs

MG90 - Mouvements via PWM

Sortie audio

I2S - Haut-parleur

Réseau et OTA

Wi-Fi - Deux slots firmware

● Firmware actuel

Ce qui fonctionne déjà

Le firmware sépare la perception, le comportement et le rendu. Brain_thread est l'unique propriétaire de l'état comportemental, et seule la tâche LVGL manipule l'écran.

Perception

Pilote VL53L5CX, mesures sur interruption et classification spatiale.

Comportement

Un contrôleur événementiel déterministe sélectionne le regard et des séquences faciales.

Rendu

Les poses vectorielles sont interpolées puis transférées au GC9A01 en six bandes via DMA.

Les prochaines briques

Le même modèle de files de messages est prévu pour intégrer les commandes des moteurs, l'audio, le réseau et l'OTA, sans que les contraintes temporelles des périphériques ne contaminent la logique comportementale.

Mouvement

Un thread dédié aux consignes des servomoteurs.

Audio

Un thread pour le wake-word et un autre pour la sortie audio, reliés par des interruptions.

Autonomie

Une machine à états finale pour coordonner les systèmes de perception, d'expression, de mouvement, audio et de maintenance sans fil.

Phases de développement

Phase 1 — Août 2026

Vision 3D et visage expressif

Coupler un capteur Time-of-Flight à un visage vectoriel représenté sur un écran LCD.

Ouvrir cette phase

Phase 2 — planifiée

Cinématique et gestion de puissance

Alimenter quatre servos sans brownout et produire des mouvements quadrupèdes fluides et non bloquants.

Phase 3 — planifiée

Audio I2S et wake-word

Acquisition par microphone, gestion du haut-parleur, de la charge processeur et de la mémoire PSRAM.

Phase 4 — planifiée

Machine à états et OTA

Réunir tous les sous-systèmes et mettre à jour le robot sans figer son comportement.