Introduction: Microcontroller Controlled Home Entertainment System

This Instructable will take you on my journey to replace my old Netflix/Vudu Bluray player with a PC based entertainment station for my LCD projector. I wanted to be able to access and control Netflix, Hulu, Youtube, Crackle, NBC, ABC, and the Weather Channel using only a simple remote control.

Along the way, I'll give you the full details you need to replicate this project, but at the same time I'm going to expose you to a very interesting combination of tools which will allow ANY MICROCONTROLLER the ability to take full control of a connected PC to create sophisticated, yet simple PC interfaces and "assistive technology" systems. Read this with your "idea cap" on and I'm betting there are at least a hundred different ways this material could come in handy!

The setup works likes this: (Refer to image two.) My universal remote sends IR signals to my microcontroller. The microcontroller sends commands to control the PC web browser over it's programming cable either as a mouse or by changing pages depending on what buttons I press on the remote. I've seen remotes which are compatible with PC computers as an optional mouse, but this setup is an advanced control system allowing us to send any data/controls to the PC. The system we're building will allow the remote control to act as mouse and software control with plenty of room for your own enhancements.

Here's the project in action!

Required materials and related links:

Hardware:

  • The Pocket Mini Computer w/IR Kit : An "Open Source" micro based on the Propeller: (source)
  • A Universal Remote that is Sony Compatible (source)
  • A dual-core (or better) Windows based PC
  • A USB-A to micro USB cable (source)

Software:

Useful References:

Assistive Technology Related websites:

Step 1: The Pocket Mini Computer

You might be scratching your head at the requirement of a Pocket Mini Computer.

What's a Pocket Mini Computer? I'm glad you asked!

The Pocket Mini Computer is an open source "mini computer" design which uses the Parallax Propeller microcontroller as it's brain. The kit from Propellerpowered.com comes pre-loaded with a retro-style BASIC. The hardware itself is extremely powerful & featured.

Update! August 2014: The original PMC two board kit was upgrade to a new design which is completely compatible with the PMC 2013 used in this project. You can get this kit from Propellerpowered's Tindie store.

The new kit is easier to build and contains many newly added features.

The Pocket Mini Computer hardware specifications:

  • Parallax Propeller Quickstart Board (8 cogs, 32K RAM, 64K EEPROM)
  • Improved VGA Output
  • Stereo R/L Audio Output
  • PS/2 Keyboard/Mouse Input
  • Wii(tm) compatible controller connection
  • Optional microSD adapter connector
  • Optional iR connector
  • Experimenter's port

The Pocket Mini Computer is language compatible with Spin, Assembly (PASM), C, and BASIC.

COLOR BASIC features:

  • 4094 available bytes free
  • 64 and 256 color modes
  • 1 "SIDlike" audio channel
  • 127 character re-programmable character set
  • plot, line, and box graphics commands
  • I/O access commands
  • 95+ BASIC Commands, operators, and functions
  • SD operating system
  • Full screen editor (requires a microSD card.)
  • Ability to execute non-basic binary programs
  • Extended memory features (requires a 23K256 SRAM chip)

More details about the Pocket Mini Computer can be found on this Wiki.
Schematics and Source Code are available for anyone who wants to "roll their own".

Step 2: Accessibility Software

Here's where this project began to take a very interesting turn as I developed it.

Most microcontrollers (Arduino, Propeller, Picaxe, etc) use a serial/USB connection to a computer for programming.   You develop the code on a computer which is powerful enough to run the program editor and compiler, then send that code down the serial/USB link to the microcontroller board.

I started looking for ways to reverse the process.
Put the microcontroller in charge of the computer, in other-words, make the tail wag the dog.

As I researched ways of doing this, I discovered there is already a huge area of development here which has been untapped by microcontroller experimenters, AAC (Augmentative and alternative communication) systems are used by the disabled for communication when speech isn't possible and the GIDEI (General Input Device Emulating Interface) standard.   Several organizations have already created amazing software which allows any serial device which applies the GIDEI standard to control a computer system.   Quite literally, you can control the entire PC using simple escape sequences and ascii commands.

