S4A is a Scratch modification that allows for simple programming of the Arduino open source hardware platform. It provides new blocks for managing sensors and actuators connected to Arduino. There is also a sensors report board similar to the PicoBoard one.
The main aim of the project is attracting people to the programming world. The goal is also to provide a high level interface to Arduino programmers with functionalities such as interacting with a set of boards through user events.
An S4A program to control a light-sensor Theremin, with record and playback capabilities
Arduino objects offer blocks for the basic microcontroller functionalities, analog and digital writes and reads, and also for higher level ones. You can find blocks to manage standard and continuous rotation servomotors:
In S4A, an Arduino board is represented by a special kind of sprite. The Arduino sprite will automatically find the usb port where the board is connected.
It is possible to connect to multiple boards at the same time by just adding a new Arduino sprite.
S4A works with Arduino Diecimila, Duemilanove and Uno. Other boards haven't been tested, but they may also work.
Components have to be connected in a particular way. S4A allows for 6 analog inputs (analog pins), 2 digital inputs (digital pins 2 and 3), 3 analog outputs (digital pins 5, 6 and 9), 3 digital outputs (pins 10, 11 and 13) and 4 special outputs to connect Parallax continuous rotation servomotors (digital pins 4, 7, 8 and 12).
You can manage a board wirelessly by attaching an RF module to it, such as Xbee.
S4A allows you to control as many boards as USB ports you have.
Take in account that this compatibility doesn't work both ways, so you won't be able to open an S4A project from within the original Scratch.
Using a PicoBoard along with an Arduino board is also supported.
S4A interacts with Arduino by sending the actuator states and receiving sensor states every 75 ms, therefore the pulse width needs to be greater than this time period. The data exchange follows the PicoBoard protocol and needs a specific program (firmware) to be installed in the board. Please refer to the Downloads section for further instructions on how to do so.
Documentation and Examples
Here you'll find all the documentation, videos, examples and exercices we have created.
A zip file with complete materials and exercices for a workshop can be downloaded here:
Some of the following demos are in Catalan or Spanish, but the images pretty much speak for themselves. Some of the videos have English subtitles as well.
A robot with a rotative camera, distance sensors and a remote control. It uses two arduino boards (remote control + robot), an XBee wireless module, three IR sensors, a camera module and three servomotors.
S4A Workshop Introduction
This video serves as an introduction for the S4A workshops given at Citilab, but you'll find a couple of demos of what can be achieved with our software.
We have developed a simple Android application that can communicate with S4A through HTTP by means of the remote sensors protocol in Scratch. You can download it here or by scanning the QR code below:
To use it, follow the instructions below:
In S4A, enable remote sensors (right click on any "Sensors" block)
In HiS4A (Android), type the local network IP of the PC where S4A is running (you can find that out through Edit > Show IP address), plus the prefix (only needed if you are connecting from more than one Android client)
The buttons correspond to messages and the touchpad and slider to remote sensors
IMPORTANT! Both S4A as HiS4A must be connected to the same local network!
The Android application uses a very simple protocol we developed on top of the Scratch HTTP message protocol, so it is also possible to interact to S4A from a browser or any other network enabled application.
You will first need to enable the remote sensors option in S4A (right click on any "Sensors" block).
Broadcast a message: http://[IP]:42001/broadcast=[message-name]
Send the value of a remote sensor (for instance, the client's accelerometer, mouse position, etc): http://[IP]:42001/sensor-update=[sensor-name]=[value]
Update an S4A variable: http://[IP]:42001/vars-update=[variable-name]=[value]
Test web application
If you want to see the HTTP API in action, you can do so from our test webapp:
Connect your Arduino board to a USB port in your computer
Open the firmware file (S4AFirmware15.ino) from the Arduino environment
In the Tools menu, select the board version and the serial port where the board is connected
Load the firmware into your board through Tools > Upload
S4A is free software distributed under an MIT license.
Since Scratch is actually a Squeak Smalltalk image, all of its code is actually shipped with the final user version itself. To access it, just shift + left click on the S4A "File" menu and select "Exit User Mode". You're now in front of a classic Squeak 2.8 image, and have access to a Browser, Workspace and all tools you're used to.
However, in the final user version some code has been compiled and you'll be missing several variable and message argument names, which is why we are also providing you with a clean source code image for developers, downloadable here:
In fact, our "firmware" is just like any other Arduino sketch, so there is no risk at all. Of course, you can upload other sketches to the board and then upload the S4A firmware again when needed.
Can the S4A programs be pushed into the Arduino board?
There is currently no way to compile code into Arduino binaries. It must be said that S4A was conceived as an improvement of the older versions of Scratch (the ones that were developed in Smalltalk), to make learning how to program real-world objects easier to everyone, specially to children, by dealing with these real objects in the same way they'd deal with Scratch "normal objects", so they can interact between them. In other words, it was not made to program the board directly, but to help learn programming and electronics at the same time.
Still, if what you want is to just get rid of the USB cable, we recommend you use a wireless device like XBee.
Can I change the pinout configuration?
Unfortunately, no. Pin configuration is hardcoded both in the firmware and in the source code of S4A, and the way S4A is made does not allow to change source code "on the fly". So, until we find a better way or enhance the communication protocol between the board and the program, the only way to customize the pinout is by changing both S4A source code and the firmware. There is a Spanish unofficial guide available here (thanks to Borja Pérez).
Which boards does S4A support?
S4A works with Arduino Diecimila, Duemilanove and Uno. Other boards haven't been tested, but they may also work.
Will S4A work on my PC?
S4A works on the three major consumer operating systems: Microsoft Windows, GNU/Linux and MacOS. So yes, it will most probably work on your PC.
I can't install it on 64-bit Ubuntu/Debian
The Debian version of S4A is packaged only for i386 systems. To get it working in a 64-bit version, you need to follow the following steps (in a terminal, as root):
Fist of all, enable i386 packages and install ia32-libs
Since MacOS 10.8 (Mountain Lion), Gatekeeper is set up by default to allow downloaded applications only from "Mac App Store and identified developers". To install S4A, you'll need to change this option to "Anywhere".
I've connected the board and S4A does not detect it
Make sure you have uploaded the latest S4A firmware to the board before starting S4A. To do this you'll need the official Arduino IDE.
Please follow the instructions on the Downloads section in this website.
Been there, done that. Board still not detected
This is a common known issue in Windows operating systems. Try stopping the connection with the board (right-click on sensor board in S4A), unplugging the USB cable, plugging it again and restarting the connection. If the program still does not detect the board, there may be a conflicting serial COM port causing S4A to hang when trying to open it. To avoid this, try opening it directly (right-click on sensor board and select serial port) or changing the assigned Arduino COM port through the Windows Device Manager. For more help on this issue, please visit this guide.
S4A has been developed at Citilab by the Edutec Research Group, with the help of the Smalltalk.cat programming group and of collaborators like Jorge Gómez, who leads the hardware and software educational
project at Miscela.
Marina Conde got her bachelor degree in Computer Science in the Technical University of Catalonia (UPC) in 2009, and graduated as a Computer Engineer in 2012 in the same university.
While working at Citilab, she developed her first final thesis, which consisted in building a framework to work with Arduino boards from within the Pharo Smalltalk environment. Later on, she used this project as the basis on which S4A was written.
Víctor chose to study Computer Science in the Autonomous University of Barcelona (UAB), but after two years he switched to the Castelldefels School of Technology (EPSC) to course the technical degree on telecommunications.
While there, he had the opportunity to enter Citilab through an internship, where he later developed S4A, his final thesis.
Joan is a biologist who, in his early years, worked in the field of ecology. The need to analyze the generated information and collected data drove his approach to computing. He enrolled to his first programming course in 1975, when computers where still programmed by means of punch cards.
His main work in Citilab has been related to the field of training in two areas: teaching programming with Scratch, especially to children, and teaching computer skills to early adult citizens.
Jose studied advanced telecommunications engineering, but started working at a publishing firm before completing his degree. During his time at the company, he worked on programming a wide variety of applications.
At Citilab, he discovered Scratch and Smalltalk, taking up part of his programming work again. Later on, he joined different projects that aim to establish closer contact between users and programming. He currently leads the Technological Education Research team Edutec.
In 2009, Bernat graduated as a technical engineer in Computer Science at the Open University of Catalonia (UOC). He learned Smalltalk at a course given by Jordi Delgado at Citilab in 2008, where he was later hired to build an online programming school.
Since then, he's been involved in several programming projects in Citilab, including a social knowledge management system and different educational applications.
Jordi is an associate professor at the Software Departament of the Technical University of Catalonia (Universitat Politècnica de Catalunya). He belongs to the research group LARCA and teaches at the Barcelona School of Informatics.
He spends most of his time divulging, spreading the word of and programming in Smalltalk, an amazing programming language that, you know, everyone should be using. He is a member of the board of the European Smalltalk Users Group (ESUG) and he leads the Smalltalk.cat local group.
For any questions and answers, please use the community support mail list. You can subscribe by sending an email to: