Bike ML Assistant — ESP32 simulation

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

Components

Sketch code

// ============================================================
// AI RIDING ASSISTANCE SYSTEM
// FINAL MASTER FIRMWARE
//
// Current mode:
//   VIRTUAL SENSOR = true
//
// Main modules:
//   Speed
//   Frequency
//   Distance
//   Fuel
//   Mileage
//   Refuel
//   Trip reset
//   Tilt
//   Vehicle state
//   Fuel state
//   Safety state
//   LED
//   Buzzer
//
// REAL-BIKE MODE:
//   Set VIRTUAL_SENSOR_MODE = false
//
// IMPORTANT:
//   Current wheel diameter and PPR are virtual/calibration
//   values. Do NOT treat them as confirmed real-bike values.
// ============================================================

#include <Arduino.h>

// ============================================================
// MODE
// ============================================================

const bool VIRTUAL_SENSOR_MODE = true;


// ============================================================
// PINS
// ============================================================

const int SPEED_INPUT_PIN = 34;
const int TILT_PIN        = 35;

const int LEFT_BUTTON_PIN  = 18;
const int RIGHT_BUTTON_PIN = 19;

const int WARNING_LED_PIN = 25;
const int STATUS_LED_PIN  = 26;

const int BUZZER_PIN = 4;


// ============================================================
// VIRTUAL SPEED
// ============================================================

const float VIRTUAL_SPEED_KMH = 60.0;


// ============================================================
// WHEEL / SENSOR CALIBRATION
// ============================================================

const float WHEEL_DIAMETER_M = 0.70;

const float WHEEL_CIRCUMFERENCE_M =
    PI * WHEEL_DIAMETER_M;

// Virtual calibration value only.
// Real-bike PPR must be measured later.
const float PULSES_PER_WHEEL_REV = 2.0;


// ============================================================
// PETROL
// ============================================================

const float PETROL_PRICE_PER_LITRE = 108.71;

const float INITIAL_FUEL_RUPEES = 200.0;

const float REFUEL_AMOUNT_RUPEES = 100.0;


// ============================================================
// FUEL EFFICIENCY MODEL
// ============================================================

const float EFFICIENCY_LOW_SPEED = 60.0;
const float EFFICIENCY_NORMAL     = 55.0;
const float EFFICIENCY_HIGH       = 48.0;
const float EFFICIENCY_VERY_HIGH  = 40.0;

const float SPEED_BOUNDARY_TOLERANCE = 0.05;


// ============================================================
// SAFETY
// ============================================================

const float SPEED_WARNING_KMH = 80.0;

const float TILT_WARNING_DEG = 35.0;
const float TILT_DANGER_DEG  = 50.0;

const float MOVING_THRESHOLD_KMH = 1.0;


// ============================================================
// FUEL STATES
// ============================================================

const float FUEL_LOW_PERCENT      = 20.0;
const float FUEL_CRITICAL_PERCENT = 10.0;


// ============================================================
// SPEED FILTER
//