Sunday 14 April 2013

Adding Serial/Bluetooth support to Desktop Defender [Part I]

If you have got a spare Arduino board and/or a Bluetooth shield...
Why do not buy a Missile Launcher and mod it a little?

You can find "Desktop Defender" toy on ebay.

First of all, you will need to open the control pad. You'll find a 7 pin connector. My idea is to do not break the control pad. I want to add an extra input method to it. So... Let's solder them.

The control pad:
  • Closes the circuit between -3V and DO (Down), L (Left)
  • Closes the circuit between +3V and UP (Up), R (Right), PLA (Play)
We will need to replicate this on Arduino side.

The issue is... We cannot control a DC Motor directly via Arduino. In this particular case the +3V would be compatible with Arduino (Nano or Pro, for example). The current is the issue. The motors are protected by 2 limit switches for each direction, so they will not stall (the motors reach peak current draw when stalling), but as my "dumb" tester says... There are still 90mA when closing the circuit. Which is more than the maximum allowed for I/O Pins (e.g.: 40 mA).

There are different options for driving DC Motors safely:

  • PWM (Pulse-Width Modulation)
    • But we do not need to drive speed of the motor... Overkill.
  • DC Motor controller (H-Bridge)
    • Same as above
    • Details here
    • Products: L293D IC or Pololu shields
  • MOSFET, Transistor + Diode (To protect for spikes at on/off time)
    • Good solution, cheap... But we must size the Transistor, Resistance correctly
    • Good explaination here and here
  • Optoisolators
    • Details here
    • I just discovered them... Amazing! In few words... It allows to drive the current on another circuit using a LED and... A phototransistor on the other side. We can call them also photocouplers.
    • Each product has its own maximum voltage and current.
    • It is a good choice, cheap, reusable. Available products: optoisolators, opto-isolator shield, etc...
  • Relay (and solid state Relay)
    • A low current driven mechanical switch. It is a good choice, cheap, reusable.
    • In the case of solid state... It is not mechanical... Extended lifetime and faster than common relays.
    • Each product has its own max voltage and current.
    • Good choice as above. Available products: Solid State Relay, Relay Shield for Grove, etc...
My choices are optoisolators, relays (I found a L293DNE on my magic box, hurray... But I am unable to use it, except if I completely remove original control pad).
Since I will wait for parts to be shipped, see you in few days/weeks!

Ok people... SainSmart come in my help!

I just tested using a single Relay and my Bluetooth Silver Mate.
It works! Here you are the code... I'll deploy everything on github (both Arduino and Android code).

A video and photos in next days...

No comments: