Jason's Flight Controller
Simple Flight Controller. I Intend on making this for RC planes
Created by
anadskman
Tier 3
2 views
0 followers
anadskman
added to the journal ago
Made The Flight Controller
Soo...

I didnt realise i was suppose to journal this as it was a guided project but ill try to explain my process.
I started by Making the schematic, I imported the custom parts from lcsc to kicad using a python script.
`
import argparse
import os
import shutil
import subprocess
import sys
def run_easyeda2kicad_from_file(input_file, output_dir="./lib/lcsc", python_exec="python"):
input_file = os.path.expanduser(input_file)
output_dir = os.path.expanduser(output_dir)
python_exec = python_exec or "python"
if not os.path.isfile(input_file):
print(f"Error: File not found: {input_file}")
return 2
# If a simple name was provided, check PATH; if an absolute path, check that file exists.
found = shutil.which(python_exec) if os.path.basename(python_exec) == python_exec else os.path.exists(python_exec)
if not found:
print(f"Warning: Python executable '{python_exec}' not found in PATH or as given path. Trying anyway.")
os.makedirs(output_dir, exist_ok=True)
with open(input_file, "r", encoding="utf-8") as f:
# ignore blank lines and comments
lines = [line.strip() for line in f if line.strip() and not line.lstrip().startswith("#")]
if not lines:
print("No LCSC IDs found in input file.")
return 0
for idx, lcsc_id in enumerate(lines, start=1):
cmd = [
python_exec,
"-m", "easyeda2kicad",
"--full",
f"--lcsc_id={lcsc_id}",
f"--output={output_dir}",
]
print(f"[{idx}/{len(lines)}] Running: {' '.join(cmd)}")
try:
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError as e:
print(f"❌ Error processing {lcsc_id}: {e}")
except FileNotFoundError as e:
print(f"❌ Executable not found: {e}")
return 3
print("✅ All commands completed.")
return 0
def main(argv=None):
parser = argparse.ArgumentParser(description="Run easyeda2kicad for a list of LCSC IDs.")
parser.add_argument("input_file", nargs="?", default="./hardware/lcsc.txt", help="Path to file with one LCSC ID per line")
parser.add_argument("output_dir", nargs="?", default="./lib/lcsc", help="Output directory")
parser.add_argument("--python", dest="python_exec", default="python",
help="Python executable to use (default: 'python')")
args = parser.parse_args(argv)
return_code = run_easyeda2kicad_from_file(args.input_file, args.output_dir, args.python_exec)
sys.exit(return_code if isinstance(return_code, int) else 0)
if __name__ == "__main__":
main()
`
Code From Guide
Afterwards i started wiring everything together, following parts datasheets to help.

After wiring the USB-C Port, Crystals, Decoupling, reset and boot Buttons, Servo headers, Battery Charger, Pressure Sensor, MicroSD Card, IMU, 5V Buck-boost, 3.3V Buck, I worked on the Microcontroller.
I Downloaded STM32CubeMX and open the project for STM32F722RET. I edited all the pins needed for the flight controller.


Lastly I Assigned all the footprints for each part.

I didnt track the time as i didnt know i had to journal until now so ill have to guess and its unfortually over 3 hours
anadskman
started Jason's Flight Controller ago
3/3/2026 - Made The Flight Controller
Soo...

I didnt realise i was suppose to journal this as it was a guided project but ill try to explain my process.
I started by Making the schematic, I imported the custom parts from lcsc to kicad using a python script.
`
import argparse
import os
import shutil
import subprocess
import sys
def run_easyeda2kicad_from_file(input_file, output_dir="./lib/lcsc", python_exec="python"):
input_file = os.path.expanduser(input_file)
output_dir = os.path.expanduser(output_dir)
python_exec = python_exec or "python"
if not os.path.isfile(input_file):
print(f"Error: File not found: {input_file}")
return 2
# If a simple name was provided, check PATH; if an absolute path, check that file exists.
found = shutil.which(python_exec) if os.path.basename(python_exec) == python_exec else os.path.exists(python_exec)
if not found:
print(f"Warning: Python executable '{python_exec}' not found in PATH or as given path. Trying anyway.")
os.makedirs(output_dir, exist_ok=True)
with open(input_file, "r", encoding="utf-8") as f:
# ignore blank lines and comments
lines = [line.strip() for line in f if line.strip() and not line.lstrip().startswith("#")]
if not lines:
print("No LCSC IDs found in input file.")
return 0
for idx, lcsc_id in enumerate(lines, start=1):
cmd = [
python_exec,
"-m", "easyeda2kicad",
"--full",
f"--lcsc_id={lcsc_id}",
f"--output={output_dir}",
]
print(f"[{idx}/{len(lines)}] Running: {' '.join(cmd)}")
try:
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError as e:
print(f"❌ Error processing {lcsc_id}: {e}")
except FileNotFoundError as e:
print(f"❌ Executable not found: {e}")
return 3
print("✅ All commands completed.")
return 0
def main(argv=None):
parser = argparse.ArgumentParser(description="Run easyeda2kicad for a list of LCSC IDs.")
parser.add_argument("input_file", nargs="?", default="./hardware/lcsc.txt", help="Path to file with one LCSC ID per line")
parser.add_argument("output_dir", nargs="?", default="./lib/lcsc", help="Output directory")
parser.add_argument("--python", dest="python_exec", default="python",
help="Python executable to use (default: 'python')")
args = parser.parse_args(argv)
return_code = run_easyeda2kicad_from_file(args.input_file, args.output_dir, args.python_exec)
sys.exit(return_code if isinstance(return_code, int) else 0)
if __name__ == "__main__":
main()
`
Code From Guide
Afterwards i started wiring everything together, following parts datasheets to help.

After wiring the USB-C Port, Crystals, Decoupling, reset and boot Buttons, Servo headers, Battery Charger, Pressure Sensor, MicroSD Card, IMU, 5V Buck-boost, 3.3V Buck, I worked on the Microcontroller.
I Downloaded STM32CubeMX and open the project for STM32F722RET. I edited all the pins needed for the flight controller.


Lastly I Assigned all the footprints for each part.

I didnt track the time as i didnt know i had to journal until now so ill have to guess and its unfortually over 3 hours