Hacking the UMX part 4

Continued from Hacking the UMX part 3

motor with loose wires

* I accidentally pulled two power wires from the motor when making some re-wiring changes. To save time I’m going to buy another one.

* Next steps are code work. Hook the FTDI cable to the ArduIMU and run the calibration code. This working…

* Now a lot of work with the communication between the ArduIMU and the Pro Mini – the issue is that I can send char data back to the Pro Mini – but the orientation data from the ArduIMU is float. Also when the ArduIMU is set up in as a slave I2C device it seems to zero out the sensors – going to try setting it up as master.

* After plenty of trials getting the to Arduinos to talk to each other over i2C I gave up and am going running the whole setup with the ArduIMU. This means I had to solder another pinout on to connect the servo controllers – found the equivalents for the digital ports. MOSI and MISO correspond to D11 and D12. PWM0 and PWM1 are the same as D9 and D10 . Hooked up and working.

* Now working on the stabilization code – initial efforts were to hand code the adjustments but I am now using a simple neural net to handle this. Testing the ArduIMU with this approach over the next few days.

Posted in Arduino, Hardware, Robotics, Software, UAV | Leave a comment

Hacking the UMX part 3

Continued from Hacking the UMX part 2…

lithium battery

* Next I’m going to hook up the power supply ( a 2S 7.4V 18 mAh 20C Lithium Polymer Battery) to the ESC (Electronic Speed Controller). I’m going to solder 3 breakout pins to the power leads coming from the ESC so that is easier to plug and/or unplug the power supply to the ESC.

ESC diagram

* I soldered new connections for the power from the battery to the ESC, and soldered connectors for the hookup to the motor

solder power line

* Tested the connections I built against the Arduino UNO on the breadboard – it is working – a value of 30 appears to be the low throttle setting – max is 180.

* Now need to re-attach the prop and confirm it is turning the right direction before I continue.

* It is not turning the proper direction – I need to switch 2 wires leading to the ESC – will switch the outside wires.

* Got that wired up – tested the prop to full speed and not getting enough thrust to lift the UMX – what the hell? Examined the setup, the code, everything looks okay – looked at the prop – I had screwed it back on upside down after dis-assembly. So for the record the motor and prop combination doesn’t work well if the prop is bolted on upside down – fixed now and working – UMX lifts off at throttle setting of 130 (scale from 30 to 180 full throttle).

servo wiring

* Now wiring all 4 servos into one power and ground cord – lots of fiddling and detail work to get all the wires where I need them to be. Still working on this, taken several hours to get the servos connected properly – huge pain. I was trying to do this individually but instead did the power and ground cords in series, they are all plugged into a single wire for power and a single for ground – this is working.

* Each servo needs a separate signal wire – so I soldered the 4 individual leads and am now testing each one to confirm they work. Dorsal – works, Starboard – working, Port – works, and Ventral – working.

* Now I’m going to test if the servos can run from the arduino’s power board, and not a separate power source. In the flying version the lithium battery will send power to the ESC, the ESC sends power to the flight motor and the arduino board. If I can power the servos from the Arduino it will simplify the setup.

* This is working – now need to begin connections to the actual Arduino Pro Mini I’m going to use for flight tests.

Pro Mini solder

* Soldered pin outs for the servo connections, plus for the power supply and ground for the servos.

* Connect servos control and power/ground leads to Arduino Pro Mini and test … working.

connected Mini Pro

* Now confirm Arduino Pro Mini can control the main motor as it is currently connected – done.

* Now the tough part – the existing code I have outputs roll,pitch,yaw data from the ArduIMU over the serial port. I can’t receive this data over serial with my main Pro Mini board and have my Mac USB connected at the same time – which will make it very, very hard to debug. To get around this I’m going to use IC2 to send data from the ArduIMU to the Pro Mini. This is working – I can send data from one Arduino to another without using the serial port.

* Now modify the AruIMU code to send the roll, pitch, and yaw data via IC2 – this is working.

Posted in Arduino, Hardware, Robotics, Software, UAV | Tagged , , , | 1 Comment

Hacking the UMX part 2

This is continued from Hacking the UMX part 1.

* Need to wire the rest of the servos to the controlling Arduino – this is more power than the Arduino can supply directly so I’m going to have to wire a separate power source. I’m using the tutorial at RCArduino as my starting point. Will use 2 Double A batteries for now.

external battery

* Now have 2 servos under control  – dorsal and ventral – naming conditions for servos are (assuming black cockpit image on UMX is top and craft is in level flight – all directions in reference from cockpit image) – dorsal (top), ventral (bottom), port (left), and starboard(right).

2 servo breadboard

* Next I’m going to make sure I can control the main rotor motor from the Arduino. I’ve never done this before so I went through several great tutorials and intros – Controlling Brushless Motors, how to control a brushless motor through a ESC with Arduino,

* To control a brushless motor from the Arduino requires an ESC (Electronic Speed Controller) – I’m using EFLA7200 BL Controller 8A from E-flite. The manual is here.

ESC diagram

* I was able to use the sample code from Arduino — Brushless Motor Control
to control the main motor. It worked fine and I can now control the speed of the motor.

* I have the components and initial code working on the breadboard and the Arduino Uno. Now I need to move all the parts to the next stage so that the UMX can fly. This will require soldering and the Arduino Pro Mini instead of the Uno.

* To get the UMX flight ready I remove all of my jury rigged experiments and breadboarding.

UMX ready for next steps

* The Arduino Pro Mini has no built in connectors so everything will have to be soldered. I have never soldered in my life so I practiced on some spare boards and pins (SparkFun seems to have a lot of these – I used their tutorial as well).

