Wireless Control for Access Dinghies…and bigger boats.

This page will hold build information for Wireless Motor/servo control intended for use with in a Access Dinghy by and for sailors wanting/needing electrical and mechanical assistance with Rudder and Main sheet Control.

…tho, you need not be actually in the boat …yep full scale Radio Controlled Sailing definitely a possibility, dependent on the transmitter used.

 

Earlier Versions used quite expensive components , a picture of one of the earlier builds is below.

Polou Version Adruino Nano and RF24

The current build uses a wireless Wii Nunchuck – from the Nintendo gaming console.

One of these…FICZRAGG2HE082W.MEDIUM

 

Wired Wii Nunchuck internals, Gnd, SDA, SCL, VDD pinsFor reverence, above picture is internals of wired Wii Nunchuck
showing top to bottom wiring, Gnd, SDA, SCL, VDD

 

Detailed but outdated information was available ….and this caused a few headaches, who knew there were so many variants of IDE (Integrated Development Environment) available, being the place where you upload the code to the the Adruino board of your choice.

This Blog had me very interested , in that here was the possibility of shrinking and making more tidy the things i had been housing in plastic lunch boxes..

http://www.instructables.com/id/Wireless-Wii-Nunchuck-control-of-Arduino-projects/

I am using a generic Adruino Nano V3.0 , which comes with the boot loader installed and a USB plug to upload the sketches.

Here is a picture of the Adruino Nano + prototype board , connected to the Wii Nunchuck receiver (the small white box with the colored wires coming out of it)

IMG_20140609_171943

 

22 June 2014

Finished product – how to.

1.  You'll need some Software – written in the Adruino IDE ver 1.0.5 
Available here – http://arduino.cc/en/main/software

2. Some code to put inside the IDE – located at the bottom of this article.

3. You'll need a Wii Nunchuck – I used a 2.4ghz version
2.4ghz wii nunchuck

4. 1 x  Adruino Nano v3.0 or similar. – available pretty much everywhere, Jaycar, dx.com, sparkfun electronics..

5. Electronic speed control of some sort. In this build i have used some a Brushed 'X-Car' 45amp from Hobby King Australia.

6. Some hook up wire, circuit board lacquer, box to put it in, and power connections of your choice.

 

Following is a rough guide to how i assembled the Wii Nunchuck receiver

Please bear in mind the code i have written is for the X-car receiver – a great many hours of testing to find the right settings, went into the values i have used.

Should you use a different ESC you will need to edit the settings to find 'neutral' for your esc.

If i had more of them i would off used Losi Brushed esc's as the one i have from my Losi Strike was pretty much plug and play – with equal reverse and forward power (programmable)

 

 

Step one.

Load the software onto your Adruino – soft wire the connections – a development board is handy for this.
…i need to first test ; the code, Nunchuck, Nunchuck dongle wiring and esc to make sure there are no faulty components.

I put some balance leads on the Wii dongle while i was testing so that i did not damage it….again..Yep , magic white smoke from the first one from reverse wiring the power leads late at night.

 IMG_20140607_130930Nunchuck Dongle still in the case,

IMG_20140607_130939Nunchuck Dongle with case lid partially removed ,

IMG_20140607_131515This is the one that i damaged (reverse polarity), damage to L2 located near the red wire ,

IMG_20140607_131531Anther shot incase the case,
I hope to be able to fit an Adruino tiny or some variant,
inside this case…seems like there's heaps off room 🙂

IMG_20140608_082604Board removed from case,
Note the underside of the board has the labels for each wire,
this makes it much easier to hook up if you are soldering it together.

IMG_20140608_1027503cell LiPo  Balance lead that i used as extension lead,
Pre moving the wires to match the Wii dongle colour order.

IMG_20140608_104240After the wires were moved over ,

IMG_20140609_171943All wired up read to load software …and hours of testing to find right settings.
…there is no short cut, every esc has a ball park setting it will run on but each will need their own tweaks to get working as intended.

 

After you have Tested it and gone slightly mad with frustration…

IMG_20140622_141439

Remove the excess pins from your Adruino,
unless you were smarter than me and purchased one with out the pin headers
soldered on, tho this did make it much easier to attach to the prototype board.

 

 

Solder connectors to the board,
you could just hard solder it up but this way (with some plugs)
The Wii interface is able to be taken out or other components replaced as need dictates.

IMG_20140622_141523LiPo Balance lead from earlier (other half of it, also repositioned the wires to match Dongle wiring order)
Two esc/servo connectors – I used a Y lead with the end chopped off.

 

IMG_20140622_145030As the pin spacing on the Adruino Nano V3.0 are quite small,
I used the hard pins from the freetronics learner kit to get through the
remaining solder from the pin headers, removed earlier.

 

IMG_20140622_145059Clear heat shrink let me see if any of the wires came undone mid assembly.

IMG_20140622_150431Underside of assembled Adruino

IMG_20140622_150438

Close up of under side of assembled Adruino

IMG_20140622_150447One more…for good measure 😛 

 

IMG_20140622_150643Board was covered with spray on board sealant and heat shrink put over the top.

     IMG_20140622_150700Completed Wii Components and Adruino interface.

Then all there was to do was put it in a box,
Velcro was used to hold the individual components from sliding around.

IMG_20140622_152324…the scissors are just to hold the Wii Nunchuck upright while i too the picture.

IMG_20140622_152331

 A few important things.

The Nunchuck was wired to + 3.3v on the Adruino Board.

The esc Y lead i cut up , only one of them has the
red wire connected to Vin on the Adruino Board.

This is still a work in progress as new ideas
are put forward by the Sailability volunteers and sailors.

All off the above was built using software designed by others under
the Creative Commons License, feel free to hack/change/mod/upgrade.

 

…the way this had been assembled would make it very easy to use in pretty much an RC Car out there

Below are videos, i used RC car parts as the first prototypes
Building the RC Lawnmower in the process.

 

 


And if you have read this far … Below is the code used for the X-Car ESC from Hobby King.

It would need to be changed for other ESC's

 

 

// Notes
// This sketch was tweaked to operate BRUSHED X-45 Hobby King ESC from a car.
// To operate winch motors on a disabled sailing dinghy.

// == The different limit values for the Nunchuck are deliberate.
// compensating for the ESC's 50% reduction in power when in 'reverse'
// Values from the wii nunchuck were also a little erratic in reverse,
// The if , if else , statements also helped with this.

// As this particular ESC reads neutral immediately upon start up
// and the Adruino is powered from the esc, the mapping was the only way to get neutral reliably.
// This Sketch was written for Sailability Gold Coast by Tony Matthews with
// Help from 'AustinDavid' – endless sphere forums./ Help from 'AustinDavid' – endless sphere forums.


#include <Wire.h>
#include <Servo.h>
#include <wiinunchuk.h>

 

Servo escnine; // Electronic Speed Controller One declaration
Servo escfive; // Electronic Speed Controller Two declaration
int neu = 128; // default zero value for X, Y axis


void setup(void)
{
  nunchuk_init();
  delay(50);
  nunchuk_calibrate_joy();

  delay(20); //wait until the esc starts in case of Arduino got power first
  escnine.attach(9, 300, 2000); // attaches the esc to digital pins and
  escfive.attach(5, 300, 2000); // sets max values and the neutral area
 
  delay (1000); // Arming section
  escnine.write(neu); // Write neutral value.
  delay(20);

  Serial.begin(57600);
  }

  void loop() {

  nunchuk_get_data(); // receives 6 data bytes from controller

  Serial.print("X = ");
  Serial.print(nunchuk_cjoy_x());
  Serial.print("   Y = ");
  Serial.println(nunchuk_cjoy_y());

 

  // Stabilize Wii output and
  // set Max values for Wii X to counter the esc 50% reduction in reverse
  if (nunchuk_cjoy_x() <= 75)
    escnine.write(75);

  else if (nunchuk_cjoy_x() >= 155)
    escnine.write(155);

  else {
    escnine.write(nunchuk_cjoy_x());
  }

  // Stabilize Wii output and
  // set Max values for Wii Y to counter the esc 50% reduction in reverse
  if (nunchuk_cjoy_y() <= 75)
    escfive.write(75);

  else if (nunchuk_cjoy_y() >= 155)
    escfive.write(155);

  else {
    escfive.write(nunchuk_cjoy_y());
  }

  delay(20); // ESCs will only change every 20ms
}

 

//end code