Introduction: Android Controlled RC Vehicle With Real-time Video Via Bluetooth & Wi-Fi
The project is built on the Arduino. To control the car using Bluetooth channel. As an IP camera I used the popular model Foscam FI8918 (80-100$).
Step 1:
As seen in the figure above, the interaction between the smart phone and tracked platform implemented directly on Bluetooth-channel, and the interaction with the camera implemented on Wi-Fi channel, but through the router. And this is a big disadvantage - because without a router, all operations with the camera will not work, for example in the street or anywhere outside the city. I tried to make a direct control via Wi-Fi, turning on Android'e mode Host Wi-Fi, but nothing worked. In the future, I will try to make a direct interaction without a router. I have suggestion that this requires a camera with support W-Fi Direct.
Step 2: IP-Camera
IP-camera Foscam FI8918 gives a video stream in a format MJPEG (Motion JPEG), in which each frame is compressed using the popular JPEG image compression algorithm. At a resolution of the video stream 320x240, FPS is 25-30. If the video resolution of 640x480, the FPS drops by about 2 times. For Android on the Internet has been found MJPEG class for processing and display of data in activity.
FI8918 model has the function of the rotation and tilt of the camera via the web-interface. In this project, this feature is also implemented. Functions Foscam cameras are well documented (see file IPCAM CGI SDK V1.7). View video stream, control, configuration made through CGI scripts. View the video stream via script videostream.cgi with the appropriate parameters, for example:
http://192.168.1.10:8081/videostream.cgi?user=cxemcar&pwd=cxemcar&resolution=8
where the user - user name, pwd - password, resolution - video resolution (8 - 320x240px, 16 - 640x480px)
To control the movement of the camera (the function pan / tilt) is used script decoder_control.cgi, and the parameter "command" set command:
0 - move the camera up
1 - stop the upward movement
2 - move down
3 - stop the downward movement
4 - turn to the left
5 - stop turning left
6 - turn to the right
7 - stop turning to the right
25 - set in the middle
26 - vertical "patrol"
27 - Stop vertical "patrol"
28 - Horizontal "patrolling"
29 - Stop horizontal "patrol"
In the Android application I have used only the interaction with only two scripts, but as noted above, via CGI scripts can do a lot things:
get_camera_params.cgi - get the current camera settings. The script returns the resolution, brightness, contrast, mode 50/60 Hz mode, flip mode.
camera_control.cgi - camera settings.
reboot.cgi - reboot the camera.
restore_factory.cgi - restore factory settings.
get_params.cgi - information about the camera and the many parameters.
set_datetime.cgi - to set the time and date.
set_network.cgi - network settings.
set_wifi.cgi - Wi-Fi network.
set_ddns.cgi - set of configuration Dynamic DNS.
set_ftp.cgi - setting FTP connection.
set_mail.cgi - setting for MAIL.
Etc.
The camera configured to work with a static IP-address. So that it can be accessed from the Android application. Although Foscam support DDNS services, so you can use a dynamic IP
Step 3: Chassis
Since the IP-camera represents a massive construction, so the platform must be of appropriate size. As the chassis, I used the widespread undercarriage "Rover 5".
The platform comes without top cover. The cover has been cut out of plastic and mounted on a small racks to put in batteries to power the camera and motors, a battery to power the Arduino, and a 5V voltage converter to power the camera.
Batteries and converter board were placed inside the chassis. The cover was cut holes for the wires to the control board, camera, and motor driver. To charge the batteries were put 2 connector. IP-camera, Arduino, Bluetooth-module and motor driver were mounted on the chassis cover.
For electronic parts have been cut out of the plastic bumpers and made a small cap, which is screwed on screws and can be removed if necessary.
Step 4: Hardware
The hardware of the project is almost identical Arduino RC car. But added a camera, and it requires a 5V supply. So was added step-down voltage converter on a chip LM2596.
Used by: Bluetooth module HC-06 (3-4$ on AliExpress), Arduino Nano v3 and Motor Driver L298N. If you power the Arduino board from 4V and above, between the terminal RX (Module HC-06) with TX (board Arduino) necessary put a voltage divider, because HC-06 logic levels is 3.3V. Better yet, use specialized chip, such as MAX232.
Sketch for Arduino has remained the same, and posted on the GitHub'e (link below).
Step 5: Software
Software written in the open-source IDE Eclipse.
Project contains 4 activity: main, about the program, working with Flash and basic activity for chassis control and view the video. To work with MJPEG stream, there are 2 classes: MjpegInputStream and MjpegView.
On the left are buttons for control platform, in the middle is displayed the video stream from the camera and on the right are buttons for camera pan/tilt control.
If you are familiar programming on the PC, you can implement control of track platform from your computer through the Internet and other means.
Project for Android (GitHub)
Project for Arduino (GitHub)

Participated in the
Remote Control Contest

Participated in the
Arduino Contest
36 Comments
Question 3 years ago on Step 5
How to make the app on which the car runs
5 years ago
will the app work if you used a different camera
5 years ago
Hi. I am trying to stream video from an IP camera. What app did you use for the control of both the camera and the bot?
5 years ago
Hi Tolik. I am working on a project in which I need to stream video from an IP camera to an Android app. I need the stream to be real time (more than 0.5 second of delay is unacceptable). I have been trying with another camera that streams RTSP protocol and the results are not good. What delay are you experiencing with the Foscam camera an MJPEG protocol?
6 years ago
Cool project :)
Direct interaction without a router is possible if you setup your smart phone as a wifi hotspot (shared internet through wifi). I was able to stream data from my ip camera after configuring the wifi settings on the camera and changing to dynamic ip. I am using this 30$ camera from ebay:
http://www.ebay.com/itm/WIreless-WIFI-720P-IP-Came...
6 years ago on Introduction
Where do you get the program to be able to control it from your phone? I cannot figure out how to run the the Android GitHub link. Thanks!
Reply 6 years ago on Introduction
You can donwload APK from my blog: http://solderer.tv/wp-content/uploads/2014/01/Cxem...
Soon, we will make a new version of Application
Reply 6 years ago on Introduction
Thank you! How do I sync the IP camera with the app? I didn't quite understand your explanation. Thanks!!!
7 years ago on Introduction
Reply 7 years ago on Introduction
how u use ip camera without LAN cable
7 years ago on Introduction
how u use ip camera without LAN cable
7 years ago on Introduction
Yeah, chriss2 I have a project that controlling Robots with Wii controller and PS3 controller
Reply 7 years ago on Introduction
can u plz tell me how we control any h/w using wifi. i m in final year and want to make my final project
any doc or vid or link wil b welcomed
ghulamqadir90@gmail.com is my id
plz do send some info
7 years ago on Introduction
Hello Tolik,
I will make this project,will use same components.
I wanna ask you about android application, I will get foscam fi8918w but how I'm going to use your app.I couldnt find where I should write camera's ip adress sth like that.Can you give me information about it ? Because I dont know java and I cant make that application by myself,I got knowledge about arduino,motors.Here is my e-mail adress:
Buraksevinc.92@gmail.com
Regards,
Burak
7 years ago on Step 5
did u think about controlling this car via ps3 controller or something like that ?
7 years ago on Introduction
Sir, can you help me with the coding and hardware things? I'm a very newbie one. Thank you! I'm looking forward. ^_^
8 years ago on Introduction
I'm sorry for bothering to asking again, I really need your help. if I just need to streaming the MJPEG without buttons and bluetooth thing, can you help me with the syntax in activitybuttons (what syntax I should delete)?
Please help me Sir, I only have a few weeks to complete my final project for college...
8 years ago on Introduction
Hi, I want to ask, if I'm not using Foscam camera, but I used Dlink camera and it's control using servo, in camera control on android can I still using the URL? or what syntax I should change on the android?
I have final project about controling camera via android, and I found your project, it's really helpful but I got confused. please help me...
8 years ago on Introduction
Hi tolik777
Thanks for this great tutorial, very good job
>> And this is a big disadvantage - because without a router, all operations with
>> the camera will not work, for example in the street or anywhere outside the city.
You can have direct WiFi connection by adding a mini WiFi router in your tank
Very small size, 10 bucks shipped
Go to Ebay and search for "Mini MiFi Wireless WiFi Router" without quotes
Thanks again for your hard work
Reply 8 years ago on Introduction
Thanks for advice!