Today, I'm helping you create a way to control your computer from a microcontroller for the purposes of being entertained, but this same technology could easily be applied to creating accessible devices for those with disabilities.

Image Credit: Public Domain, The Tango Desktop Project

Step 3: Configure the PC

First, we're ready to get the easy part out of the way.   (Ok, easy if you have access to an extra PC)

You'll want a dual core computer or better which will handle display of full-screen video from content sources like Netflix, Hulu, or Youtube.

The recommended minimum specs for this PC should be:
  • A dual-core processor (or better)
  • 2GB of ram (or higher)
  • 250GB hard drive
  • A USB port
  • Large VGA monitor, LCD projector, or VGA-to-TV converter
I used a spare dual-core that had been retired from service as a workstation.   Perfect for this project.

Start by installing the Propeller Tool software.   This program will be used for installing the BASIC firmware to the Pocket Mini Computer, as well as identifying the serial port used by the Pocket Mini Computer to communicate with the PC. 

Also install the AAC Keys Software.   This program will be used to accept the actual control data from the Pocket Mini Computer.


Step 4: Configure the Pocket Mini Computer

As mentioned earlier, the Pocket Mini Computer is a Propeller based "micro-controller computer."

This project will require that you install the latest version of BASIC3 Beta firmware which will take advantage of the IR Kit and accept data from the Universal Remote control.

Download BASIC3 and extract it to an empty folder.

Installing the microcontroller side is a two step process.  You'll use Propeller Tool to install the firmware, then load the BASIC program.:

1) Open LOAD_EEPROM and use F10 to write the required upper EEPROM data to the PMC.  Once the program has run for 10 seconds, you can got to step 2.

2) Open BASIC3 and use F11 to write the required lower EEPROM data to the PMC.  Once the program has run, the Pocket Mini Computer should start with a friendly screen and READY. prompt.

3) Before leaving the Propeller Tool, press F7 to identify the COM port which is being used.  Write this down for now.

Once you've installed the required firmware on the Pocket Mini Computer, it's time to load the BASIC program.

Download TV.BAS and copy it to the microSD card used by the Pocket Mini Computer.   Once it's installed, from BASIC you can type:

LOAD "TV.BAS"
RUN

Yes, it's BASIC.  The BASIC on the Pocket Mini Computer is both very easy to understand, yet powerful enough to do complex jobs.  Go ahead, LIST the program and take a look.   I've tried to keep the program as simple as possible so you can add your own ideas.

Step 5: Configure the Universal Remote

Here's another easy step.  

If you are using the Universal Remote Control supplied by Propellerpowered, these instructions are exact.  If you are using another compatible universal remote control, then use the instructions provided with it to configure it in "Sony" TV mode.

Here's how to program the remote.
  • Press SET and TV1 together
  • Press 0 0 0
  • Press SET and VCR together
  • Press 0 0 0
If you were daring enough to list the BASIC program, TV.BAS from the last step, you'll see a bunch of IF A = lines in the code.  The numbers which A could possible equal correspond to the buttons on the remote.    There is a full listing of the program, as well as a map to the buttons on the last page of this Instructable. 


Step 6: Configure the AAC Keys Software

AAC KEYS is a free alternative to SerialKeys.   Even though the program doesn't state Windows 7 support, it works just fine.     This free program will run in the background on the computer and listen for the GIDEI control commands from the serial/USB port, allowing Windows to act on them.

Once the program is running, set the COM port (see image two) in the software to match what you wrote down from the Propeller Tool two steps ago.   If you need to disable it, simply change the COM port and the port will free up for programming.

AAC KEYS is provided free of charge on a donation basis by the AAC Institute.   AAC Institute is a 501c3 not-for-profit charitable organization.   If you can help, visit their homepage and contribute what you can.


Understanding the GIDEI control standard:

The GIDEI Standard is pretty extensive, but it's very straightforward.

Here's some examples which are pretty easy to follow.

<esc>,combine,control,w .  
Commands which control the computer, are sent with an escape (ascii 27) first.  
Each command is seperated with a comma, and the line ends with a single period.
The above command is "combine" or press both Control+W

<esc>,combine,alt,right.
Again, starting with the escape character, then pressing both ALT+Right Arrow Key

Any raw ascii data can simply be sent directly and it will be passed to the open software.





Step 7: Putting It All Together

So here's the setup.

1) Connect the Pocket Mini Computer to the computer to be used as the Media Center
2) Load the AAC KEY software & set it's COM to match the connection used by the PMC.
3) Set the BAUD rate of AAC KEY to 1200 Baud.
4) Load the file "TV.BAS" on the Pocket Mini Computer and RUN it.
5) Open Chrome on the PC.  Chrome will be the basis for our media center software.


Instructions for use:

The program starts in MOUSE Mode.   The 4 large AUDIO/VIDEO (92,94,116,117) keys act as a mouse and the MENU (96) button acts as the right mouse button.  CH+/CH- (16,17) act as browser forward/backward buttons.  Pressing the TV/CATV (56) button will switch to Page Selection Mode.  

In Page Selection Mode, pressing the numbers 1-7 will change the page on the browser to Netflix, Crackle, Hulu, NBC, ABC, Weather Channel.    Pressing the mouse movement buttons will send it back into Mouse mouse.

You should be able to move the mouse around the screen, click on a link, play a video and or change pages.

Step 8: Modifying the Code

The program reading all of the IR codes is written in simple BASIC, generally easy to understand.

Using the IR Codes Reference picture (second photo), you can change IR buttons (the IF A = lines) and add commands of your own.  Refer to the GIDEI Standards page for all of the commands you can send to your computer.   

Tip: If you rename the file TV.BAS to DESKTOP.TMP on the microSD card, the Pocket Mini Computer will automatically LOAD and RUN the program each time it is powered up.

Here's a printout of the BASIC program:

1 COLOR 254,0
2 CLS
10 PRINT "INTERNET ENTERTAINMENT CONTROL:"
20 PRINT "-------------------------------"
30 PRINT " " : PRINT "By Jeff Ledger" : PRINT " "
40 PRINT "Press arrows on IR remote..."
100 SERIAL 31,30,0,1200
105 PRINT "Mouse Mode Active."
110 a=IRCODE
120 IF a = 117 THEN TX 27;",move,-10,0."
130 IF a = 116 THEN TX 27;",move,+10,0."
140 IF a = 94 THEN TX 27;",move,0,-10."
150 IF a = 92 THEN TX 27;",move,0,+10."
160 IF a = 96 THEN TX 27;",click."
170 IF a = 56 THEN GOTO 210
180 IF a = 16 THEN TX "pgup."
181 IF a = 17 THEN TX "pgdn."
200 GOTO 110
210 PRINT "Page Selection Mode Active."
220 a=IRCODE
230 IF a = 37 THEN GOTO 105
240 IF a = 0 THEN GOTO 310
250 IF a = 1 THEN GOTO 320
255 IF a = 2 THEN GOTO 330
260 IF a = 3 THEN GOTO 340
270 IF a = 4 THEN GOTO 350
280 IF a = 5 THEN GOTO 360
290 IF a = 6 THEN GOTO 370
297 IF a = 117 OR a = 116 OR a = 94 OR a = 92 THEN GOTO 105
298 IF a = 117 THEN TX 27;",combine,alt,left."
299 IF a = 116 THEN TX 27;",combine,alt,right."
300 GOTO 220
310 GOSUB 1000
312 TX "www.netflix.com"
314 GOTO 220
320 GOSUB 1000
322 TX "www.crackle.com"
324 GOTO 220
330 GOSUB 1000
332 TX "www.hulu.com"
334 GOTO 220
340 GOSUB 1000
342 TX "www.cbs.com/video"
344 GOTO 220
350 GOSUB 1000
352 TX "abc.go.com/watch?noredirect"
354 GOTO 220
360 GOSUB 1000
362 TX "www.fox.com/full-episodes"
364 GOTO 220
370 GOSUB 1000
372 TX "www.weather.com/weather/right-now/44667:4:US"
374 GOTO 220
1000 TX 27;",combine,control,w ."
1010 PRINT "New Page Selected."
1015 TX 27;",combine,control,t ."
1120 RETURN