AURA is firmware for embedded helmet systems, designed to collect and process sensor data in real-time. This project serves as the foundation for instrumented helmet applications including environmental monitoring, motion tracking, and GPS positioning.
The latest version of AURA with significant improvements including multitasking, enhanced sensor drivers, and network capabilities. This version should be used for all new projects.
Hardware Support:
- Microcontroller: ESP32-S3 TFT Feather (or other ESP32-S3 variants)
- IMU: SparkFun BNO086 (SPI interface)
- GPS: SparkFun u-blox GNSS module (UART interface)
- Environmental Sensors:
- ScioSense ENS160 (Air quality, eCO2, TVOC, I2C interface)
- Sensirion SCD41 (CO2, temperature, humidity, I2C interface)
- Display: ST7789 TFT color display (240x135)
- Servo Motors: For faceplate control
- LEDs/NeoPixels: For helmet eyes
Libraries Required:
- Wire - For I2C communication
- SPI - For SPI devices
- WiFi - For network connectivity
- ArduinoJson - For structured data handling
- FreeRTOS - For multitasking operations
- Adafruit_GFX - Graphics library
- Adafruit_ST7789 - TFT display driver
- Adafruit_NeoPixel - For controlling NeoPixels
- ESP32Servo - For servo control
- SparkFun BNO08x Arduino Library - For IMU
- SparkFun u-blox GNSS Arduino Library - For GPS
- ScioSense_ENS160 - For air quality sensor
- SensirionI2cScd4x - For CO2 sensor
- Optional: ArduinoMqttClient - For MQTT connectivity
Key Features:
- Multi-core operation with task scheduling
- Thread-safe data handling
- Network connectivity with MQTT or Socket support
- In-helmet environmental monitoring
- Servo-controlled faceplate mechanism
- Interactive display with multi-page data visualization for debugging
- JSON-based data reporting
A transitional version used to test newer hardware.
Hardware Support:
- Microcontroller: ESP32-C3 (or similar ESP32 variants)
- IMU: SparkFun BNO08x
- GPS: SparkFun u-blox NEO-M9N
- Environmental Sensor: SparkFun BME688 (temperature, humidity, pressure, gas)
- Display: 128x64 OLED
- Servo Control: Basic faceplate mechanism (unused but available)
Libraries Required:
- Wire
- SPI
- Adafruit_GFX
- Adafruit_SSD1306
- ESP32Servo
- SparkFun BNO08x Arduino Library
- SparkFun u-blox GNSS Arduino Library
- MicroNMEA
- Adafruit_BME680
- ArduinoJson
- Bounce2 - For button debouncing
The original version of AURA for Teensy microcontrollers.
Hardware Support:
- Microcontroller: Teensy 4.0
- IMU: Adafruit LSM6DSOX + LIS3MDL (9-DOF)
- GPS: Adafruit Mini GPS
- Environmental Sensor: Adafruit HTS221 (humidity and temperature)
- Display: 128x64 OLED Display (optional)
- Servo Control: Basic dual-servo setup (unused but basic functionality tested)
Libraries Required:
- Wire
- SPI
- Adafruit_GFX
- Adafruit_SSD1306
- Adafruit_Sensor
- Adafruit_LSM6DS
- Adafruit_LIS3MDL
- Adafruit_GPS
- Adafruit_HTS221
- Adafruit_AHRS
- PWMServo - For Teensy servo control
- ArduinoJson
- Bounce2 - For button debouncing
- Install the Arduino IDE
- Install the required libraries for your targeted version using the Library Manager
- Select the appropriate board in the Arduino IDE:
- For v2.5: ESP32-S3 Dev Module or ESP32-S3 Feather
- For v2: ESP32-C3 Dev Module
- For v1: Teensy 4.0
- Connect your hardware according to the pinout defined in the respective configuration files
- Configure the
arduino_secrets.hfile with your WiFi credentials (for v2.5) - Adjust configuration in
config.has needed (for v2.5) - Upload the code to your device
For v2.5, the current recommended setup includes:
- ESP32-S3 TFT Feather as the main controller
- BNO086 IMU connected via SPI
- u-blox GPS module connected via UART
- ENS160 and SCD41 sensors on the I2C bus
- Servos connected to GPIO pins for faceplate control
- Optional NeoPixels or standard LEDs for helmet eyes
Refer to config.h for the default pin configuration and adjust as needed for your specific hardware.
The v2.5 version is highly configurable through the config.h file, allowing you to:
- Enable/disable features like MQTT or Socket connectivity
- Configure GPS interface
- Set up display parameters
- Configure servo angles for faceplate control
- Set up I2C pins and addresses
For detailed documentation of the code:
- Review the header files in the project to understand the structure
- Check the comments in each module for function-specific details
- Refer to the library documentation links provided above
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.
By contributing to this project, you agree to license your contributions under the GPLv3 (or any later version) or any future licenses chosen by the project author(s).