Friday, March 31, 2017

Rover Robot Hacked to fire 4-barrel 32 Caliber Minigun.

Rover Robot Hacked to fire 4-barrel 32 Caliber Minigun.


This was an experiment to try and hack the hardware of an off-the-shelf toy "robot". It worked very well and was an interesting build.  In this article, I am going to show how this was performed and give an idea of how you can modify closed source hardware with a minimum of parts to add your own hardware
Using a Brookstone Rover 2.0 WiFi controlled Robot with a hardware hack to fire a home-made 4-barrel, 32 caliber mini gun. Each time the headlights are cycled on/off, the mini gun will fire a round out of the consecutive barrel.

Here's a demonstration of this Rover actually firing the mini gun!


If you have a Brookstone Rover 2.0 and would like to run it using a PS3 game controller and an Ubuntu (or Windows/Mac) laptop like that is shown in the video, Simon Levy has provided the Python code and and some great instructions at:



The circuit for the Rover does not really have any options to expand the hardware, so I used an 4N27 opto-isolator to hijack the headlight LED Signal that is monitored by an Arduino Nano.  Each time the Headlight is turned on/off from the controller, it fires one of the gun barrels. This method can be modified to be use on just about any RC toy that has a remote LED switch.  The schematics are broken down into 2 parts.  The first one shows how to wire the Opto-Isolator and Arduino into the Rover's Headlight LED. The second shows how to switch 4 devices (4 barrels in my case) using tip120 transistors.  I will also provide the simple arduino code that operates this hack.

 The Rover supplied enough current to turn on the individual headlight as well as trigger the opto-isolator, so I did not have to alter the rover's existing circuitry.  Just solder the opto switch onto the free solder pads on a headlight led circuit board.  Other RC device LED circuits you may have to remove the existing LED and replace it with the opto-isolator.

The rover has 4 headlight LED circuit boards along with free/open MARKED solder pads on each!  You can't ask for an easier connection!


Note: I powered the arduino using the Rover's Battery connection on the main board.  This allows the arduino to be turned on and off when the rover's power switch is turned on/off. (see photo above). The pads are clearly marked for B+ and B- for battery + and - on the Rover's main circuit board.
  B+ goes to the Nano's VIN. B- goes to the Nano's GND.

Click image for full size opto-isolator Schematic.
A couple resistors and a connection to Input pin D8 to read the signal. 5v from the arduino provides the correct voltage for the input pin (Signal high, headlight is off). That's all that is required to read the rover's headlights turn on and off.  Since it uses the opto-isolator, the arduino is isolated from the Rover's circuitry except for the same voltage supply and GND.


Click image for full size schematic.

The circuit that fires my mini gun is a simple TIP120 Darlington transistor switch.  It uses a separate power supply that has the Battery + connected to the Loads + power on J1. When the arduino D7 goes high, the TIP120 turns on and provides the ground for the circuit. Acting as a switch to complete the circuit. This circuit can be used to turn on motors, solenoids and even lasers.


Click image  for full size schematic
I repeated this circuit a total of 4 times (Digital pins D4-D7).  This allows me to treat each barrel of my mini gun as an independent device and allows the code to fire each barrel independently.

The code to detect the headlight signal and fire each of the 4 barrels is very simple and can be downloaded from here:


 #define beam 8 //Digital signal pin # from opto-isolator  
   
 void setup()   
 {  
  Serial.begin(9600);  
  pinMode(beam, INPUT); //Read signal from headlight   
  for(int bar = 4; bar <8; bar++)  
  {  
  pinMode(bar, OUTPUT); //Open digital pin 4-7 for output (barrel triggers)  
  }  
 }  
   
 void loop()   
 {  
  for(int bar = 4; bar <8; bar++) //"bar" is barrel 1-4 on digital pins 4-7  
  {  
   while(digitalRead(beam)==1){ //do nothing while headlights are off (digital pin 8 signal)  
    delay(100);}  
   while(digitalRead(beam)==0){ //if headlights are on, fire next barrel on next digital pin  
    digitalWrite(bar, HIGH); //trigger ignitor on bar digital pin "bar".  
    delay(3500); //delay 3.5 seconds to reach high temp  
    digitalWrite(bar, LOW); //turn off ignitor on digital pin "bar"  
   }  
   digitalWrite(bar, LOW);  
  }  
 }  

  The code is commented and should be self explanatory. It monitors pin 8 for the headlight to be on, then it cycles through pin 4-7 to fire each barrel each time it receives the signal.

As mentioned, this circuit can be easily used on other remote control toys or any device that uses an LED to indicate an ON/OFF state.
  As for the mini cannon itself and the technique/design to fire it, I am not going to discuss how it was made since it is extremely dangerous, but could be deadly.  If you have the proper tools and knowledge to accomplish this build, then it would be a very simple project. DO NOT ATTEMPT TO RECREATE THIS FULL PROJECT WITHOUT PROPER TRAINING and TESTING!