Getting Started: Difference between revisions

From STorM32-BGC Wiki V1
Jump to navigation Jump to search
 
(138 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<span style="font-size:88%">''by Yang/wdaehn</span>''
<span style="font-size:88%">''by Yang/wdaehn and OlliW, with videos by alcurtis93, descriptions refer to firmware v0.67e</span>''


You have a gimbal, the STorM32-BGC board, the IMU module and all cables. So what is next? This page is intended to guide you through the essential steps (for the v0.56 firmware version), and provides references to the detail pages in case you need to know more. Basically the steps are
You have a gimbal, the STorM32-BGC board, the IMU module and all cables. So what is next? This page is intended to guide you through the essential steps, and provides references to more specific pages in case you need to know more. Basically the steps are:


<div class="toclimit-2">__TOC__</div>
<div class="toclimit-2">__TOC__</div>


== Ordering information ==
== Ordering Information ==
Things to order at minimum:
* STorM32-BGC board
* IMU module and matching cable
* USB-to-serial adapter


The STorM32-BGC board can be obtained from various shops. There are several hardware revisions around, but, frankly, they do not differ much. There is, e.g., nothing wrong with buying a v1.1 board, just keep in mind that some pins are placed differently here. A v1.3 board is used exemplarily below.
The STorM32-BGC board can be obtained from various shops. There are several hardware revisions around, but, frankly, they do not differ much. A v1.3 board is used exemplary below.
Together with the board, buy also an IMU module and a matching cable from the same vendor. There are tons of different IMU modules available, and different connectors are in use. The plug on the STorM32 board is a so-called [http://www.molex.com/molex/products/family?key=picoblade&channel=products&chanName=family&pageTitle=Introduction Picoblade] connector.
 
Finally, an USB-to-serial adapter with a matching cable is required for flashing the latest firmware. It can be any FTDI, CP2102, ... adapter, but NOT a PL2303-based adapter. Again, if you do not have one already, I recommend buying one together with the other parts. Personally I prefer those where the drivers come from the Windows Update Site automatically.
Together with the board, buy also an IMU module and a matching cable from the same vendor. There are tons of different IMU modules available, and different connectors are in use. The plug on the STorM32 board is a so-called [http://www.molex.com/molex/products/family?key=picoblade&channel=products&chanName=family&pageTitle=Introduction Picoblade] connector (often, but incorrectly, called JST 1.25 connector).
 
Finally, a USB-to-serial adapter with a matching cable is required for flashing the latest firmware. It can be any USB-to-serial adapter with FTDI or CP2102 or CH340 chips (also known as USB-TTL adapters), but NOT a PL2303-based adapter (for details please see
[[STorM32_FAQ#Which USB-TTL should I use.3F|FAQ: Which USB-TTL should I use?]]). If you do not have one already, buy one together with the other parts. Note: If you're planing to use STorM32 NT modules, then get a USB adapter with FTDI chip (see [[Updating the Firmware of NT Modules|here]]).


Things to watch out when comparing prices
Things to watch out when comparing prices
* Bluetooth module included? The STorM32 board is designed for a HC06 Bluetooth module to be soldered on it. Then you can run the GUI on your laptop via Bluetooth. The range of these modules is modest, so do not expect that it allows to remotely monitor the gimbal values in flight. If in future a smartphone app should become available, this might be really cool for changing configurations, on the other hand, how often will you be doing that?
* Bluetooth module included? Most STorM32 boards are designed for a HC06 Bluetooth module to be soldered on it. Then you can run the GUI on your laptop via Bluetooth. The range of these modules is modest, so do not expect that it allows to remotely monitor the gimbal values in flight. If in future a smartphone app should become available, this might be really cool for changing configurations, on the other hand, how often will you be doing that?
* Connectors soldered to it? Preinstalled connectors allow to simply plug in the motors and go. On the other hand, the RC and motor connectors are quite large, hence you may wish to place them differently or to solder motor cables directly to the board. Consider your preferences before buying.  
* Connectors soldered to it? Preinstalled connectors allow to simply plug in the motors and go. On the other hand, the RC and motor connectors are quite large, hence you may wish to place them differently or to solder motor cables directly to the board. Consider your preferences before buying.  
* IMU module and cable included? Is the IMU cable soft enough and of appropriate length?
* IMU module and cable included? Is the IMU cable soft enough and of appropriate length?


Related wiki articles:
'''Related wiki articles:'''
* [[Where to buy STorM32 boards]].
* [[Where to buy STorM32 boards]]
* [[Boards]].
* [[Boards]]
* [[STorM32_FAQ#What_are_the_differences_between_the_boards.3F|FAQ: What are the differences between the boards?]]
* [[STorM32_FAQ#Will_my_motors_work_with_my_STorM32_board.3F|FAQ: Will my motors work with my STorM32 board?]]
* [[STorM32_FAQ#Which USB-TTL should I use.3F|FAQ: Which USB-TTL should I use?]]
 
== Dos and Don'ts ==
 
{{WARNING|Read and comprehend the [[Dos and Don'ts]].}}
 
== Supported Gimbals ==
 
The STorM32 controller supports several setups, see [[Quick_Start_Guide#Supported_Gimbals|Supported Gimbals]].


== Flash firmware ==
== Flashing Firmware ==


Because the STorM32 board has a very active community, new firmware versions with new enhancements are released on about monthly basis these days, so the first step will be to flash the newest firmware.
The STorM32 board has a very active community, and new firmware versions with new enhancements are released on about a monthly basis. So, the first step will be to flash the newest firmware.


Your board may come or may not come with a firmware loaded; this depends on the vendor. In the first case you could skip the following steps and just install the GUI, but it is recommended to carry them out nevertheless, in oder to get the latest firmware and GUI installed. In the latter case you must go through the steps, since without a firmware the board obviously would not function. The following description works in both cases, only the USB driver gets installed by Windows at different steps; see the red warnings. It is crucial to NOT interrupt Window's install process. It can take several minutes, so please be patient.
Your board may come or may not come with a firmware loaded; this depends on the vendor. In the first case you could skip the following steps and just install the GUI, but it is recommended to carry them out nevertheless, in order to get the latest firmware and GUI. In the latter case you must go through the steps; without firmware the board obviously would not function. The following description applies to both cases, only the USB driver gets installed by Win 7 in different steps; see the red warnings. It is crucial to NOT interrupt the USB driver install process. It can take several minutes, so please be patient.


In order to flash a new firmware the following steps are recommended.
In order to flash a new firmware the following steps are recommended.


# Get your USB-to-serial adapter to work by installing all Windows drivers as requested by the vendor. [[File:Usb-to-uart-driver.png|none|300px]]
# Get your USB-to-serial adapter to work by installing all Windows drivers as requested by the vendor. [[File:Usb-to-uart-driver.png|none|360px]]
# Unplug(!) the USB-to-serial adapter again.
# Unplug (!) the USB-to-serial adapter again.
# Connect the USB-to-serial adapter to the STorM32 board to the pins labeled RC (!). The firmware is not programmed via the UART labeled port, not via USB, but via the RC pins. In other words, when the board is brought into the bootload mode, the RC pins are re-assigned to the microcontroller's UART1; normally these pins are assigned to the PWM timer. And the pins labeled as UART are the mcu's UART0. All of this is a security measure to avoid people programming the board via e.g. Bluetooth and end up with an nonoperational board. [[File:Stom32-bgc-flashing-w-usbttladapter-connections-02.jpg|none|300px]] {{WARNING|If the board has a firmware installed and this is the first-time connection to the PC, then Windows will install the USB driver. This can take quite some time. DO NOT interrupt the install process.}}
# Connect the USB-to-serial adapter to the STorM32 board at the pins labeled RC (!). The firmware is '''NOT''' programmed via the UART port, '''NOT''' via the USB, but via the RC pins. In other words, when the board is put into bootloader mode, the RC pins are re-assigned to the microcontroller's UART1 as needed for flashing the firmware; normally they are assigned to the PWM timers. [[File:Stom32-bgc-flashing-w-usbttladapter-connections-02.jpg|none|600px]]
# Connect the STorM32 board via USB to the computer. We are not using this connection yet but we power the board via USB. Although we do not need it yet, this might trigger Windows to install a driver for the STM processor's USB connection.
# Connect the STorM32 board via USB to the computer. We are not using this connection yet, but we power the board via USB.<br>{{WARNING|If the board has already a firmware installed and this is the first-time connection to your PC, then Windows will install the USB driver for the STorM32 board. This can take quite some time. Do '''NOT''' interrupt the install process.}}
# Download the newest firmware, unzip it and run the exe file, in this example the o323BGCTool_v056.exe program. It does not matter what the current firmware installed is, you use the tool that comes with the firmware zip file. Get the zip file from here: [[Downloads]].
# Download the newest firmware, unzip it and run the GUI, in this example the o323BGCTool_v067e.exe program. It does not matter what the currently installed firmware is, you use the GUI that comes with the firmware zip file. Get the zip file from here: [[Downloads]].
# In the tool select the {{GUI|Flash Firmware}} tab on the very right hand side and select the hardware revision of your board. This does change the firmware file to be used in the field below. [[File:Firmware_selector.png|none|300px]]  
# In the GUI select the {{GUI|Flash Firmware}} tab on the very right hand side and select the hardware revision of your board. This does change the firmware file to be used in the field below. [[File:Firmware_selector.png|none|360px]]  
# In step two, the middle of the screen, there is a {{GUI|Com Port}} selector for flashing. NOT the com port selector at the bottom! Click on the drop down box to see all currently available COM ports. Since we do not have connected the USB-to-serial adapter to the computer yet, the new one appearing when plugging in the adapter will be the one to use. Hence remember that list of ports to identify the new one in the next step. [[File:Firmware_comport1.png|none|300px]]
# Now select the COM port of the USB-to-serial adapter. This is done with the {{GUI|Com Port}} selector in the middle of the screen, NOT the com port selector at the bottom! Click on the drop down box to see all currently available COM ports. Since we do not have connected the USB-to-serial adapter to the computer yet, the new one appearing when plugging in the adapter will be the one to use. Hence remember that list of ports to identify the new one in the next step. [[File:Firmware_comport1.png|none|360px]]
# Plugin the USB-to-serial adapter and click again on the drop down box of the serial connector for programming. Select the new one. [[File:Firmware_comport2.png|none|300px]]
# Plugin the USB-to-serial adapter and click again on the drop down box of the serial connector for programming. Select the new one. [[File:Firmware_comport2.png|none|360px]]
# The board has two buttons, the boot and reset button. When the board is started, the very first thing the software does is checking if the boot button is currently pressed. If it is, the bootloader mode is entered, else the normal operation starts. The best way of entering the bootloader mode is hence to press the boot button and while it is pressed to press and release the reset button to initiate a hard reset. [[File:Firmware-bootloadermode.jpg|none|300px]]
# The board has two buttons, the boot and reset button. When the board is started, the very first thing the firmware does is checking if the boot button is currently pressed. If it is, then the bootloader mode is entered, else the normal operation starts. The best way of entering the bootloader mode is hence to press the boot button and while it is pressed to press and release the reset button to initiate a hard reset. [[File:Firmware-bootloadermode.jpg|none|360px]] [[File:Storm32-wiki-flash-firmware-key-sequence-01.jpg|640px]]
# Check if the board is in bootloader mode or in operational mode. If the boards appears to be dead, then it is brought into bootloader mode successfully, if the LEDs are blinking, it is in normal operation and obviously the boot button was not pressed while the reset button was released. [[File:Firmware-bootloadermode-leds.jpg|none|300px]]
# Check if the board is in bootloader mode. When the board appears to be dead (green and red LEDs off, the yellow LED is irrelevant), then it is brought into bootloader mode successfully, if the green and red LEDs are blinking, it is in normal operation and obviously the boot button was not pressed while the reset button was released. [[File:Firmware-bootloadermode-leds.jpg|none|360px]]
# Now the board is listening on the RC pins for serial data, the USB adapter is connected, the firmware tool is using the Windows COM port of the serial adapter, hence you can click on the {{GUI|Flash Firmware}} button. [[File:Firmware_start_flash.png|none|300px]]
# Now the board is listening on the RC pins for serial data, the USB-to-serial adapter is connected, and the correct COM port of the adapter is selected, so you can click on the {{GUI|Flash Firmware}} button. [[File:Firmware_start_flash.png|none|360px]]
# A DOS box will open and either return an error that the UART connection is not responding or a sequence of downloading and verifying the firmware is shown. [[File:Flash.png|none|300px]] {{WARNING|If this is a first-time flash of a "virgin" board, then Windows will install the USB driver. This can take quite some time. DO NOT interrupt the install process.}}
# A black DOS box will open and either return an error that the UART connection is not responding or a sequence of downloading and verifying the firmware is shown.<br>{{WARNING|If this is a first-time flash of a "virgin" board, then Windows will start with installing the USB driver directly after the flash has finished. This can take quite some time. Do '''NOT''' interrupt the install process.}} [[File:Flash.png|none|360px]]
# After the reset, your board is operational and can be reached via the USB cable. Hence disconnect both, the USB cable and the USB-to-serial adapter and click on the COM port selector at the very bottom. Again, remember the list. [[File:Board read 0.png|none|300px]]
# After the reset, your board is fully operational and you may disconnect the USB-to-serial adapter.
# Then plug in the STorM32 board via the USB cable to power it. Either the matching driver was installed already or it will be installed now. Either way, once windows has installed the driver when clicking on the drop down for the COM port selector, it should now show an additional one.[[File:Board read 1.png|none|300px]]
 
# Jump back to the {{GUI|Main}} tab and click on {{GUI|Read}} to validate the connection with the board. [[File:Board_read_2.png|none|300px]]
The process is also nicely described in this video by rcgroups user alcurtis93:
{{#ev:youtube|HwaHjRw1Qqg}}
 
'''Quick Trouble Shooting:'''
* It is '''''strongly''''' recommended to also read the [[How to flash firmware]] page for trouble shooting.
* The board has no power - connect the board to the computer via USB to power it.
* The pins labeled UART are used for flashing - which is wrong, the RC pins should be used.
* Wrong serial port is selected in the tool.
* The black DOS box doesn't show up, e.g. because the firmware .zip file was not extracted.
* The above steps run though and the black DOS box shows the first two [OK] messages, but the downloading and verifying message lines are not be present and a firmware is not flashed. Some few boards are shipped with enabled read&write protection of the flash, which causes the issue. Go to [[How to flash firmware#Removing Read&Write Protections|Removing Read&Write Protections]].
* In case of troubles with the USB driver, consult the [[STorM32_FAQ#Which_drivers_are_needed_for_the_USB.3F|FAQ: Which drivers are needed for the USB?]].
 
'''Related wiki articles:'''
* [[How to flash firmware]]
* [[STorM32_FAQ#Which_drivers_are_needed_for_the_USB.3F|FAQ: Which drivers are needed for the USB]]
 
== Checking Connection to the GUI ==
 
Let's next check if the STorM32-BGC is indeed operational, and communicates with the GUI. Note that firmware and GUI versions must match.
 
# If connected, disconnect a USB cable and/or USB-to-serial adapter. Click on the COM port selector in the left bottom and memorize the list. [[File:Storm32-wiki-b-1-01.jpg|none|360px]]
# Then plug in the STorM32 board via the USB cable to power it. When clicking on the drop down for the COM port selector, it should now show an additional one.<br> {{WARNING|If the board has a firmware installed and this is the first-time connection via USB to your PC, then Windows will install the USB driver for the STorM32 board. This can take quite some time. Do '''NOT''' interrupt the install process.}} [[File:Storm32-wiki-b-2-01.jpg|none|360px]]
# Go to e.g. the {{GUI|Main}} tab and click on {{GUI|Connect}} or {{GUI|Read}} to validate the connection with the board. [[File:Storm32-wiki-b-3-01.jpg|none|360px]]
 
 
It's a good occasion now to also learn about the {{GUI|Read}}, {{GUI|Write}} and {{GUI|Write+Store}} buttons and to read [[STorM32_FAQ#How_does_Read.2C_Write.2C_and_Store_work.3F|FAQ: How does Read, Write, and Store work?]].
 
'''Quick Trouble Shooting:'''
* Wrong COM port selected.
* Firmware and GUI version numbers do not agree.
 
'''Related wiki articles:'''
* [[STorM32_FAQ#Which_drivers_are_needed_for_the_USB.3F|FAQ: Which drivers are needed for the USB?]]
* [[STorM32_FAQ#How_does_Read.2C_Write.2C_and_Store_work.3F|FAQ: How does Read, Write, and Store work?]]
* [[STorM32_FAQ#How_to_enter_precise_parameter_values.3F|FAQ: How to enter precise parameter values?]]


In case you have troubles with the STorM32's USB driver, it can be found here: [http://www.st.com/web/en/catalog/tools/PF257938|STM download page].
== Hardware Setup ==


In case above does not work, typical traps when flashing are
=== The Camera IMU ===
# The board has no power - connect the board to the computer via USB to power it.
# The pins labeled UART are used for flashing - which is wrong, the RC pins should be used
# Wrong serial port is selected in the tool


It is also recommended to read the [[How to flash firmware]] page for trouble shooting.
The camera IMU needs to be mounted such that it measures all camera movements. Its actual position does not matter, behind the camera, on the pitch arm, below the camera,... anything will work. The only thing to watch out for is that its axes are aligned with the camera axes. Each axis has to be either horizontal or vertical. Just imagine that the sensor would measure that the horizon is level but because of a misalignment the camera does hang slightly to one side and hence the horizon in the video is not level.


== Hardware setup ==
A typical beginners mistake is to route the IMU cables in close proximity to the motor cables. This may however lead to I2C errors, and subsequent artifacts such as a "freezing" of the gimbal. If in doubt, please check the web, it is full of discussions on this topic, and/or consult the [[I2C Error Compendium]]. BTW, the STorM32 NT concept offers an ultimate solution to this issue by abandoning the I2C bus altogether (for more info see [http://www.rcgroups.com/forums/showthread.php?t=2434504 STorM32-NT BGC]).
<!--
Another important note. Some people are reporting that the gimbal freeze in one position some time after power on. This most likely is due to signal interference on from the motor cables. In order to avoid this problem, make sure the IMU cable is not routed the same way as the cable to the motor(s). It is of course very tempting to place the IMU close to the pitch motor and then pull the IMU cable together with the pitch motor cable in order to have as clean cabling as possible. This "may" work, but if the gimbal freezes in one position after some time, the interference from the motor cable to the I2C cable (IMU cable) is most likely the cause of the problem. To test this, just route the IMU cable as far away from the motor cable as possible. If this does not help, try moving also the IMU as far away from the motors and motor cables as possible too.
Another solution is to add ferrite ring on the IMU cable. Read the [http://www.olliw.eu/storm32bgc-wiki/I2C_Error_Compendium details of I2C errors] for technical explanation of the problem.
-->
 
=== Mounting the STorM32 Board ===
 
One of the outstanding features of the STorM32 board is its 2nd IMU support. In fact the board has such an IMU on-board already. To make use of it, the board needs to be mounted such that it measures the movements of the copter frame. The direction does not matter as long as it measures the frame's movements. In case this is not possible, either the 2nd IMU support has to be disabled, or another external IMU can be mounted to the frame and connected to the frame I2C connector, labeled I2C#2. As for the camera IMU, also the axes of the 2nd IMU have to be vertical or horizontal, respectively.
 
Related wiki articles:
* [[Using a 2nd IMU]]


=== The camera IMU ===
=== Electric Connection and Insulation ===


This IMU is to be mounted in a way so that it does measure all camera movements. Its actual position does not matter, behind the camera, on the pitch arm below the camera,... anything will work. The only thing to watch out for is that its axis are aligned with the camera axis. Each axis has to be either horizontal or vertical. Just imagine, the sensor would read that the horizon is level but because of an misalignment the camera does hang slightly to one side and hence the horizon in the video is not level.  
The IMUs go to their corresponding I2C plugs: The camera IMU goes to the picoblade connector labeled I2C next to the USB connector. On the backside of the board is the I2C#2 connector for the optional frame IMU. {{WARNING|The camera IMU must go to the port I2C, near the USB plug!}} Your board may have been shipped with a IMU pre-connected to port I2C#2, which is incorrect.


=== Mounting the STorM32 board ===
[[File:Stom32-bgc-v130-ports-and-connections-01.jpg|none|600px]]


One of the outstanding features of the STorM32 board is its 2nd IMU support. In fact the board has such IMU itself already and to make use of it, the board should hence be mounted on the copter frame. The direction does not matter as long as it is the frame. In case this is not possible, either the 2nd IMU support has to be disabled or another external IMU is mounted to the frame and connected to the frame I2C connector.
One thing we found out the hard way is to never mount the board or the IMUs with metal screws and/or metal distance sleeves. Always use plastic ones. Not only does this help to avoid electrical problems but also the I2C bus can be sensitive to the nearby metal parts, leading to massive error rates on the I2C bus. Without a continuous readings of the IMU positions the entire purpose of the gimbal is forfeit.
Again, the IMU axis have to be either vertical or horizontal.


=== Electric connection and insulation ===
Make also sure that the IMUs are mounted rigidly, so that they measure the actual position.


All the IMUs go to their corresponding I2C plug, that is the I2C labeled Picoblade connector next to the USB connector for the camera IMU.
Related wiki articles:
[[File:Stom32-bgc-v130-ports-and-connections-01.jpg|none|300px]]
* [[Dos and Don'ts]]
* [[Pins and Connectors]]
* [[I2C Error Compendium]]


On the backside of the board is a I2C#2 connector for the optional frame IMU.
=== Gimbal Mechanics ===


One thing we found out the hard way is to never mount the board or the IMUs with metal screws and distance sleeves, always use plastic ones. Not only does that enhance the probability of survival in case of an electric defect but also the I2C bus might use the entire metal frame and motors as antenna. Which leads to massive amounts of errors on the I2C bus. And without constant readings of the IMU positions the entire purpose of the gimbal is forfeit.
Before using a gimbal, it is absolutely necessary to balance it and to ensure minimum resistance to rotations (friction in bearings, stiff cables, etc). Any improper balance or resistance to rotation will make setting up the gimbal more difficult or even impossible. The goal shall be to rotate the camera in the gimbal and it should stay in that position by itself. In other words, the center of gravity should be in the center of all gimbal motor axes. Just imagine the camera's center of gravity is way below the pitch axis (looking with the camera up and down). It would act like a pendulum. So just because your copter does accelerate forward, the gimbal pitch motor has to hold against the mass inertia. You will need very strong motors and lots of energy which is a waste. On the other hand, if the gimbal is balanced properly, the motor only has to compensate the copter rotations, wind resistance and inertia when rotating the camera to point to somewhere else.
Make sure the IMUs are mounted rigidly also so they measure the actual position.


=== Gimbal mechanics ===
Related wiki articles:
* [[Tuning_Recipe#Balancing_the_Gimbal|Balancing the Gimbal]]


Before using the gimbal, it is absolutely necessary to balance it and to ensure minimum resistance to rotations (friction in bearings, stiff cables, etc). Any improper balance or resistance to rotation will make setting up the gimbal more difficult or even impossible. The goal shall be to rotate the camera in the gimbal and it should stay in that position by itself. In other words, the center of gravity should be in the center of all gimbal motor axis. Just imagine the camera's center of gravity is way below the pitch axis (looking with the camera up and down). It would act like a pendulum. So just because your copter does accelerate forward, the gimbal pitch motor has to hold against the mass inertia. You will need very strong motors and lots of energy which is a waste. On the other hand, if the gimbal is balanced properly, all the motor has to compensate is copter rotations, wind resistance and inertia when rotating the camera to point to somewhere else.
=== Powering the Gimbal ===


=== Powering the gimbal ===
For the motors the 5 V supply of the USB bus is too low. So, the motors will work only if a battery with sufficient voltage is connected. That is the reason why e.g. flashing the firmware is done using USB power only, as we do not want the motors to get power in that case. The battery connector can handle any voltage from 6 V to 18 V. Connecting the PC via the USB cable while the board is powered via a battery is no problem at all. The order does not matter, first USB then battery, or vice versa, both will work.


For the motors the 5V supply of the USB bus is not enough for sure. So the motors will work only if the battery connector provides the power. That is the reason why e.g. flashing the firmware is done via USB power only as we do not want to motors to get power at that time. The battery connector can handle any voltage from 6V to 18V. Connecting the PC via the USB cable while the board is powered via a battery is no problem at all. The order does not matter, first USB then battery or reverse, both will work.
=== Motor Connectors ===


=== Motor connector ===
The board has three connectors for the motors labeled Mot0, Mot1 and Mot2. Before connecting any motor, it is a good idea to measure the resistance of the motor windings and the motor frame. The three motor cables should have an electrical resistance of 12 Ohm or more and be completely isolated from the motor housing. If the resistance is too low, the amount of amps flowing through the motor might be too high for the board driver. If one of the motor cables has a short to the motor housing, the entire gimbal and maybe even the frame gets the motor voltage.


The board has three connectors for the motors labeled Mot0 to Mot2. Before connecting any motor, it might be a good idea to measure the resistance of the motor windings and the motor frame. The three motor cables should have an electrical resistance of 12 Ohm or more and completely isolated from the motor housing. If the resistance is too low, the amount of amps flowing through the motor might be too high for the board driver to handle. And if one of the motor cables is connected to the motor housing, the entire gimbal and maybe even the frame gets the motor voltage.
The usage of the three connectors is
The usage of the three connectors is
* Mot0: Pitch motor to point the camera up/down
* Mot0: Pitch motor to point the camera up/down
* Mot1: Roll motor to stabilize the horizon
* Mot1: Roll motor to stabilize the horizon
* Mot2: Yaw motor to turn the camera left/right
* Mot2: Yaw motor to turn the camera left/right
The motors need to be connected in this order to the motor ports. The three wires of a motor in contrast can be connected to its port in any order, here the order does not matter.


=== Summary ===
=== Summary ===


Motors are connected, IMU(s) are connected, battery power cable is ready and its polarity double-checked.
Now the motors are connected, the IMU(s) are connected, the battery power cable is ready, and its polarity double-checked.


{{WARNING|The picture is confusing as regards the pitch and roll motor connections, it should be pitch-roll-yaw.}}
[[File:Storm32-wiki-a-1-02.jpg|none|480px]]
[[File:0connections.JPG|none|480px]]


== First configuration ==
== Basic Controller Configuration ==


The last steps in the firmware flashing section had been to check if the StorM32-BGC is operational.
Now it's time to set the most important parameters, namely the IMU orientations and motor parameter values, which are located on the {{GUI|Gimbal Configuration}} tab. Without that, the controller can't do even the most basic operations. Setting these parameters correctly by hand is difficult, however, the GUI provides the {{GUI|Configure Gimbal Tool}}, which makes that very simple.
* Disconnect the USB cable and click on the com port selector at the very bottom. Remember the list. [[File:Board read 0.png|none|300px]]
* Plugin the STorM32 board via the USB cable to power it. Either the matching driver was installed already or it will be installed now. Either way once windows has installed the driver when clicking on the drop down for the com port selector, it should now show an additional one.[[File:Board read 1.png|none|300px]]
* Jump back to the {{GUI|Main tab}} and click on {{GUI|Read}} to validate the connection with the board. [[File:Board_read_2.png|none|300px]]


Now it's time to set the most important parameters, namely the IMU orientations and motor parameter values. Without that the controller can't perform the basic operations even.
You should be prepared to know the number of poles of your motors, as well as be ready to connect a battery on demand (if you haven't already plugged in a battery).
With the Gimbal Configuration tool this is very simple.


# Change to the {{GUI|Gimbal Configuration tab}}. There you can enter the values for the motor poles, the motor directions and the IMU orientation manually, or run the {{GUI|Configure Gimbal Tool}}. [[File:Gimbal config tool 1.png|none|300px]]
{{WARNING|In the following the gimbal '''MUST''' be at rest and '''NOT''' be moved at all times (unless you're specifically asked to do differently).}} Ergo, don't hold the gimbal in your hands. {{WARNING|Also, a camera '''MUST''' be installed in the gimbal.}} Without camera gimbals don't work properly.
# In the welcome screen you can select what to configure, we want to do all and hence click on {{GUI|Continue}}. [[File:Gimbal config tool 2.png|none|300px]]
# Next we are asked to position the gimbal to look forward. So you manually adjust the camera so that it points into the forward direction of your copter. You might not be able to do that perfectly because of the motor magnets, 15° is more than enough. Once the camera is in forward position click on {{GUI|Continue}}. [[File:Gimbal config tool 3.png|none|300px]] [[File:Gimbal config tool forward.jpg| none | 500px]]
# Now you are asked to pitch the frame, the entire copter, by 45° downward, as if the goal would film the ground in front of the copter. So you lift the frame accordingly and both, frame and camera should point downwards. To be more precise, the camera should not move relative to the frame. If it does you should consider balancing the camera better. Anyway, the entire goal in this task is to get a clear reading of which axis of each IMU are all impacted by this 45° degree movement. The IMU does measure the acceleration values, as we are static its only acceleration is the earth gravity. For example the reading in the forward position might be x/y/z=0g/1g/0g. When pitching downward, the value could change to 0.7g/0.7g/0g and therefore we know that the pitch axis is along the z axis, its reading did not change (much). This plus the +/- sign allows to derive the IMU orientation by simply measuring it. [[File:Gimbal config tool 4a.png|none|300px]] [[File:Gimbal config tool 45.jpg| none | 500px]]
# Once the IMU orientation was read, the values are shown and we can continue with the next step. [[File:Gimbal config tool 4.png|none|300px]]
# This is just informational that the motor direction values are all being set to Auto. [[File:Gimbal config tool 5.png|none|300px]]
# Last step is the motor pole counts for each motor. This is again information you should get from the motor vendor, data like N12P14, meaning 14 poles. [[File:Gimbal config tool 6.png|none|300px]]
# With this the basic parameters are set but not stored permanently in the board. So you click on {{GUI|Okay}} to close the wizard. [[File:Gimbal config tool 7.png|none|300px]]
# The setup screen got updated now with the provided IMU, IMU2 and motor pole counts for each motor. All motors are disabled and the direction set to Auto. [[File:Gimbal config tool 8.png|none|300px]]
# In order to make these settings permanently stored, tick the checkbox next the {{GUI|Write}} button and the button will change its label to {{GUI|Write+Store}}. Press that button and the values get saved in the board's EEprom. [[File:Gimbal config tool 9.png|none|300px]]
# Attention: These values are used at startup only. Hence you have to reset the board! [[File:Gimbal config tool 10.png|none|300px]]


# Change to the {{GUI|Gimbal Configuration}} tab. There you find the parameter fields for the IMU orientations, motor poles, motor directions and motor startup positions. To set them, run the {{GUI|Configure Gimbal Tool}}. [[File:Storm32-wiki-c-1-01.jpg|none|360px]]
# In the welcome screen you can select what to configure. The individual steps are grouped into '''Steps I''' and '''Steps II''', and some finishing steps. You want to do all, and hence just click on {{GUI|Continue}}. [[File:Storm32-wiki-c-2-01.jpg|none|360px]]
# You are now asked to position the gimbal and camera. The gimbal should be in its standard default position. Adjust the camera manually such that it is level and points into the forward direction of your copter. You might not be able to do that perfectly because of the motor magnets, but you should get that better than to within 15°. Once the camera is in forward position click on {{GUI|Continue}}. [[File:Storm32-wiki-c-3-01.jpg|none|360px]] [[File:Gimbal config tool forward.jpg| none | 500px]]
# Now you are asked to pitch the entire frame inclusive camera downwards by 45°, as if you would want to film the ground in front of the copter. So you lift the frame such that both, frame and camera, point downwards. Importantly, the camera should not move and keep its position relative to the frame. If it does move then you should consider balancing the camera better. Also, avoid roll movements. Anyway, the goal in this step is to measure the effect of a downturn by 45° degree on the IMU's signals. The IMUs do measure the acceleration values, and as we are static its the earth gravity. For example, the reading in normal position might be x/y/z = 0 g/1 g/0 g. When pitching downwards, the values may change to 0.7 g/0.7 g/0 g, and from that we know the IMU's orientations. [[File:Storm32-wiki-c-4-01.jpg|none|360px]] [[File:Gimbal config tool 45.jpg| none | 500px]]
# Once the IMU orientations were determined, their values are shown and you can (should) put the gimbal back to normal position. When you can continue with the next step. [[File:Storm32-wiki-c-5-01.jpg|none|360px]]
# The next important step is to set the motor pole counts for each motor. This is information you should get from the motor vendor. Data like N12P14 means 14 poles. [[File:Storm32-wiki-c-6-01.jpg|none|360px]]
<!--
# We are now informed that all motor direction values will be set to {{PARAMVALUE|auto}}. [[File:Storm32-wiki-c-7-01.jpg|none|360px]]-->
# On the next screen you are informed that all motor direction values will be set to {{PARAMVALUE|auto}}. Click {{GUI|Continue}}.
# This completes the settings of '''Steps I''', and you can proceed with adjusting the parameters of '''Steps II'''. [[File:Storm32-wiki-c-8-01.jpg|none|360px]]
# For the next steps to work, the gimbal has to be started up with enabled motors, and a battery must be connected. The GUI will check for that, and will ask you to connect a battery if required. Do as advised. [[File:Storm32-wiki-c-9-01.jpg|none|360px]]
# The gimbal will now go through it's initialization steps, which you can follow in the screen. Please wait until it reaches the NORMAL state. You should see the green LED go solid, as well as hear a beep. You are reminded to keep the gimbal in normal position and at rest during all this.<br>{{WARNING|If this step doesn't complete or an error occurs see the [[#Basic_Controller_Configuration_Quick_Trouble_Shooting|Quick Trouble Shooting]] section below, and please take any recommendations from there seriously.}}  [[File:Storm32-wiki-c-10-01.jpg|none|360px]]
<!--
# We are now informed that the motor direction values will be set for all motors. [[File:Storm32-wiki-c-11-01.jpg|none|300px]]
-->
# On the next screen you are informed that the motor direction values will be determined for all motors. Click {{GUI|Continue}}.
<!--# We are now informed that the motor startup positions for the pitch and roll motors are set. [[File:Storm32-wiki-c-12-01.jpg|none|300px]]
-->
# In a further screen you are informed that the motor startup positions for the pitch and roll motors are determined. Click {{GUI|Continue}}.
# Now you are asked for another important step, namely to align the camera such as to point forward. Use the buttons to turn the camera until you're satisfied. The goal of this step is to align the camera with the 2nd IMU. A precise alignment is required for the 2nd IMU function to work correctly. You don't have to overdo however, a visual accuracy of the alignment is sufficient. [[File:Storm32-wiki-c-13-01.jpg|none|360px]]
# This completes the settings of '''Steps II'''. What is left is to store all values in non-volatile memory, and to restart the gimbal. [[File:Storm32-wiki-c-14-01.jpg|none|360px]]
# The results of the above steps can be seen in the {{GUI|Gimbal Configuration}} tab, which got updated with the new IMU orientations and motor parameters. Also the motors are enabled, and the system is functional now. [[File:Storm32-wiki-c-16-01.jpg|none|360px]]


== First startup ==


With above steps completed, plug in the battery in order to get power to the motors. Remember, the motor outputs had been disabled in above step. Now position the camera to look forward by hand and then enable the motors. In the {{GUI|Setup}} tab check that the {{GUI|Pitch Usage}}, {{GUI|Roll Usage}} and {{GUI|Yaw Usage}} parameter fields, they are all set to {{GUIPARAM|disabled}}. Change them to {{GUIPARAM|normal}} individually. Or better, click on {{GUI|Enable all Motors}}), and write and store the changed setting. Without the writing the values all you did is changing the values on your computer. Without the store the changes are not saved permanently in the controller's EEprom.
<span id="Basic_Controller_Configuration_Quick_Trouble_Shooting">'''Quick Trouble Shooting:'''</span><br>
It may happen that the tool gets stuck in step 10. This generally indicates a serious problem with the setup, and not the controller. Examples are:
* Motors are not connected to the correct ports.
* Motors are not working properly because of e.g. a broken wire or bad connection.
* The IMU(s) do not work properly because they are connected to the wrong ports, or step 4 wasn't done correctly.
* I2C errors occur because of inappropriate routing of motor and I2C cables (consult also the [[I2C Error Compendium]]).
* PID parameters are totally wrong for the gimbal.
* Read also the [[#First_Startup_Quick_Trouble_Shooting|Quick Trouble Shooting]] section in the next chapter!


The controller will now go through a sequence of steps.
'''Related wiki article:'''
settle - calibrate - level - autodir - relevel - normal
* [[Quick Start Guide]]


# Settle: In order to calibrate to normal, the gimbal has to be stable, it should not be moved. In a copter that is quite simple as the copter is on the ground, a handheld device needs to be put at a table to remain in one position for a few seconds.
== First Startup ==
# Calibrate: Calibrate the sensors. Take a second at max.
# Level: This is the point where the motors will be turned in order to level the camera in pitch and roll axis. Yaw motor is under power, so you feel some resistance but does not move yet.
# Autodir: Here the motors are moved slightly into one direction and based on the sensor changes the controller knows if this was an up or down etc movement and will use this as the motor directions.
# Relevel: Since autodir did move the camera, it is quickly brought back in a horizontal position.
# Normal: The is the final stage and now the gimbal is operational. Simply move the camera out of position by hand, move the frame,... whatever you do the camera should remain stable. You can pitch the camera+-90°, you can yaw the camera by +-180° or roll the camera about +-45°. More roll is not possible as then the pitch axis and the yaw axis get more and more aligned. In a roll of 90° the pitch and yaw axis would both rotate the camera.


In the past the first startup was problematic often and after lots of debugging the same root causes were identified: Motor directions, IMU orientation and occasionally the motor pole count. Therefore the Gimbal Configuration tool was implemented and hence all of these problems should be gone.
After the above steps were completed, the STorM32 controller was reset and hence will start up now.
* During the level phase the gimbal does constantly move around, never finding the level position: The Pitch and Roll Motors are not connected to Mot0 (Pitch) and Mot1 (Roll) but reverse. Hence the control logic does measure that pitch has to be changed by -5°, applies the proper movement sequence to the motor but all that happens is that suddenly the roll value is off by -5°. Make sure the motors are connected correctly.
 
* Camera turns upside down or things like that: The IMU orientation is wrong.
At startup, the controller goes through its initialization steps, which typically takes about 20 - 25 seconds. Note that the gimbal should not be moved until the initialization is finished and the controller has reached normal operation. This is indicated by greed LED going solid, and - if enabled - by a beep.
* Gimbal starts shaking, makes high frequency noises and things like that: This would be normal as we have not configured the PID values for the motor control loop yet. In case that happens, set for all motors the P, I and D values to very low numbers but not zero (P=0.10; I=5.0; D=0.0050) and write them to the board. This will cause the gimbal to be slow when correcting movements but at least you can prove all is functional.
 
'''Initialization Steps:''' strtMOTOR - SETTLE - CALIBRATE - LEVEL - AUTODIR - RELEVEL - NORMAL
* {{PARAMNAME|strtMOTOR}}: The motors are turned on, and moved into the position specified by the startup motor position parameters.
* {{PARAMNAME|SETTLE}}: In order to calibrate, the gimbal has to be stable, it should not be moved. For a copter that is quite simple as the copter is on the ground. A handheld device needs to be put at a table to remain in position for a few seconds.
* {{PARAMNAME|CALIBRATE}}: Calibrates the sensors. Takes a second or so.
* {{PARAMNAME|LEVEL}}: This is the point where the motors will moved such to level the camera in pitch and roll axis. The yaw motor is under power, so you can feel some resistance, but it is not moved.
* {{PARAMNAME|AUTODIR}}: Here the motors are moved slightly around and from the sensor changes the controller determines the motor directions.  
* {{PARAMNAME|RELEVEL}}: Since autodir moved the camera, it is quickly brought back in a horizontal position.
* {{PARAMNAME|NORMAL}}: This is the final stage; the PID controller is activated and the gimbal is operational. Simply move the camera out of position by hand, move the frame,... whatever you do the camera should remain stable. With a 2nd IMU enabled you can pitch the camera indefinitely, you can yaw the camera indefinitely or roll the camera by maximal +-80° or so. Larger roll angles are not possible as when the pitch and yaw axes become aligned, and pitch and yaw movements cannot be distinguished anymore ([http://en.wikipedia.org/wiki/Gimbal_lock gimbal lock]). Without 2nd IMU, the yaw and roll ranges are as before, but the pitch range is limited to +-45°.


We can save some time during the startup if we would speedup the leveling and the motor directions. For this we have three options in the {{GUI|Tools}} menu.
'''Led Signals''': The progress of the initialization is also indicated by the green LED on the board: During initialization it flashes with varying frequency. When initialization has finished and NORMAL state been reached, it goes solid. If beeps are activated, then the motors will emit a sound at the end of initialization, which can be very convenient. The current state of the controller can also be seen in status line the GUI, or the Data Display.
[[File:Gimbal config motor directions.png|none|300px]]


* {{GUI|Get Current Motor Directions}}: Since the gimbal is now in a normal operation, the Autodir phase was completed, it knows the directions. By selecting this menu the motor directions in the {{GUI|Gimbal Configuration}} tab are changed from {{GUIPARAM|auto}} to their actual direction {{GUIPARAM|normal}} or {{GUIPARAM|reverse}}.
<span id="First_Startup_Quick_Trouble_Shooting">'''Quick Trouble Shooting:'''</span>
* {{GUI|Get Current Pitch and Roll Motor Positions}}: Initially the gimbal does not know the current motor position. So it powers the motor's windings to assume a default position. Now that the gimbal is level, we know the motor positions default. Hence we can take the current position as {{GUIPARAM|Pitch Startup Motor Pos}} and {{GUIPARAM|Roll Startup Motor Pos}}
* The gimbal controller levels the camera, but only very, very slowly: The gimbal had been moved before the initialization has finished. Wait until the NORMAL state has been reach (green LED = solid) before moving the gimbal.
* {{GUI|Adjust Yaw Startup Motor Pos Parameter Tool}}: Yaw is a different story. The current Yaw value cannot be zero'ed in as there is no sensor telling what "forward" means. Hence the motor start position is the only way but using what value? With the Yaw tool you can manually move the gimbal in yaw to bring it into the forward position and then safe that as the {{GUIPARAM|Yaw Startup Motor Pos}}.
* The gimbal moves constantly around, never finding the level position: The pitch and roll motors are not connected to Mot0 (Pitch) and Mot1 (Roll) but reverse. Hence the control logic does measure that pitch has to be changed by -5°, applies the proper movement sequence to the motor but all that happens is that suddenly the roll value is off by -5°. Make sure the motors are connected correctly.
* Camera turns upside down or things like that: The IMU orientation is wrong.
* Gimbal starts shaking, makes high frequency noises and things like that: This would be normal as we have not yet tuned the PID values for the motor control loop. In case that happens, set for all motors the P, I and D values to very low numbers but not zero (P=0.10; I=5.0; D=0.0050) and write them to the board. This will cause the gimbal to be slow when correcting movements but at least you can prove all is functional.
* The motors receive power only briefly after startup but are when shut off and the red and green led start blinking fast, and the controller remains in LEVEL state: The controller could not level the camera within a certain time and hence shut off the motors for safety. This can happen for various reasons, such as that there is a mechanical constraint to the camera, one or more motors do not operate properly because of e.g. a broken motor wire or bad connections, or that the gimbal has not been assembled fully.


Don't forget to {{GUI|Write+Store}} these values permanently by ticking the checkbox next to the {{GUI|Write}} button to change its label and click that button.
== Next Step - PID Tuning ==


At this point the gimbal may already stabilize the camera. However, usually, the camera is not yet stabilized perfectly, since the PID parameters in the {{GUI|Main}} tab are not yet optimal. The gimbal may even start to show weird shaking or make high frequency noises, which indicates that the PID values are totally off. So, in any case the next step should be to tune the gimbal.


== Next step - PID Tuning ==
See the PID parameter [[Tuning Recipe|Tuning Recipe]] for adjusting those.


At this point the gimbal may already stabilize the camera. However, usually, the camera is not yet stabilized perfectly, or the gimbal may even start to show weird shaking or make high frequency noises. This indicates that the PID values in the {{GUI|Main}} tab are not proper.
You are also '''strongly''' encouraged to check out the [[Video Tutorials|Video Tutorials]]; there is a collection of some quite good videos available.


See the PID parameter [[Tuning Guide|Tuning Guide]] for adjusting those.
{{COMMENT|{{WARNING|'''For good camera stability you need to spend at least a minimum time with PID tuning.'''}} The default PID values are chosen such that they work with most gimbals in the sense that the gimbal doesn't freak out. They therefore are necessarily "bad" in terms of good PID control or camera stabilization, respectively.}}

Latest revision as of 20:18, 30 July 2016

by Yang/wdaehn and OlliW, with videos by alcurtis93, descriptions refer to firmware v0.67e

You have a gimbal, the STorM32-BGC board, the IMU module and all cables. So what is next? This page is intended to guide you through the essential steps, and provides references to more specific pages in case you need to know more. Basically the steps are:

Ordering Information

Things to order at minimum:

  • STorM32-BGC board
  • IMU module and matching cable
  • USB-to-serial adapter

The STorM32-BGC board can be obtained from various shops. There are several hardware revisions around, but, frankly, they do not differ much. A v1.3 board is used exemplary below.

Together with the board, buy also an IMU module and a matching cable from the same vendor. There are tons of different IMU modules available, and different connectors are in use. The plug on the STorM32 board is a so-called Picoblade connector (often, but incorrectly, called JST 1.25 connector).

Finally, a USB-to-serial adapter with a matching cable is required for flashing the latest firmware. It can be any USB-to-serial adapter with FTDI or CP2102 or CH340 chips (also known as USB-TTL adapters), but NOT a PL2303-based adapter (for details please see FAQ: Which USB-TTL should I use?). If you do not have one already, buy one together with the other parts. Note: If you're planing to use STorM32 NT modules, then get a USB adapter with FTDI chip (see here).

Things to watch out when comparing prices

  • Bluetooth module included? Most STorM32 boards are designed for a HC06 Bluetooth module to be soldered on it. Then you can run the GUI on your laptop via Bluetooth. The range of these modules is modest, so do not expect that it allows to remotely monitor the gimbal values in flight. If in future a smartphone app should become available, this might be really cool for changing configurations, on the other hand, how often will you be doing that?
  • Connectors soldered to it? Preinstalled connectors allow to simply plug in the motors and go. On the other hand, the RC and motor connectors are quite large, hence you may wish to place them differently or to solder motor cables directly to the board. Consider your preferences before buying.
  • IMU module and cable included? Is the IMU cable soft enough and of appropriate length?

Related wiki articles:

Dos and Don'ts

Read and comprehend the Dos and Don'ts.

Supported Gimbals

The STorM32 controller supports several setups, see Supported Gimbals.

Flashing Firmware

The STorM32 board has a very active community, and new firmware versions with new enhancements are released on about a monthly basis. So, the first step will be to flash the newest firmware.

Your board may come or may not come with a firmware loaded; this depends on the vendor. In the first case you could skip the following steps and just install the GUI, but it is recommended to carry them out nevertheless, in order to get the latest firmware and GUI. In the latter case you must go through the steps; without firmware the board obviously would not function. The following description applies to both cases, only the USB driver gets installed by Win 7 in different steps; see the red warnings. It is crucial to NOT interrupt the USB driver install process. It can take several minutes, so please be patient.

In order to flash a new firmware the following steps are recommended.

  1. Get your USB-to-serial adapter to work by installing all Windows drivers as requested by the vendor.
    Usb-to-uart-driver.png
  2. Unplug (!) the USB-to-serial adapter again.
  3. Connect the USB-to-serial adapter to the STorM32 board at the pins labeled RC (!). The firmware is NOT programmed via the UART port, NOT via the USB, but via the RC pins. In other words, when the board is put into bootloader mode, the RC pins are re-assigned to the microcontroller's UART1 as needed for flashing the firmware; normally they are assigned to the PWM timers.
    Stom32-bgc-flashing-w-usbttladapter-connections-02.jpg
  4. Connect the STorM32 board via USB to the computer. We are not using this connection yet, but we power the board via USB.
    If the board has already a firmware installed and this is the first-time connection to your PC, then Windows will install the USB driver for the STorM32 board. This can take quite some time. Do NOT interrupt the install process.
  5. Download the newest firmware, unzip it and run the GUI, in this example the o323BGCTool_v067e.exe program. It does not matter what the currently installed firmware is, you use the GUI that comes with the firmware zip file. Get the zip file from here: Downloads.
  6. In the GUI select the [Flash Firmware] tab on the very right hand side and select the hardware revision of your board. This does change the firmware file to be used in the field below.
    Firmware selector.png
  7. Now select the COM port of the USB-to-serial adapter. This is done with the [Com Port] selector in the middle of the screen, NOT the com port selector at the bottom! Click on the drop down box to see all currently available COM ports. Since we do not have connected the USB-to-serial adapter to the computer yet, the new one appearing when plugging in the adapter will be the one to use. Hence remember that list of ports to identify the new one in the next step.
    Firmware comport1.png
  8. Plugin the USB-to-serial adapter and click again on the drop down box of the serial connector for programming. Select the new one.
    Firmware comport2.png
  9. The board has two buttons, the boot and reset button. When the board is started, the very first thing the firmware does is checking if the boot button is currently pressed. If it is, then the bootloader mode is entered, else the normal operation starts. The best way of entering the bootloader mode is hence to press the boot button and while it is pressed to press and release the reset button to initiate a hard reset.
    Firmware-bootloadermode.jpg
    Storm32-wiki-flash-firmware-key-sequence-01.jpg
  10. Check if the board is in bootloader mode. When the board appears to be dead (green and red LEDs off, the yellow LED is irrelevant), then it is brought into bootloader mode successfully, if the green and red LEDs are blinking, it is in normal operation and obviously the boot button was not pressed while the reset button was released.
    Firmware-bootloadermode-leds.jpg
  11. Now the board is listening on the RC pins for serial data, the USB-to-serial adapter is connected, and the correct COM port of the adapter is selected, so you can click on the [Flash Firmware] button.
    Firmware start flash.png
  12. A black DOS box will open and either return an error that the UART connection is not responding or a sequence of downloading and verifying the firmware is shown.
    If this is a first-time flash of a "virgin" board, then Windows will start with installing the USB driver directly after the flash has finished. This can take quite some time. Do NOT interrupt the install process.
    Flash.png
  13. After the reset, your board is fully operational and you may disconnect the USB-to-serial adapter.

The process is also nicely described in this video by rcgroups user alcurtis93:

Quick Trouble Shooting:

  • It is strongly recommended to also read the How to flash firmware page for trouble shooting.
  • The board has no power - connect the board to the computer via USB to power it.
  • The pins labeled UART are used for flashing - which is wrong, the RC pins should be used.
  • Wrong serial port is selected in the tool.
  • The black DOS box doesn't show up, e.g. because the firmware .zip file was not extracted.
  • The above steps run though and the black DOS box shows the first two [OK] messages, but the downloading and verifying message lines are not be present and a firmware is not flashed. Some few boards are shipped with enabled read&write protection of the flash, which causes the issue. Go to Removing Read&Write Protections.
  • In case of troubles with the USB driver, consult the FAQ: Which drivers are needed for the USB?.

Related wiki articles:

Checking Connection to the GUI

Let's next check if the STorM32-BGC is indeed operational, and communicates with the GUI. Note that firmware and GUI versions must match.

  1. If connected, disconnect a USB cable and/or USB-to-serial adapter. Click on the COM port selector in the left bottom and memorize the list.
    Storm32-wiki-b-1-01.jpg
  2. Then plug in the STorM32 board via the USB cable to power it. When clicking on the drop down for the COM port selector, it should now show an additional one.
    If the board has a firmware installed and this is the first-time connection via USB to your PC, then Windows will install the USB driver for the STorM32 board. This can take quite some time. Do NOT interrupt the install process.
    Storm32-wiki-b-2-01.jpg
  3. Go to e.g. the [Main] tab and click on [Connect] or [Read] to validate the connection with the board.
    Storm32-wiki-b-3-01.jpg


It's a good occasion now to also learn about the [Read], [Write] and [Write+Store] buttons and to read FAQ: How does Read, Write, and Store work?.

Quick Trouble Shooting:

  • Wrong COM port selected.
  • Firmware and GUI version numbers do not agree.

Related wiki articles:

Hardware Setup

The Camera IMU

The camera IMU needs to be mounted such that it measures all camera movements. Its actual position does not matter, behind the camera, on the pitch arm, below the camera,... anything will work. The only thing to watch out for is that its axes are aligned with the camera axes. Each axis has to be either horizontal or vertical. Just imagine that the sensor would measure that the horizon is level but because of a misalignment the camera does hang slightly to one side and hence the horizon in the video is not level.

A typical beginners mistake is to route the IMU cables in close proximity to the motor cables. This may however lead to I2C errors, and subsequent artifacts such as a "freezing" of the gimbal. If in doubt, please check the web, it is full of discussions on this topic, and/or consult the I2C Error Compendium. BTW, the STorM32 NT concept offers an ultimate solution to this issue by abandoning the I2C bus altogether (for more info see STorM32-NT BGC).

Mounting the STorM32 Board

One of the outstanding features of the STorM32 board is its 2nd IMU support. In fact the board has such an IMU on-board already. To make use of it, the board needs to be mounted such that it measures the movements of the copter frame. The direction does not matter as long as it measures the frame's movements. In case this is not possible, either the 2nd IMU support has to be disabled, or another external IMU can be mounted to the frame and connected to the frame I2C connector, labeled I2C#2. As for the camera IMU, also the axes of the 2nd IMU have to be vertical or horizontal, respectively.

Related wiki articles:

Electric Connection and Insulation

The IMUs go to their corresponding I2C plugs: The camera IMU goes to the picoblade connector labeled I2C next to the USB connector. On the backside of the board is the I2C#2 connector for the optional frame IMU. The camera IMU must go to the port I2C, near the USB plug! Your board may have been shipped with a IMU pre-connected to port I2C#2, which is incorrect.

Stom32-bgc-v130-ports-and-connections-01.jpg

One thing we found out the hard way is to never mount the board or the IMUs with metal screws and/or metal distance sleeves. Always use plastic ones. Not only does this help to avoid electrical problems but also the I2C bus can be sensitive to the nearby metal parts, leading to massive error rates on the I2C bus. Without a continuous readings of the IMU positions the entire purpose of the gimbal is forfeit.

Make also sure that the IMUs are mounted rigidly, so that they measure the actual position.

Related wiki articles:

Gimbal Mechanics

Before using a gimbal, it is absolutely necessary to balance it and to ensure minimum resistance to rotations (friction in bearings, stiff cables, etc). Any improper balance or resistance to rotation will make setting up the gimbal more difficult or even impossible. The goal shall be to rotate the camera in the gimbal and it should stay in that position by itself. In other words, the center of gravity should be in the center of all gimbal motor axes. Just imagine the camera's center of gravity is way below the pitch axis (looking with the camera up and down). It would act like a pendulum. So just because your copter does accelerate forward, the gimbal pitch motor has to hold against the mass inertia. You will need very strong motors and lots of energy which is a waste. On the other hand, if the gimbal is balanced properly, the motor only has to compensate the copter rotations, wind resistance and inertia when rotating the camera to point to somewhere else.

Related wiki articles:

Powering the Gimbal

For the motors the 5 V supply of the USB bus is too low. So, the motors will work only if a battery with sufficient voltage is connected. That is the reason why e.g. flashing the firmware is done using USB power only, as we do not want the motors to get power in that case. The battery connector can handle any voltage from 6 V to 18 V. Connecting the PC via the USB cable while the board is powered via a battery is no problem at all. The order does not matter, first USB then battery, or vice versa, both will work.

Motor Connectors

The board has three connectors for the motors labeled Mot0, Mot1 and Mot2. Before connecting any motor, it is a good idea to measure the resistance of the motor windings and the motor frame. The three motor cables should have an electrical resistance of 12 Ohm or more and be completely isolated from the motor housing. If the resistance is too low, the amount of amps flowing through the motor might be too high for the board driver. If one of the motor cables has a short to the motor housing, the entire gimbal and maybe even the frame gets the motor voltage.

The usage of the three connectors is

  • Mot0: Pitch motor to point the camera up/down
  • Mot1: Roll motor to stabilize the horizon
  • Mot2: Yaw motor to turn the camera left/right

The motors need to be connected in this order to the motor ports. The three wires of a motor in contrast can be connected to its port in any order, here the order does not matter.

Summary

Now the motors are connected, the IMU(s) are connected, the battery power cable is ready, and its polarity double-checked.

Storm32-wiki-a-1-02.jpg

Basic Controller Configuration

Now it's time to set the most important parameters, namely the IMU orientations and motor parameter values, which are located on the [Gimbal Configuration] tab. Without that, the controller can't do even the most basic operations. Setting these parameters correctly by hand is difficult, however, the GUI provides the [Configure Gimbal Tool], which makes that very simple.

You should be prepared to know the number of poles of your motors, as well as be ready to connect a battery on demand (if you haven't already plugged in a battery).

In the following the gimbal MUST be at rest and NOT be moved at all times (unless you're specifically asked to do differently). Ergo, don't hold the gimbal in your hands. Also, a camera MUST be installed in the gimbal. Without camera gimbals don't work properly.

  1. Change to the [Gimbal Configuration] tab. There you find the parameter fields for the IMU orientations, motor poles, motor directions and motor startup positions. To set them, run the [Configure Gimbal Tool].
    Storm32-wiki-c-1-01.jpg
  2. In the welcome screen you can select what to configure. The individual steps are grouped into Steps I and Steps II, and some finishing steps. You want to do all, and hence just click on [Continue].
    Storm32-wiki-c-2-01.jpg
  3. You are now asked to position the gimbal and camera. The gimbal should be in its standard default position. Adjust the camera manually such that it is level and points into the forward direction of your copter. You might not be able to do that perfectly because of the motor magnets, but you should get that better than to within 15°. Once the camera is in forward position click on [Continue].
    Storm32-wiki-c-3-01.jpg
    Gimbal config tool forward.jpg
  4. Now you are asked to pitch the entire frame inclusive camera downwards by 45°, as if you would want to film the ground in front of the copter. So you lift the frame such that both, frame and camera, point downwards. Importantly, the camera should not move and keep its position relative to the frame. If it does move then you should consider balancing the camera better. Also, avoid roll movements. Anyway, the goal in this step is to measure the effect of a downturn by 45° degree on the IMU's signals. The IMUs do measure the acceleration values, and as we are static its the earth gravity. For example, the reading in normal position might be x/y/z = 0 g/1 g/0 g. When pitching downwards, the values may change to 0.7 g/0.7 g/0 g, and from that we know the IMU's orientations.
    Storm32-wiki-c-4-01.jpg
    Gimbal config tool 45.jpg
  5. Once the IMU orientations were determined, their values are shown and you can (should) put the gimbal back to normal position. When you can continue with the next step.
    Storm32-wiki-c-5-01.jpg
  6. The next important step is to set the motor pole counts for each motor. This is information you should get from the motor vendor. Data like N12P14 means 14 poles.
    Storm32-wiki-c-6-01.jpg
  7. On the next screen you are informed that all motor direction values will be set to "auto". Click [Continue].
  8. This completes the settings of Steps I, and you can proceed with adjusting the parameters of Steps II.
    Storm32-wiki-c-8-01.jpg
  9. For the next steps to work, the gimbal has to be started up with enabled motors, and a battery must be connected. The GUI will check for that, and will ask you to connect a battery if required. Do as advised.
    Storm32-wiki-c-9-01.jpg
  10. The gimbal will now go through it's initialization steps, which you can follow in the screen. Please wait until it reaches the NORMAL state. You should see the green LED go solid, as well as hear a beep. You are reminded to keep the gimbal in normal position and at rest during all this.
    If this step doesn't complete or an error occurs see the Quick Trouble Shooting section below, and please take any recommendations from there seriously.
    Storm32-wiki-c-10-01.jpg
  11. On the next screen you are informed that the motor direction values will be determined for all motors. Click [Continue].
  12. In a further screen you are informed that the motor startup positions for the pitch and roll motors are determined. Click [Continue].
  13. Now you are asked for another important step, namely to align the camera such as to point forward. Use the buttons to turn the camera until you're satisfied. The goal of this step is to align the camera with the 2nd IMU. A precise alignment is required for the 2nd IMU function to work correctly. You don't have to overdo however, a visual accuracy of the alignment is sufficient.
    Storm32-wiki-c-13-01.jpg
  14. This completes the settings of Steps II. What is left is to store all values in non-volatile memory, and to restart the gimbal.
    Storm32-wiki-c-14-01.jpg
  15. The results of the above steps can be seen in the [Gimbal Configuration] tab, which got updated with the new IMU orientations and motor parameters. Also the motors are enabled, and the system is functional now.
    Storm32-wiki-c-16-01.jpg


Quick Trouble Shooting:
It may happen that the tool gets stuck in step 10. This generally indicates a serious problem with the setup, and not the controller. Examples are:

  • Motors are not connected to the correct ports.
  • Motors are not working properly because of e.g. a broken wire or bad connection.
  • The IMU(s) do not work properly because they are connected to the wrong ports, or step 4 wasn't done correctly.
  • I2C errors occur because of inappropriate routing of motor and I2C cables (consult also the I2C Error Compendium).
  • PID parameters are totally wrong for the gimbal.
  • Read also the Quick Trouble Shooting section in the next chapter!

Related wiki article:

First Startup

After the above steps were completed, the STorM32 controller was reset and hence will start up now.

At startup, the controller goes through its initialization steps, which typically takes about 20 - 25 seconds. Note that the gimbal should not be moved until the initialization is finished and the controller has reached normal operation. This is indicated by greed LED going solid, and - if enabled - by a beep.

Initialization Steps: strtMOTOR - SETTLE - CALIBRATE - LEVEL - AUTODIR - RELEVEL - NORMAL

  • strtMOTOR: The motors are turned on, and moved into the position specified by the startup motor position parameters.
  • SETTLE: In order to calibrate, the gimbal has to be stable, it should not be moved. For a copter that is quite simple as the copter is on the ground. A handheld device needs to be put at a table to remain in position for a few seconds.
  • CALIBRATE: Calibrates the sensors. Takes a second or so.
  • LEVEL: This is the point where the motors will moved such to level the camera in pitch and roll axis. The yaw motor is under power, so you can feel some resistance, but it is not moved.
  • AUTODIR: Here the motors are moved slightly around and from the sensor changes the controller determines the motor directions.
  • RELEVEL: Since autodir moved the camera, it is quickly brought back in a horizontal position.
  • NORMAL: This is the final stage; the PID controller is activated and the gimbal is operational. Simply move the camera out of position by hand, move the frame,... whatever you do the camera should remain stable. With a 2nd IMU enabled you can pitch the camera indefinitely, you can yaw the camera indefinitely or roll the camera by maximal +-80° or so. Larger roll angles are not possible as when the pitch and yaw axes become aligned, and pitch and yaw movements cannot be distinguished anymore (gimbal lock). Without 2nd IMU, the yaw and roll ranges are as before, but the pitch range is limited to +-45°.

Led Signals: The progress of the initialization is also indicated by the green LED on the board: During initialization it flashes with varying frequency. When initialization has finished and NORMAL state been reached, it goes solid. If beeps are activated, then the motors will emit a sound at the end of initialization, which can be very convenient. The current state of the controller can also be seen in status line the GUI, or the Data Display.

Quick Trouble Shooting:

  • The gimbal controller levels the camera, but only very, very slowly: The gimbal had been moved before the initialization has finished. Wait until the NORMAL state has been reach (green LED = solid) before moving the gimbal.
  • The gimbal moves constantly around, never finding the level position: The pitch and roll motors are not connected to Mot0 (Pitch) and Mot1 (Roll) but reverse. Hence the control logic does measure that pitch has to be changed by -5°, applies the proper movement sequence to the motor but all that happens is that suddenly the roll value is off by -5°. Make sure the motors are connected correctly.
  • Camera turns upside down or things like that: The IMU orientation is wrong.
  • Gimbal starts shaking, makes high frequency noises and things like that: This would be normal as we have not yet tuned the PID values for the motor control loop. In case that happens, set for all motors the P, I and D values to very low numbers but not zero (P=0.10; I=5.0; D=0.0050) and write them to the board. This will cause the gimbal to be slow when correcting movements but at least you can prove all is functional.
  • The motors receive power only briefly after startup but are when shut off and the red and green led start blinking fast, and the controller remains in LEVEL state: The controller could not level the camera within a certain time and hence shut off the motors for safety. This can happen for various reasons, such as that there is a mechanical constraint to the camera, one or more motors do not operate properly because of e.g. a broken motor wire or bad connections, or that the gimbal has not been assembled fully.

Next Step - PID Tuning

At this point the gimbal may already stabilize the camera. However, usually, the camera is not yet stabilized perfectly, since the PID parameters in the [Main] tab are not yet optimal. The gimbal may even start to show weird shaking or make high frequency noises, which indicates that the PID values are totally off. So, in any case the next step should be to tune the gimbal.

See the PID parameter Tuning Recipe for adjusting those.

You are also strongly encouraged to check out the Video Tutorials; there is a collection of some quite good videos available.

Comment: For good camera stability you need to spend at least a minimum time with PID tuning. The default PID values are chosen such that they work with most gimbals in the sense that the gimbal doesn't freak out. They therefore are necessarily "bad" in terms of good PID control or camera stabilization, respectively.