It is always cool to add a camera to your remote controlled car or robot so that you can see where it's heading exactly and probably use a wifi enabled smartphone or tablet to view the video as well. It's very simple now to do this using a raspberry pi and a USB webcam. Real-time streaming can be done with a minimum delay too. Here, steps are given on how to view the feed from your webcam on the monitor connected to the raspberry pi as well as on another device in the same local network. This tutorial will show you how you can add a camera and video broadcasting system and make a raspberry pi webcam robot. Have fun with this DIY Hacking tutorial!
How Does the Raspberry Pi Webcam Robot Work?The working of the Raspberry Pi webcam robot is explained as follows. Here, the USB webcam connected to the raspberry pi usually associates with the pi at /dev/video0.A streaming service called mjpg streamer after installation is then used to broadcast the video on the raspberry pi's local IP address and port number. The resolution of the video and frame rate can be set using Linux commands while running the mjpg streamer.The video feed can then be viewed on any local network connected device by opening an HTML file in a browser that invokes the video from raspberry pi's IPaddress:portno.The file required for this is provided in this tutorial as well. Also, in order to test the webcam locally on the pi, a service called ffmpeg is used. This allows you to view the webcam feed on the monitor connected to the raspberry pi. A block diagram showing the basic working:
Step 1: Connecting and Checking the USB WebcamFirst of all, you need to check if your webcam is getting detected in the raspberry pi and whether its feed can be viewed. For this, first, run the command "lsusb" in the terminal of the raspberry pi. This shows you a list of all the USB connected devices on the pi. Find out, from the list if your webcam's name or software is displayed (sometimes driver name is displayed eg: Microdia for Iball webcams). Next, we need to check whether you can view the feed from the webcam on the pi. For this use "cd /dev" to go to /dev directory. Next, use "ls" to list its contents, check if "video0" is present.
Now, you have to use a service called ffmpeg to view the feed from the webcam on the monitor connected to the pi.Use "sudo apt-get update" to update lists. To install ffmpeg service, use these commands:
sudo apt-get install ffmpeg
ffplay -f video4linux2 -framerate 15 -video_size 320x240 /dev/video0
The first command installs ffmpeg. The second commands start up the video having a frame rate of 15fps using the video4linux2 mode, having a resolution of 320x240 and using the device from /dev/video0. Once you run it, you will see the webcam feed on the monitor.
Step 2: Setting Up the Video Streaming Service for the WebcamHere, the video from the raspberry pi is broadcasted on the local network. Any device on this network can view the video from the webcam.To do this, you need to first install the mjpg streamer. Use these commands to install it:
sudo apt-get install libv4l-dev sudo apt-get install libjpeg8-dev sudo apt-get install subversion sudo apt-get install imagemagick
libv4l-dev and libjpeg8-dev serve as dependencies, ImageMagick is used for installation whereas subversion is used for installing open source software. In order to download and compile the code use these commands:
svn co https://svn.code.sf.net/p/mjpg-streamer/code/
make USE_LIBV4L2=true clean all
sudo make DESTDIR=/usr install
Next, to run this service and to begin streaming use the following command:
jpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -y -r 640x480 -f 10" -o "/usr/lib/output_http.so -p 8090 -w /var/www/mjpg_streamer"
- -i input plugin parameters
- -d represents the video device
- -y enables YUV format, disables MJPEG
- -r specifies the resolution
- -f is the frame rate
- -o output plugin parameters
- -p specifies the port number
- -w specifies output webserving directory
Now your raspberry pi has started broadcasting the video, to view this video download the HTML file. The contents of it are like this raspberry pi webcam robot (the box in the page will be replaced by your video stream), but you need to edit the file before using it:
<html> <body> <h1>DIY Hacking - Webcam Robot</h1> <img src="http:192.168.1.9:8090/?action=stream" width="600"> </body> </html>
Here, edit the IP address "192.168.1.9" with the IP address of your raspberry pi. You can find it out by using the command "ifconfig" on your pi. Finally, use your browser to open this HTML file and view the video. For devices, like iPad, etc use any file manager apps to open the HTML file.
Step 3: Building the Raspberry Pi Webcam RobotIf you wish to build your own robot then continue reading. Follow the instructions on this Smartphone controlled robot tutorial, to smartphone-controlled robot and then come back to this tutorial.This is the robot from the tutorial:
Now you need to add the raspberry pi and the webcam to this and use a wifi dongle to make it wireless. I have used one half of a plastic box to create a platform for the raspberry pi and webcam. Use hotglue to stick them together. And that's it, you have made a video streaming, smartphone controlled robot. You can use SSH to initiate the program remotely on the raspberry pi without having the need to hook it up to a monitor.
The robot can be maneuvered using a smartphone application on an android phone. The corresponding feed from the USB webcam of the raspberry pi can then be streamed using an Ipad, pc or any other device connected to the local wifi network.
Use this DIY Hacking tutorial to make surveillance systems, video streaming robots or even drones. Real time streaming can be done at minimum delay using the mjpg streamer and is considered as one of the best streaming services. Please note that , it is not required to have an Arduino along with pi for building this robot. You can build it by just using the raspberry pi, I have done this because I had already built a robot using Arduino. Now watch this video showing the robot streaming the feed from the webcam: