Imported from GitHub: peterkrull/quad · commit c23fa9a · license GPL-3.0
Description
Firmware, hardware and documentation for my autonomous quad copter project
README
[!TIP] The Rust-based flight control firmware is maintained in its own repository - Holsatus Flight
Project quad
This git repository is a personal project of mine to develop an open-source autonomous quad copter using cheap off-the-shelf components in conjunction with control theory and state estimation. As much as possible, any auxiliary tools and documentation I produce, will also be a part of the repository.
Getting Rusty
The firmware is written in the Rust programming language. This is in contrast to most flight controllers (and embedded devices in general) which use C or C++. The reason for choosing Rust is quite simple: it is a modern language. It can guarantee many things about the validity of memory at compile time, allows for writing high-level code, that runs at low-level speeds, and feels good to write; once you become friendly with the borrow checker.

YouTube : Demo of wireless data plotting and responsive controls
Directory contents
- 3dparts - 3D models used in the project as STEP and .obj files.
- docs - Documentation and learning material used in the project.
- hardware - Schematics, and PCB layouts as well as finished gerber files.
- images - Photos used in readme and some documentation.
- software - Software related to the project, including simulations, firmware, etc.
- tests - Results from test conducted during this project
Related repositories
During this project, some additional tools were developed, that reside in their own repositories.
Rust crates
- Async no-std ICM-20948 driver
- Dshot driver for RP2040 PIO
- Magnetometer calibration algorithm
- Linear multi-sensor Kalman filter
- (Forked) no-std SBUS-parser
License
This work is licensed under GPLv3.
Nice project. A few issues with the schematic that you can improve: The I2C buses (SDA/SCL and SDA_eeprom/SCL_eeprom) have incorrect termination. SDA and SCL nets are connected to pull-down resistors (R4, R5), while SDA_eeprom and SCL_eeprom lack pull-ups entirely. I2C requires pull-up resistors to function; pull-downs will prevent the bus from operating. This is not recommended to leave unused opamp pins floating (U2A): this can lead to increased power consumption and noise. The same is true for digital ICs inputs (such as the CS pin on U9), in this case it is even more critical. Several ICs, including EEPROM1, U2, and U9, appear to be missing local decoupling capacitors on their power supply pins. The +3V3 power rail is supplied by two parallel regulator outputs (U1 and U5), which will cause a short if both are assembled. Use a power OR-ing solution to isolate the outputs of different power sources. In addition, L78L33 is not ideal for this application, since it has ~2V dropout voltage, so if the input is 5V and the output is 3.3V, it might be not work as intended. Hope this helps. Note: I found the issues using an automated AI schematic review tool we developed at bvcircuits.com .