Intro: Add Video & Audio to Your Microcontroller Project
- Composite video (a.k.a., RCA Jack) is ubiquitous, and works with 3" - 60" displays
- 640x480 color screen lets you display complex information, graphics, charts and animations
- Composite is inexpensive, easy to program, can run with a small memory footprint, and uses cheap cables
I use slightly longer pin headers than normal so it can be connected on top or below the Propeller Platform. I also marked the traces in the prototyping area on the silkscreen to make it easy to see how the traces are connected. The ProtoPlus is available as a kit on Gadget Gangster.
The Propeller can output PAL or NTSC, here are a few samples of what can be done:
Really Fancy 3D Graphics (You have to watch this one!)
UI / Information Display
Step 1: FAQ
What is the ProtoPlus?
It's an expansion module for the Propeller Platform, it lets you connect video and audio to your Prop and has a prototyping area.
What does it work with?
It's set up to work the Parallax Propeller, it will fit on top (or below) the Propeller platform, or you can drop it on a breadboard.
Will it work with Arduino or PICaxe?
No. Arduino and PICaxe simply aren't fast enough to generate video on their own, they need a 'helper' microcontroller dedicated to video. The tellymate is one such tool I'm aware of, although it is B/W, text-only.
NTSC or PAL?
Up to you - the Propeller is perfectly content to generate either signal.
Step 2: Parts and Tools
- 0.01 uF Radial Ceramic Cap
- 47 uF Radial Electrolytic Cap
- 40 pin headers
- 2x 1.1k Resistors (Brown - Brown - Red)
- 560 ohm Resistor (Green - Blue - Brown)
- 270 ohm Resistor (Red - Violet - Brown)
- 2x RCA phono jacks
- ProtoPlus PCB
Step 3: Make: Resistors
Let's start by adding the 3 resistors that make up the video DAC;
R1 is 1.1k ohms, it's Brown - Brown - Red
R2 is 560 ohms, it's Green - Blue - Brown
R3 is 270 ohms, it's Red - Violet - Brown
Add R4. That's also 1.1k ohms (Brown - Brown - Red)
Step 4: Make: Capacitors
There are 2 capacitors:
C2 is the ceramic .01uF capacitor, it's not polarized, so it doesn't matter which way it goes in.
C1 is the electrolytic 47uF capacitor. It IS polarized, the longer lead goes through the square hole closer to the '+'. The stripe on the body of the capacitor goes on the side closer to the edge of the board.
Step 5: Make: Connectors
Add the 2 RCA connectors. The connector marked 'TV' will output TV, and the Audio connector outputs line level audio.
Step 6: Make: Pin Headers
The easiest way to add the pin headers is to insert them into a breadboard (or a Propeller Platform, as shown in the picture), put the board on top, and solder it down. Once the pin headers are soldered to the ProtoPlus, just lift it off your breadboard and you've got straight pin headers.
Step 7: Using It and Downloads
Using It: VideoDoing video with the Propeller is straightforward:
- Get the Propeller Tool. This is the development environment for the Prop. Links for Mac/Linux and windows are in the download section below.
- Include the 'tv_text' object. The Propeller tool comes with a decent library of objects, including a TV object. In the OBJ section of your code, just include:
- Start up the TV. Use:
- Put stuff on the screen with text.str, text.hex, text.out, etc. Here's an example:
CON _clkmode = xtal1 + pll16x 'sets the Prop to 16x the xtal _xinfreq = 5_000_000 'tells the Prop the xtal is running at 5MHz OBJ text : "tv_text" 'include this object PUB start text.start(12) 'start up the TV with basepin 11 text.str(string(13,"Hello World",$C,1)) ' use the method 'str' to put up text
This is just a summary of putting up basic text. Graphics are a bit more complicated, but not bad, take a look at the Graphics_demo to see how to do animation, shapes, and graphics.
Using It: AudioAudio is just as easy. There are already objects to play .wav files, voice synthesis, and frequency synthesis. If you just want quick and dirty example, Kwabena's speaker driver object looks easy. Grab the object, change the PWM_Pin constant to 11, and here's an example usage:
CON _clkmode = xtal1 + pll16x 'sets the Prop to 16x the xtal _xinfreq = 5_000_000 'tells the Prop the xtal is running at 5MHz OBJ speaker : "PWMEngine" 'include this object PUB start speaker.PWMEngine 'start up the speaker speaker.changespeakerfrequency(1000) 'change frequency to 1,000 hertz speaker.changespeakervolume(50) 'volume to 50% waitcnt(clkfreq + cnt) ' cnt = current system time, clkfreq = ticks in 1 second speaker.changespeakerfrequency(6000) 'change frequency to 6,000 hertz
DownloadsHi-res photos are up on flickr
The board is available under the MIT license (public domain). You can download the design in DipTrace Format, pdf, or png.
The Propeller tool (the programming environment for the Propeller) for Mac/Linux and Windows. Also, don't forget to grab a PDF of the Propeller Manual.
Get ProtoPlus or Propeller Platform on Gadget Gangster