Flight controller, power and expansion boards, firmware, tools and mechanics for small multirotors
by Andrea Cirillo
This is the system repository of ACwing. Apart from the shared brand files it holds no design files: it pins one commit of each part of the project, so that a commit (or a tag) of this repository names a set of firmware, hardware and mechanics that belong together.
| Folder | Repository | What |
|---|---|---|
fw/ |
ACwing_FW | flight-controller firmware (STM32WB55), Flow bridge firmware (STM32C011), PC tools in MATLAB and Python, ACwing Pilot app. Documentation: acwing-uav.github.io/ACwing_FW |
hw/ |
ACwing_HW | KiCad projects and manufacturing files: FC, ESC 1S, GPS, Flow; system and stack documents |
mech/ |
ACwing_Mechs | frames, mounts, printed parts |
brand/ |
(this repository) | logos (SVG/PNG), KiCad logo footprints ACwing_Logo.pretty, brand and silkscreen tools |
Which versions work together, and what was tested: COMPATIBILITY.md.
git lfs install # once: the mechanics use Git LFS
git clone --recursive https://github.com/ACwing-UAV/ACwing.git
Already cloned without --recursive, or after a pull that moved the pins:
git submodule update --init --recursive
Each folder is then a normal clone of its repository, checked out at the
pinned commit (detached HEAD). To work in one of them, check out a branch
first: cd fw && git switch main.
Day-to-day work happens in the individual repositories, not here. This repository moves only when a combination of versions is worth recording:
- Commit and push in
fw/,hw/ormech/(or work in a separate clone of that repository). - When the new combination has been checked, record it here:
git submodule update --remote fw # or hw, mech: moves to the tip of main git add fw git commit -m "fw: <what changed>" - Update COMPATIBILITY.md in the same commit, and tag the
milestones (
git tag proto-0.2).
Dependabot opens a pull request here every week when one of the three
repositories has moved ahead (.github/dependabot.yml):
merge it when the combination has been checked, close it otherwise.
Each interface has one owner, the repository that produces it; the others link to it and never keep a copy.
| Interface | Owner | File |
|---|---|---|
| FC pin map (MCU pins ↔ connectors) | hw → used by fw | hw/00 - Docs/00 - FC_Docs/ACwing_FC_A_pinmap.md |
| FC outline and holes (DXF) | hw → used by mech | hw/00 - Docs/00 - FC_Docs/ACwing_FC_A_outline.dxf |
| Flow board outline (DXF) | hw → used by mech | hw/00 - Docs/03 - FLOW_Docs/ACwing_Flow_A_mech_outline.dxf |
| Board 3D models (STEP) | hw → used by mech | hw/00 - Docs/<board>_Docs/<board>.step |
| Stack, mechanical handoff, frame answers | hw ↔ mech | hw/00 - Docs/04 - System_Docs |
| ACwing Pilot protocol v2 | fw → used by the app | fw/03 - Docs/firmware/protocol-v2.md |
| Logos and logo footprints | system → used by hw, fw, mech | brand/: the boards copy the footprints they use into their own library; READMEs and the documentation site load the PNGs from raw.githubusercontent.com/ACwing-UAV/ACwing/main/brand/ |
The links point to main of each repository; after a recursive clone the same
files are under hw/ and fw/ at the pinned commit.
MIT for this repository; each submodule carries its own license.