Visiting KiteGen

Submitted by fabio on Fri, 2012-01-27 17:05.

On Wednesday I've been invited to visit Kitegen. What's that? Well, it's an EU founded research project aimed to produce energy from high altitude winds by means of a kite based system. A good introduction to the project in English is given in this article while Italians can watch this SuperQuark episode (SuperQuark is an Italian television program about science).
?
Why would I be invited to visit them? Well, I didn't had a clue until I got there...

It turns out that they may be the most advanced users of my FreeIMU as well as probably one of the biggest viacopter.eu clients (viacopter.eu is the official reseller of FreeIMU).

They are using FreeIMU as their base IMU during various steps of the prototyping of the automated system used to control the kite. Basically, the idea is to put various FreeIMU on the Kite as well as many different other sensors to precisely estimate the kite orientation in order to automatically control it.

I've seen a demo of some of their controlling software, wow.. tough stuff! Unfortunately, I haven't been able to make a video of the software.. that's a pity.

But, I do have a picture of one of a prototype of their controller boards! (Thanks Ivan for the picture!). Can you see FreeIMU???

Kitegen controller board with FreeIMU

I know there has been some criticism around this project. Personally, having seen the progress the guys have done, I think it is doable and they are actually not that far from success. Will it change the way we all think about energy? I surely hope so.

Good luck to Massimo and his crew.. I'll surely be around again there.. too cool to miss any of it ;-)

Meanwhile, have a look at some pictures..

This is the Kitegen Steam, as of 2 days ago, during a calibration of the PID for the ropes controlling.

Kitegen Steam

In the facilities of the company some "spare parts" for the next KiteGen Stem:

The ropes reels with integrated motors for controlling speed as well as lateral offsets motors.

Kitegen motors reels

This is the new full carbon Steam.. whoa that's expensive!

Kitegen Steam full carbon

They call this "the hand" and it is used to automatically open the kite during the take off procedure.. nice piece of custom mechanical design.

Kitegen The Hand

Functions with variable lenght arguments in Arduino

Submitted by fabio on Wed, 2012-01-18 17:27.

I was reading about variable length arguments for functions in the C programming language and I thought, "hey, will this thing work on an Arduino?".. well, it turns out that yes, it's working great!

But, what are functions with a variable length? Well, the standard C printf function is a good example (not available on Arduino of course). You can call it with how many arguments you want, for example:

printf("%d", 5);
printf("%d %d", 5, 7);

So, how can we make this with the Arduino? Here is an example, using the same example from here, just ported into Arduino code:

#include <stdarg.h>
#include <stdio.h>

/* this function will take the number of values to average
   followed by all of the numbers to average */
float average ( int num, ... )
{
    va_list arguments;                     
    float sum = 0;

    /* Initializing arguments to store all values after num */
    va_start ( arguments, num );           
    /* Sum all the inputs; we still rely on the function caller to tell us how
     * many there are */
    for ( int x = 0; x < num; x++ )        
    {
        sum += va_arg ( arguments, double ); 
    }
    va_end ( arguments );                  // Cleans up the list

    return sum / num;                      
}


void setup() {
  Serial.begin(9600);
}

void loop() {
  float avg = average( 3, 12.2, 22.3, 4.5 );
  Serial.println(avg);
  avg = average( 5, 3.3, 2.2, 1.1, 5.5, 3.3 );
  Serial.println(avg);
  
  delay(1000);
}

New version of the FreeIMU library adds support for Sparkfun boards

Submitted by fabio on Sat, 2012-01-14 23:50.

The FreeIMU library has traditionally only supported FreeIMU boards out of the box. However, changing it to support Sparkfun's IMUs has always been very simple and it has been done by many people.

Unfortunately, it seems that many are still unable to modify the library by themselves so I finally decided to add support for Sparkfun's boards in the new version of FreeIMU library out of the box.

