A modular telemetry system for 40 mm meteorological sounding rockets
RP2040 sensing stack, LoRa downlink and a PyQt5 ground station
The Chinese name «沙尘利“箭”» combines «沙尘» (sand and dust) with «利箭» (a sharp arrow). It refers to the sounding rocket and to a useful instrument against dust storms. The English name DustArrow is a direct rendering. The modular architecture is inspired by the experiment racks on the Chinese space station. The third generation adds X; the author explains that X means “infinite possibilities”.
DustArrow X is the third documented generation of a student project from Guyuan No. 1 Middle School, Ningxia, after Theta and Beta. It was presented at the China Adolescents Science and Technology Innovation Contest and featured on Shanghai TV’s Young Edison Season 8 in January 2024. The project measures the vertical structure of the atmosphere during dust events with a low-cost sounding rocket.
The airframe is 40 mm in diameter and has ten functional sections. Modules are joined by gold-finger board-to-board contacts, with a flexible printed circuit inside each bay. The flight electronics centre on an RP2040 with an MPU6050, a BMP280, an ATGM336H GNSS receiver, an A39C LoRa modem, a GP2Y1014AU0F dust sensor and MQ-series gas sensors. The ground segment is a Python/PyQt5 application.
This repository covers the mechanical design, electronics fabrication data, ground-station source, original report, presentation and media. Flight firmware source and flight logs are outside the scope of this archive; see firmware/README.md.
- 40 mm modular airframe — ten functional bays with gold-finger and FPC connections; printed parts can be replaced individually.
- RP2040 sensing stack — six-axis IMU, barometer, GNSS, dust and gas sensors.
- LoRa downlink — A39C-T400A22D1a serial modem received at 9600 baud.
- PyQt5 ground station — six plot panels, a 3D attitude view and serial acquisition.
- Open fabrication files — SolidWorks sources, STL, STEP, Gerber, BOM and silkscreen artwork.
- Verification suite — 32 Python tests and 16 documented errata covering attitude math, framing and geometry.
System architecture. Dashed links are wireless; the ground-station command path is shown for reference.
- Mechanical — nose and parachute bay, telemetry bay, data bay, power bay, three sensor bays, main-control bay, canard bay and propulsion/fin bay. The parachute uses one servo with a large-angle hatch; the canard bay uses a two-channel air-rudder mechanism.
- Electronics — nine module BOMs and ten Gerber packages. The main boards centre on the RP2040, MPU6050, BMP280, ATGM336H and A39C.
- Downlink — a 9600 baud, 8-N-1 text stream. A CRC-16 binary frame format is
specified and tested in
scripts/verify_theory/test_protocol.py. - Ground station — PyQt5, Matplotlib and OpenGL; serial acquisition, text parsing, six plot panels and an attitude view.
At rest, the accelerometer measures the reaction to gravity. With
The implementation uses atan2 to preserve the quadrant. The first-order
complementary filter uses an explicit sample period:
The full derivation, coordinate conventions and corrections are in Theory of operation and the errata.
DustArrow/
├── BOM/ # consolidated bill of materials
├── electronics/
│ ├── datasheets/ # manufacturer datasheets
│ ├── output/ # Gerber, BOM, silkscreen, PCB 3D
│ └── source/ # legacy EasyEDA project
├── mechanical/
│ ├── output/ # STL, STEP, reprint files
│ └── source/ # SolidWorks drafts, formal parts, reprints
├── simulation/cfd/ # CFD project and animations
├── software/ground_station/ # PyQt5 ground-station source
├── firmware/ # interface and protocol notes
├── docs/ # trilingual docs, errata, verification, archive
├── media/ # photos, GIFs, videos
├── scripts/verify_theory/ # reproducible tests
└── .github/ # issue and PR templates
Mechanical sources keep their original Chinese filenames because SolidWorks
assemblies resolve parts by name. STL outputs use English names and include a
part_name_mapping.csv. The full path mapping is in
MIGRATION_NOTES.md.
| Metric | Value |
|---|---|
| PCB modules | 9 |
| BOM line items | 48 |
| Parts | 57 |
| Priced subtotal | CNY 31.44 |
| Lines without price | 16 |
Prices are from the 2023-08-15 module exports. The complete line-item table is in BOM/bill_of_materials.csv; the per-module summary is in BOM/bom_summary.csv.
Ground station (Python 3.11):
cd software/ground_station
python -m pip install -r requirements.txt
python appMain.pyThe application enumerates serial ports, opens 9600 8-N-1, parses X, Y, GX,
GY, GZ fields and writes data.txt. See
software/ground_station/README.md for the
implemented data path.
Mechanical and electronics: open the assemblies in mechanical/source/formal/ or use the STL files in mechanical/output/3dp/. PCB fabrication files are in electronics/output/gerber/. The step-by-step procedure is in the replication guide.
Verification:
python scripts/verify_theory/run_verification.py
CFD demonstration. Original videos are in media/videos/.
Mechanism animation: nose separation, canard deployment and recovery.
Ground-station interface layout.
Verification result: 32 tests pass. The suite covers attitude formulas, complementary filtering, quaternions, frame parsing, the von Kármán profile, STL geometry, Gerber outlines and BOM cost. See Verification.
In January 2024, Shanghai TV’s youth science programme Young Edison Season 8, Tomorrow’s World, featured the project. The episode documents a test flight near Guyuan in late autumn or early winter 2023. Remote ignition was replaced by wired ignition, and the rocket left the rail. The sensor section was recovered; the parachute bay and propulsion module were lost. The student estimates 80% recovery completeness. The episode also explains that X means “infinite possibilities” and shows the ground station reading a text file for attitude feedback. Five stills and two short excerpts from the episode are included below.
- Detailed media coverage
- Official pages: preview, episode, season overview
DustArrow X whiteboard and printed airframe.
Ground-station interface during the programme.
Lift-off during the Gobi test flight.
Recovered parachute at the landing site.
Launch sequence, six-second excerpt.
Recovery sequence, six-second excerpt.
Excerpts from the January 2024 programme; copyright Shanghai Media Group.
| Parameter | Value | Source |
|---|---|---|
| Airframe diameter | 40.0 mm | Measured, STL bounding box |
| Nose profile | von Kármán curve | Report formula, checked numerically |
| Command A outline | 30 × 40 mm | Measured, Gerber outline |
| Power outline | 25.0 × 25.1 mm | Measured, Gerber outline |
| Data outline | 32 × 101 mm | Measured, Gerber outline |
| Exploration outline | 32 × 76 mm | Measured, Gerber outline |
| Microcontroller | RP2040 | BOM and report |
| IMU | MPU6050 | BOM |
| Barometer | BMP280 | BOM |
| GNSS | ATGM336H-5N | Report |
| Downlink | A39C-T400A22D1a | Report and BOM |
| Dust sensor | GP2Y1014AU0F | BOM |
| Gas sensors | MQ-2, MQ-135 | BOM |
| Ground serial | 9600, 8-N-1 | Source code |
| Flight test | 2023 late autumn/early winter; sensor section recovered, parachute bay and propulsion module lost; 80% recovery estimate | TV feature |
The repository includes a pure-Python verification suite and a documented errata record.
python scripts/verify_theory/run_verification.py— 32 tests covering attitude formulas, complementary filtering, quaternions, frame parsing, the von Kármán profile, STL geometry, Gerber outlines and BOM cost.- docs/errata.md — 16 reviewed items with corrections and evidence.
- docs/verification.md — test record and numerical cross-checks.
See CONTRIBUTING.md. Do not submit propellant formulations, ignition procedures or launch instructions.
Code, documentation and original media are released under MIT. Third-party manufacturer datasheets and the contest logo are excluded. The five stills and two GIF excerpts from the Shanghai TV feature are included for documentation; their copyright remains with Shanghai Media Group and they are not covered by MIT. The full programme is not redistributed.
Thanks to Guyuan No. 1 Middle School, Ningxia, and the China Adolescents Science and Technology Innovation Contest for the platform. Thanks to Shanghai Media Group and the Young Edison team for documenting the project. The project uses SolidWorks, EasyEDA, Python, PyQt5, Matplotlib, PySerial and OpenGL. The original report, presentation and legacy code are preserved in docs/archive/.

