Drawing With EVE

Recently, I was requested by a client to develop a certain control system using the VM800P35A. This “EVE development module” by FTDI Chip (EVE standing for Embedded Video Engine) is an interesting combination of an Arduino, a 3.5″ LCD display, and the FT800 Graphic Controller. In this “first impression” we’ll see what this module is all about, and what you can expect from it.

Back side of the VM800P35A module
Back side of the VM800P35A module

Cost

Before we start, it should be noted that the VM800P35A is not cheap. It will set you back at least $89 (shipping not included). To its defense, it has built-in a sound module + speaker, a real-time clock, resistive touch capability, a MicroSD card slot, and a nice front panel (black or pearl). On the other hand, if you want to expose its Arduino-like GPIO pins, you’ll have to do some hacking, or buy a special “daughter card”.

How It Works – Concept

If you played with LCD displays for the Arduino before (these are usually TFT-LCD), you probably noticed that they are quite slow. That’s mainly the Arduino’s fault, but getting a much stronger microcontroller, or spending days optimizing your code for one specific graphic application, is not always an option. That’s where the FT800 Graphic Controller steps in. This ~$6 chip basically tells you, “Just let me know what you want on screen and I’ll take care of the rest”. And he does that very fast.

How is that different from the several TFT-LCD libraries for the Arduino? In your Arduino code, you may write something like:

circle(x, y, radius);

But this doesn’t go directly to the screen, because the screen has no idea what a “circle” is. The Arduino has to construct the circle by itself, line by line, and send the separate drawing commands to the screen. This takes precious time and processing resources.

The FT800, on the other hand, does know what a circle is. Therefore, all the Arduino has to do is to give it the one initial command, which is way, way faster. That’s how, after mastering the fundamentals, I was able to program this is no time:

How It Works – Some Particulars

Naturally, now it all boils down to what the FT800 knows how to draw. For example, it knows how to draw filled circles, so we can have lots of filled circles drawn really fast; but it doesn’t know how to draw ellipses, so if we need lots of ellipses, we’re screwed.

Here are the “primitive types” supported by the FT800:

  • Bitmaps (including fonts)
  • Points (with radius, i.e. circles)
  • Lines
  • Rectangles
  • Filled-to-edge lines (like the “mountains” in the video)

All these can have different colors, alpha blend values, subpixel accuracy and antialiasing, clipping, and the bitmaps can also undergo transformations. There are also built-in graphic “components” you can use, such as buttons, dials. sliders etc., and some more features I didn’t have time to explore yet.

In your code, you construct a “display list” – a sequence describing all the different elements you want to draw, and the FT800 draws it all in real time, for each frame. Note that it does have limited resources, so you obviously can’t have hundreds of pictures flying all over the place. And why would you.

To summarize, the FT800 seems to be a powerful chip with useful features, and the VM800P35A is an interesting module that can broaden your Making horizons – if you can afford it, and are patient enough to learn how to use it.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.