Skip to content

Official Firmware for DIY astronomical telescope mounts. This firmware is the 2.x successor of OpenAstroTracker-Firmware.

License

Notifications You must be signed in to change notification settings

OpenAstroTech/OpenAstroFirmware

Repository files navigation

This project is work in progress and is not for use or testing yet! Really, you don't want to use it at the moment!


Contributors Forks Stargazers Issues MIT License


Logo

OpenAstroFirmware

Official Firmware for DIY astronomical telescope mounts. This firmware is the 2.x successor of the OpenAstroTracker-Firmware.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

It was a very long and educational time developing, testing and improving OpenAstroTracker-Firmware for all of us. It evolved and grew over time as did our hardware support. Amount and type of supported mounts, components, addons and software tools keep increasing. This is why dev team decided to go one step back and redesign the firmware based on the experience with v1 and community feedback and requests. This firmware aims to bring following improvements over time compared to OpenAstroTracker-Firmware:

Usage

  • Easier configuration, flashing and updates
  • Improved stability
  • Improved/Automated calibration
  • New types of addons (these could be among other things Touch display, Mobile app etc.)
  • Ability to track "custom" objects (e.g. Sun, Moon, ISS, Comets etc.)
  • Support for more types of mounts (OAT, OAM, any further Mounts and their versions designed by OpenAstroTech and retrofitted 3rd party mounts)
  • Several new QoL features

Development

  • Easier maintenability and extendability
  • Automated testing
  • Support for modern 32-bit boards to improve performance, accuracy and reduce the need for hardcore optimizations.
  • In hardware debugging
  • Higher code quality by following best practices and a predefined architecture design
  • Ability to test and run main code and test directly on the host pc to simplify issue analysis
  • Support and usage of modern c++ features to improve readability and clarity of the code

(back to top)

Built With

  • Zephyr RTOS - Real-time operating system for connected, resource-constrained devices
  • West - Zephyr's meta-tool for managing project repositories
  • CMake - Cross-platform build system
  • C++ - Modern C++ for telescope mount control implementation

(back to top)

Getting Started

To get started with OpenAstroFirmware development or to build and deploy the firmware for your telescope mount, follow these steps. The project supports both hardware deployment (MKS Robin Nano) and native simulation for development and testing.

Supported hardware

  • MKS Robin Nano (STM32F407xx-based controller board) - Production target
  • Way more 32 bit boards to come
  • native_sim - Development and testing platform
  • Stepper motor drivers:
    • TMC stepper motor controllers
    • GPIO-based stepper motor drivers
    • Testing/simulation drivers for development

Development Environment Setup

Before getting started, make sure you have a proper Zephyr development environment. Follow the official Zephyr Getting Started Guide.

Workspace Initialization

The first step is to initialize the workspace folder where the OpenAstroFirmware and all Zephyr modules will be cloned. Run the following command:

# Create workspace directory
mkdir OpenAstroFirmware-workspace

# Change to the workspace directory
cd OpenAstroFirmware-workspace

# Initialize workspace for OpenAstroFirmware
west init -m https://github.com/OpenAstroTech/OpenAstroFirmware --mr main .

# Update Zephyr modules
west update

After initialization, your workspace structure will look like:

OpenAstroFirmware-workspace/
├── OpenAstroFirmware/     # This repository
├── zephyr/                # Zephyr RTOS
└── modules/               # Zephyr modules (HAL, libraries, etc.)

Important: Remember to activate your Python virtual environment each time you start working on the project:

source ~/zephyrproject/.venv/bin/activate

Build

For Native Simulation (Development/Testing)

cd OpenAstroFirmware-workspace/OpenAstroFirmware/app
west build -b native_sim

For MKS Robin Nano (Production Hardware)

cd OpenAstroFirmware-workspace/OpenAstroFirmware/app  
west build -b robin_nano

Clean Build

west build -t pristine     # Clean all build artifacts
west build -b <board_name> # Rebuild from scratch

The build system supports:

  • Cross-compilation for hardware targets
  • Native compilation for PC-based testing
  • Comprehensive testing with automated test suites

Configuration

The firmware uses Zephyr's Kconfig system for configuration. It requires an existing build directory. Key configuration files:

  • app/prj.conf - Main project configuration
  • app/boards/native_sim.conf - Native simulator specific settings
  • app/boards/native_sim.overlay - Device tree overlay for simulation
  • Board-specific configurations in boards/ directory

Configuration can be modified using:

west build -t menuconfig    # Interactive configuration menu
west build -t guiconfig     # GUI configuration tool

Upload

Native Simulation

west build -t run          # Run the firmware in simulation

Hardware Targets (MKS Robin Nano)

west flash                  # Flash firmware to connected hardware
west debug                  # Start debugging session
west attach                 # Attach debugger to running target

Additional upload options:

  • west build -t flash - Alternative flash command
  • Custom flash runners supported via Zephyr's runner system

(back to top)

Usage

OpenAstroFirmware provides telescope mount control with the following capabilities:

Core Features

  • LX200 Protocol Support - Compatible with Meade LX200 command set for telescope control software
  • Stepper Motor Control - Precise control of RA and DEC axes with multiple driver support
  • Mount Coordinate Management - Right Ascension and Declination positioning
  • Cross-Platform Development - Native simulation for testing without hardware

LX200 Command Interface

The firmware implements the standard LX200 protocol for communication with planetarium software like:

Hardware Control

Development and Testing

  • Native simulation support for PC-based development
  • Comprehensive logging system
  • Automated testing framework
  • In-hardware debugging capabilities

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

GitHub: OpenAstroFirmware

Project Discord: OpenAstroTech Discord

(back to top)

About

Official Firmware for DIY astronomical telescope mounts. This firmware is the 2.x successor of OpenAstroTracker-Firmware.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •