Instructables

Scratching with Arduino

Picture of Scratching with Arduino
MIT has developed a fantastic visual programming language called Scratch. It is also an amazing learning tool for children, because it is simple, cute,  and by providing interaction with the real world by a board called “Scratch Sensor Board”.

This Instructable shows the development of a shield for Arduino that can interact with Scratch and replicates the functions of the “Scratch Sensor Board

Note: The present shield constitutes a so called 'derivative' from "Scratch Sensor Board", whose license can be found here. Further information about the original board can be found here

For the Impatient:

Final Arduino Sketch is here
Printed Circuito Board is here (eagle)
Schematics are here (pdf / eagle)
 
Remove these adsRemove these ads by Signing Up

Step 1: Preparing Ground

The first thing to do is read the documentation (here) to find how do the Sensor Board interacts with Scratch.

After some time reading we found that the Sensor Board communication occurs via RS-232 at a speed of 38400 baud. It is good, because Arduino already have a Serial Port which means less circuits to implement.

The protocol between Scratch and Sensor Board constitutes of a ping pong mechanism. First Scratch application send a a data byte to the board then the board replies with sensor data. Nice.

The request packet is simply a byte with the value 0x01, whilst the sensor data consists of 9 high byte / low byte pairs (i.e. 18 bytes) spaced in time by  a 400us interval.

The  high byte / low byte pairs contains a 4 bit channel ID and a 10 bit Value. This is good, because if suits well with Arduino ADCs resolution.

For the Scratch Board Release 1 firmware and Scratch release 1.1 and later, the mapping between channel ID and sensor type is given below:

Channel / Sensor
0 / Resistance D
1 / Resistance C
2 / Resistance B
3 / button
4 / Resistance A
5 / Light
6 / Sound
7 / Slider
8-14 / Not Used
15 / Firmware ID (0x04)

From the 16 possible channels we have 7 analog, 1 discrete (on/off), 1 dummy (firmware-id) and 7 spare (not used now; maybe in a future version).
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!