Lloyd Coke Machine Documentation Project


The intent of the Coke project is to create a well-designed, reliable, expandable computer system, with the Coke machine as the primary console.

Functional Overview

The hardware is able to detect pushes on the Coke buttons, detect coins being inserted, deposit frosty beverages, display messages on a 30x7 LED display, and display the current time on a digital clock. Firmware and software modules simulate the action of a standard Coke machine, in addition to providing any other gratuitous functionality that is desired.

System Overview

The Coke System consists of a hierarchial structure of subsystems which interface with each other in fun and exciting ways. At the lowest level, there are the hardware boards that interface with the real world or the physical Coke machine. The hardware boards attach to a central controller board, which is based around a 68HC11 microcontroller. The controller board receives commands over a serial port from a 486 computer system. The commands are sent by software modules -- programs that import the Libcoke library. These programs are spawned by coked, the coke daemon, which is at the top of the food chain.

Specific Docs:

Mechanical documentation -- docs on the mechanical aspects of the Coke machine.

Hardware documentation -- controller board and external board docs and interface specs.

Firmware documentation -- CokeOS v3 and support module source and interface specs.

Libcoke documentation -- how to write your own programs for the Coke machine.

Software documentation -- coked and support module source.


A list of things you should be aware of when working with this stuff.


All this stuff is maintained (for the time being) by Bret Victor. If something's wrong, send me mail: bret@ugcs.caltech.edu