practice soldering

* After practice (results – bad, good, good, terrible, good, okay) I decided to bite the bullet and solder my first real connection – the breakout pins for the Arduino Pro Mini so that I can connect the FDI cable and update/load code from my Mac – done and working…

first solder

* Next steps are wiring up the UMX power supply.

Posted in Arduino, Hardware, Robotics, UAV | Tagged , , , | 1 Comment

Hacking the UMX part 1

Steps to get the UMX ready to work with the two new Arduino controllers.

* Cut the wires between the battery pack and the DSM 6ch UM AS3X RX BL-ESC; HT.
* Snip the connecting wire between main electric motor and the DSM 6ch UM AS3X RX BL-ESC; HT.

* Cut the wires between the DSM 6ch UM AS3X RX BL-ESC; HT. and the four 2.3-Gram Performance Linear Long Throw Servos. Leave the servos in place, they’ll be used later.
* Carefully remove the chip without damaging the UMX – okay I didn’t quite accomplish this 🙂
photo(25)

* Attach the DIYDrones ArduIMU+ V3 to the body of the UMX. I’m trying to stay clear of the servo motors and wires as much as possible to prevent interference with the sensors on the chip. The ArduIMU is what I’m using for orientation and motion data, it contains accelerometers, gyroscopes, and a magnetic compass system (no GPS). It will feed this data to the main Arduino controller that will handle sending commands to the servo motors and main lift motor. (I used adhesive tape/foam for this but it was not enough so I had to go with krazy glue)

arduino imu

* Now the ArduinoIMU needs to be calibrated and we’ll see if we’re getting realistic values for roll, pitch, and yaw. For now the IMU will be connected directly to my Mac so I can see the values directly in the serial monitor.

* I’m using as a base for my code the excellent work by Al Toma – his code is at –  ARduImuV3 code.

* Connect my mac to the ArduinoIMU via a FTD cable.

photo(27)

* Run the calibration routine, store calibration values to eprom.

* Now run sketch that reports orientation values to the serial port – monitor and confirm they’re working.

* Values are fairly constant – so next step is confirm I can connect an Arduino to one of the servos and control it. I used the the example code ‘sweep’ as the basis – the 2.3-Gram Linear Long Throw Offset servo has only 3 settings 0 – left, 90 in the middle/neutral, and 180 to the right. My connection effort is makeshift at best, just making sure I can connect and control the servo

arduino breadboard servo

* This is working – I can read orientation values from the IMU and fire the one servo to adjust the control surface up, down, or neutral.

* Next steps are to wire all 4 servos up to my breadboard (this will require a separate power source)…

Posted in Arduino, Hardware, Robotics, Software, UAV | Tagged , | 1 Comment

Initial Goals and First Steps

UMX Hyper Taxi

Initial goals.

* create a single rotor ‘tail sitter’ uav that can sit in stable hover indoors at a designated altitude over the floor with no user input (software controlled)

* update code/hardware to handle external inputs (wind from a fan, push from person) and regain stability

Stretch goals

* code/hardware so that the drone will follow the user within a certain distance, probably using iOS beacon tech (Bluetooth LE) – no obstacle avoidance, just follow.

First Steps

To simplify the issues – I’m going to start by hacking an existing RC controlled tailsitter – it is a UMX Hyper Taxi with a DSM 6ch UM AS3X RX BL-ESC microcontroller and receiver, one BL180 Brushless Outrunner Motor, 2500Kv, 5.5 x 2.0 Electric Propeller, four 2.3-Gram Performance Linear Long Throw Servos, and a 180mAh 2S 7.4V 20C LiPo battery.

Once the stabilization code is working on the Hyper Taxi and if time permits I’ll create a new UAV from scratch with a sphere form factor –  initially basketball sized, then going to smaller models as the design progresses – see  Spherical Flight Vehicle, Kyosho Space Ball, Puzzlebox Orbit, or GimBall for examples.

Besides the Hyper Taxi I will need one ArduIMU+ V3 – this microcontroller will supply the orientation and acceleration data that my program will need to figure what control inputs are needed to stabilize in hover. A second Arduino Pro Mini 328 will run the main program plus control the 4 servos connected to the control surfaces and the main lift motor. These two Arduinos will replace the existing  HyperTaxi microcontroller and will send the necessary commands to the craft instead of RC commands from a human pilot.

A big challenge is that I’m attempting to do this without GPS – there may be orientation and drift issues that I won’t be able to compensate for – we’ll just have to see….

Posted in Arduino, Hardware, Robotics, UAV | Tagged , , | Leave a comment

Flying Robots

sparkfun hq

This is a blog about creating a single propeller flying UAV that is as maneuverable and stable as a quadcopter. The single larger rotor is more efficient, quieter, and should be cheaper to build as well. I’ll use software and aerodynamic forces (ailerons & rudders) to keep the single prop design stable in hover.

I chose this project because I am very interested in solving real world problems with ‘swarms’ of simple flying robots. Before doing that I need to as a first step to design extremely low cost basic flying robots that eventually will work together to perform tasks in the real world. I’d like to see the world of robotics focus on generic, modular, and cheap hardware that can be re-configured by software on the fly to handle different conditions and/or tasks – instead of expensive hardware customized for every task.

This project was kicked off as part of SparkFun’s ‘Hacker-In-Residence’ program. I can’t thank them enough for the help and support.

Posted in Arduino, Hardware, Robotics, Software, UAV | Tagged , , , | Leave a comment