ActiveWindow - a prototype shop-window interactive display solution






Developed during 2006 in partnership between Paul Spurgeon and Jens Laulund. Initial concept has three illuminated switches mounted behind a shop window, operated by hand proximity detectors, allowing passers-by to interact with large-screen computer displays. Advertising use cases include high street estate agent shops with house details & video tours shown outside of opening hours. IR sensors detect hand movement over each button, & multi-coloured high-brightness LEDs show button states. The prototype system was integrated with a Microsoft Windows driven display selecting PowerPoint slides and other media, with remote updating.





Modules are interconnected by I2C ribbon cable; the main IR sensor PCB interfaces to a PC via a USB connector, and drives daisy-chained I2C LED & relay boards. Each board contains a PIC processor: 18F2550 on the IR board for USB support, and 16F629's on the LED & relay boards. Prototype PCBs were laid out on the same board and divided after manufacture. A 4 LED version of the RGB board was also prototyped for increased brightness.
USB interface code for the 18F2550 was written in C using an early version of MPLAB's C18 compiler & FS USB Starter Kit (unfortunately not compatible with Microsoft's signed USB drivers). In addition to support for detecting reflection zones using the IR Sensor, the 18F2550 sends I2C commands to daisy-chained LED & relay boards. Code for the 16F629's was written in assembler using the MPLAB IDE & PicStart programmer. RGB LED board firwmare uses PWM to dim the LEDs if necessary, and implements a state machine with 5 states, allowing special effects to be programmed via 8 state registers.
ActiveWindow software was written in Visual BASIC for Microsoft Windows, and included an oscilliscope debugger for the IR sensor, a button configurator, and modules to send key & mouse sequences to media viewers (eg for Powerpoint, video, html, flash). Any number of ActiveWindow states can be defined, each of which is displayed by an external viewer application. For each state, an action map is defined, mapping codes into a new state and associated actions. Actions can be keyboard or mouse events (eg to advance a slide presentation), a request to launch a new application (and close the current one), IR Sensor commands, or script functions. Viewer applications display various media (eg Powerpoint, video, html, flash).