loading

The Internet Controlled RC Car allows you to remotely drive around a small rc car from wherever you may be and see where it is going. This is fun because you can remote explore whatever space you leave it in, or hand over the keys - so to speak - and allow someone to drive around your space. This is also a great building block for a telepresence robot.

This project is also a great beginner project for someone who has made a few simple things and is looking to get slightly deeper into the world of microcontrollers. It starts to incorporate more advanced skills like circuit building and networking, but is not dauntingly complex.

Step 1: Materials

You will need:

(x1) RC car (RadioShack #60-875)
(x1) Wireless camera (RadioShack #55056398 - web only)
(x1) Arduinio Uno (RadioShack #276-128)
(x1) Seeed Ethernet Shield (RadioShack #276-241)
(x1) Rectangular PCB (RadioShack #276-150)
(x1) 1" round PCB (RadioShack #276-004)
(x1) 7805 5V regulator (RadioShack #276-1770)
(x1) 10uF capacitor (RadioShack #272-1013)
(x1) 0.1uF capacitor (RadioShack #272-135)
(x1) M-type jack (RadioShack #274-1582)
(x1) K-type plug (RadioShack #274-1567)
(x4) 5V SPST relays (RadioShack #275-232)
(x1) 6" x 4" x 2" project enclosure (RadioShack #270-1806)
(x1) 7.2V rechargeable battery (RadioShack #23-2183)
(x5) AA batteries (RadioShack #23-2212)
(x1) Ethernet cable (RadioShack #55058573 - web only)
(x1) USB cable (RadioShack #26-713)
(x1) Assorted zip ties (RadioShack #55066143 - web only)
(x1) Shrink tube (RadioShack #278-1627)
(x1) M3 nut, bolt and washer

Step 2: Insert the Shield

Insert the shield's male header pins in the matching female header pins on the Arduino.

Step 3: Remove the Cover

Remove the four screws from the bottom of the RC car keeping the top plastic cover in place, and put the screws aside for later reassembly.

Remove the top cover.

Step 4: Power Conversion Circuit

Build the circuit to convert 7.2V to 5V on the 1" round PCB as specified in the schematic.

Step 5: Plug

Attach a red wire between the 5V output on the power conversion PCB and the K-type plug's center pin.

Attach a black wire between ground and the outer jack connection.

Twist the cover on the jack shut to insulate it.

Step 6: M-type Socket

Connect a black wire between ground on the round power conversion PCB to the center pin on the M-type jack.

Connect another black wire to the pinon the M-type jack to the left of center.

Connect two red wires to the pin to the right of center. Connect one of these red wires to the power input pin of the LM7805 voltage regulator.

Step 7: Connect a Battery

Cut the power connector off of the 7.2V rechargeable battery.

Solder the red wire from the battery to the unused red wire from the M-type jack.

Solder the black wire from the battery to the unsused black wire from the M-type jack.

Insulate any exposed connections with shrink tube.

Step 8: Remove the Circuit Board

Remove the screws from the remote control and open the case.

Next, remove the screw securing the circuit board in place, and cut the wires going to the battery compartment to free it from the case.

Step 9: Clean the Contacts

Use a Q-tip covered in rubbing alcohol to clean any grease that may be on the contacts for the joystick controls.

Step 10: Solder Wires

Solder wires to each of the contact pads for the remote control's joysticks.

Step 11: Relays

Solder four relays to the rectangular PCB board.

Step 12: Wire It Up

Wire the remote control board to the relay board as specified in the wiring diagram.

Step 13: Connect the Arduino

Connect the Arduino to the relay board as specified in the circuit diagram.

Step 14: Program

Setting up the wifi camera could be an Instructable unto itself, and I am not going to go over it here. That said, it comes with a pretty thorough instruction booklet for getting it configured. To get it running, just follow along with the instruction booklet that came with the camera.

What I will go over is the Arduino program.

Fortunately, there is not much to cover. The Arduino will be used to load a website at specific IP address. When you click on the links on this website, it will send HTTP requests back to the Arduino. These requests are then processed by the Arduino to trigger the relays connected to the car's remote control. When the relays are toggled high, the remote is activated and the car moves around. You can then see where it moves by loading the web interface for the IP camera in the background.

To prepare the Arduino, simply program it with the following code:

  /*********************************

  Internet Controlled RC Car    

  For more info visit:
  <a href="https://www.instructables.com/Internet-Controlled-RC-Car/"> https://www.instructables.com/Internet-Controlled-...</a>

  Code is in the public domain

  ***********************************/



  //include necessary libraries
  #include <SPI.h>
  #include <Ethernet.h>

  //mac address does not change
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
    
  //change this to your IP address
  //this can be found by running the program
  //File --> Examples --> Ethernet --> DhcpAddressPrinter
  IPAddress ip(192,168,2, 7);

  // Initialize the Ethernet server library
  // with the IP address and port you want to use 
  // (port 80 is default for HTTP):
  EthernetServer server(80); 
     
  String webClickRequest;
     
     
  void setup(){
    
     // initialize the digital pin as an output.
     pinMode(4, OUTPUT); 
     pinMode(5, OUTPUT); 
     pinMode(6, OUTPUT); 
     pinMode(7, OUTPUT); 
     
     
     // Open serial communications and wait for port to open:
     Serial.begin(9600);
     while (!Serial) {
       ; // wait for serial port to connect. Needed for Leonardo only
     }
     
     
     // start the Ethernet connection and the server:
     Ethernet.begin(mac, ip);
     server.begin();
     Serial.print("server is at ");
     Serial.println(Ethernet.localIP());
   }
   
    
    void loop(){
      // Create a client connection
      EthernetClient client = server.available();
      if (client) {
        while (client.connected()) {
          if (client.available()) {
            char c = client.read();
     
            //read the incoming HTTP request
            if (webClickRequest.length() < 100) {
     
              //store the request to a string 
              webClickRequest += c;

            }
     
            //check to see if the request has come to an end
            if (c == '\n') {
     
              //Begin drawing out the website using
              //using basic HTML formatting with some CSS
              client.println("HTTP/1.1 200 OK"); 
              client.println("Content-Type: text/html");
              client.println();
              client.println("<HTML>");
              client.println("<HEAD>");
              client.println("<TITLE>Internet Controlled RC Car</TITLE>");
              client.println("<STYLE>");
              client.println("body{margin:50px 0px; padding:0px; text-align:center;}");
              client.println("h1{text-align: center; font-family:\"Trebuchet MS\",Arial, Helvetica, sans-serif; font-size:24px;}");
              client.println("a{text-decoration:none; width:75px; height:50px; border-color:black; font-family:\"Trebuchet MS\",Arial, Helvetica, sans-serif; padding:6px; background-color:#aaaaaa; text-align:center; border-radius:10px 10px 10px; font-size:24px;}");
              client.println("a:link {color:white;}");
              client.println("a:visited {color:white;}");
              client.println("a:hover {color:red;}");
              client.println("a:active {color:white;}");
              client.println("</STYLE>");
              client.println("</HEAD>");
              client.println("<BODY>");
              client.println("<H1>Internet Controlled RC Car</H1>");
              client.println("<br />");
              client.println("<br />");        
              client.println("<a href=\"/?left\"\">LEFT</a>");
              client.println(" ");
              client.println("<a href=\"/?forward\"\">FORWARD</a>");  
              client.println(" ");      
              client.println("<a href=\"/?right\"\">RIGHT</a>");
              client.println("<br />");
              client.println("<br />");
              client.println("<br />");            
              client.println("<a href=\"/?backleft\"\">BACK LEFT</a>");
              client.println(" ");
              client.println("<a href=\"/?back\"\">BACK</a>");
              client.println(" ");  
              client.println("<a href=\"/?backright\"\">BACK RIGHT</a>");
              client.println("</BODY>");
              client.println("</HTML>");
     
              //Stop loading the website     
              delay(1);
              client.stop();
     
     
     
            //check to see if any of the drive commands have been sent
            //from the webpage to the Arduino
            
            if(webClickRequest.indexOf("?left") > 0){
              Serial.println("hello");
                  left();
                  delay(1000);
                  brake();
            }

            else if(webClickRequest.indexOf("?forward") >0){
                forward();
                delay(1000);
                brake();
            }
            
            else if(webClickRequest.indexOf("?right") >0){
                right();
                delay(1000);
                brake();
            }
            
            else if(webClickRequest.indexOf("?backleft") >0){
                left();
                reverse();
                delay(1000);
                brake();
            }
            
            else if(webClickRequest.indexOf("?back") >0){
                reverse();
                delay(1000);
                brake();
            }
            
            else if(webClickRequest.indexOf("?backright") >0){
                right();
                reverse();
                delay(1000);
                brake();
            }
            
            
            //clear the string for the new incoming data
            webClickRequest="";
     
            }
          }
        }
      }
    }

  //drive functions
  //here on down
  
  void reverse(){ 
    digitalWrite(4, LOW);
    digitalWrite(5, HIGH); 
  }

  void forward(){
    digitalWrite(4, HIGH);  
    digitalWrite(5, LOW);   
  }

  void right(){
    digitalWrite(6, HIGH);  
    digitalWrite(7, LOW);  
  }

  void left(){
    digitalWrite(6, LOW);   
    digitalWrite(7, HIGH);  
  }

  void brake(){
    digitalWrite(4, LOW);    
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);   
    digitalWrite(7, LOW); 
  }

Step 15: Reattach the Antenna

Attach the antenna back to the appropriate part of the remote control board using a nut, bolt and washer.

Step 16: Drill

Drill a 1/4" hole near the corner on the front face of the project enclosure.

Drill a 3/4" hole on the side of the enclosure.

Step 17: Insert Wires

Insert an ethernet and USB cable through the 3/4" hole.

Note: If you don't have a computer to keep this powered up, you can replace the USB cable with a 9V power plug for the Arduino's m-type power jack.

Step 18: Put It Together

Plug the ethernet cable into the Ethernet Shield and the USB cable into the Arduino.

Place the Arduino and related circuitry inside of the enclosure, and pass the antenna through the 1/4" hole in the enclosure.

Finally, close the case using the lid and mounting hardware.

Step 19: Batteries and Zip Tie

Remove the battery compartment lid from the RC car and insert five AA batteries.

Weave a zip tie through the holes in the lid and fasten it shut.

Step 20: Drill

Drill a 3/8" hole through both of the plastic tabs protruding from the center-top of the RC car frame.

Step 21: Attach the Camera Stand

Pass a zip tie through the holes drilled through the tabs in the top of the case and use this to secure the camera mount in place.

Next, attach another zip tie to the one already woven through the battery compartment and use this to hold down the camera mount.

Tighten the zip ties and add additional ones as necessary to make sure that the camera mount is held securely in place.

Step 22: Remove the Mount

Remove the camera ball-socket mount (if you have not done so already).

Step 23: Drill the Car

Drill a 1/2" hole in the top of the RC car frame at the point the camera mount will pass through.

Drill 1/8" holes near each of the four corners of the back windshield.

Step 24: Attach the Battery

Using the four holes drilled in the corner of the windshield, zip tie the 7.2V rechargeable battery in place on the inside of the case.

Step 25: Mount the Jack

Drill a 1/4" hole in the car's rear bumper and mount the M-type jack using its mounting hardware.

Step 26: Pass the Plug

Pass the K-type plug through the hole in the roof of the car.

Step 27: Hot Glue

Hot glue the 5V regulator board somewhere safe and out of the way on the inside of the frame.

I found that the between the two protruding tabs on the top of the frame worked really well.

Step 28: Fasten the Lid

Fasten the lid and the car's frame back together using its mounting screws.

Step 29: Mount the Camera

Lock the camera mount back onto the camera's stand, and then fasten the camera in place.

Step 30: Turn It On

To turn on the car, hit the on switch on the underside of its frame and plug the K-type plug into the camera.

Step 31:

To use, simply load the IP address of your ethernet shield in a web browser and in another window load the IP camera.

<p>hallo please am so interested in making this project. but am just a beginner . firstly i would like to buy all the components but when i click on the links u provided it just sends me to their official website.. how can i order all of the components u used please</p>
<p>The materials suggested from you aren't available on RadioShack anymore. Would it be possible to refresh the suggestions to a page, where the things are available?<br><br>Thanks!</p>
<p>Can I us an Arduino Ethernet shield instead of the Seeed Ethernet Shield?</p>
<p>You may need to change the code and some of the pins might not match. You would need to investigate both things and take them into account. Otherwise, you could assuredly adapt the project to work with a different shield. </p>
I'm quite new to arduino. would you need to use relays if you aren't using the camera? I was wondering if you could connect the contact wires straight to the arduino???
range?
<p>I used this Instructable as a starting point, but used a Raspberry Pi and an old Android phone running an IP camera app instead. Having a Wifi dongle connected to the Pi, your range is only limited by your wireless network. I used a power bank with two USB ports to power the phone and Pi. I ran Apache and PHP on the Pi to host the webpage for the controls and had the buttons run PHP scripts that turn the GPIO pins on for half a second then off, making the car go in whatever direction those pins are wired to. I embeded the camera feed from the phone in the page hosted on the Pi. Set up port forwarding to access remotely. https://instagram.com/p/5qN4SfKhGy/</p>
<p>Hi Randofo</p><p>I really like this idea, and I have all the parts, but just one question. I was wondering if I could use a wifi shield instead of an ethernet shield. It would mean wireless connection to the Arduino, so I wouldn't have to plug in the ethernet cable. Please help ASAP.</p><p>Thank you</p>
<p>And if I can use a WiFi shield instead, would the code be the same, and would I use an IP address like with an ethernet shield</p>
<p>Lastly, could I get the wiring diagram, as mentioned in Step 12</p><p>Thank you for your help in advance</p>
<p>I am a beginner and would really like your help</p>
<p>Hi, </p><p>nice one .made it using arduino uno , ethernet shield , tp link nano router 702 N(converting to wifi) and two servo motors. I want to add ultrasonic sensor to it ,</p><p>tried it by adding sensor but I m facing difficulty in modifying sketch for obstacle avoidance.I dont know much programming can you help me with modified sketch?</p>
<p>I have not used relays as I m directly controlling from browser through wifi.</p>
<p> code cant run ip will not open if the code run i have set mac and ip also correct plz help</p>
<p>so i searched for the wiring diagram, and figued out one that would work.</p><p>--------------------------------3----</p><p>1--------------------------------------4</p><p>---------------------------------2------</p><p>1 goes to the ground of what the RC remote uses for that functions ground. I.E. when you go forward, all the controler is doing is connecting a middle contact with another, and that same middle is used for reverse. so connect 1 to that common ground. then 4 will go to the contact that is specifict for that function. 2 goes to the ground on the audrino, i just connected them all together and poped it in the extra ground pin for the audrino. 3 goes to the designated pin on the audrino that gets the calls of High or Low. Feel free to send me a message if this isnt clear enough.</p>
<p>Someone asked for a better pin-out so here it is. Feel free to ask anything else. I had to go through a different process to get mine wireless, so if you want to know how, I can make something for people if they want, otherwise I'm not going to if people dont need/ want it. Feel free to message me if you want how I got it put together!</p>
<p>Do you think I could get the wiring Diagram please.</p>
<p>Do you think I could get the wiring Diagram please.</p>
<p>Hi, randofo.</p><p>Nice instructable. It's so good idea. I think also Ethernet to IR gateway solution as you. Because I have always been found where is TV remote-controller. </p><p>Your intructables will help me for making Ethernet to TV romote-controller.</p><p>Thank you.</p>
Smart idea! Do I have to use the same ethernet shield as you use? I have the original arduino ethernt shield, can I use it? And do I have to do any wiring differently?
<p>is this car is wireless ??? and if yes then how ??? i dun want to use Lan cable, it will b be its drawback</p>
<p>Do you have an electrical plan of the connection of your arduino, components and wifi shield? And also something like a H- bridge of your project? </p>
<p>is this car is wireless ??? and if yes then how ??? i dun want to use Lan cable, it will b be its drawback</p>
<p>IS this car without cable ??? or if not, then how to make it wireless ? with use of arduino wireless shield or what ?<br>please suggest i want it to b wireless, dun wan lan cable with it..it is its drawback</p>
<p>wiring diagram?</p>
<p>where is wiring diagram?</p>
<p>Hey man,were you able to get that wiring diagram? I kinda need it too, tnx!</p>
did you guys get the relay wiring diagram?
thanks i will try and send a result <br>
thanks i will try and send a result <br>
<p>is there any alternet option for ARD124B2P ethernet shield??????????????</p><p>should i use another ethernet shield</p><p>nd what will be change in program???????</p><p>plzzzzzz reply its very urgent</p>
<p>A quick question. where is the diagram mentioned in step 12 Wire it Up?</p><p>&quot;Wire the remote control board to the relay board as specified in the wiring diagram.&quot;</p><p>A really good solution with off-the-shelf parts!</p>
<p>Hey bro, were you able to get that wiring diagram you were looking for? I kinda need it too, tnx!</p>
<p>What if I use Aceduino aside from Arduino?Would that be okay?</p>
<p>What if I use Aceduino aside from Arduino?Would that be okay?</p>
<p>What if I use Aceduino aside from Arduino?Would that be okay?</p>
<p>I just read it out and really felt pleasure that such things can be made also . I'll try my best to make this for my brother he love toys and this is a advanced one </p>
<p>Question! I have a GoPro Hero 3 Black, can I use this as my camera or do I have to have a webcam? I want to find a small enough camera to fit in the RC I have without too much modification to the body of it as well as aesthetically pleasing to the eye. </p>
<p>you could use the gopro app for streaming</p>
you could but you would only be able to record and store to the go pro sd card. wouldnt be able to stream like a web cam
<p>Another question as well. Is there a way to change the Java script so that I may use my Keyboard instead of the page. I would like the driving to be pretty smooth. </p>
<p>Great project ! </p><p>Finally get to play with the Ethernet Shield I've had for a while.</p>
<p>This is an awesome project! The only thing I would recommend would be to cut and reconnect battery wires one at a time to avoid sparks and damaging batteries. Still this is a really great project, keep up the good work!</p>
<p>this is awesome. I can keep watch of my apartment while I'm away. Plus looks fun to mess around with. I'm gunna find a WRX remote car to match my Subaru. Thanks for the project post :)</p>
Roughly how much did everything cost?
<p>Just made a quick total of all said parts. It comes to $235</p>
<p>This is so cool man!</p>
<p>Thanks for sharing!!</p>
<p>非常棒!我想可以通过IO口和三极管还有上拉电阻 代替继电器。</p>
<p>How much lag do you get with that camera?</p><p>I tried making something like this once with a digital camera, but I had to replace it with an analog one to get rid of the lag on the video.</p>

About This Instructable

139,614views

755favorites

License:

Bio: My name is Randy and I founded the Instructables Design Studio. I'm also the author of the books 'Simple Bots,' and '62 Projects to ... More »
More by randofo:Chocolate Peanut Butter Fudge Recipe Build a Mad Scientist Light Useless Machine Instructions 
Add instructable to: