New hardware and PCB design course on mixed-signal embedded systems just released! ⏵Course content: www.phils-lab.net/courses ⏵Course sign-up: phils-lab-shop.fedevel.education
It just seems too good to be true that such quality information exists for free on TH-cam. You're an excellent teacher and a great human being for sharing this. Thanks heaps
This is a masterclass video. You have such a clean, ordered understanding of everything. I really enjoy hearing you break down the flight controller into it's different categories (hardware, software) and then breaking it down even more from there.
Great video. Please continue the great work. You promised to do the following follow up videos on this design, have you done so yet? 1. Low level hardware design 2. Signal processing 3. Telemetry & messaging protocols 4. State estimation 5. Aircraft Modeling, control system design and implementation 6. Higher level performance design 7. Ground control station design If you have not done so yet, please consider doing them as soon as you possible can. We would be very grateful as your teaching style, design philosophy and methodology are exemplary. Thanks in advance.
This is art! The board just brings a reallyy wide smile on my face. Your teaching style, your knowledge is so precise and deep! Your videos are precious, extremely valuable… thank you so much for the time you put into these videos
Yeah, it’s dreadful how many of them there are these days... Any favourites of yours you can recommend? For flight control stuff I’ve settled for Molex PicoBlade even though they are quite expensive.
@@PhilsLab My last project is dead simple from electronic point if view, it is more electrical - power distribution box for motorcycle - but it must be very robust, as currents are rather large (up to 10A per consumer, up to 30A total) and environment is very harsh due to vibrations. Typical solution in this area is screw terminals, but I don't like it, as I know how motorcycle engine could unscrew any bolt without locktie. I've looked at Molex MegaFit and alike, but some of such connectors require exotic crimpers to prepare cables and not easy to buy if you have access to simple "electrical" shops and not places like Mouser or DigiKey (for example, no retailers sell MegaFit in my country, you could order them through distributor, but distributor works only with big quantity orders, like 100 of one type minimum, and shipping from DigiKey is about $70 no matter what you buy), and I want to have project as accessible as possible. So, after a long reading of application notes, recommendations and industrial standards, I've sacrifice my wish to have polarized vertical connectors and goes with "good old" Quick Fit tabs. Good quick fit tabs or soldering to PCB are not easy to buy too, but, at least, other part (female connectors to crimp on a cable) could be bought in any Car Parts store, crimper for them is present in any car mechanics shop, and it is type of connectors which are recommended, for example, for USA Aircraft Manufacturers (instead of screw terminals). For small-scale connectors my go-to type is "JST" of different sizes (GH, PA, XA), because there are a lot of cheap but rather good Chinese clones around.
Phil, I admire the thorough design flow that you use; it's really top-notch engineering and it radiates experience in the field. I cannot thank you enough for spreading your knowledge. You are educating the next generation of electronics engineers. Thank you!
Aside from designing my own boards + systems, really am enjoying watching your designs too. Very good and clean designs you have, excellent work my friend.
Phil, thanks so much for all the hard work. A long long time ago and in a galaxy far far away I spent an entire career in the US Marines and most that time was in the aviation side of the house - aircraft maintenance admin and aircraft statistical analysis with the 3rd Marine Aircraft Wing in California. I appreciate your work in fixed wing aviation and the insight you provide in both code and related electronics. I'll do my best to keep up with you.
@@PhilsLab basic to advance would be amazing!! Im currently going back for my EE. And there is next to no classes for circuit design and layout. I watch your videos for most of my kicad help!
@@PhilsLab A Video about signal termination or high speed differential signals like Ethernet / USB layout would be great to have, there is very limited information about it online. Your thought process was very organised, easy to follow and understand even for someone relatively new to the field :)
@@PhilsLab I would like to see a video on how all the sensors data are fused and used, the control algorithm of the UAV and how you can make deterministic processing in your control loop. Keep up the work ;)
Your courses are easily one of the best put together and understandable online courses in ee and I would easily pay over $1k if you did a course on general subject matters. Please consider it.
Personally I recommend that you .zip up your design file folder before you even order the boards instead of as an afterthought. You will be much less likely to forget this backup if you incorporate its creation several times in your design process. Zip them up early and often; back them up to the cloud, NAS, and/or flashdrive. Then, immediately, change the version number and folder (directory) name. You can always view the design from the .zip. If you don't need the new version, you can always scrap it later.
First, I really admire your work. Very good you put together no doubt. However, I think two STM32 is an overkill. Especially since one of them is STM32Fxx a dual core which is kind of two cpus in one chip. So I don't understand why you need to have a fully dedicated STM32 for just datafusion of sensor data to find orientation (euler angles). MPU6050 has a dedicated on board cpu that can do datafusion accurately. one main challenge to do data fusion on a microcontroller is the timing and synchronization which will lead to drift and other unexpected issues.
I I've manufactured a PCB based on your design specifications, but I'm encountering an issue with the MIC26903YJL-TR regulator. Instead of providing the expected output voltage of 5V, it is only supplying 0.12V. I've attempted to resolve the issue by replacing the regulator, but the problem persists, with the output remaining at 0.12V. Could you please offer any suggestions or guidance on how to address this issue?
@@PhilsLab As a noob mechanical engineer who only knows how to use Arduino. I found your content is so potent for me. My goal is to be able to make a professional-grade custom microcontroller PCB and basic power electronics. Thank you so much!!
Fantastic video! I! I’m just in the beginning of my electronic’s learning path and this kind of material greatly helps to structure pieces of knowledge I’ve got around the web. Lots of useful information. Thank you very much, Phil!
Why is the fast H7 used for the flight controller, whereas the slower F4 is for the sensor and navigation reader? Generating PWM with an F4 is easy, but wouldn't you want a high speed read of the navigation sensors? Unless .. you want to be able to change PWM at a quicker rate .. ? It feels like the H7 should be used for quick response for the navigation and sensor read unit. Or is the PID controller going to be running on the flight control computer for performing stability calculations? I had planned on building something similar in my spare time a few years back, where the navigation system feeds data into a neural network, but other things just ended up getting in the way. Nice project BTW!
Thank you very much for this structured video. It greatly reduced the anxiety I had starting the project but I have a question I would love to ask you Mr. Phil and many other more experienced minds. I have at least 3 years experience in Electronics and have a good deal of knowledge for PCB Design and I also have a partner who has 7 years of Embedded software programming but we plan on taking a project of building an autonomous drone. Do you think it is necessary for one to dive deep into Control theory or one could work with good open source libraries like BetaFlight or others?? Do major companies doing such dive in deep and write the whole libraries for Normalization, Kalman filters and the likes??
Hi, Phil. You tested this board? What worries me is: 1. That power and GPS/RF parts are too close? 2. Same as for sensors being too close to Switching power supply/RF part?
Hi there, thank you for your comment. Yes, I tested this board and have not encountered any problems so far. GPS acquires a fix fairly quickly and the sensors are giving the correct readings.
The STM32H7 you used seems like it’s quite powerful enough to handle all of the needs you spoke about without needing a secondary processor unit (F4). Is there a reason you still chose to do this, was it just for more IO?
Thank you! Haha don't worry - you don't want to see what my first boards looked like.. I'm sure you'll be able to make the stuff in this video in no time.
Now i'm curious :D i'm sure i'll get it done, autorouter is always an option, i use eagle (Fusion360) and EasyEDA but still haven't finished a board yet, more the cad person. keep em coming though, the thought process before even touching the software is super informational and clear
Do you test your components on breadboard or design directly the PCB? Some manufacturers have very poor documentation and wasting a PCB because there is a design issue is not cheap.
Hey Phil, are there other Videos related to this flight controller board ? for example the PID and kalman Filter implementation for this board, written drivers to the IMU and other sensors...?
Soldering of CMS components can be done by the PCB manufacturer in a process called SMT assembly. They have a list of components which are available on their website. They charge extra for this service. For other components, you will have to do it yourself. You can buy said components on websites like Farnell or Radiospare if you want something fast (it's expensive to go that route). Or you can carefully import components from China through websites like AliExpress (beware of what you buy on there). Ball grid array components CANNOT be soldered by hand. Small CMS components are also hard to solder without proper equipement.
Sorry for the late reply! Yes, at some point I'll go over the - rather simple - messaging protocol I am using. In essence, it's very similar to MavLink but with COBS encoding.
I've just started working on a minimalist (and much cheaper) version of this board, for which I plan on doing a step-by-step guide through the firmware design. From low-level drivers through to state estimation and control system implementation. Is there anything in particular you'd like a focus on?
@@PhilsLab yeah,i was thinking you had about 3x more cpu power than you could ever use. I can't wait to see it. I did a recent project coding an adhrs from a naze32. I fly it on my homebuilt manned glider.
Hello Phil, I'm a complete beginner interested in learning how to design my own circuit board. I feel like this video is too advanced for me. Could you list some resources for people like me or make a video? I want to know basic concepts about the design process, such as design decisions when wiring and selecting components, and coding the relationship between them.
I went through the github repository, I like how its arranged well but for the time being, the source codes and all were beyond my technical understandings. Bro I would pay money for the whole course series if there was step by step tutorial in on some online-learning sites like Udemy, or would be very grateful if its free in TH-cam. Would you kindly show me the the way, what sorts of foundations I should make unorder to grasp the content(besides PCB design skill)? Thankyou.
Is it hard to reflow BGA? Do you normally get the parts assembled or DIY? You briefly talked about copper pour, it would be great if you go over mixed-signal design PCB with KiCad. Great videos!
I love that this board has a built in GPS. Is there any way to put a GPS antenna on the PCB? My dream flight controller would have an ESC and LoRa too. Not sure if that's possible? I guess it's not a big jump to run iNAV or Beta flight on this board? You'd only need the one processor though.
Yeah, I'd love commerical flight controllers with built-in GPS. I don't think a GPS antenna would work too well, as (as least for fixed-wing UAVs), the hardware is buried inside the fuselage without a clear view of the sky and thus the signal reception strength will be diminished. I'm sure an ESC + LoRa would work to give a complete system, then again I don't know how large that board would be! One thing I thought may be cool, is to combine some sort of Linux-based CPU with the lower-level microcontroller/sensor stuff on one board. I'm fairly certain, although I haven't looked into it, that you could get one of the popular flight control firmwares to run on this. Then again, if I had to redo this board, I'd probably do quite a few things differently!
Hello. I love the work you are doing, congrats! I'm quite experienced with Ardupilot and INav and in both, magnetometer for fixed-wing crafts is optional. Actually (well, in INAV at least, I haven't used Ardupilot in quite a while) it is not recommended due to the fact the orientation is always "forward" and the direction can be determined by IMU an GPS. Do you have any other reasons to use it?
Thank you very much! Yes, magnetometers are rarely used in aircraft as they are rather difficult to calibrate and are influenced heavily by any surrounding magnetic fields - especially those generated by the electronics on the board. The positive aspects of a magnetometer are that it has a much higher sample rate and can thus give a more frequently updated estimate of the yaw of the aircraft. Also, GPS units return course heading and not absolute yaw angle from the north bearing. However, using Kalman filters one can actually get an estimate of the yaw angle via the GPS measurements - this is what 'commercial' flight controllers (Ardupilot, etc) will be doing. I chose to incorporate it as I wanted to play around with how magnetometers work, see if I can get reliable estimates from them, and so on. As you have said they are difficult to incorporate reliably into the state estimation scheme - so I tend to avoid putting them on future PCB designs!
4 ปีที่แล้ว
4 microUSB ports? Maybe using FTDI 2232H for JTAG is better. You can connect two microcontroller in JTAG-chain. You can also use FTDI chip for 2 UART connections. But I don't know if there is a package other than BGA.
Yeah, back then I was just trying to break out as many interfaces of the STM32 as possible. These days I usually have one USB (for debugging) and an SWD header for programming/debugging.
Neat! If I can ask, why did you decide to have a physically separate STM32F4 instead of just selecting one of the dual-core STM32H7 parts with an included M4 sub processor?
Thank you! Yeah, that would've been much slicker. This was my first 'proper' PCB and my first time making a board with STM32s on them, so was completely new to the field. Back then I hadn't even seen the dual-core parts haha. These days I'd definitely change a few things with this design...
Thank you very much, Steve! I typically have a library folder for each individual project - which isn't the greatest way of organising it but it works for me. I've recently started making my own global library with parts I commonly use, so may push that to GitHub at some point!
I think STM saw this design and decided to bring STM32H7x7 dual core family to accomplish realtime capture and control structure for aerial and ground vehicle
Thank you! I've been fairly busy with other work but have recently done a revamp, more stripped-down version of this board. A pre-decessor of this board has actually already flown! Not fully automatic, but assisted ('fly-by'wire') control worked which was very cool to see.
Love your videos, just started viewing them. Q: you waited to get the HW back to start writing drivers... is there a circuit simulator that could be used to start writing the drivers?
Thank you very much! I'm not entirely sure if there are circuit simulators for that sort of thing. However, I know there's definitely some for various types of microcontrollers - not sure about STM's though!
Thank you for sharing the knowledge☺️☺️. I have a newbie question. You have 4 layers on the PCB. What do you allocate each layer for? Like 5V one layer, 3.3V on another layer, and ground on the other two layers?? Is there any thought process in deciding which power layer sits where on the stack???
Thank you! So the typical four layer stackup is: top and bottom layer for signals, top inner layer GND, bottom inner layer VCC (e.g. 3.3V). When you have 'critical' traces, such as RF, you will typically need a solid ground layer directly underneath those traces. Therefore this stackup makes sense in most cases.
Hi Phil, Very nice video...expecting further videos on writing drivers and high level software. Got one doubt, why did you use separate EEPROM? The flash would have done the same job, may be you have to use a diiferent sector in flash to store your data
Thank you, Manu. Yeah, the flash could have done both. However, I quite liked the idea of physically separating memory areas. So the flash is used for data logging, while the EEPROM is used to store rarely-changing constants, e.g. controller gains etc. Might just be personal preference though!
Thank you very much! These days I mainly use JLCPCB and there is actually a KiCAD plugin tailored for that manufacturer, for example: github.com/wokwi/kicad-jlcpcb-bom-plugin
Very nicely ordered and explained video. I would like to know which hardware and software component is providing communication of data and control commands from Flight Controller to Ground Station and vice-versa? I could see uBlox-Max8 is only GPS receiver. have you used any kind of HW to privice RF link between Flight Control board to ground Station and also it will be useful if you share details of ground Station HW to provide RF link. Thanks. Gyanesh
Thank you, Gyanesh! I chose not to embed an RF transceiver on this board, as from what I've seen people use many different types (be that SiK, LoRa, NRF, etc.). So I didn't want to make the user have to use a particular brand/type of RF transceiver, but rather give the option to attach one via UART/SPI/I2C. The ground station would then have an identical transceiver to that on the UAV but using an interface to connect to the basestation PC (e.g. via USB). I've written a small communication protocol and basestation GUI (which you can find in the Git repo), if you're interested in that!
Thank you! I used Molex PicoBlade connectors. Unfortunately, they are quite pricey - especially the pre-made cable assemblies.. So will be switching to something like JST GH in the future.
found this video while developing my own flight controller got to 1:58 and had to laugh as I'm currently banging my head on my keyboard trying to write an I2C driver
@@PhilsLab How was your experience with PCBWay? Would you recommend using there assembly service for hobby/prototype? Also would love to see a video on how to order assembly service from PCBWay. Thanks!
New hardware and PCB design course on mixed-signal embedded systems just released!
⏵Course content: www.phils-lab.net/courses
⏵Course sign-up: phils-lab-shop.fedevel.education
It just seems too good to be true that such quality information exists for free on TH-cam. You're an excellent teacher and a great human being for sharing this. Thanks heaps
Thank you very much for your kind words!
@@PhilsLab Can you develop a flight control computer for a drone using cameras , radars etc and can you develop a milimeter wave length radar?
@@hamzaarif7249 👁️ 👄 👁️ watcha need that for bud?
This is a masterclass video. You have such a clean, ordered understanding of everything. I really enjoy hearing you break down the flight controller into it's different categories (hardware, software) and then breaking it down even more from there.
Thank you very much, Arnold! I'm very glad you liked the video.
Thank you so much ! I've never seen someones work in this field so structured and open source.
same
You're really helping both students and professionals improve their designs. Your channel is awesome man keep it up!
Thank you very much, Miguel!
Great video. Please continue the great work.
You promised to do the following follow up videos on this design, have you done so yet?
1. Low level hardware design
2. Signal processing
3. Telemetry & messaging protocols
4. State estimation
5. Aircraft Modeling, control system design and implementation
6. Higher level performance design
7. Ground control station design
If you have not done so yet, please consider doing them as soon as you possible can. We would be very grateful as your teaching style, design philosophy and methodology are exemplary. Thanks in advance.
This is art! The board just brings a reallyy wide smile on my face. Your teaching style, your knowledge is so precise and deep! Your videos are precious, extremely valuable… thank you so much for the time you put into these videos
Oh, yes, connectors! I've spent more time selecting connectors for my last project than all other designing time together.
Thank you for this video.
Yeah, it’s dreadful how many of them there are these days... Any favourites of yours you can recommend? For flight control stuff I’ve settled for Molex PicoBlade even though they are quite expensive.
@@PhilsLab My last project is dead simple from electronic point if view, it is more electrical - power distribution box for motorcycle - but it must be very robust, as currents are rather large (up to 10A per consumer, up to 30A total) and environment is very harsh due to vibrations. Typical solution in this area is screw terminals, but I don't like it, as I know how motorcycle engine could unscrew any bolt without locktie. I've looked at Molex MegaFit and alike, but some of such connectors require exotic crimpers to prepare cables and not easy to buy if you have access to simple "electrical" shops and not places like Mouser or DigiKey (for example, no retailers sell MegaFit in my country, you could order them through distributor, but distributor works only with big quantity orders, like 100 of one type minimum, and shipping from DigiKey is about $70 no matter what you buy), and I want to have project as accessible as possible. So, after a long reading of application notes, recommendations and industrial standards, I've sacrifice my wish to have polarized vertical connectors and goes with "good old" Quick Fit tabs. Good quick fit tabs or soldering to PCB are not easy to buy too, but, at least, other part (female connectors to crimp on a cable) could be bought in any Car Parts store, crimper for them is present in any car mechanics shop, and it is type of connectors which are recommended, for example, for USA Aircraft Manufacturers (instead of screw terminals).
For small-scale connectors my go-to type is "JST" of different sizes (GH, PA, XA), because there are a lot of cheap but rather good Chinese clones around.
Phil, I admire the thorough design flow that you use; it's really top-notch engineering and it radiates experience in the field. I cannot thank you enough for spreading your knowledge. You are educating the next generation of electronics engineers. Thank you!
Thank you!
This is hard work..You are so good at electronics!
That's very kind, thank you!
Aside from designing my own boards + systems, really am enjoying watching your designs too. Very good and clean designs you have, excellent work my friend.
Yo..This is the best channel on PCB design and the documentation is so good....Ain't seen much like it...would have liked to see the quad fly
Thank you very much! Hopefully will get to see one of these flight controller PCBs in action sometime soon :)
Phil, thanks so much for all the hard work. A long long time ago and in a galaxy far far away I spent an entire career in the US Marines and most that time was in the aviation side of the house - aircraft maintenance admin and aircraft statistical analysis with the 3rd Marine Aircraft Wing in California. I appreciate your work in fixed wing aviation and the insight you provide in both code and related electronics. I'll do my best to keep up with you.
How my GOD This is the freaking video i've been looking for the past few years!!! Thanks or showing us how to do this!!
Awesome! My pleasure, glad you found what you were looking for!
Phil S will you be making a video going over programming the firmware?
I really love your documentation
Awesome organization... Always knew it is required but never really saw someone doing it so religiously it becomes a best practice for me...
Thank you very much!
Really looking forward to your subsequent videos(control). Amazing presentation from the architecture down to low level PCB functionality. Thanks
Thank you, really glad you liked it! More to come soon!
@@PhilsLab you welcome.I’m actually designing some hardware at the moment...subsequent videos will definitely help me. Thanks once again
This is awesome I saw you're 66th video and then I wondered what your first video was on. Now I'm here.
Please, please make a class around pcb design. There isnt any better youtube videos on the subject! Channel is top notch!
Thank you very much! What kinda PCB design topics would you be interested in? Or rather a 'basics-to-advanced' kinda course?
@@PhilsLab basic to advance would be amazing!! Im currently going back for my EE. And there is next to no classes for circuit design and layout. I watch your videos for most of my kicad help!
Great work to see the theory, design, PCB layout and finished product. Amazing work.
Thank you, Jeremy!
Thanks for sharing the details and all the thought process of the hardware design. Can't wait to learn more from your upcoming videos.
@@PhilsLab A Video about signal termination or high speed differential signals like Ethernet / USB layout would be great to have, there is very limited information about it online. Your thought process was very organised, easy to follow and understand even for someone relatively new to the field :)
@@PhilsLab I would like to see a video on how all the sensors data are fused and used, the control algorithm of the UAV and how you can make deterministic processing in your control loop. Keep up the work ;)
Your courses are easily one of the best put together and understandable online courses in ee and I would easily pay over $1k if you did a course on general subject matters. Please consider it.
Phil - your projects are fascinating and your videos are excellent - many thanks for taking the time to make and post these.
Thank you very much for your kind comment, Richard! My pleasure - thank you for watching!
You documentation and organization is unparallel
That's very kind of you to say, thank you!
Personally I recommend that you .zip up your design file folder before you even order the boards instead of as an afterthought. You will be much less likely to forget this backup if you incorporate its creation several times in your design process. Zip them up early and often; back them up to the cloud, NAS, and/or flashdrive. Then, immediately, change the version number and folder (directory) name. You can always view the design from the .zip. If you don't need the new version, you can always scrap it later.
Thanks for investing your time and sharing this with us!
My pleasure, thank you for your comment!
TH-cam always recommends me the good stuff
I'm glad it does! :)
Mate, this is truly impressive, and really inspiring. Well done. Take care.
Thanks a lot man!
How do the chips communicate with each other, and what is the purpose of the 8 GPIO pins connecting them?
Excellent topic and excellent explanation Thank you from the depths. उत्कृष्ट विषय और उत्कृष्ट व्याख्या गहराई से धन्यवाद
Thank you for watching, Abdullah!
First, I really admire your work. Very good you put together no doubt. However, I think two STM32 is an overkill. Especially since one of them is STM32Fxx a dual core which is kind of two cpus in one chip. So I don't understand why you need to have a fully dedicated STM32 for just datafusion of sensor data to find orientation (euler angles). MPU6050 has a dedicated on board cpu that can do datafusion accurately. one main challenge to do data fusion on a microcontroller is the timing and synchronization which will lead to drift and other unexpected issues.
I I've manufactured a PCB based on your design specifications, but I'm encountering an issue with the MIC26903YJL-TR regulator. Instead of providing the expected output voltage of 5V, it is only supplying 0.12V. I've attempted to resolve the issue by replacing the regulator, but the problem persists, with the output remaining at 0.12V. Could you please offer any suggestions or guidance on how to address this issue?
Can't wait for the rest of series. Good Job!
Thank you!
this channel is gold
Thank you, Jan! :)
Very nice presentation! The board is very well designed!
Thank you very much!
I am going on Liking Spry on all your videos / documentaries!
Haha that's awesome, thank you!
Truly a Genius and real hard work.!Subscribed
Thank you so much for upgrading my skills.
Thank you for watching, Frank!
@@PhilsLab As a noob mechanical engineer who only knows how to use Arduino. I found your content is so potent for me. My goal is to be able to make a professional-grade custom microcontroller PCB and basic power electronics. Thank you so much!!
Fantastic video! I! I’m just in the beginning of my electronic’s learning path and this kind of material greatly helps to structure pieces of knowledge I’ve got around the web. Lots of useful information. Thank you very much, Phil!
Awesome, glad to hear that! Thank you for your comment :)
This is Great !! Thank you for presenting this project.
Thanks for watching!
Why is the fast H7 used for the flight controller, whereas the slower F4 is for the sensor and navigation reader? Generating PWM with an F4 is easy, but wouldn't you want a high speed read of the navigation sensors? Unless .. you want to be able to change PWM at a quicker rate .. ? It feels like the H7 should be used for quick response for the navigation and sensor read unit. Or is the PID controller going to be running on the flight control computer for performing stability calculations? I had planned on building something similar in my spare time a few years back, where the navigation system feeds data into a neural network, but other things just ended up getting in the way. Nice project BTW!
Thank you very much for this structured video. It greatly reduced the anxiety I had starting the project but I have a question I would love to ask you Mr. Phil and many other more experienced minds. I have at least 3 years experience in Electronics and have a good deal of knowledge for PCB Design and I also have a partner who has 7 years of Embedded software programming but we plan on taking a project of building an autonomous drone. Do you think it is necessary for one to dive deep into Control theory or one could work with good open source libraries like BetaFlight or others?? Do major companies doing such dive in deep and write the whole libraries for Normalization, Kalman filters and the likes??
Done with Part; am waiting for the next Part.
Awesome, thanks!
Hi, Phil. You tested this board? What worries me is:
1. That power and GPS/RF parts are too close?
2. Same as for sensors being too close to Switching power supply/RF part?
Hi there, thank you for your comment. Yes, I tested this board and have not encountered any problems so far. GPS acquires a fix fairly quickly and the sensors are giving the correct readings.
I came back to watch the video again. :)
Haha, thank you Adam!
how are u this intelligent man? . your videos are just amazing, helps me a lot in my job XD
The STM32H7 you used seems like it’s quite powerful enough to handle all of the needs you spoke about without needing a secondary processor unit (F4). Is there a reason you still chose to do this, was it just for more IO?
wow, this was an amazing watch.. and here i am struggling to route an NE555 and a few LEDs lol.. instant subscribe, this was awesome
Thank you! Haha don't worry - you don't want to see what my first boards looked like.. I'm sure you'll be able to make the stuff in this video in no time.
Now i'm curious :D i'm sure i'll get it done, autorouter is always an option, i use eagle (Fusion360) and EasyEDA but still haven't finished a board yet, more the cad person. keep em coming though, the thought process before even touching the software is super informational and clear
cool video :-) just one suggestion, have at the end a small flight with a drone, just to show it in action
Will You post complete design tutorial of this board in altium
Do you test your components on breadboard or design directly the PCB? Some manufacturers have very poor documentation and wasting a PCB because there is a design issue is not cheap.
Hey Phil, are there other Videos related to this flight controller board ? for example the PID and kalman Filter implementation for this board, written drivers to the IMU and other sensors...?
Amazing.
Thank you!
thank you man! for your generous heart
Thank you for this informative video. Is there a video about software part.
Great video! Why did you chose two microcontrollers over just having one more powerful one? It just seems like a unnecessary complication to me?
Hai phil..can you make a video how to order PCBA at PCBWAY or JLC?
Good knowledge, well done, thanks for sharing with us :)
Nice project and the documentation is awesome! Btw: do you solder your board yourself or is it done externally? If yes, where?
Soldering of CMS components can be done by the PCB manufacturer in a process called SMT assembly. They have a list of components which are available on their website. They charge extra for this service. For other components, you will have to do it yourself. You can buy said components on websites like Farnell or Radiospare if you want something fast (it's expensive to go that route). Or you can carefully import components from China through websites like AliExpress (beware of what you buy on there). Ball grid array components CANNOT be soldered by hand. Small CMS components are also hard to solder without proper equipement.
Thank you! I had this board made and assembled by PCBWay in China. But I typically have my PCBs made and assembled by JLCPCB these days.
Phil, could you please also touch on the telemetry messaging? Perhaps also about how you designed your protocol?
Sorry for the late reply! Yes, at some point I'll go over the - rather simple - messaging protocol I am using. In essence, it's very similar to MavLink but with COBS encoding.
That's huge! Is there more about the software design?
I've just started working on a minimalist (and much cheaper) version of this board, for which I plan on doing a step-by-step guide through the firmware design. From low-level drivers through to state estimation and control system implementation. Is there anything in particular you'd like a focus on?
@@PhilsLab yeah,i was thinking you had about 3x more cpu power than you could ever use. I can't wait to see it. I did a recent project coding an adhrs from a naze32. I fly it on my homebuilt manned glider.
Excellent video
Hello Phil, I'm a complete beginner interested in learning how to design my own circuit board. I feel like this video is too advanced for me. Could you list some resources for people like me or make a video? I want to know basic concepts about the design process, such as design decisions when wiring and selecting components, and coding the relationship between them.
I went through the github repository, I like how its arranged well but for the time being, the source codes and all were beyond my technical understandings.
Bro I would pay money for the whole course series if there was step by step tutorial in on some online-learning sites like Udemy, or would be very grateful if its free in TH-cam. Would you kindly show me the the way, what sorts of foundations I should make unorder to grasp the content(besides PCB design skill)?
Thankyou.
incredibly useful to learn . thank you!
Thank you for watching!
Phil, very nice work. Can you tell me what IDE/Compiler you are using for the development of the STM32 Firmware?
Thank you, Greg! I'm using STM32CubeIDE to program the STM32s. It's free software and pretty much all you need in my eyes.
Is it possible to wire it to a c-172 and fly it? If not, why not?
Very impressive... kudos!
Thank you!
Is it hard to reflow BGA? Do you normally get the parts assembled or DIY? You briefly talked about copper pour, it would be great if you go over mixed-signal design PCB with KiCad. Great videos!
Please, make a review of MSP protocol and how to interact with flight controller via usb
Excelente curso você é top 10 amigo
Do you know a place to order flexible pcb? I wanted something very small and simple like 20x20mm but even this is like 120 dollars
I love that this board has a built in GPS. Is there any way to put a GPS antenna on the PCB? My dream flight controller would have an ESC and LoRa too. Not sure if that's possible? I guess it's not a big jump to run iNAV or Beta flight on this board? You'd only need the one processor though.
Yeah, I'd love commerical flight controllers with built-in GPS. I don't think a GPS antenna would work too well, as (as least for fixed-wing UAVs), the hardware is buried inside the fuselage without a clear view of the sky and thus the signal reception strength will be diminished.
I'm sure an ESC + LoRa would work to give a complete system, then again I don't know how large that board would be! One thing I thought may be cool, is to combine some sort of Linux-based CPU with the lower-level microcontroller/sensor stuff on one board.
I'm fairly certain, although I haven't looked into it, that you could get one of the popular flight control firmwares to run on this. Then again, if I had to redo this board, I'd probably do quite a few things differently!
Good infomation
Thanks!
Phil you just rock!!!
Awesome video!! Thanks!
Thank you for sharing.
Nice post. you can change whatever your file if put them under git.
dude I love you videos and explainations! Thank you so much
Thank you, really glad you're liking the videos!
Hello. I love the work you are doing, congrats! I'm quite experienced with Ardupilot and INav and in both, magnetometer for fixed-wing crafts is optional. Actually (well, in INAV at least, I haven't used Ardupilot in quite a while) it is not recommended due to the fact the orientation is always "forward" and the direction can be determined by IMU an GPS. Do you have any other reasons to use it?
Thank you very much! Yes, magnetometers are rarely used in aircraft as they are rather difficult to calibrate and are influenced heavily by any surrounding magnetic fields - especially those generated by the electronics on the board.
The positive aspects of a magnetometer are that it has a much higher sample rate and can thus give a more frequently updated estimate of the yaw of the aircraft. Also, GPS units return course heading and not absolute yaw angle from the north bearing. However, using Kalman filters one can actually get an estimate of the yaw angle via the GPS measurements - this is what 'commercial' flight controllers (Ardupilot, etc) will be doing.
I chose to incorporate it as I wanted to play around with how magnetometers work, see if I can get reliable estimates from them, and so on. As you have said they are difficult to incorporate reliably into the state estimation scheme - so I tend to avoid putting them on future PCB designs!
4 microUSB ports? Maybe using FTDI 2232H for JTAG is better. You can connect two microcontroller in JTAG-chain. You can also use FTDI chip for 2 UART connections. But I don't know if there is a package other than BGA.
Yeah, back then I was just trying to break out as many interfaces of the STM32 as possible. These days I usually have one USB (for debugging) and an SWD header for programming/debugging.
Neat!
If I can ask, why did you decide to have a physically separate STM32F4 instead of just selecting one of the dual-core STM32H7 parts with an included M4 sub processor?
Thank you! Yeah, that would've been much slicker. This was my first 'proper' PCB and my first time making a board with STM32s on them, so was completely new to the field. Back then I hadn't even seen the dual-core parts haha. These days I'd definitely change a few things with this design...
@@PhilsLab Fair enough, thanks for sharing your project!
Thanks Phil, love all your videos on your channel. With regards to Kicad - how do you organize your part/model libraries?
Thank you very much, Steve! I typically have a library folder for each individual project - which isn't the greatest way of organising it but it works for me. I've recently started making my own global library with parts I commonly use, so may push that to GitHub at some point!
@@PhilsLab Sounds like we are following the same path. I'm just in the process of organizing a global library. Look forward to more videos from you!
I think STM saw this design and decided to bring STM32H7x7 dual core family to accomplish realtime capture and control structure for aerial and ground vehicle
Impressive work!! Is this project still on-going? Has the board already been brought up?
Thank you! I've been fairly busy with other work but have recently done a revamp, more stripped-down version of this board. A pre-decessor of this board has actually already flown! Not fully automatic, but assisted ('fly-by'wire') control worked which was very cool to see.
Love your videos, just started viewing them. Q: you waited to get the HW back to start writing drivers... is there a circuit simulator that could be used to start writing the drivers?
Thank you very much!
I'm not entirely sure if there are circuit simulators for that sort of thing. However, I know there's definitely some for various types of microcontrollers - not sure about STM's though!
amazing work)
Thanks, Andrey!
How can i buy the board?
Wow! This is ambitious! Your either a genius or a madman! haha. Will you be borrowing chunks of code from pixhawk/ ardupilot? Or going fresh?
I want one!!! Looks amazing!
Amazing well done videos! Thank you for sharing! :)
Thank you!
Thank you for sharing the knowledge☺️☺️. I have a newbie question. You have 4 layers on the PCB. What do you allocate each layer for? Like 5V one layer, 3.3V on another layer, and ground on the other two layers?? Is there any thought process in deciding which power layer sits where on the stack???
Thank you! So the typical four layer stackup is: top and bottom layer for signals, top inner layer GND, bottom inner layer VCC (e.g. 3.3V). When you have 'critical' traces, such as RF, you will typically need a solid ground layer directly underneath those traces. Therefore this stackup makes sense in most cases.
@@PhilsLab Thanks a lot for the reply. I'm learning so much so easily from all you experienced youtubers 😊👍
Hi Phil, Very nice video...expecting further videos on writing drivers and high level software. Got one doubt, why did you use separate EEPROM? The flash would have done the same job, may be you have to use a diiferent sector in flash to store your data
Thank you, Manu. Yeah, the flash could have done both. However, I quite liked the idea of physically separating memory areas. So the flash is used for data logging, while the EEPROM is used to store rarely-changing constants, e.g. controller gains etc. Might just be personal preference though!
@@PhilsLab okay... cool!
Really good job and nice well explained documentation! Keep up the good work! Do you use some BOM plugin in order to export all in a csv or excel?
Thank you very much! These days I mainly use JLCPCB and there is actually a KiCAD plugin tailored for that manufacturer, for example: github.com/wokwi/kicad-jlcpcb-bom-plugin
@@PhilsLab thank you very much I will check on it:D
excellent bro,
Very nicely ordered and explained video. I would like to know which hardware and software component is providing communication of data and control commands from Flight Controller to Ground Station and vice-versa? I could see uBlox-Max8 is only GPS receiver. have you used any kind of HW to privice RF link between Flight Control board to ground Station and also it will be useful if you share details of ground Station HW to provide RF link. Thanks. Gyanesh
Thank you, Gyanesh! I chose not to embed an RF transceiver on this board, as from what I've seen people use many different types (be that SiK, LoRa, NRF, etc.). So I didn't want to make the user have to use a particular brand/type of RF transceiver, but rather give the option to attach one via UART/SPI/I2C.
The ground station would then have an identical transceiver to that on the UAV but using an interface to connect to the basestation PC (e.g. via USB). I've written a small communication protocol and basestation GUI (which you can find in the Git repo), if you're interested in that!
What connectors have you used for the COMM, GPS and Sensors? BTW excellent work there and that's so awesome of you to make in opensource.
Thank you! I used Molex PicoBlade connectors. Unfortunately, they are quite pricey - especially the pre-made cable assemblies.. So will be switching to something like JST GH in the future.
found this video while developing my own flight controller
got to 1:58 and had to laugh as I'm currently banging my head on my keyboard trying to write an I2C driver
You are a genius
Thanks!
Awesome project! Where did you get the PCB built/assembly?
Thanks, Paul! The PCB was manufactured and assembled by PCBWay in China.
@@PhilsLab How was your experience with PCBWay? Would you recommend using there assembly service for hobby/prototype? Also would love to see a video on how to order assembly service from PCBWay. Thanks!
Which company did you use for PCB fabrication and assembly?
For this board I used PCBWay in China. These days I tend to go with JLCPCB however.