The Problem

Let’s say you need a good camera and a screen for a robot you’re making. The traditional way is a raspberry pi (around 70 USD) with a CSI camera ($25 for v3) and an official display ($40 at least).

The scrappy way is to use a phone. If you don’t have an old phone, you can find one on the used marked for less than just a pi.

But phones

  1. Run android, which is not really designed for embedded applications
  2. Make it increasingly difficult to develop for with every generation
  3. Come with non-unlockable bootloaders now

What Backbone Is

It’s an app that you can install on any Android 5+ device, allow it access to the hardware, set it as the launcher and forget about.

Instead of developing for Android, you get this JS API:

backbone.startup(
    url: string,
    fullscreen: boolean,
    shellCommand: string,
    delay: number,
)

These are the app settings:

backbone.central(deviceNames: string[]) // run as BLE central
backbone.peripheral(deviceName: string) // run as BLE peripheral
backbone.send(message: string, device?: string) // send a message over BLE
backbone.onmessage: (message: string, device: string) => void

Peripherals can only send to central, so the device is optional for them.

This doc also has a print version.