This PlatformIO-based project implements a configurable electronic load on an ESP32-based board. It uses:
- LVGL for a touch-friendly user interface
- TFT_eSPI for display interaction
- ESPAsyncWebServer for handling HTTP requests
- Various Arduino libraries for WiFi, SPIFFS, and other peripherals
- Clone or download this repository into your PlatformIO workspace.
- Open the project in your preferred PlatformIO-supported IDE.
- Adjust settings in
platformio.ini
as needed for your board. - Build and upload the firmware to the ESP32 board.
- Access the web interface over Wi-Fi or view the UI on a connected display.
- UI rendering with LVGL
- Configurable load parameters via on-screen or web-based controls
- Real-time monitoring of input parameters
- Expandable code structure for sensors and hardware drivers
Version & Date | Summary | Details |
---|---|---|
0.1 (June - July 2024) |
Initial Arduino Exploration | - Project started using the Arduino environment. - Basic General Purpose Input/Output (GPIO) tests to verify fundamental hardware (LEDs, pin reading). - Initial setup of serial communication for debugging. |
0.2 (July - August 2024) |
Migration to ESP-IDF and Basic Display | - Migration of the base code from Arduino to Espressif IDF (ESP-IDF) using C. - Reimplementation of GPIO tests in the ESP-IDF environment. - Integration of a basic display library (TFT eSPI) to show simple information (text, basic shapes). - First display tests on the LCD screen. |
0.3 (August - September 2024) |
Attempted LVGL Integration in ESP-IDF | - Attempt to integrate the LVGL graphics library directly within the ESP-IDF environment. - Initial setup of display and touch drivers (if applicable) for LVGL. - Difficulties encountered in configuring and running LVGL stably with ESP-IDF. - Initial tests with basic LVGL widgets with inconsistent results. |
1.0 (October - November 2024) |
PlatformIO Establishment and Basic Hardware | - Successful migration of the project to PlatformIO for better dependency and development environment management. - Initial hardware setup in PlatformIO: LED, analog switches, I2C. - Initial implementation and fixes for DAC and ADC within PlatformIO. |
1.1 (November 2024) |
Basic UI Integration with LVGL (in PlatformIO) | - Successful integration of the LVGL graphics library (now within PlatformIO). - Development of the basic menu and UI structure. - Initial (not fully functional) implementation of the UI for CC mode. |
2.0 (February - Early March 2025) |
Functional CC Mode and Major Refactoring | - Complete and functional implementation of Constant Current (CC) mode. - Significant UI refactoring (screen, buttons, menus, colors, fonts). - Refactoring of encoder handling and the state machine (FSM). - Memory optimization for the UI. - Digit configuration available in the UI. |
2.1 (March 2025) |
CV, CR, CW Modes and Testing | - Addition of functional Constant Voltage (CV), Constant Resistance (CR), and Constant Power (CW) modes. - Laboratory tests performed and adjustments applied (limits, CC mode). - Refactoring of DUT reading. |
3.0 (Late March - Early April 2025) |
Web Server and Initial Web UI | - Addition of a functional web server. - Separation of HTML and JavaScript code. - Development of the initial web interface (frontend). - Basic implementation of WebSocket communication for the web UI. - Documentation and cleanup. |
3.1 (April 2025) |
Fan Control and RTC | - Implementation of fan control. - Addition of a Real-Time Clock (RTC). - Adjustments to hardware pins and fan parameters. |
3.2 (April 2025) |
Web UI Improvements and Final Fixes | - Integration of fan information in the web interface. - Unification of data collection for the web and WebSocket improvements. - General and specific bug fixes (encoder, DAC calculation, web UI update). - Improvements in the style and design of the web interface (CSS, HTML). |
3.3 (May 2025) |
Settings, UI, and PID Improvements | - Tuning and optimization of the fan PID control. - Critical bug fixes in the settings menu (crashes and parameter synchronization). - Addition of a settings menu accessible from the UI. - Cleanup and restructuring of the LVGL UI code (new layout, status indicators, minor visual adjustments). - Documentation improvements and updates. |
4.0 (May 2025) |
Enhanced Modes and Calibration | - Implementation of enhanced CW (Constant Power) and CR (Constant Resistance) modes. - Addition of correction factors for DUT, ADC, and CV mode measurements. - Improved precision with third digit for power measurements. - Addition of maximum limits for CW and CR modes. - Fixed IP configuration and network stability improvements. |
4.1 (May 2025) |
Timer and Energy Features | - Implementation of timer functionality for load testing. - Addition of energy measurement mode in the web interface. - Enhanced fan control with visual animation indicators. - UI layout improvements and temperature display optimization. - Timer integration with both LCD and web interfaces. |
4.2 (May 2025) |
Documentation and GitHub Pages | - Complete restructuring of project documentation. - Implementation of GitHub Pages with professional theme and styling. - Addition of Mermaid diagrams for technical documentation. - Creation of comprehensive hardware and software documentation. - Integration of visual assets and project images. - Establishment of dedicated project website (CNAME configuration). |
5.0 (May 2025) |
Safety and Monitoring Enhancements | - Implementation of overflow and underflow protection logic. - Addition of popup message system for user notifications. - Enhanced value limits and safety caps for all operating modes. - Improved logging system for debugging and monitoring. - Integration of safety messages in both LCD and web interfaces. |
5.1 (June 2025) |
Advanced Control and User Experience | - Implementation of deadband control for improved stability. - Enhanced encoder logic and tuning for better responsiveness. - Addition of disconnection limits and safety features. - Unified messaging experience across all interfaces. - Responsive design improvements for message displays. - Advanced limit configuration available in web interface. |
Pull requests for improvements or bug fixes are welcome. Please open an issue first to discuss ideas and coordinate development.