esp32-drone-marin-ev2-jlassi-c2plus — ESP32 simulation

Projet de Fin d'Etudes

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by iyadh-jlassi01.

Components

Sketch code

// ═══════════════════════════════════════════════════════════════
// TEST ÉVALUATION — Arduino Framework
// Métriques : Réactivité, Fiabilité, Consommation
// EV2 Jlassi Mohamed Iyadh
// ═══════════════════════════════════════════════════════════════

#include <Wire.h>
#include <MPU6050.h>
#include <Servo.h>
#include <ArduinoJson.h>

// ─── Broches ────────────────────────────────────────────────────
#define PIN_SDA           21
#define PIN_SCL           22
#define PIN_SERVO         25
#define PIN_BTN_START     14
#define PIN_BTN_EMERG     13
#define PIN_LED_INIT      33
#define PIN_LED_IDLE      26
#define PIN_LED_MANUAL    27
#define PIN_LED_EMERGENCY 32

// ═══════════════════════════════════════════════════════════════
// VARIABLES DE MESURE
// ═══════════════════════════════════════════════════════════════

// ── Réactivité ────────────────────────────────────────────────
unsigned long t_pid_debut        = 0;
unsigned long t_pid_fin          = 0;
unsigned long t_pid_precedent    = 0;
unsigned long periode_pid        = 0;
long          jitter_pid         = 0;
long          jitter_max         = 0;
long          jitter_min         = 99999;
float         jitter_somme       = 0;
unsigned long nb_cycles          = 0;
unsigned long nb_cycles_conformes= 0;
unsigned long duree_pid_us       = 0;

// ── Temps de réponse commande ─────────────────────────────────
unsigned long t_commande_recue   = 0;
unsigned long t_actionneur       = 0;
unsigned long delai_reponse      = 0;

// ── Délai mise en sécurité ────────────────────────────────────
unsigned long t_urgence_detectee = 0;
unsigned long t_urgence_appliquee= 0;
unsigned long delai_securite     = 0;

// ── Consommation (estimation CPU) ────────────────────────────
unsigned long t_cpu_actif        = 0;
unsigned long t_boucle_debut     = 0;
unsigned long t_boucle_fin       = 0;
float         taux_cpu           = 0;
unsigned long nb_boucles         = 0;

// ── Fiabilité ─────────────────────────────────────────────────
unsigned long nb_erreurs_imu     = 0;
unsigned long nb_lectures_imu    = 0;

// ─── État du drone ───────────────────────────────────────────────
enum DroneMode { INIT, IDLE, MANUAL, EMERGENCY };
DroneMode g_mode = INIT;
float g_roll=0, g_pitch=0, g_yaw=0;
float g_servo_angle=90;
int   g_motor=0, g_heading=0, g_battery=100;
bool  imuOK=false;
float Kp=1.5, Ki=0.01, Kd=0.5;
float pid_integral=0, pid_error_prev=0;

// ─── Matériel ────────────────────────────────────────────────────
MPU6050 imu;
Servo   servoGouvernail;

// ─── Anti-rebond ─────────────────────────────────────────────────
bool bs_prev=HIGH, be_prev=HIGH;
unsigned long t_bs=0, t_be=0;

// ─── Timers planificateur ─────────────────────────────────────────
unsigned long t_imu=0, t_pid=0, t_tel=0, t_bat=0, t_saf=0;
unsigned long t_rapport=0;

// ═══════════════════════════════════════════════════════════════
// DÉCLARATIONS ANTICIPÉES  ← CORRECTIF #1
// ═══════════════════════════════════════════════════════════════
void affic

More projects by iyadh-jlassi01