starboard is a low-cost, modular, open-source and open-hardware system for operant behavioral experiments. You can control a range of input and output devices for presenting stimuli, detecting responses, and providing food rewards. The current implementation consists of a Beaglebone Black and a custom expansion card. Control software uses a modern, event-driven state machine framework and supports several basic training and test paradigms out of the box. Additional paradigms can be configured by specifying different state transition networks.

hardware

starboard is currently in revision A2B and has been used in the Meliza lab for experiments since summer 2014. Currently the design includes:

A repository with schematics, PCB layouts, and other information needed to construct your own starboard is hosted at melizalab/starboard. You can order PCBs from OSHPark for the cape and the LED breakout.

software

The control software for starboard is decide, an event-driven state-machine framework running on node.js. Responses generate interrupts that trigger transitions between states. All events are logged and propagate to a sockets-based web interface for online monitoring of behavior. The software will support other hardware configurations, allowing you to design custom interfaces for your experimental needs. Training and testing protocols are separate processes that connect to decide over the same sockets-based interface. Libraries are provided to write these protocols in javascript as state machines, but the interface is open and fully documented so that protocols can be implemented in your language of choice.

Beaglebones running decide can be connected to a host computer running an http-based database application, django-decide-host, implemented in the Django framework. Trials are logged to a persistent, centralized database with a REST-based API that can be easily searched by subject, controller, experiment, and many other variables.

The centralized data storage and API provided by decide-host can be used for web-based visualization applications, for example using shiny or d3. For an example, check out decide-shiny.