2026-10-23 : Tentative de code Steppers PAMI
Type de séance : Planifiée + libre · Durée : 7h
Réalisé durant la scéance :
Reconfiguration du Firwar
Tout d’abords, nous nous sommes rendu compte avec Mr Adrien BRACQ, que le firware PAMI n’était pas configuré avec le bon récepteur pour les téléversements. Nous avons donc remplacé la configuration esp32-m1-devkit par seeed_xiao_esp32s3.
Vérification des PIN
Dans un second temps, Adrien m’a indiqué que les pins d’un Esp32 ne correspondent pas forcément au ports physique, nous avons donc procédé à une vérification et modification des pins afin d’être sûr de bien piloter les bons composants au bon moment.
Tentative de code des Steppers
J’ai ensuite tenté de programmer les steppers en vain. Le problème semble venir des PINS STEP. Je n’ai pas encore pû déterminer la cause de ce problème. je n’ai pas commit le code étant donné qu’il n’est pas fonctionnel. Voici néanmoins le code tel qu’il se trouve actuellement dans ma version du Firmware.
// config.h
#pragma once
// PIN moteurs pas-à-pas
#define RIGHT_STEP_PIN 1
#define LEFT_STEP_PIN 4
#define RIGHT_DIR_PIN 2
#define LEFT_DIR_PIN 3
// PIN activation des moteurs pas-à-pas
#define ENABLE_PIN 7
// Si un moteur tourne dans le sens inverse, mettre sur "true"
#define LEFT_MOTOR_INVERTED false
#define RIGHT_MOTOR_INVERTED false
#define WHEEL_DIAMETER_MM 62.4f // Diamètre exterieur des roues (en mm)
#define WHEEL_BASE_MM 96.6f // Distance entre les deux points de contact des roues (en mm)
#define MOTOR_STEPS_PER_REV 200 // Pas par tour de moteur (1.8 deg/pas motor)
#define MICROSTEPS 16 // Microstepping réglé sur le TMC2209
#define GEAR_RATIO 1.0f // 1.0 = pas de réduction
#define TMC2209_MS1_VALUE HIGH // HIGH for 1/16
#define TMC2209_MS2_VALUE HIGH // HIGH for 1/16
// PIN des servomoteurs
#define SERVO1 5
#define SERVO2 6
// PIN tirette
#define TIRETTE_PIN 9
#define SWITCH_PIN 8
// PIN du télémètre à ultrason
#define TRIGER_PIN 44
#define ECHO_PIN 43
// intervalles
#define SONAR_PING_INTERVAL 33
// main.cpp
#include <Arduino.h>
#include <Adafruit_PWMServoDriver.h>
#include <FastAccelStepper.h>
#include <ESP32Servo.h>
#include <TMCStepper.h>
#include <Wire.h>
#include "config.h"
FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *leftmotor;
FastAccelStepper *rightmotor;
Servo servo1;
void setup() { // put your setup code here, to run once:
Serial.begin(115200);
delay(1000);
servo1.setPeriodHertz(50); // fréquence habituelle des servos
servo1.attach(SERVO1, 500, 2400); // GPIO, impulsions min, max en microsecondes
servo1.write(90); // position centrale
delay(1000); // attendre 1 secondes
// Initialisation FastAccelStepper
engine.init();
Serial.println("Motor init");
delay(500);
leftmotor = engine.stepperConnectToPin(LEFT_STEP_PIN); // ne fonctionne pas
rightmotor = engine.stepperConnectToPin(RIGHT_STEP_PIN); // ne fonctionne pas
Serial.println("STEP Pins connected");
delay(500);
leftmotor->setDirectionPin(LEFT_DIR_PIN); // fonctionne ?
rightmotor->setDirectionPin(RIGHT_DIR_PIN); // fonctionne ?
Serial.println("DIR Pins connected");
delay(500);
leftmotor->setEnablePin(ENABLE_PIN); // fonctionne ?
rightmotor->setEnablePin(ENABLE_PIN); // fonctionne ?
Serial.println("Steppers enabled");
servo1.write(0);
}
void loop() {
leftmotor->move(1600);
rightmotor->move(1600);
delay(5000);
leftmotor->move(-1600);
rightmotor->move(-1600);
delay(5000);
Serial.println("Boucle");
servo1.write(0);
delay(2000);
servo1.write(90);
delay(2000);
servo1.write(180);
delay(2000);
servo1.write(90);
delay(2000);
}
A noter que le setup actuel ne permet même pas de faire fonctionner le servomoteur pourtant apperement sans lien direct. Le servomoteur fonctionne par contre correctement lorsqu’on enlève toute les commandes relatives au setup des steppers.
Conclusion de la scéance :
Cette session a été assez frustrante vu que je n’ai pas réussi à régler le problème. Néanomoins, je vais profiter mes “vacances” afin de réfléchir au prblème et tester différentes solutions à la rentrée.
A faire lors de la prochaine scéance :
| Type de tâche | Description | Priorité |
|---|---|---|
| Prgrammation | Trouver le problème avec les stepper et le régler pour pouvoir les piloter | 1 |
| Conception | Brainrainstorm à propos du Graal | 2 |
| Rangement | Conception des slots pour les outils de la servante | 3 |