Page 1 of 1

Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Feb 04, 2012 6:45 pm
by timecop
OK, as you know I'm working on making multiwii run on the $50 goodluckbuy STM32 thing called "FreeFlight".
90% of functionality I want is already implemented, of course things like RC input (pwm, ppm), motor/servo output,
uart comms, flash loading/saving, i2c, sensors (used on that board), etc. There's stuff I don't care about like I2C LCDs and other marginally useful (t0 me) junk which I havent bothered with.

First stupid question of the day:
The gyro is MPU3050.
I configure it in 2000dps mode, 8khz sampling, no lowpass filter. The values look sane in GUI.

i followed this for graph orientation:

Pitch forward and the gyro pitch numbers should go positive (up on the graph).
Pitch back and the gyro pitch numbers should go negative (down on the graph)
Roll right and the gyro roll numbers should go positive (up on the graph)
Roll left and the gyro roll numbers should go negative (down on the graph)
Yaw right and the yaw gyro numbers should go positive (up on the graph)
Yaw left and the yaw gyro numbers should go negative (down on the graph)
.

I can examine gyroADC and accADC values while running, and those also follow the pattern above.
However, gyro response is almost non-existent.
Once I tilt the board in pitch or roll axises, it slowly rolls there, then stays at an angle.
So something tells me gyro data is either not being used as good as it should be or I'm failing something.

The only thing is different would be cycle time which is around 1300 now.

Image

In the screenshot below, i rolled the board hard to the left, but you see the 'roll' diagram tilting to the right f irst, then it would slowly float over to say 45" left or wahtever I tilted it to.

Where did I fail?
Using latest released -dev (0203)

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Feb 04, 2012 7:13 pm
by timecop
Problem self-solved.
silly #if GYRO stuff to define proper scale factor and then more of currentT/previousT stuff moving to 32bit ints - now works perfectly.

http://www.youtube.com/watch?v=-AVkSCi78J0

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Feb 04, 2012 9:50 pm
by copterrichie
Dude, sometime I am totally taken with your brilliance!

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sun Feb 05, 2012 3:23 pm
by amourdurisk
Very nice job Dongs,
I am excited to see what happens in flight :)
Do you share the code ?

Matt.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sun Feb 05, 2012 3:31 pm
by timecop
I'll have the code in my afrodevices googlecode page once I'm done cleaning it up and refactoring.
First hover = http://www.youtube.com/watch?v=cCloC5bhwL0
Kind of hard to fly and hold camera at same time, sorry.
But it works as expected i guess.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 10:22 am
by marbalon
Could you paste link to this board in shop? I found it but looks different then yours, and don't have HMC5883L on the board. If you could put photo of this board.

Marcin.

Edit.
I found you make a clone of this board. It is possible to share schematics or maybe PCB files ? I have some plans to make STM port too, so maybe if more people want to use STM32, better if we keep the same pinout and the same repo...

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 11:27 am
by timecop
original chinese pinout:

Code: Select all

FreeFlight Boad Info
~~~~~~~~~~~~~~~~~~~~

processor:   STM32F103C8T6
package:   LQFP48

SWD pads (next to PWM:6)
------------------------
1   NC
2   SWCLK (pin 37)
3   VCC3V
4   SWDIO (pin 34)
5   GND
6   NRST (pin 7)

RxInputs
CH   pin   id      func
--------------------------------
1   10   PA0   TIM2_CH1
2   11   PA1   TIM2_CH2
3   12   PA2   TIM2_CH3
4   13   PA3   TIM2_CH4
5   16   PA6   TIM3_CH1
6   17   PA7   TIM3_CH2
7   18   PB0   TIM3_CH3
8   19   PB1   TIM3_CH4

Motor Outputs
PWM   pin   id   func
--------------------------------
1   29   PA8   TIM1_CH1
2   32   PA11   TIM1_CH4
3   42   PB6   TIM4_CH1
4   43   PB7   TIM4_CH2
5   45   PB8   TIM4_CH3
6   46   PB9   TIM4_CH4


i2c   pin   id   func
--------------------------------
scl   21   PB10   I2C2_SCL
sda   22   PB11   I2C2_SDA


Usart   pin   id   func
----------------------------
Tx   30   PA9   USART1_TX
Rx   31   PA10   USART1_RX

other   pin   id   notes
--------------------------------
buzzer   33   PA12
Led1   40   PB4   must disable JTAG to use
Led2   39   PB3   must disable JTAG to use
Led3   power


you have some "plans to make"? but it's already made and it works.
the problem is now, with a proper processor, all the stuff that has been hiding inside a forest of #ifdefs can actually be turned into dynamic runtime features.
and this would require major changes to the GUI.
I'm thinking maybe just dropping multiwii gui alltogether and instead use something that makes more sense, like openpilot gcs or similar. because hacking in all t he configurable stuff into nasty java GUI is not something I'm interested in doing.

So what are your plans?

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 12:22 pm
by marbalon
Yes I know it is available, but I want to expand it a little. I think about compass, I2C header to external sensors like MAG or GPS_i2c (or uart header), gimbal, battery monitor etc. But your information is enough. I think we can create separate GUI, but you can find screenshot from new WinGUI for MWC and it looks interesting, and will be available with sources, so it should be ease to make some changes.

Generally I'm thinking about new CPU with more mips,ram,program memory because want to use it with more sensors and more features lik RTH as filesave etc.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 12:37 pm
by timecop
Adding a bunch of new sensors takes no skill. Just look at the current multiwii code.
What would make much more sense is using more available CPU to do things properly, i.e. proper IMU without 8bit shortcuts, proper fusion of acc/gyro/mag instead of approximations, that kinda thing.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 12:58 pm
by marbalon
dongs wrote:Adding a bunch of new sensors takes no skill. Just look at the current multiwii code.

Yes this is true, but If I build make new board I want to expand it a little to be sure that It will work with GPS etc.

dongs wrote:What would make much more sense is using more available CPU to do things properly, i.e. proper IMU without 8bit shortcuts, proper fusion of acc/gyro/mag instead of approximations, that kinda thing.

I agree. Since few versions I made some changes for ACC calcuation using floats and have much stable platform and no drift problem. But Atmega don't like floats...

Hmm so it is time to design new STM board.... But I didn't work with this CPU till now so need learn new programming/debugging methods IDE, etc.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 1:23 pm
by timecop
The board is already made. $50 chinese freeflight is more than sufficient to start proper development. it has a working acc and gyro. arguably, that's probably cheaper than most multiwii boards go for these days :roll:

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 1:30 pm
by marbalon
Yes but in this price I can design onw PCB without any problem with headers, size etc. like I want ;) with Gyro + ACC should cost about 35$ in Poland (but with gyro L3G4200D and ADXL345 acc).

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 1:33 pm
by timecop
Go ahead, let me know when you're done. btw that pinout is terrible waste of 48pin package - with proper pinout planning (such as openpilot did for example), you can have 2 SPI buses, 2 uarts, on-board USB, etc.

Anyhow, hardware is not the limiting factor, never been. It's finding people who are tired of wasting time optimizing each cycle out of motor PWM output routine. Heh, you can have $10 or whatever STM32-discovery board and do same thing with it. That's been available for years. How many people are flying multiwii on STM32? Just me.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 06, 2012 9:34 pm
by amourdurisk
Nice hover ;)

Do you think i can use your code on a chipkit uno32 ?
good luck for the futur

Matt.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Tue Feb 07, 2012 1:04 am
by timecop
No because I don't give the slightest caress about pic32.
Anyone who does can, this port took me a few hours after I moved it to a driver framework I wrote for unrelated project.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Wed Feb 15, 2012 11:49 pm
by djrm
Hello dongs,
This is my first post on the forum. I'm starting to build a multicopter for the first time, I'm already looking for an upgrade to a multiwii clone I have yet to receive! the stm32 arm looks like a good choice, and the board you bought looks like a suitable inexpensive platform to build it on. I was atracted to the rabbit board but as far as I can tell the software source is unavailable. WIll / have you made your software available yet? do you want some help in developing it more?
Best regards, David.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Thu Feb 16, 2012 10:45 am
by timecop
I just committed the stm32 bits to afrodevices repo on google code: http://code.google.com/p/afrodevices/
they're far from being clean and etc, but they work on freeflight hardware as well as my clone, auto-detecting present sensors out of the choice of adxl345, bmp085, hmc5883 and always-required MPU3050.

I'm using Keil MDK for environment for this project.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Thu Feb 16, 2012 8:43 pm
by djrm
Thanks for posing the source. I've tried building it but the code size just exceeds the limit for the free version of Keil.
Perhaps I can trim it down or port it to IAR for which I have a full license.
Best regards, David.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Feb 17, 2012 1:38 am
by timecop
Keil forces fairly strict ANSI-C coding, so it should be compileable by just about anything.
You can make some Makefiles and use it with CodeSourcery or similar toolchain. Of course, the whole point is being able to debug on-target and I'm not sure how that works out with GCC and Makefiles.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Feb 24, 2012 12:17 am
by Lapino
Hi,

is this http://www.st.com/internet/evalboard/product/250863.jsp
board also suitable?

Best regards,

Tobi

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Feb 24, 2012 12:26 am
by timecop
If you think you can make that fly for less than $50 that goodluckbuy freefight costs, yes.
You will need:
0) install compilers/ide for cortex m3
1) change pin out from f103
2) get some overpriced sensor breakout board
3) add support for those sensors

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Feb 24, 2012 10:00 am
by Lapino
yep...this was what I was thinking of ;)

