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