From d4d1797ffc21a02c94ebb41f7c4a11814b2e010a Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Fri, 28 Feb 2025 23:22:03 +0300 Subject: [PATCH] Update main readme for the minimal version --- README.md | 156 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 153 deletions(-) diff --git a/README.md b/README.md index d87baf0..295c545 100644 --- a/README.md +++ b/README.md @@ -1,157 +1,7 @@ # Flix -**Flix** (*flight + X*) — making an open source ESP32-based quadcopter from scratch. +Minimal **Flix** quadcopter firmware implementation for the [book](https://quadcopter.dev). - - - - - - - - - -
Version 1 (3D-printed frame)Version 0
Flix quadcopterFlix quadcopter
+See the full code and documentation in the main branch: https://github.com/okalachev/flix. -## Features - -* Simple and clean Arduino based source code. -* Acro and Stabilized flight using remote control. -* Precise simulation using Gazebo. -* [In-RAM logging](docs/log.md). -* Command line interface through USB port. -* Wi-Fi support. -* MAVLink support. -* Control using mobile phone (with QGroundControl app). -* Completely 3D-printed frame. -* *Textbook and videos for students on writing a flight controller¹.* -* *Position control and autonomous flights using external camera¹*. -* [Building and running instructions](docs/build.md). - -*¹ — planned.* - -## It actually flies - -See detailed demo video (for version 0): https://youtu.be/8GzzIQ3C6DQ. - - - -Version 1 test flight: https://t.me/opensourcequadcopter/42. - - - -## Simulation - -The simulator is implemented using Gazebo and runs the original Arduino code: - -Flix simulator - -See [instructions on running the simulation](docs/build.md). - -## Components (version 1) - -|Type|Part|Image|Quantity| -|-|-|:-:|:-:| -|Microcontroller board|ESP32 Mini||1| -|IMU (and barometer²) board|GY‑91 (or other MPU‑9250/MPU‑6500 board), ICM‑20948³||1| -|Motor|8520 3.7V brushed motor (shaft 0.8mm).
Motor with exact 3.7V voltage is needed, not ranged working voltage (3.7V — 6V).||4| -|Propeller|Hubsan 55 mm||4| -|MOSFET (transistor)|100N03A or [analog](https://t.me/opensourcequadcopter/33)||4| -|Pull-down resistor|10 kΩ||4| -|3.7V Li-Po battery|LW 952540 (or any compatible by the size)||1| -|Battery connector cable|MX2.0 2P female||1| -|Li-Po Battery charger|Any||1| -|Screws for IMU board mounting|M3x5||2| -|Screws for frame assembly|M1.4x5||4| -|Frame bottom part|3D printed⁴:
[`flix-frame.stl`](docs/assets/flix-frame.stl) [`flix-frame.step`](docs/assets/flix-frame.step)||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 (optional)*|*KINGKONG TINY X8 or other⁵*||1| -|*RC receiver (optional)*|*DF500 or other⁵*||1| -|Wires|28 AWG recommended||| -|Tape, double-sided tape|||| - -*² — barometer is not used for now.*
-*³ — change `MPU9250` to `ICM20948` in `imu.ino` file if using ICM-20948 board.*
-*⁴ — 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.* - -Tools required for assembly: - -* 3D printer. -* Soldering iron. -* Solder wire (with flux). -* Screwdrivers. -* Multimeter. - -Feel free to modify the design and or code, and create your own improved versions of Flix! Send your results to the [official Telegram chat](https://t.me/opensourcequadcopterchat), or directly to the author ([E-mail](mailto:okalachev@gmail.com), [Telegram](https://t.me/okalachev)). - -## Schematics (version 1) - -### Simplified connection diagram - -Flix version 1 schematics - -Motor connection scheme: - -MOSFET connection scheme - -Complete diagram is Work-in-Progress. - -### Notes - -* Power ESP32 Mini with Li-Po battery using VCC (+) and GND (-) pins. -* Connect the IMU board to the ESP32 Mini using VSPI, power it using 3.3V and GND pins: - - |IMU pin|ESP32 pin| - |-|-| - |GND|GND| - |3.3V|3.3V| - |SCL *(SCK)*|SVP (GPIO18)| - |SDA *(MOSI)*|GPIO23| - |SAO *(MISO)*|GPIO19| - |NCS|GPIO5| - -* Solder pull-down resistors to the MOSFETs. -* Connect the motors to the ESP32 Mini using MOSFETs, by following scheme: - - |Motor|Position|Direction|Wires|GPIO| - |-|-|-|-|-| - |Motor 0|Rear left|Counter-clockwise|Black & White|GPIO12| - |Motor 1|Rear right|Clockwise|Blue & Red|GPIO13| - |Motor 2|Front right|Counter-clockwise|Black & White|GPIO14| - |Motor 3|Front left|Clockwise|Blue & Red|GPIO15| - - Counter-clockwise motors have black and white wires and clockwise motors have blue and red wires. - -* Optionally connect the RC receiver to the ESP32's UART2: - - |Receiver pin|ESP32 pin| - |-|-| - |GND|GND| - |VIN|VCC (or 3.3V depending on the receiver)| - |Signal|GPIO4⁶| - -*⁶ — UART2 RX pin was [changed](https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html#id14) to GPIO4 in Arduino ESP32 core 3.0.* - -### IMU placement - -Default IMU orientation in the code is **LFD** (Left-Forward-Down): - -GY-91 axes - -In case of using other IMU orientation, modify the `rotateIMU` function in the `imu.ino` file. - -See [FlixPeriph documentation](https://github.com/okalachev/flixperiph?tab=readme-ov-file#imu-axes-orientation) to learn axis orientation of other IMU boards. - -## Version 0 - -See the information on the obsolete version 0 in the [corresponding article](docs/version0.md). - -## Materials - -Subscribe to the Telegram channel on developing the drone and the flight controller (in Russian): https://t.me/opensourcequadcopter. - -Join the official Telegram chat: https://t.me/opensourcequadcopterchat. - -Detailed article on Habr.com about the development of the drone (in Russian): https://habr.com/ru/articles/814127/. +Flix quadcopter