Présentation du projet
Contexte
Ce projet s’inscrit dans la continuité du projet Machine that draws que vous avez réalisé précédemment. L’objectif est de concevoir et fabriquer une carte électronique dédiée pour remplacer le contrôleur de drivers.
La carte intégrera :
- ESP32 comme microcontrôleur principal
- 2 drivers A4988 pour piloter les moteurs pas-à-pas X et Y
- Lecteur de carte SD pour stocker les fichiers G-code ou dessins
- Écran OLED pour afficher l’état, les menus et la progression
- Connecteurs pour moteurs, alimentation et extension
- Gestion des alimentations
Objectifs pédagogiques
À l’issue de ce projet, vous serez capables de :
- Concevoir un schéma électronique complet avec KiCad
- Réaliser le routage d’un PCB multicouche
- Intégrer des bus de communication (I2C, SPI) sur un même PCB
- Gérer les contraintes de puissance (découplage, largeur de pistes)
- Souder des composants CMS et traversants
- Déboguer une carte électronique et valider son fonctionnement
- Documenter un projet technique de A à Z
Ce projet se réalise avec les mêmes équipes que le projet Machine that draws. Organisez-vous pour répartir les tâches : conception schématique, routage PCB, firmware, tests et documentation. La collaboration est essentielle à la réussite du projet.
Cahier des charges
Spécifications fonctionnelles
La carte doit permettre de :
-
Piloter 2 moteurs pas-à-pas (axes X et Y) via drivers A4988
- Stocker des fichiers sur carte SD (optionnel)
- Log des actions effectuées lors du fonctionnement de la solution
- Format FAT32
- Détection d’insertion de carte (optionnel)
- Lancement de fichier G-code (optionnel)
- Afficher des informations sur écran OLED (optionnel)
- État de la machine (idle, running, error)
- Progression (pourcentage, ligne en cours)
- Menus de navigation (optionnel)
- Détecter les fins de course via limit switches
- 4 capteurs mécaniques (X min, X max, Y min, Y max)
- Référencement automatique des axes (homing)
- Protection contre les déplacements hors limites
Spécifications techniques
| Paramètre |
Valeur |
Remarques |
| Alimentation moteurs |
12V ou 24V DC |
Alimentation externe pour moteurs |
| Alimentation servomoteur et ESP32 |
5V |
Fournie par le régulateur R-78E5.0-1.0 |
| Logique |
3.3V |
Fournie par le régulateur de la carte ESP32 |
| Courant moteurs |
0.5A à 1.5A par phase |
Réglable via Vref |
| Interface I2C |
SDA=GPIO8, SCL=GPIO9 |
Écran OLED |
| Interface SPI |
SPI2 (GPIO 18/19/11/5) |
Carte SD |
| GPIOs fins de course |
GPIO 1, 2, 3, 4 |
Limit switches |
| Microcontrôleur |
ESP32 S3 UNO |
Board : esp32-s3-devkitc-1 |
| Dimensions PCB |
Format shield arduino uno |
Pour faciliter l’intégration avec l’ESP32 format Arduino UNO |
| Connecteurs |
Screw terminals |
Bouton arrêt urgence |
| Connecteurs |
Barrel Jack |
Alimentation |
| LEDs |
SMD 1206 |
Témoins d’alimentation |
Bill of Materials (BOM)
Composants principaux
| Désignation |
Référence |
Quantité |
Remarques |
| ESP32 S3 UNO |
ESP32 S3 UNO |
1 |
- |
| Driver A4988 (module) |
StepStick compatible |
2 |
- |
| Écran OLED 0.96” I2C |
SSD1306 128×64 |
1 |
- |
| Socket SD push-push |
- |
1 |
- |
| Moteur NEMA 17 |
- |
2 |
- |
| Régulateur 5V |
R-78E5.0-1.0 |
1 |
- |
| Limit switches (fins de course) |
Microswitch mécanique |
2 |
X min, X max, Y min, Y max |
Composants passifs
| Désignation |
Valeur |
Package |
Quantité |
Remarques |
| Condensateur céramique |
100nF |
1206 SMD |
10 |
Découplage |
| Condensateur électrolytique |
100µF 35V |
Radial |
2 |
Alimentation moteurs |
| Condensateur céramique |
10µF |
1206 SMD |
- |
Découplage VDD |
| Résistance pull-up |
10kΩ |
1206 SMD |
- |
I2C (SDA, SCL), SD (CS, MISO) |
Connecteurs
| Désignation |
Type |
Quantité |
Remarques |
| Connecteur alimentation |
Barrel Jack |
1 |
VMOT (12-24V) + GND |
| Bouton arrêt urgence |
Bornier à vis 2 pôles (5mm) |
1 |
- |
| Connecteur limit switches |
Pin header femelle (2.54mm) 3 pôles |
2 |
Signal, GND, 3.3V |
| Pin headers mâle |
Header (2.54mm) |
2 |
1A, 1B, 2A, 2B |
| Pin headers mâle |
Header (2.54mm) |
- |
Connexion ESP32 |
Étapes de réalisation
Prototypage et validation
Étape 1.1 : Test du driver A4988 sur breadboard
Objectif : Valider le fonctionnement d’un driver A4988 avec un moteur NEMA 17.
Tutoriel A4988
Tâches :
- Monter le circuit A4988 + ESP32 + moteur sur breadboard
- Régler le Vref pour un courant de 1A (voir tutoriel A4988)
- Tester le code de rotation simple (full step)
- Mesurer la consommation et la température du driver
Livrables : Photo du montage dans votre projet machine that draws
Étape 1.2 : Test de l'écran OLED (optionnel)
Objectif : Afficher du texte et des graphiques sur l’OLED.
Tâches :
- Connecter l’écran OLED en I2C (voir tutoriel SSD1306)
- Afficher : nom du fichier, état, progression
- Créer un menu simple avec 2-3 options (Start, Stop)
Livrables : Documentation du prototypage (photos + code + résultats des tests) dans votre projet machine that draws
Conception du schéma électronique (KiCad)
Étape 2.1 : Schéma bloc et architecture
Objectif : Définir l’architecture globale avant de dessiner le schéma.
Tâches :
- Dessiner un schéma bloc sur papier : ESP32 au centre, blocs I2C/SPI/GPIO autour
- Lister tous les signaux (STEP, DIR, EN, SDA, SCL, MISO, MOSI, SCK, CS, LIMIT_X_MIN, LIMIT_X_MAX, LIMIT_Y_MIN, LIMIT_Y_MAX)
- Définir les alimentations (3.3V, 5V, 12V/24V, GND communs)
- Identifier les découplages critiques (VDD, VMOT)
Avant de commencer le schéma, importez la librairie KiCad du Makerspace Amiens. Elle référence les composants disponibles en stock (ESP32, A4988, SSD1306, connecteurs, passifs…) et vous évitera de chercher ou créer des symboles manuellement. Consultez le tutoriel KiCAD - Importer des librairies avant de démarrer l’étape 2.2.
Étape 2.2 : Schéma électronique dans KiCad
Objectif : Dessiner le schéma complet dans KiCad Eeschema.
Tâches :
- Créer un nouveau projet KiCad
- Placer les symboles : ESP32, A4988 (×2), SSD1306, socket SD
- Ajouter l’alimentation 5V
- Connecter les alimentations (rails 3.3V, rails 5V et VMOT)
- Ajouter les condensateurs de découplage (100nF + 10µF)
- Ajouter les résistances de pull-up (I2C, SPI)
- Ajouter les connecteurs pour les 2 limit switches
- Annoter tous les composants (désignateurs R1, C1, etc.)
Livrables : Fichier KiCad schématique (.kicad_sch) + PDF du schéma dans votre projet machine that draws
Étape 2.3 : Vérification ERC et revue de conception
Objectif : Détecter les erreurs avant le routage.
Tâches :
- Lancer l’ERC (Electrical Rules Check) dans KiCad
- Corriger toutes les erreurs (connexions manquantes, conflits)
- Faire relire le schéma par un autre binôme
Routage du PCB et fabrication
Étape 3.1 : Assignation des empreintes
Objectif : Associer chaque composant à son empreinte physique.
Tâches :
- Ouvrir l’éditeur d’empreintes dans KiCad
- Assigner les footprints : ESP32, résistances/condensateurs 1206, borniers à vis
- Vérifier les dimensions des empreintes (comparer avec les datasheets)
Étape 3.2 : Routage PCB dans KiCad Pcbnew
Objectif : Router le PCB en respectant les contraintes.
Tâches :
- Placer les composants : ESP32 au centre, drivers A4988 proches des connecteurs moteurs, SD et OLED en périphérie
- Placer les connecteurs limit switches sur un côté du PCB
- Router les pistes de puissance (VMOT, GND) en premier (largeur ≥ 1.5mm)
- Router les signaux critiques (SPI, I2C) avec pistes courtes
- Router les signaux limit switches vers les GPIOs
- Placer les découplages au plus près des ICs
- Ajouter un plan de masse (GND) sur la couche inférieure
- Lancer le DRC (Design Rules Check) et corriger les erreurs
Livrables : Fichier KiCad PCB (.kicad_pcb) dans votre projet machine that draws
Étape 3.3 : Génération des fichiers Gerber et commande
Objectif : Générer les fichiers de fabrication et commander les PCB.
Tâches :
- Générer les fichiers Gerber + fichier de perçage (voir tutoriel fabrication PCB)
- Vérifier les fichiers avec un visualiseur Gerber (GerbView ou en ligne)
- Uploader l’ensemble des fichiers Kicad dans votre projet Machine that draws
Livrables : Archive des fichiers Gerber (.zip) dans votre projet machine that draws
Assemblage, tests et validation
Étape 4.1 : Soudure des composants
Objectif : Assembler la carte PCB.
Tâches :
- Souder les composants CMS en premier (résistances, condensateurs 1206)
- Souder les composants traversants (condensateurs électrolytiques, borniers, pin headers)
- Souder les connecteurs de modules (ESP32, A4988, OLED, socket SD)
- Inspecter visuellement toutes les soudures (pas de court-circuit, pas de soudure froide)
Livrables : Photos du PCB assemblé (recto + verso)
Étape 4.2 : Tests de continuité et premier power-up
Objectif : Vérifier l’absence de court-circuit avant la mise sous tension.
Tâches :
- Vérifier au multimètre : continuité GND, isolation 3.3V↔GND, isolation 5V↔GND, isolation VMOT↔GND
- Vérifier la polarité des condensateurs électrolytiques
- Alimenter VMOT (12V) avec une alimentation à courant limité (< 500mA)
Livrables : Rapport de tests (mesures électriques + photos)
Étape 4.3 : Tests fonctionnels et intégration
Objectif : Valider le fonctionnement complet de la carte.
Tâches :
- Créer un projet PlatformIO avec la configuration ESP32-S3-DevKitC-1 (voir section Configuration PlatformIO)
- Uploader le firmware de test (blink, scan I2C, test SD)
- Vérifier l’affichage OLED (adresse I2C détectée : 0x3C)
- Vérifier la détection de la carte SD
- Tester la rotation d’un moteur avec le driver A4988
- Tester les 2 moteurs simultanément
- Tester les 2 limit switches (lecture GPIO, détection appui)
Livrables : PCB fonctionnel + vidéo de démonstration + documentation technique complète (README, schémas, BOM, code source)
Pour programmer l’ESP32 S3 UNO, utilisez la configuration suivante dans votre fichier platformio.ini :
[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
L’ESP32 S3 UNO est basé sur la variante ESP32-S3 au format Arduino UNO. Il est important d’utiliser cette configuration spécifique dans PlatformIO, sinon l’upload et le fonctionnement ne seront pas garantis.
Planning prévisionnel
Le projet se déroule sur 8 séances de 3 heures (24h au total) réparties sur plusieurs semaines.
| Séance |
Durée |
Contenu |
Description |
| 1 |
3h |
Prototypage |
- |
| 2 |
3h |
Conception schématique |
- |
| 3 |
3h |
Routage PCB (1/2) |
Routage des éléments importants : drivers moteurs et régulation |
| 4 |
3h |
Routage PCB (2/2) |
Routage des éléments secondaires : écran et carte SD |
| 5 |
3h |
Assemblage |
- |
| 6 |
3h |
Développement logiciel |
- |
| 7 |
3h |
Correctifs finaux |
- |
| 8 |
3h |
Validation finale et documentation |
- |
Ressources techniques
Ce projet s’appuie sur les tutoriels suivants (à consulter impérativement) :