OSCON 2014 H/W Showcase

We show how federating wiki enables a new paradigm for instrument control, data collection, interpretation and open publication. Txtzyme provides a model for programmable instrumentation with client and server-side plugins supporting it.

Teensy USB Development Board website

See 22 Things Txtzyme Websocket Plugins for a screencast of this demo.

See OSCON H/W Demo for the event invitation and my proposal that followed.

Hardware

We use the Teensy 2.0 and Teensy 2.0++ USB Development Boards available from PJRC. webpage

The Teensy uses an 8-bit Atmel AVR with on-chip USB support. This is superior to Arduino because the serial communication over USB is intrinsically flow-controlled.

Txtzyme is a small interpreter written in C++ building on example code distributed by PJRC. webpage

The interpreter's instruction dispatching consists of a single switch statement decoding 30 one-letter commands in 100 lines of code. github

Txtzyme exposes resources of the microcontroller without committing the flash memory to any specific application. The Txtzyme v command reports what version of AVR is executing the interpreter. See Txtzyme Plugin

Server

Piezoelectric speaker response as captured on a digital sampling oscilloscope.

The federated wiki server delivers json formatted wiki pages and accepts incremental edits from the sole owner of the site. See JSON Schema

The node.js implementation supports plugins with server-side components that may share javascript with their client-side partners. See Plugin Lifecycle

The Txtzyme server-side plugin waits for websocket connects from any number of clients then provides a duplex stream relay between microcontroller and web browser. github

Client

The federated wiki single-web-page application fetches json formatted wiki pages as cross-origin resources (CORS). Each paragraph specifies the type of markup used by that paragraph. See About Txtzyme Plugin

The markup distinguishes upper-case words to be evaluated by the client and the remaining text to be forwarded through the server to the hardware's Txtzyme interpreter.

The first word on a line identifies an event. The remaining words and characters describe how to handle that event. For example, FOO signals the event FOO, while FOO/43 signals FOO with the parameter 43.

Applications

David Turnbull shows radio prototype at DorkbotPDX, May 2012.

Hardware instrumentation and control applications are as diverse as wiki itself. We take special interest where collaborative and/or social development can bring unique value to an endeavor.

At OSCON we will be showing Teensy/Txtzyme as a stand-in for real-time, low-latency, programmable control of hardware resources. See More Txtzyme Examples

Devices gain much of their value from the software that defines them. See Software Defined Radio

Small, inexpensive or remote applications benefit from the simplicity of serving json. See Wikiduino

Communities working with large datasets or specialized research codes can benefit from the share-as-we-go wiki methodology. See Wiki Research Laboratory

This work was founded to provide open-data addressing the information needs of a sustainable supply chain and with full recognition of the cross-purposes that often confound such sharing. See The Science of Sustainable Supply Chains

We bring wiki and data together. We show a complete path from instrumentation to visualization. But more importantly, we show how this can support a loose federation of interests not easily supported by any other web technology. See Chorus of Voices