Scratch Board Technical Information
About This Document
This document provides information regarding the technical aspects of how a Scratch
Sensor Board can communicate with a Scratch computer program. (For background
information about the Scratch Sensor Board, see
http://scratch.wik.is/Support/Scratch_Board.) You may find information in this document
useful for building your own, modified versions of Scratch Sensor Boards.
We are publicly releasing this technical information for educational purposes and to
support innovation. If you create new designs and/or hardware using the information in
this document, we require that you abide by the Scratch Sensor Board license – available
at: http://scratch.mit.edu/files/scratchboard/ScratchBoardLicense.txt.
The ideas that the license describes in detail are essentially:
- the phrase "Scratch Sensor Board" shall not be used to refer to Derivative Works (New
Board – compatible with Scratch is acceptable),
- any Derivative Work based on this documentation shall be made readily available to the
public, ideally on a public web site, free of charge and include the Scratch Board License.
Anything specified in the license applies to all unless you receive written permission
from the Scratch Board Team at the MIT Media Lab (email: scratchboard [at]
media.mit.edu) stating otherwise. (Direct any inquiries about fee-based distribution of
Boards compatible with Scratch to the aforementioned email address.)
Scratch Board Serial Communication Protocol
The Scratch Sensor Board allows inputs from real-world sensors such as switches,
sliders, light, or sound to control Scratch programs. It does this by converting sensor
inputs into numbers and communicating them to a computer running Scratch over a serial
data connection.
Communication is via RS-232 protocol at 38.4k baud. Each Scratch Board ships with a
USB-to-serial cable. The Board is a serial device that can communicate with standard
serial ports or other USB-to-serial cables. In most cases, the Scratch software
automatically detects which COM port that the Scratch Board is plugged into when a
Scratch project using sensor value blocks is run (recognition can take from 1.5 seconds to
a few seconds in rare cases). One of the serial port pins provides enough current to power
a Scratch Board (but not an additional load).
Polling: Scratch sends a “1” data byte (i.e. 0x01 not the ASCII character “1”) out
communications port, the Scratch Board responds by sending the sensor data encoded in
an 18 byte packet, with ~ 400 uSec delay between bytes in the packet. The packet
consists of 9 high byte / low byte pairs. Scratch checks to make sure that it receives a
complete 18 byte packet in response to each poll request and will ignore data that is not
part of a well formed packet.