Skip to content

Releases: openppg/eppg-controller

V7.1

07 Jun 23:34
7281b58
Compare
Choose a tag to compare

[v6.6] Voltage Stability Improvement

21 May 02:26
8800f60
Compare
Choose a tag to compare

Release Summary for OpenPPG Controller

Patch to improve voltage stability on RP2040 hardware. Buzzer caused excessive power draw and has been disabled on certain hardware to minimize brownouts.

What's Changed

  • Dependency updates #63
  • Buzzer disabling #64

Full Changelog: v6.5...v6.6

Note: With focus being shifted to v7.0 please use the version/6 branch for changes to the M0 and RP2040 platform

[v7.0] Support new controller, battery and ESC hardware

21 May 02:48
Compare
Choose a tag to compare

Release Summary for OpenPPG Controller

This introduces comprehensive updates to the ePPG controller firmware, primarily focused on supporting the V2.5 paramotor hardware by migrating to the ESP32-S3 platform and integrating CAN bus communication for enhanced ESC and BMS interaction. The changes also include a significant display system overhaul using LVGL and various improvements to code organization and functionality.

What's Changed

Core Platform & Architecture

  • ESP32-S3 Migration: The primary focus of this update is the shift from RP2040/SAMD to the ESP32-S3. This provides more processing power, additional hardware peripherals, and leverages the FreeRTOS capabilities inherent to the ESP-IDF framework.
  • CAN Bus Integration:
    • ESC Communication: Transitioned from UART-based ESC communication to CAN bus, utilizing our SineEsc library. This allows for more robust and detailed telemetry from the ESC, including multiple temperature readings (MOS, MCU, Capacitor, Motor), voltage, current, and RPM.
    • BMS Communication: Integrated CAN bus communication with ANT BMS systems using our BMS_CAN library. This provides comprehensive battery telemetry such as State of Charge (SoC), individual cell voltages, overall battery voltage/current/power, temperatures, and cycle counts.
  • Build System:
    • Updated platformio.ini to target the espressif32 platform for the new board. (no longer building older SAMD based boards.
    • Added a new Python script (merge-esp.py) to merge ESP32 flash images into a single binary for deployment/updating.

Display System Overhaul with LVGL

  • LVGL Introduction: The display system has been completely revamped using LVGL (Light and Versatile Graphics Library). LVGL is a powerful, open-source embedded graphics library that allows for the creation of modern, visually appealing, and responsive user interfaces on resource-constrained devices.
  • New UI Structure:
    • Implemented a new main screen (lvgl_display.cpp) with distinct sections for battery status, power information, flight data (altitude, armed time), and temperature readings.
    • Utilizes various LVGL widgets like bars, labels, and lines for a structured layout.
    • Introduced icons for cruise control, charging status, and arm failure warnings.
  • Dynamic Updates: The UI is designed to dynamically update based on telemetry data from the ESC, BMS, and altimeter.
  • Theming: Supports light and dark themes, configured through device settings.
  • Splash Screen: A new splash screen is displayed on boot-up.

Code Organization & Refactoring

  • Modularization: Code has been further modularized with new header and source files for distinct functionalities:
    • ble.h/.cpp: Bluetooth Low Energy communication.
    • bms.h/.cpp: BMS CAN communication logic.
    • buzzer.h/.cpp: Buzzer control and melody playback.
    • debug.h/.cpp: Debugging utilities and fake telemetry generation.
    • device_state.h: Enum for device states (Disarmed, Armed, Armed_Cruising).
    • esp32s3-config.h/.cpp: Hardware configuration specific to the ESP32-S3.
    • led.h/.cpp: LED control (including NeoPixel).
    • mode.h/.cpp: Performance mode switching.
    • throttle.h/.cpp: Throttle processing logic.
    • vibration_pwm.h/.cpp: PWM-based vibration motor control.
  • Globals & Structs:
    • Updated globals.h and structs.h to reflect new telemetry data (e.g., detailed ESC temperatures, BMS data, unified battery data structure).
    • Introduced TelemetryState enum (Not Connected, Connected, Stale) for BMS and ESC.
    • Introduced TempComponent and TempState enums for temperature monitoring.
  • Deleted Files: Removed legacy files related to the previous display system (display.h/.cpp), M0/RP2040 configurations, old CRC implementation, and the previous vibration system.
  • Configuration Management:
    • Adapted extra-data.ino to use ESP32 Preferences for storing device settings instead of EEPROM.
    • BLE characteristics added for reading and writing various device settings (e.g., screen rotation, metric units, performance mode, theme, time, timezone).

Functionality Enhancements

  • BLE Introduction:
    • Expanded BLE services and characteristics to expose more device settings and telemetry data.
    • Added characteristics for BMS telemetry, ESC telemetry (voltage, current, RPM, temperatures), and device state.
    • Implemented callbacks for BLE characteristics to update device settings dynamically.
  • Altimeter & Vario:
    • Altimeter logic now includes a circular buffer for altitude readings to calculate vertical speed (work in progress).
    • Added functions to get vertical speed and barometric temperature.
  • Buzzer & Vibration:
    • Buzzer now uses a FreeRTOS queue (melodyQueue) for non-blocking melody playback.
    • Vibration motor control updated to use PWM for more nuanced patterns (vibration_pwm.cpp).
  • Error Handling & Status:
    • Introduced flashing icons for arm failure and cruise control activation failure (e.g., throttle too high).
    • Temperature monitoring now includes distinct warning and critical states for BMS, ESC, and motor components, visually indicated on the display.
  • Versioning: Updated firmware version to 7.0.

Notes

This release represents a significant foundational step in leveraging the ESP32-S3's capabilities for the ePPG controller. While this initial build focuses on core functionality, CAN bus integration, and the new LVGL-based display system, we are actively working to rapidly expand features. Future updates will further harness the enhanced processing power and connectivity of the ESP32-S3 to deliver an even more robust and feature-rich experience for paramotor control and telemetry.

[v6.5] Stability and Refinement

23 Dec 16:55
1869224
Compare
Choose a tag to compare

Release Summary for OpenPPG Controller

This release sharpens performance, boosts reliability, and refines the user experience for a better experience in the air and on the ground.

What's Changed

Configurable Controller Information Requests

PR #58
The config client now explicitly requests controller information instead of sending it automatically upon connection.

  • Improves stability by allowing recovery commands (e.g., reboot to bootloader) to be sent even if an error occurs during initial config transfer.

Display and Vibration Motor Enhancements

PR #53

Display Improvements:

  • Added an animated “OpenPPG” text to the splash screen for a more polished user experience.

Vibration Motor Refactoring:

  • Tuned vibration strength for stronger, more precise feedback.
  • Introduced new vibration sequences.
  • Cleaned up the vibration motor code in preparation for supporting different vibration drivers.

ESC Integration and Build Updates

PR #54

  • Refactored ESC-related functionality into dedicated ESC.h and ESC.cpp files, improving clarity and maintainability.
  • Streamlined telemetry handling, preparing for support of different ESCs.

State Management Overhaul

PR #56

  • Introduced a DeviceState enum to replace the previous armed and cruising flags, enabling better state management.
  • Updated task stack sizes and priorities for improved stability and performance.
  • Added a mutex to ensure thread safety during state changes.

Full Changelog: v6.4...v6.5

[6.4] Arming value check

17 Sep 22:23
Compare
Choose a tag to compare

What's Changed

  • Small change to arming checks to read raw potentiometer value vs using smoothed value, which in rare cases would allow arming at higher than expected values.

Full Changelog: v6.3...v6.4

[v6.3] New Font + Core Stability

07 Jul 16:56
5974932
Compare
Choose a tag to compare

What's Changed

Other Changes

Full Changelog: v6.2...v6.3

v6.3-rc1

25 Jun 20:47
1ff357c
Compare
Choose a tag to compare
v6.3-rc1 Pre-release
Pre-release

What's Changed

Full Changelog: v6.2...v6.3-rc1

[6.2] Runtime hardware configuration

05 Jun 02:18
a60c9c2
Compare
Choose a tag to compare

What's Changed

v6.1 was only for 2040 hardware. 6.2 is the combined release for both

Full Changelog: v6.0...v6.2

v6.1-b1

16 May 21:14
Compare
Choose a tag to compare
v6.1-b1 Pre-release
Pre-release

RP2040 module support

Full Changelog: v6.0...v6.1-b1

[6.0] FreeRTOS, screen rewrite

18 Aug 04:43
3fb3be7
Compare
Choose a tag to compare

What's Changed

  • Introduce FreeRTOS for true multithreading on both cores on RP2040
  • Rewrite screen logic to use frame buffering for a cleaner, more reliable info display (inspired by @thandal efforts)
    • Dark mode is now an option - pick your theme in the config tool
    • Show ESC temperature on the screen
    • Allow viewing of version and run time without rebooting (hold down button while disarmed)

Code improvements

  • Break out code for altimeter into CPP files
  • More reliable EEPROM writes

Note: SAMD21/M0 controllers are not yet compatible with v6.0