BritishIdeas

Interesting Tech Projects

RSS Feeds

  • Home
  • About
  • Contact
  • Open Radio Control

Radio Controlled Aircraft for Stroke Victims

Oct 23rd

Posted by Andy in Software Engineering

No comments

This post introduces my open source radio control project. It allows an RC aircraft to be controlled from a Wii Nunchuk, i.e. with one hand! Videos will be posted when they are available but so far it is working great in the flight simulator and with a stationary aircraft.

All documentation, source files and binary files are available for free from this site, so you can build your own. Be sure to read the disclaimer before you start however.

I would love to hear your success stories using this modular system!

Bookmark to:


Hide Sites
nunchuck, radio control, software, Windows

Creating Package Installers for MonoMac

Sep 25th

Posted by Andy in Mac OS X

No comments

When developing applications with Mono/MonoMac it is very useful to create an installer that bundles Mono with your application. MonoMac includes a utility for creating an installer but unfortunately it is bug ridden and limited. Here are the steps that work for me.

Note: make sure you have Xcode installed.

  • Delete any existing bundle. For example MyApplication.app. This is important because if the bundle already exists when you try to create it MonoMac will give you the cryptic error message “Unhandled error in packaging”
  • In MonoDevelop go to Project -> Create Mac Installer… and choose to only create a bundle

    This should create a bundle with a name like MyApplication.app
  • Start PackageMaker by going to Spotlight and searching for it. It can also be found in /Developer/Applications/Utilities.
  • Drag your bundle MyApplication.app to the left hand side of PackageMaker.
  • Select the package, click on “Components” and uncheck “Allow Relocation”
  • Build and run the installer

You may or may not want to uncheck the option to allow relocation. On your development Mac if you don’t uncheck this then the installer will find a version of your application inside your MonoDevelop solution and overwrite it rather than putting it into /Applications. This makes it appear as if the installer didn’t work. On non-development Macs this option allows the application to be overwritten even if the user has moved it after installing an older version.

Bookmark to:


Hide Sites
MonoMac

Global Objects With MonoMac

Sep 24th

Posted by Andy in Mac OS X

No comments

When developing for C# and using Windows Forms creating and using global objects is trivial:

public static class Program
{
  public static Foo MyFoo = new Foo();

  static void main()
  {
    Main = new MainForm(MyFoo);
  }
}

The same can’t be said for MonoMac. The mistake is to equate the static MainClass class as being the same as the WinForms Program class in the example shown.

The solution is to put the global class instantiation inside the NSApplication delegate. MonoMac creates this automatically and calls it AppDelegate. The above example becomes:

public partial class AppDelegate : NSApplicationDelegate
{
  MainWindowController mainWindowController;

  public Foo MyFoo = new Foo();

  public AppDelegate ()
  {
  }

  public override void FinishedLaunching (NSObject notification)
  {
    mainWindowController = new MainWindowController(MyFoo);
    mainWindowController.Window.MakeKeyAndOrderFront(this);
  }
}
Bookmark to:


Hide Sites
MonoMac

Not All Wii Nunchuks Are Created Equal

Aug 29th

Posted by Andy in Software Engineering

No comments

What is the difference between the two Nunchuks below?

Quite a lot actually. The one on the left was bought on ebay for £3.50 and came with no packaging or information. The one on the right was bought from Amazon for £11.20 and came with Nintendo packaging and a warranty. Read on for details of all the differences I discovered. More >

Bookmark to:


Hide Sites
nunchuck, wii

Reading a Wii Nunchuck Using I2C

Aug 20th

Posted by Andy in Software Engineering

No comments

There are plenty of descriptions on how to read the joystick, accelerometer and button values from a Wii Nunchuck using I2C but I haven’t seen any waveforms. So here are mine. Click on the images to see them in full size.

The I2C bus was running at about 100kHz. The time between the handshake and the first data read sequence is about 1.8ms and the time between each subsequent data read sequence is also about 1.8ms, although I feel that these times can probably be reduced.

Unlike many code examples I have seen there are no delays between each write operation in the handshake or between the write and read operations of the data read sequence.

First up is the handshake to send “unencrypted” data:

Next is the data read sequence containing a six byte chuck of data with the values we need:

Hopefully these will be useful to people developing application with a Wii Nunchuck.

Bookmark to:


Hide Sites
nunchuck, waveform, wii

Fast Reading of XML Files

Jul 14th

Posted by Andy in Software Engineering

No comments

I recently had the need to parse 780MB XML files, and quickly. My preferred language for PC development is C# because I can work quickly and efficiently with it, however I was a bit wary of the speed of XML file processing. Thankfully Mike Taulty has worked out a solution using LINQ and XmlReader, providing the user friendliness of LINQ with the speed of XmlReader.

An initial test showed that a 39MB XML file is processed in 4.9 seconds using Mono on a quad core server running Ubuntu. This is about 8MB/second which means that my 780MB file should be processed in around 98 seconds. Nice!

Bookmark to:


Hide Sites
C#, XML

Convert Any Audio Source Into MP3

Jul 6th

Posted by Andy in Linux

No comments

Here is my method that I know works. If you have a better one feel free to post it in the comments section. It may not produce the best quality audio but I’m sure it can be improved.

Obtain a 3.5mm to 3.5mm audio cable, for example this one. Connect one end to the audio source (for example a PC) and the other end to the microphone in on your linux box (I tried line in but that didn’t work for some reason).

Make sure ALSA utilities and ffmpeg are installed (at a console prompt):

$ sudo apt-get install alsa-utils ffpmeg

Start recording with:

$ arecord -f cd -t wav test.wav

