Unified Embedded Sensor Firmware
Budget: $250 – $750 USD
I have several separate Arduino-based projects combined into one bigger project. The firmware is roughly put together, but needs properly finished. The project has changed hands and the original coder has left the project. SO with a good start, this need properly finished.
• talk to the BQ76952 BMS over I²C for full-stack voltage and current readings,
• read motion data from an MPU6050, temperature through an NTC thermistor, RPM and other stats from a VESC-UART/CAN interface, and GPS packets via TinyGSM,
• present key values on an SSD1306 OLED driven by the u8g2 library,
• publish live data over Bluetooth and Wi-Fi while also streaming it on a high-speed CAN-Bus, with additional I²C and SPI expansion kept intact for future sensors,
• handle four independent digital/analog inputs that I will map to specific triggers later.
-Parachute actuation from gyro data.
┌─────────────────┐ I²C ┌─────────────┐
│ BQ76952 BMS │◄─────────►│ │
└─────────────────┘ │ │
┌─────────────────┐ I²C │ │ CAN ┌────────────────────┐
│ MPU6050 Gyro │◄─────────►│ ESP32 │◄─────────►│ CAN Bus Network │
└─────────────────┘ │ │ └────────────────────┘
┌─────────────────┐ I²C │ │ UART ┌────────────────────┐
│ SSD1306 OLED │◄─────────►│ │◄─────────►│ GPS Module │
└─────────────────┘ │ │ └────────────────────┘
┌─────────────────┐ SPI │ │ Digital ┌────────────────────┐
│ SD Logger │◄─────────► │ │◄─────────►│ RPM Sensors (4) │
└─────────────────┘ │ │ └────────────────────┘
│ │ Digital ┌────────────────────┐
│ │◄─────────►│ Parachute Actuator │
└─────────────┘ └────────────────────┘
The primary goal is reliable sensor data collection; control logic most be in-depth and incorperated all linked project features/libs into this firmware. Only well-structured, non-blocking code, with comments telling /decribing fution/feature/operation/break-down — already setup in PlatformIO Prefer that environment going forth so I can also work with this code
code.—that compiles without warnings, runs cooperative tasks cleanly, and lets me adjust pinouts and bus selections in one header file.
Deliverables
1. Source repository with all library references pinned to the versions listed above. (will start with current setup current setup)
2. A documented setup sketch or YAML that shows required board settings and partition size.
3. Read-me outlining how to flash, how to modify credentials for Wi-Fi/Bluetooth, and the exact CAN frame layout you chose.
4. Since you don't have the hardware, we'll have to work on this together. well need a repo we both can work from that is private. I'm up for 'free options' .. Once the firmware is upon initial release, the projects code will be posted on github.
If you have prior experience merging multiple libraries on constrained MCUs, this should be straightforward for you.
• talk to the BQ76952 BMS over I²C for full-stack voltage and current readings,
• read motion data from an MPU6050, temperature through an NTC thermistor, RPM and other stats from a VESC-UART/CAN interface, and GPS packets via TinyGSM,
• present key values on an SSD1306 OLED driven by the u8g2 library,
• publish live data over Bluetooth and Wi-Fi while also streaming it on a high-speed CAN-Bus, with additional I²C and SPI expansion kept intact for future sensors,
• handle four independent digital/analog inputs that I will map to specific triggers later.
-Parachute actuation from gyro data.
┌─────────────────┐ I²C ┌─────────────┐
│ BQ76952 BMS │◄─────────►│ │
└─────────────────┘ │ │
┌─────────────────┐ I²C │ │ CAN ┌────────────────────┐
│ MPU6050 Gyro │◄─────────►│ ESP32 │◄─────────►│ CAN Bus Network │
└─────────────────┘ │ │ └────────────────────┘
┌─────────────────┐ I²C │ │ UART ┌────────────────────┐
│ SSD1306 OLED │◄─────────►│ │◄─────────►│ GPS Module │
└─────────────────┘ │ │ └────────────────────┘
┌─────────────────┐ SPI │ │ Digital ┌────────────────────┐
│ SD Logger │◄─────────► │ │◄─────────►│ RPM Sensors (4) │
└─────────────────┘ │ │ └────────────────────┘
│ │ Digital ┌────────────────────┐
│ │◄─────────►│ Parachute Actuator │
└─────────────┘ └────────────────────┘
The primary goal is reliable sensor data collection; control logic most be in-depth and incorperated all linked project features/libs into this firmware. Only well-structured, non-blocking code, with comments telling /decribing fution/feature/operation/break-down — already setup in PlatformIO Prefer that environment going forth so I can also work with this code
code.—that compiles without warnings, runs cooperative tasks cleanly, and lets me adjust pinouts and bus selections in one header file.
Deliverables
1. Source repository with all library references pinned to the versions listed above. (will start with current setup current setup)
2. A documented setup sketch or YAML that shows required board settings and partition size.
3. Read-me outlining how to flash, how to modify credentials for Wi-Fi/Bluetooth, and the exact CAN frame layout you chose.
4. Since you don't have the hardware, we'll have to work on this together. well need a repo we both can work from that is private. I'm up for 'free options' .. Once the firmware is upon initial release, the projects code will be posted on github.
If you have prior experience merging multiple libraries on constrained MCUs, this should be straightforward for you.
Related categories:
C Programming
Electronics
Microcontroller
Arduino
Software Development
Documentation
Bluetooth
Embedded Systems
I2C
CAN Bus