So, if you happen to own one of the following Sparkfun boards, you should be able to simply use the FreeIMU library by uncommenting your board definition in the FreeIMU.h file.

The boards currently supported are:

  • IMU Digital Combo Board - 6 Degrees of Freedom ITG3200/ADXL345 SEN-10121
  • 9 Degrees of Freedom - Razor IMU SEN-10736
  • 9 Degrees of Freedom - Sensor Stick SEN-10724
  • 9 Degrees of Freedom - Sensor Stick SEN-10183

I don't own any of these boards, I simply supposed the code based on those products pictures. If you happen to have one of these, please test the new version of the library with your board!

First flights of FreeIMU v0.4

Submitted by fabio on Wed, 2012-01-11 00:19.

The testing of FreeIMU v0.4 is proceeding nicely.. finally my friends Tilman and Warthox received their boards and as soon as they could they mounted them on their quadcopters for some flying tests. They used the brand new MultiWii software which me, timecop and Alexinparis have produced... the result?

Judge it by yourself..

p.s.: huge thanks to Warthox and Tilman for their time in testing the boards and making the videos!

JeeNode v6 - Assembling and Soldering trough hole PTH components

Submitted by fabio on Mon, 2012-01-09 15:23.

I recently bought a couple of JeeNode v6, a small form arduino compatible board which has wireless communication capabilities through the RFM12B module. I'll be using this in an internet of things project we are prototyping at University.

Btw, since the boards came in kits you had to assemble, I took the camera out and recorded the process. The video is a nice example of soldering through hole components. Enjoy!

FreeIMU v0.4: a closer look

Submitted by fabio on Mon, 2012-01-09 15:02.

I've sent one of the early prototypes of FreeIMU v0.4 to Tilman from μmicrocopters so that he could help us with testing. Tilman just sent me the following great pictures, looking awesome to me!

FreeIMU v0.4.1 top view perspective

FreeIMU v0.4.1 bottom view perspective

FreeIMU v0.4.1 top view

FreeIMU v0.4.1 bottom view

FreeIMU v0.4.1 top view cut

FreeIMU v0.4.1 bottom view cut

MultiWii support for FreeIMU v0.4 and MPU6050

Submitted by fabio on Sun, 2012-01-08 14:33.

Thanks to myself, timecop and Alexinparis, FreeIMU v0.4 and its MPU6050 are now supported in MultiWii. At the moment, the code doesn't use the DMP due to the lack of documentation for it. The MPU6050 I2C master features are instead used, so the magnetometer is now read directly from the MPU6050.

Code available on MultiWii SVN: http://code.google.com/p/multiwii/source/checkout
Development discussion: http://www.multiwii.com/forum/viewtopic.php?f=8&t=1080
FreeIMU project: http://www.varesano.net/projects/hardware/FreeIMU

FreeIMU v0.4 status: progresses on prototypes and production

Submitted by fabio on Tue, 2011-12-20 13:13.

It's been a while since the announcement of the first FreeIMU v0.4 prototype built and you may be asking what I've been doing with it..

Well, the tests I've been doing so far with my v0.4 prototypes have been completely successful.. the unit works great. Unfortunately, I've been able to only test the 6 axis (gyro & acc) sensor fusion of the DMP in the MPU6050. As far as I know, Invensense only released software examples for that and documentation and code for a complete 9 axis DMP sensor fusion is still not available. So, I haven't been able to test the accelerometer, magnetometer and gyro on DMP sensor fusion. Please, if you happen to have more documentation or code for this please let me know!

My original plan was to build other v0.4 prototype boards and send them to various developers working on this kind of application so that, by sharing efforts, we would be able to provide good software for the new sensors.

Unfortunately, me and Jussi have had a lot of troubles with our suppliers. Both the MS5611 and MPU6050 have been almost unfindable for about 3 months while we had a lot of troubles with the HMC5883L that ACAL sent us. It seems that at ACAL they don't know how to properly store/ship moisture sensitive devices as we had many issues with them: they once even shipped them unsealed!

