MRETV – Video, Stereo Sound and much more from a standard Arduino !
MRETV – Video, Stereo Sound and much more from a standard Arduino !
Use only two resistors and two diodes to generate full screen video. Text 47 x 29 of 8×8 characters, double the vertical resolution (47×57) in experimental interlace modes. Use pixel level graphics with a virtual graphics coprocessor controlling font, screen resolution, vertical and horizontal centering, raster index and pixel size with single scan line resolution. ASCII read and write access of screen characters, screen print strings, decimal, hex or binary. Built in simple scrolling terminal service. Video generation has been done before, but not like this. FULL DUPLEX serial still available while generating video.
Two more resistors and two capacitors will add Stereo playback of Audio samples. One shot or continuous operation. Sound samples are used in real time from progmem and a sound sequencing example is provided. Both Audio and Video are generated automatically in the background with no intervention once started.
Two more resistors and you can now connect a PS/2 keyboard or mouse (the kind before USB). Read raw key input or ASCII chars, let keys merge into the serial stream automatically. Set the keyboard LEDs and send commands to control mouse reporting.
Code examples include Ponguino, a simple terminal, a player piano, a ShootEmUp, use your Arduino as an external video card and some technical examples. Too good to be true? Watch the video then grab your soldering iron!
Step 1: Introduction
What is MRETV ?
MRETV is a few very simple circuits and a simple to use software interface that allows an Arduino to generate Video and Stereo Sound in the background while your sketch executes as normal. Your Arduino plugs directly into the A/V inputs of your TV, VCR, or projector. MRETV also has built in support for other peripherals like keyboards and mice.
Which Arduino’s does MRETV work with?
MRETV has been tested and works with Arduino boards using 168, 328, and 2560 CPU’s. With the Mega 2560 software serial Tx has a small hardware limitation.
Who can build MRETV?
Any Arduino user. Even if you have never built hardware before, the audio and video circuits are so simple they make a perfect first project. People with moderate experience can build them in about 5 minutes, and probably already have the parts.
How easy is it to program with MRETV?
You can set a string, make 1 function call, and the string shows on your TV. Changing the contents of the string changes the text showing on your TV (in real time without calling any function.)
Why use MRETV ?
An Arduino user interface often involves a few buttons or switches. Indicators commonly range from LEDs to 80 character displays. These can be a large part of the time and cost in a build. MRETV replaces these with a screen of 1 to over 1000 characters, stereo sound and a full PC keyboard. It can be built quickly and cheaply using only 6 resistors 2 diodes and 2 capacitors in total for all 3 circuits (video / stereo audio / keyboard).
What resources does MRETV use ?
The smallest footprint is about a 1.5k sketch using about 35 bytes of RAM, including interrupt stack use, plus 1 byte of RAM for each character location on screen (1 or more locations). The screen character space can be dual purposed. Video uses an 8 bit timer and two IO pins. Audio uses an 8 bit timer and two IO pins. The software serial Tx stream is provided on another IO pin if needed (Rx works on the standard pin). CPU usage varies with visible screen area but is self limiting about at about 80%. A small active screen uses under 10% of the CPU cycles, with a large screen plus audio around 50% is common. Key library structures and routines are redefined each compile for efficiencies. MRETV can be turned on and off ( 0% CPU).
I have truly enjoyed reading about, constructing, and learning with Instructables. I want to take this opportunity to thank all those who have shared with me, and those who made the sharing possible. You have solved my problems, fed me, inspired me, and shown me how to do what I thought was impossible. As part of that thanks I offer the MRETV debut to the Instructable community.
This Instructable is a Build and Introduction rather than an exhaustive explanation of MRETV. You will quickly have both sound and video from your Arduino. You will have some games to play, and some useful utilities. More importantly you will have a full featured library to use sound, video and more in your own sketches. If there is interest future tutorials on the software interface are possible, it has more depth than can be explored here. Since even this build and introduction covers a lot of material, I suggest you first make the video and sound circuits then take a break and spend some time with the software examples. You can use a terminal program like ‘Putty’ to explore until you build the keyboard (PS/2) circuit. After making the keyboard circuit you will have all the major parts of MRETV (to use examples like Ponguino and Diode Calibration you need to build some sensors.) Please do not redistribute this Premiere Release of MRETV yet, wait till the bugs become documented features.
I have tested many versions of this project connecting to many different devices and never caused any harm to the Arduino or the other device. Most TV’s hold the MRETV signal much better than the capture card I used to make the videos. Due to its simplicity, most of the time, newly built MRETV hardware works the very first try. However …
Build and use at your own risk. I assume absolutely no liability of any kind for anything you ever do related to MRETV.
Go ahead and watch the second video then let’s get building.
Step 2: Video
Supplies for all steps:
shrink wrap or electrical tape
male and female headers (that plug into the Arduino)
Safety for all steps:
This list may seem trivial but making it was a sobering experience for me. It might be a gentle reminder for others as well.
Don’t wear loose clothing, and tie back long hair
Wear eye protection for the whole build, solder ‘spits’ and snipped wires fly around
Work in an uncluttered, well lit, and well ventilated space
Be careful while using and storing sharp knives and tools
Don’t touch the tip of the soldering iron or the element (never below the handle)
Keep a wet sponge or rag to clean your soldering iron frequently, and never hold it in your hand
Use vice grips, pliers and a rubber band, or similar, NOT YOUR FINGERS, to hold parts while you solder
Do not lean into the fumes from the soldering, a small desk fan can direct air flow
‘It should be cool enough ‘ means to wait longer before you touch
Keep track of the sniped ends of wires, they are very bad for people and electronics
Don’t leave wires exposed in your circuits, be generous with shrink wrap or tape
Don’t leave even cold irons within reach of young children, be careful about the cords
Wash your hands and clean the area after soldering
Don’t leave the spoon in your coffee
A short time spent setting up comfortably at the start, and for each solder joint, may be the best safety measure. It also is often quicker in the long run.
resistor 1k ohm
resistor 300 ohm
diode 1n4148 (x2) or similar silicon switching diode
RCA plug female (or male with long lead)
male header 2 pin
male header 1 pin
For more detail: MRETV – Video, Stereo Sound and much more from a standard Arduino !
This Post / Project can also be found using search terms:
- mretv library
- mretv VERSION 2
- arduino MRETV library tutorial