Electronic – Transmitting a video stream through a microcontroller’s wifi


I'm working a a project that currently works well but this year we want to expand it by collecting data from it, independent of its current functions. We have set up an iPad App to control an Arduino through Wifi. The next step is transmitting video through Wifi to the iPad.

With this question I would like to focus on how a microcontroller can send a video stream through Wifi. I can't seem to find any way to even start this project.

How do you interface the camera with the microcontroller?

How do you then send that stream over Wifi?

Best Answer

I understand that it's a lot to transmit, but let's focus on how to interface the arduino with the camera

Arduinos are not suited for video streaming at all. Here are some of the reasons:

  • At their best, they can only do 20 MIPS
  • Don't have nearly enough ram
  • They're only an 8bit processor
  • The don't come close to having enough bandwidth to stream video
  • They have a limited flash memory
  • The Arduino programming language is not efficient

For those reasons and more, Arduinos and other 8bit MCU's are not able to accomplish what you want. A 32bit ARM processor would be better suited to the task and still very cheap.

Nevertheless here is your answer

If you MUST use an Arduino, the best you could probably accomplish is streaming jpeg at a slow rate. You can add a TTL camera to an Arduino so the Arduino is able to take a picture (there are camera shields that can connect a camera to an Arduino.) The max baud rate on an Arduino is 115200bps (I think) so after a picture is taken it could be saved to a SD card and/or sent via an wireless SD network shield. There is also a Eye-Fi unit that is a SD card that has a built in wireless network.

Keep in mind that this will not be video streaming, at the best it will be streaming a couple low quality pictures a second.

enter image description here

Remote monitoring using the Eye-Fi wireless SD card and Adafruit Data Logging Shield for Arduino. The Eye-Fi card is a tiny wireless memory card. It stores photos and fits inside a camera just like a regular SD card, but also has built-in WiFi transceiver that can upload images to your computer, smartphone or to various photo-sharing sites. Can the Eye-Fi card work in an Arduino SD card adapter? You bet! Adding a TTL Serial JPEG camera, together with some minimal prep work, we can then create a self-contained wireless monitoring camera with motion-sensing capabilities. HOWTO Make an Internet of Things Camera

This is what I recommend

The easiest way to stream media from a MCU would be to use a MCU that can run an embedded OS, like the Raspberry Pi. Basically the Raspberry Pi is just like a computer running linux with usb ports etc. And it has the processing power and memory to stream video in real time.

So for your project, you should use a USB camera, like a web cam, and a USB wireless networking adapter (since the RP only has wired network by default.) The OS will handle the networking side of things, all you need to do is to stream the USB video to the network and there is plenty of software and tutorials for that.

They even have a OS specifically made for doing this called XBMC. See How to turn your Raspberry Pi into an XBMC media centre. There is a good amount of documentation on how to stream video from a unit like that, take a look at Streaming Your Webcam w/ Raspberry Pi.

For the software, I personally have used Media Tomb (a UPnP MediaServer) and it works very good. So a search for raspberry pi mediatomb streaming video or raspberry pi media server would probably get you set and going.