This kind of troubles really slowed down my progresses of building some prototype boards for developers, that's why the v0.4 testing didn't progressed much in the past month.

Fortunately, it looks like we are again on track again with the prototype boards and I hope to have them ready before Christmas. I'll announce later this or next week the availability of FreeIMU v0.4 prototypes for developers.

Meanwhile, we are also starting organizing the production run of the boards. I'm already in contact with local SMD assembling factories so we are now in the process of sourcing all the components and finalizing the designs so that we can start the production.

This is actually the first time I deal with organizing a factory made production run of a board, yes last time they were all hand made by me, so this is really an interesting experience and I'm really learning a lot.

I'll leave you with a picture of all the components I just received. As you can see, these are reels of components: hundreds of caps, resistors and sensors! Great!

I'll keep you posted on the production progresses.

FreeIMU v0.4 production run component reels

Updating to Arduino 1.0 APIs and improvements

Last updated on Mon, 2011-12-19 12:33. Originally submitted by fabio on 2011-12-05 18:01.

As you may have heard, the Arduino team just released the version 1.0 of their IDE which comes with quite some changes in the programming APIs. So, I spent some time updating all my Arduino libraries to be used with Arduino 1.0.

From now on, I consider previous versions of the IDE/API no more supported. So, if you are using my libraries, you are strongly suggested to update to Arduino 1.0 and the most recent version of my libraries.

Here are the new versions with the changes made:

  • HMC58X3 library: updated to Arduino 1.0 with a better calibration.
  • MS5611-01BA: better reading functions which cache the results when the sensor can't provide a newer reading, update to Arduino 1.0.
  • FreeIMU library: updated to Arduino 1.0 and to the new algorithm by Sebastian.

Enjoy it!

UPDATE 2011-12-07: The Arduino 1.0 API has a bug in the Wire implementation which throws an error on compiling: call of overloaded 'write(int)' is ambiguous. In order to fix it, search Wire.h within your Arduino install and add the following lines:

inline size_t write(unsigned long n) { return write((uint8_t)n); }
inline size_t write(long n) { return write((uint8_t)n); }
inline size_t write(unsigned int n) { return write((uint8_t)n); }
inline size_t write(int n) { return write((uint8_t)n); }

Your Wire.h will look like this. See the bug report for all the details.

LibreTooth: libre hardware bluetooth modules using RN-41 and RN-42

Last updated on Wed, 2011-11-30 10:41. Originally submitted by fabio on 2011-11-28 11:42.

LibreTooth Boards

LibreTooth is a side project I developed during my various human-computer interaction device prototyping. In the past, I've been a fan of Sparkfun's Bluetooth Mate Gold, a breakout board for the Roving Networ's RN-41 Class 1 bluetooth module. It's quite superior to other cheaper Bluetooth modules you may find in China through ebay.

Unfortunately, Sparkfun sells it at more than 60$ (which became 70€ on EU sellers) and they also don't release its designs as open hardware. The RN-41 and RN-42 (same as RN-41 but Class 2) can both be bought from Mouser at about 20€ while cheap PCB are available from Dorkbot PDX as usual. So, I decided to design my own Bluetooth Mate inspired hardware: LibreTooth!

LibreTooth is a completely libre hardware project, released under CC-BY-SA 3.0. It has been designed using KiCAD, a Free/Libre/Open-Source Electronic Design Autonomation suite. You find all the schematics and designs for building your Libretooth in the links at the bottom of the page.

Libretooth can both be used with the RN-41 or RN-42. The first one is a Class 1 module which will offer longer distances but higher current consumption while the RN-42 is a Class 2 module offering smaller distances but it is also more energy efficient. The board design is fairly similar to Sparkfun Bluetooth Mate. I just also broke out the reset pin on the bluetooth module to allow programmable reset of bluetooth communication.

Below all the desings: