ETC - Touchscreen Control for home control, music players, or any project




Install HOWTO

Mailing List

Sourceforge Project

Purchase Citadel

Hosted by:
SourceForge Logo

I wanted a configurable system and needed some form of scripting language that could handle drawing on the touchscreen's display, and that would be light and flexible enough to fit on the touchscreen's tiny 1mb flash. As it turns out I couldn't find anything, so I cheated. ETC runs on the touch-screen and pulls down images from a web server based on user input. All the scripting is done on the web server using PHP, although any dynamic/CGI language will work.

Every time a user touches the screen the program appends the x and y coordinates of the touch to the URL and pulls down the resulting image (for example a touch on the lower right corner of my touch screen fetches this URL: ). Since PHP can exec other programs it can control the lights (using x10 and HEYU). I can change the touchscreen's interface by just altering a PHP script. Its not terribly photogenic but here is a screenshot showing the lighting control panel for my apartment.

Citidel Touchscreen displaying floorplan of apartment

The touchscreen runs a custom distribution of Linux containing a 2.2.19 kernel and the busybox toolkit. On boot up a small loader program fetches the main app from a preconfigured URL, allowing users to upgrade the touchscreen app without reloading the flash. The main app uses the SVGALib library to put the screen into 640x480 mode (the bottom 80 lines are truncated). The software has some support for the keyboard, user input is appended to the URL ( eg ) and causes a http get every time the Enter key is pressed (I use it with a bar code scanner).

I use PHP, but any scripting language and web server that can return PNG images in response to a GET event will work. The touchscreen app is released under the GPL, so feel free to modify and improve it (and if you're really generous send me the changes so I can post them here). I'd love to hear your ideas or questions, send email to