Arduino, camera and screen

Hello everybody !

I come to you because I have a complex project and I have a complicated choice to make.
I have an arduino, camera and screen display type 4D systems (input Rx & Tx). The objective is to get the video stream from the camera and transfer it on the screen, however, some will say that the Arduino does not support video processing (CPU), but my camera has its own system of signal processing, and the stream is post-processing.

My questions are rather, what kind of flow of the camera it is better to use (Rx & Tx, CMOS, analog, LVDS, BT.656), I said that my streams can be parallels or series. My second is how to pass the image to the screen via the arduino?

Thank you all in advance!

Jean-Baptiste

The Adruino can't read and write that much data each second.

Mark

but my camera has its own system of signal processing, and the stream is post-processing.

So unless you say what these actually are we are in the default position of saying you can't do it.
This is only a 16MHz processor with 2K of RAM.

So you do not support it? Another possible solution you think?

JeanBaptiste:
So you do not support it? Another possible solution you think?

You probably need to explain what function you want the arduino to perform. Why not just connect the camera directly to the screen if both have tx/rx?

Work out the amount of data you need to read, how many pixels per frame? how many frames per second? how many bits per pixel? The best speed you can get from the Uart is 115200 bits per second but the yield is about half that ( if your lucky - you need to add upto 3 bits per byte to allow for the way the Uart works)

After that of course you have to put the data some where.

what kind of flow of the camera it is better to use (Rx & Tx, CMOS, analog, LVDS, BT.656),

What do you mean by this. CMOS is nothing to do with anything. By Rx & Tx I assume you mean a Serial Uart. But analog wtf!!.

My second is how to pass the image to the screen via the arduino?

What screen? provide a link? form who? what interface?

Mark

zoomkat:
You probably need to explain what function you want the arduino to perform. Why not just connect the camera directly to the screen if both have tx/rx?

may be adapted to the size of the image for display?

To make it easier:
http://www.4dsystems.com.au/product/1/1/4D_Intelligent_Display_Modules/uOLED_96_G2/
http://www.flir.com/cvs/cores/view/?id=51266&collectionid=549&col=51276

Sorry to bother you ... Someone would have an idea?

Thank you all in advance

Someone would have an idea?

Sure. I suggest that you answer holmes4's questions. When you have done that, you'll be able to talk about your project with your hands in your pockets, instead of waving all over the place.

Hum sorry, so:

holmes4:
how many pixels per frame?

336 × 256

holmes4:
how many frames per second?

8.3 Hz

holmes4:
how many bits per pixel?

14-bit or 8-bit

holmes4:
What screen? provide a link? form who? what interface?

http://www.4dsystems.com.au/product/1/1/4D_Intelligent_Display_Modules/uOLED_96_G2/

Thank you for help

Some simple arithmetic:
Pixels per frame = 336 x 256 = 86 016
Bits per frame = 86 016 x 8 = 688 128
Bits per second = 688 128 x 8.3 = 5 711 462.

Where does the Arduino come into this picture? (pardon the pun)

No worries, the arduino will be there to perform the compatibility of connection between the camera and the screen

the arduino will be there to perform the compatibility of connection between the camera and the screen

I don't think that translates too well.

Qu'est-ce que vous voulez dire?

The arduino is here to make compatibility bewteen the OLED screen and the data stream of the camera.

Sorry for my bad english :confused:

The 4D screen need to be initialed and configured, exemple code:

/*

This "hello_world_Goldelox" sketch provides a very easy introduction for beginners or Arduino users in
interfacing any serial-display-module from 4D Systems Pty. Ltd.

Before using this sketch, the 4D display module to be used must be converted to a serial (SPE) display
module using the Workshop 4 IDE also provided by 4D Systems. Workshop 4 can be downloaded
from http://www.4dsystems.com.au/prod.php?id=172

Converting any 4D Systems display to serial display using the SPE tool in Workshop 4 has been covered and
discussed in the beginning of this application note. In addition, all commands for receiving control,
controlling or writing to the display is discussed and presented in detail in the GOLDELOX-SPE-COMMAND-SET
manual.(Note: the uOLED-160-G2 was selected for this tutorial).

It is strongly recommended then that a cioy of the GOLDELOX-SPE-COMMAND-SET be downloaded and studied to
give the user an understanding of the wide array of commands available which can be used in any
Arduino project using any 4D Systems intelligent display module.

http://www.4dsystems.com.au/prod.php?id=172

This sketch provides three lines of text strings which if compiled and downloaded to the Arduino board
be displayed to show plain unformatted text string or a formatted text string ( refer to the 3rd part of
this sketch.

*/

// include 4D Systems Goldelox library for Arduino
#include <Goldelox_Const4D.h>
#include <Goldelox_Const4DSerial.h>
#include <Goldelox_Serial_4DLib.h>
#include <Goldelox_Types4D.h>

#define DisplaySerial Serial                      // define display serial port0

Goldelox_Serial_4DLib Display(&DisplaySerial);    // declare this serial port

void setup(void)
{
  //Reset the display, assuming Display is connected to Arduino via 4D Arduino Adaptor Shield
  pinMode(2, OUTPUT);			// D2 on Arduino resets the Display
  digitalWrite(2, HIGH);		// Reset Display
  delay(100);					// 100ms Reset pulse
  digitalWrite(2, LOW);			// Disable Reset
  
  delay(3000);                  // Allow time for the display to initialize before communicating
  Display.TimeLimit4D = 5000 ;  // 5 second timeout on all commands
  DisplaySerial.begin(9600) ;   // initialize serial port and set Baud Rate to 9,600
  Display.gfx_Cls() ;           // clear display
//
//  Below this comment is the first string to be serially sent to the display.
//
  Display.putstr("Hello World\n\n") ;  // send "Hello World" string to display
//
//  Below this comment is the second string to be serially sent to the display. Note the double spacing
//  to provide clarity in the presentation.
//
  Display.putstr("Serial Display test\n\n\n") ;  //send second string to display
//
//  Below this comment is the third string to be serially sent to the display. Again for clarity
//  in presentation, tripple spacing has been placed and used. Furthermore, this text
//  string introduces to the user some font and text-formatting capabilities available. There are six(6)
//  statements before the Display.putstr statement which instructs the Arduino to do this. You can
//  edit the text string to show the display model you have. Autodetecting the display model is
//  not covered by this application note.
//
  Display.txt_Attributes(BOLD + INVERSE + ITALIC + UNDERLINED) ; // change and set new text format
  Display.txt_Xgap(3) ;
  Display.txt_Ygap(3) ;
  Display.txt_BGcolour(RED) ;
  Display.txt_FGcolour(WHITE) ;
  Display.txt_MoveCursor(5, 0) ;                     // use this cursor position
  Display.putstr("uOLED-160-G2 SPE + Arduino\n") ;   //send third string to display
}

void loop(void)
{
	// do nothing here
}

Thanks a lot

JeanBaptiste:
So you do not support it? Another possible solution you think?

No not me, it is not possible for the arduino to do this because it is not fast enough and does not have enough memory.

You think that a RaspBerry can make this work ?

JeanBaptiste:
You think that a RaspBerry can make this work ?

That's probably a question you should ask on a RaspBerry support forum.

JeanBaptiste:
You think that a RaspBerry can make this work ?

Could be tricky because Linux sucks at real time tasks. You will probbly have to program it outside the Linux OS.

Ok, thaks all for your help !

Jean-Baptiste