In this forum thread on arduino.cc http://forum.arduino.cc/index.php?topic=107375.0 they talk about it not being possible to get 800 x 600 video in color with the arduino.

My case is a bit different:

  • I don't care about color, it can be black and white / grayscale.
  • I don't need 800 x 600 just 640 x 480.
  • I can do with something like 2-5 frames per second.
  • I don't need it to be processed by the arduino, just transmitted through an ethernet shield.

In other words, it is possible to transmit simple video (just enough to handle eg. bios) remote?

  • Magic Mouse, did you end up trying this vga->arduino->ethernet thing at all?? Im trying to do exactly that, and would really appreciate to hear from you experience!! thanks -H – user24445 Aug 3 '16 at 0:46
  • Hi, my current solution was to look in to FPGA but i didnt get so far in this project. It is still pending though. – Magic-Mouse Aug 3 '16 at 7:20
  • Please note that this question is about capturing VGA video, not about generating a VGA display. The Arduino is not a good choice for either, but the capture problem at issue here is far worse than the more usual generation one. – Chris Stratton Aug 3 '16 at 14:19

Trying to capture analog video such as VGA and transmit it over Ethernet is going to be technically challenging, and of questionable wisdom (at least without compression). A conventional ATmega-based Arduino is just about the worst contemporary platform you could choose for this job - even aside from the VGA issue, it is a poor choice for Ethernet requiring an expensive add-on. But just for the sake of "can it be done" ....

If you can threshold your signal to a digital level (assuming a high contrast image) this probably can be done, crudely, but will be quite tricky. The display is likely to be very blurred horizontally - really, it would only be worth doing for bragging points.

The first thing to realize is that the standard VGA 640x480x60 mode has a pixel clock of 25.175 MHz, and most others will be even faster.

One approach would be to try to write a program which samples a digital pin (directly, no Arduino abstractions) to memory as fast as possible. This would not capture every pixel, but rather something like every 10th. You would then have to send these over the network before you fill up your available memory.

The tricky part is that you then have to go back, and scan another frame of video with a slight offset, so that by getting every 10th pixel again, you effectively get the pixel adjacent to the first. And then you do it again, and again, until you have collectively transmitted the entire screen, which hopefully hasn't changed much as you did it.

It's going to be tricky as you will have to work your delays from the sync signals, and you really want a delay which is a fraction of ATmega's clock - which won't happen without external circuitry (programmable delay buffer, etc)

The whole project would be a lot more feasible on an 80+ MHz ARM Cortex part, as you could then use a counter/timer to generate pixel-or-less-adjustable starting delays relative to the sync pulse. An FPGA would likely be an even better choice.

|improve this answer|||||

Well, it's very possible, but actually you'll stress the arduino. You can use it perfectly but the problem is, it takes a lot of time of Arduino. The reason is actually simple: Horizontal syncronization takes each 32uS of arduino, so the code is interrupted a lot, and if you use other codes the screen may flick. But i have a solution for you. I found software libraries: http://forum.arduino.cc/index.php?topic=102181.0 or: http://labdegaragem.com/profiles/blogs/gerando-sinal-vga-colorido-com-arduino-completo

The last link is in portuguese but you can always ask me anything.

OK, what people do is to use for example 2 arduinos to aliviate de stress, you can buy a arduino bare metal chip and put it in a protoboard to reduce costs. Buuut, ther's another very very easy way to work with vga in arduino. Using a isolated hardware: http://www.hobbytronics.co.uk/serial-vga

You just need to send serial commands to the vga driver and it will do whatever you want. It comes with a library so you can use in arduino. It's perfect, aliviates the arduino, so you can use your ethernet communication and the price is great (for you, here in Brazil the fees kill a lot of children every day :-( ).

|improve this answer|||||
  • 1
    From what i read about the Serial VGA is that it displays stuff from arduino to VGA, I want to read from a VGA port. – Magic-Mouse Feb 25 '15 at 11:42
  • 1
    Been on both pages, and it seems like it is ARDUINO => VGA => MONITOR, i want to do COMPUTER => VGA => ARDUINO => ETHERNET – Magic-Mouse Feb 25 '15 at 11:47
  • Hum, i think there isn't yet any library you can find on the net because this is very specific, but if you can send signal, you can receive it. Actually you just need to get any vga software library. put it in an arduino to simulate a vga video running, and in the other end of the vga cable you read it with other arduino. What i'm saying is that you just need to get the same vga library and change it to read instead of writting. It is possible, it will just take time from you, but its not difficult because the already done library cointain time directives. – Matheus Garbelini Feb 25 '15 at 11:51
  • No. This is not applicable to the question asked. – Chris Stratton Feb 25 '15 at 22:08
  • Do you want to connect direct to ethernet shield? – Matheus Garbelini Feb 25 '15 at 22:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.