logo

Motivation | Specification | Debugging | Applications | Github

JACDAC (Joint Asynchronous Communications; Device Agnostic Control) is a single wire broadcast protocol for the plug and play of microcontrollers (MCUs) within the contexts of rapid prototyping, making, and physical computing.

A number of applications have already been created using JACDAC.

Motivation

Widely used and highly efficient, I2C and SPI are the wired protocols of choice when connecting onboard sensors to microcontrollers. Since these protocols are supported as standard by many microcontrollers, they are also the defacto way of connecting external peripheral boards to microcontrollers. Wiring peripheral boards correctly is difficult for novice users and once wired, the configuration of the system is static and does not support plug and play.

With the wide-adoption of web technologies and the huge growth in the Internet of Things (IoT), the worlds of the feature rich and highly capable modern microcontroller and the Web should be closer together, yet they are not.

JACDAC is a dynamic plug and play serial protocol allowing the configuration of systems at runtime. It runs over a single wire allowing a variety of connectors (such as the 3.5mm audio jack) to be used, simplifying connections between devices. Finally, WebUSB and TypeScript extends the JACDAC bus to the web browser (and the Internet), enabling the development of services and the debugging of the JACDAC bus directly from the Web browser, reducing the gap between the Web and the microcontroller.

Specification

JACDAC operates in a bus topology and requires devices have a microcontroller with UART, Timer, and GPIO interrupt capabilities.

Each JACDAC device has a simple stack featuring: (1) a physical layer handling the transmission and reception of packets; (2) a control layer which performs the routing of packets; to (3) services running on the device.

picture of JACDAC devices in bus topology

Read the full protocol specification.

Community

We are still in the process of setting up a community area for JACDAC discussions, but for now please feel free to file issues with questions on the Github respository for this site.

Debugging

To debug the JACDAC bus, connect your JACDAC enabled microcontroller to your computer and go to the debug page.

Don’t have a JACDAC enabled microcontroller? See the getting started page.

Applications

Fashion

JACDAC was the technology used to network microcontrollers together at the BKLYN Fashion Academy this year (2019).

Read more about it here, or watch the video below:

Gaming

Physical Computing

"Meow Meow Chain" (4 meow meows), thanks to JACDAC c.c: @pelikhan @MSMakeCode pic.twitter.com/SZRVprkhg9

— 🛰️ Sabas.uf2🚀 @ The Inventors House (@Sabasacustico) December 27, 2018



JACDAC was conceptualised by James Devine and Michal Moskal