Skip to content

msoodb/hermes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hermes: RC-Plane Flight Control System

Key Features

  • Real-time flight control with FreeRTOS multitasking
  • Wireless telemetry and remote control via nRF24L01
  • Clean modular architecture with proper separation of concerns
  • CMSIS-based implementation (no HAL dependencies)

Built for reliable autonomous and manual RC aircraft operation.


Project Architecture

System Overview

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Applications  │    │    Controls      │    │    Devices      │
│                 │    │ - Sensors        │    │ - nRF24L01      │
└─────────────────┘    └──────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
┌─────────────────────────────────┼─────────────────────────────────┐
│                            Drivers                                 │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐              │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘              │
└─────────────────────────────────────────────────────────────────┘
         │
┌─────────────────────────────────┼─────────────────────────────────┐
│                            CMSIS                                   │
│                    STM32F103C8T6 Hardware                         │
└─────────────────────────────────────────────────────────────────┘

Task Architecture

Task Name Responsibility Priority Communication
ControllerTask Flight control logic, PID, stabilization High Processes sensor data

Communication Flow

                                                      ↑
                                                      ↑  
[ nRF24L01 (SPI) ] → [ Radio Handler ] ──────────────┘

Hardware Requirements

Component Description Interface
MCU STM32F103C8T6 (Blue Pill) – Cortex-M3, 72 MHz, 20 KB RAM -
Radio Module nRF24L01+ for telemetry and remote control SPI
Status LEDs Debug and status indication GPIO
Mode Button Flight mode toggle GPIO/INT
Power Source Li-Po battery pack with voltage regulation ADC

Getting Started

Prerequisites

Development Environment (Linux)

# Fedora/RHEL
sudo dnf install arm-none-eabi-gcc arm-none-eabi-newlib

# Ubuntu/Debian  
sudo apt install gcc-arm-none-eabi

# Verify installation
arm-none-eabi-gcc --version

Flashing Tools

# For ST-Link
sudo dnf install stlink  # or sudo apt install stlink-tools

# Alternative: OpenOCD
sudo dnf install openocd  # or sudo apt install openocd

Build and Flash

1. Clone the Repository

git clone https://github.com/msoodb/hermes.git
cd hermes

2. Build the Firmware

make clean
make

3. Flash to STM32

# Using ST-Link (default)
make flash

# Using OpenOCD
make METHOD=openocd flash

# Using GDB for debugging
make METHOD=gdb flash

Project Structure

hermes/
├── src/
│   ├── applications/     # Main application code
│   ├── board/           # Board initialization (clock, GPIO)
│   ├── controls/        # Flight control logic
│   ├── drivers/         # Low-level peripheral drivers
│   ├── system/          # System utilities, interrupts
│   └── utils/           # Utilities (debug, delay, fonts)
├── include/             # Header files
├── FreeRTOS/           # FreeRTOS source code
├── CMSIS/              # CMSIS and startup files
└── ld/                 # Linker scripts

Development Guidelines

Driver Architecture

  • Controls: Application-level control logic (Flight controller, Sensor fusion)

Naming Convention

  • All functions/types use hrms_ prefix
  • Clear separation between drivers, devices, and controls
  • Consistent error handling with status returns

Real-time Considerations

  • Critical flight control tasks have high priority
  • Sensor polling runs at medium priority
  • Communication tasks at lower priority
  • Proper use of FreeRTOS synchronization primitives

License

This project is licensed under the GNU General Public License v3. See the LICENSE file for details.


Built for reliable RC aircraft flight control and telemetry.

About

Hermes is a real-time RC plane flight control system built on FreeRTOS and the S17 framework with a CMSIS-based architecture, enabling reliable manual and autonomous operation with wireless telemetry via nRF24L01.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages