Armachat2 Async Firmware Redesign
Redesigned Armachat CircuitPython firmware using asyncio cooperative multitasking for better performance, supporting Max, Compact, and Watch hardware variants with persistent configuration.
Overview
Armachat2 is a community-driven firmware redesign by richteel that replaces the original sequential code with cooperative multitasking using CircuitPython's asyncio library. This architecture enables smoother radio communication, UI updates, and keyboard input handling across multiple Armachat hardware variants.
Key Improvements
- Cooperative Multitasking: Uses asyncio-based task scheduling for non-blocking radio, display, and input handling
- Multi-Device Support: Works across Max, Compact, and Watch hardware variants
- User Confirmation Messages: Visual feedback for all user actions
- Offline Configuration: Save settings without PC connection at startup
- Comprehensive Documentation: Full user and developer guides published on GitHub Pages
Supported Hardware
- Armachat Max
- Armachat Compact
- Armachat Watch
All variants use LoRa radio (RFM95) for off-grid peer-to-peer messaging.
Architecture
The firmware leverages Adafruit's cooperative multitasking patterns, allowing multiple tasks (radio listening, keyboard scanning, display refresh) to run concurrently without threading. This eliminates the blocking behavior present in the original firmware.
Documentation
Full documentation is available at richteel.github.io/Armachat2, covering:
- Installation and setup
- User operation guide
- Developer documentation for extending the firmware
License
MIT License
