From 80922dc68acc258166e44da6f386ae49a0dee76e Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Wed, 20 Aug 2025 22:06:17 +0300 Subject: [PATCH] Some updates to readme and build article Add info on using USB gamepad Replace KINGKONG transmitter with BetaFPV LiteRadio Add RoboCamp video --- README.md | 16 ++++++++++------ docs/build.md | 2 +- docs/img/betafpv.jpg | Bin 0 -> 26451 bytes docs/img/{tx.jpg => kingkong.jpg} | Bin docs/img/logitech.jpg | Bin 0 -> 26431 bytes 5 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 docs/img/betafpv.jpg rename docs/img/{tx.jpg => kingkong.jpg} (100%) create mode 100644 docs/img/logitech.jpg diff --git a/README.md b/README.md index 982c83a..8e378fd 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ * Dedicated for education and research. * Made from general-purpose components. -* Simple and clean source code in Arduino. -* Control using remote control or smartphone. -* Precise simulation with Gazebo. +* Simple and clean source code in Arduino (<2k lines firmware). +* Control using USB gamepad, remote control or smartphone. * Wi-Fi and MAVLink support. * Wireless command line interface and analyzing. +* Precise simulation with Gazebo. * Python library. * Textbook on flight control theory and practice ([in development](https://quadcopter.dev)). * *Position control (using external camera) and autonomous flights¹*. @@ -38,7 +38,11 @@ Version 0 demo video: https://youtu.be/8GzzIQ3C6DQ. -See the [user builds gallery](docs/user.md). +Usage in education (RoboCamp): https://youtu.be/Wd3yaorjTx0. + + + +See the [user builds gallery](docs/user.md): @@ -77,7 +81,7 @@ The simulator is implemented using Gazebo and runs the original Arduino code: |Frame main part|3D printed⁴:
[`flix-frame-1.1.stl`](docs/assets/flix-frame-1.1.stl) [`flix-frame-1.1.step`](docs/assets/flix-frame-1.1.step)
Recommended settings: layer 0.2 mm, line 0.4 mm, infill 100%.||1| |Frame top part|3D printed:
[`esp32-holder.stl`](docs/assets/esp32-holder.stl) [`esp32-holder.step`](docs/assets/esp32-holder.step)||1| |Washer for IMU board mounting|3D printed:
[`washer-m3.stl`](docs/assets/washer-m3.stl) [`washer-m3.step`](docs/assets/washer-m3.step)||2| -|RC transmitter (recommended)|BetaFPV LiteRadio (CC2500) — with USB support (can control via Wi-Fi).
KINGKONG TINY X8 — warning: lacks USB support.
Or other⁵||1| +|Controller (recommended)|CC2500 transmitter, like BetaFPV LiteRadio CC2500 (RC receiver/Wi-Fi).
Two-sticks gamepad (Wi-Fi only) — see [recommended gamepads](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/joystick.html#supported-joysticks).
Other⁵||1| |*RC receiver (optional)*|*DF500 or other⁵*||1| |Wires|28 AWG recommended||| |Tape, double-sided tape|||| @@ -86,7 +90,7 @@ The simulator is implemented using Gazebo and runs the original Arduino code: *³ — change `MPU9250` to `ICM20948` in `imu.ino` file if using ICM-20948 board.*
*³⁻¹ — MPU-6050 supports I²C interface only (not recommended). To use it change IMU declaration to `MPU6050 IMU(Wire)`.*
*⁴ — this frame is optimized for GY-91 board, if using other, the board mount holes positions should be modified.*
-*⁵ — you may use any transmitter-receiver pair with SBUS interface, or any transmitter with USB support* +*⁵ — you also may use any transmitter-receiver pair with SBUS interface.* Tools required for assembly: diff --git a/docs/build.md b/docs/build.md index f2bb342..d1cd00c 100644 --- a/docs/build.md +++ b/docs/build.md @@ -173,7 +173,7 @@ Before flight using remote control, you need to calibrate it: 2. Type `cr` command there and follow the instructions. 3. Use the remote control to fly the drone! -#### Control with USB remote control +#### Control with USB remote control (Wi-Fi) If your drone doesn't have RC receiver installed, you can use USB remote control and QGroundControl app to fly it. diff --git a/docs/img/betafpv.jpg b/docs/img/betafpv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e729aabfb7a82a722a7836cafc00530a77c8bdef GIT binary patch literal 26451 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 z