Thanks for your quick reply :)

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Feb 27, 2012 12:50 am
by timecop
MWC on STM32 with warthox flying

http://vimeo.com/37479111

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Tue Feb 28, 2012 1:02 am
by roblynn
dongs wrote:If you think you can make that fly for less than $50 that goodluckbuy freefight costs, yes.


For prototyping purposes, I have the stm32vldiscovery board (10$) paired with an ATAVRSBIN1 9dof sensor (http://www.atmel.com/tools/AVRSBIN1.aspx, at 54$). I also use a USB to 3.3v serial cable for 20$. Plus perfboards and wirewrap -- total is definitively more than 50$... I am currently using native C-code using ST's peripheral libraries directly, but plan to migrate to this code base for testing as I really like the GUI options available.

Robert B.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Mar 09, 2012 12:47 pm
by timecop
Here's a great reason for opensores:

http://www.rcgroups.com/forums/showpost ... tcount=779

With just some minimal changes, this gentleman was able to get baseflight (stm32 mwc port) to run on FY90Q hardware.
That's cool, because I heard original firmware on those is quite teh suck.

So you can get a cheap hw (FY90Q), flash mwc port on it, and go flying. Very cool.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Mar 09, 2012 3:11 pm
by copterrichie
1+ From my window seat, everyone benefits from Open Source

May I suggest cross-Posting the above comment here: http://www.rcgroups.com/forums/showthread.php?t=1610439

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Thu Mar 15, 2012 6:09 pm
by timecop
http://www.youtube.com/watch?v=bVand2vhFXg

headfree mode is awesome, now I can spin like a pro :)

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Jul 13, 2012 4:42 pm
by pm1
@dongs
Just compiling the head revision of your stm32 port. I am using codesourcery g++. I am breaking now the flash, the binary size is > 64 k. Your hex file seems to be 30 % smaller than mine. Any hint? Compiler options: -mcpu=cortex-m3 -mthumb -auxbase-strip src/gps.o -Os -Wall -version -fmessage-length=0

Best regards
Peter

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Fri Jul 13, 2012 5:02 pm
by timecop
Yes, I'm not using gcc.
Bump flash size to 128k in linker script, change FLAHS_NUM_PAGES (or something like that) in config.c to 128.
rebuild/upload.
64k devices have actual 128k of physical flash.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Jul 14, 2012 12:40 am
by alexia
2 months without new maj...does it already death?

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Jul 14, 2012 12:46 am
by timecop
baseflight.hex 118 KB r174 Jul 2, 2012
yes, deader than Linux on desktop.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Jul 14, 2012 1:16 am
by copterrichie
Dongs, you ride this high horse about how much better this ST32 is over the Arudino, Well it isn't all that period!

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Jul 14, 2012 6:23 pm
by pm1
Hi,
here a new version of the STM32 port based on r181 of the afrodevices svn repository. Download
Differences:
- main loop fixed to 5 ms
- changed altitude hold

I made the main loop at fixed intervalls, because I and D-Term are dependent of the loop time in the code today. I found the default loop time of about 1,4 ms too low to get good results. I made experiments upt to 10 ms. 5 ms are working fine for me.

I changed the altitude hol to a different alghorithm wich reacts a little bit faster on *real* changes in altitude. Due to my changes, the PIDs have a different scaling. In the file a screenshot of the Multiwii configuration as a start.

Best regards
Peter

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Aug 06, 2012 2:11 pm
by EricBx
Hello, any news about multiwii for the Rabbit FC ?

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Aug 06, 2012 3:34 pm
by Hamburger
Ask the rabbit producer. They stole MWii code already.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Mon Aug 06, 2012 3:53 pm
by copterrichie
From what I have been able to determine, the Rabbit is a dead issue in the way of, there is not much development happening.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Aug 11, 2012 8:01 am
by EricBx
Hamburger wrote:Ask the rabbit producer. They stole MWii code already.

That's a constructive answer... Thank you.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Aug 11, 2012 8:04 am
by EricBx
copterrichie wrote:From what I have been able to determine, the Rabbit is a dead issue in the way of, there is not much development happening.


I confirm that their code is crap, as they are unable to make the GPS works properly, and many other things. If the board was interesting regarding the hardware it's far to be the case for the software... I still wish that someone finally find the way to make the MWii soft run on it so we could fully use it.

Re: Multiwii port to STM32 and place to ask stupid questions

Posted: Sat Aug 11, 2012 8:10 am
by timecop
The hardware is boring, anyway. Its cortex M0 (no hardware divide) at 50mhz, only 64k flash and like 4 or 8k ram.
its even less interesting than any of the (cheaper) kcopter boards.