Start the audio source and once complete press Ctrl-C to stop recording. Convert to MP3 with:

$ ffmpeg -b 128k -i test.wav test.mp3

I then run the file through MP3Gain as the recordings tend to be a bit quiet and add tags in iTunes.

Bookmark to:


Hide Sites
mp3

Internationalization in Silverlight

May 10th

Posted by Andy in Software Engineering

No comments

For some reason Microsoft have made it difficult to work out how to support multiple languages in Silverlight. The solution isn’t hard, once you manage to work it out. It is complicated by the fact that accessing string tables in C# is completely different to accessing them in XAML. Plus there is a nasty bug in Visual Studio which apparently still isn’t fixed.

However, never fear. After trying several approaches, all of which failed in some way, the solution can be found on timheuer.com. Tim presents a clear and straightforward method without needing to do anything weird (except for the Visual Studio bug workaround).

Bookmark to:


Hide Sites
silverlight

Graphing Ping Times

Mar 29th

Posted by Andy in Linux

No comments

I recently had the need to generate a graph of ping times between my PC and a British Telecom server. After a quick web search the only options I found were commercial programs or free software that was incredibly bloated, complex to configure and with lots of dependencies. There must be a simpler way, and there is. Perl.

Here is my script:

#!/usr/bin/perl
# Converts ping output into a CSV file for graphing
# andy at british ideas dot com - March 29th 2011
# Public Domain
# Run using:
# ping -D 100.101.102.103 | ./pingtocsv.pl > output.csv
# or:
# cat pingdump.txt | ./pingtocsv.pl > output.csv
print "Measurement Time,Ping Time\n";
while (<STDIN>) {
  if ($_ =~ m/^\[([0-9\.]+)\].*time\=([0-9\.]+).*/i) {
    print "$1,$2\n";
  }
}
close(STDIN);

More >

Bookmark to:


Hide Sites
networks

The Progress of Linux

Mar 4th

Posted by Andy in Linux

2 comments

Back in 1998 I tried installing RedHat 6 on a spare PC. When the desktop loaded it was, ummm, wobbly. I then spent the best part of the next two weeks fighing with X configuration files setting obscure items such as front and back porches in a futile attempt to stabilize the display so it would be usable. I gave up.

Fast forward to March 2011 and Ubuntu 10.10. I’ve used lots of different versions of Ubuntu since 2006 on a variety of machines including for CNC control, but the last time I installed in a dual boot system was two years ago. Ubuntu 10.10 works fine in a virtual machine inside Windows 7 but I wanted to run it at full speed. More >

Bookmark to:


Hide Sites
ubuntu
12345»10...Last »
    • Recent comments
    • Popular posts
    • Archives
    • Tags
    • Categories
    • CNC (46)
    • Flash (2)
    • Linux (20)
    • Mac OS X (2)
    • Mapping (18)
    • Miscellaneous (5)
    • Photography (13)
    • Software Engineering (12)
    • Windows (2)
    a480 axis backlash backup CAD canon chdk CNC CNC cabinet diy dxf electronics emc2 endmill fireballcnc fixtures flex hardware inkscape JOSM machine maperitive Mapnik microcontroller MonoMac moonlight motors nunchuck OpenStreetMap PC power supply project rendering resources scripts silverlight sketchup software speed stepper motors time lapse tools ubuntu wii Windows
    • October 2011 (1)
    • September 2011 (2)
    • August 2011 (2)
    • July 2011 (2)
    • May 2011 (1)
    • March 2011 (4)
    • February 2011 (1)
    • January 2011 (3)
    • September 2010 (1)
    • July 2010 (3)
    • June 2010 (10)
    • April 2010 (1)
    • February 2010 (1)
    • December 2009 (5)
    • September 2009 (2)
    • August 2009 (3)
    • July 2009 (7)
    • June 2009 (1)
    • March 2009 (3)
    • January 2009 (1)
    • October 2008 (1)
    • September 2008 (6)
    • July 2008 (2)
    • June 2008 (5)
    • April 2008 (4)
    • March 2008 (2)
    • February 2008 (2)
    • January 2008 (1)
    • December 2007 (1)
    • November 2007 (7)
    • October 2007 (16)
    • CHDK and Canon A480 Quick Start Guide (51)
    • Using Inkscape for CNC Designs and DXFs (10)
    • How To Install EMC2 on Unbuntu 7.10 Gutsy From Scratch (9)
    • Importing DXF Files Into Inkscape (8)
    • Map Scales and Printing with Mapnik (5)
    • Compiling OpenScales 1.1 with FlashDevelop 3 (5)
    • First Steps With Flash Using The Flex 3 SDK (4)
    • Installing Ubuntu Netbook Remix on an Acer Aspire One (4)
    • Fireball V90 EMC2 Configuration Files (4)
    • Fireball CNC V90 Limits and Speed (3)
    • Radio Controlled Aircraft for Stroke Victims: [...] Open Radio Control « Creating Package Installers for MonoMac [...]
    • agguilar: hi, can yo let us know if your going to share the 3D model ???
    • Spanish: Thanks! It works like a charm.
    • Mike: Hi Guys, I'm using a A480 with chdk, i'm also using a power supply bough on ebay however when ever...
    • dcdae45: Hi, This is really amazing to see that a Silverlight map control with a simple design can display...
    • jobobeda: Great website! The CNC info is priceless for those who are thinking of using the programs and...
    • John: .thm file is a THuMbnail file! CHDK works very well - recently, there have been burglaries in my...
    • Andy: I think you are missing the point. Linux on the desktop currently has a relatively small user base....
Mystique theme by digitalnature | Powered by WordPress
RSS Feeds XHTML 1.1 Top