Short Project Description

Short Project Description

The concept of graphical programming enables teenagers and even younger children with creative access to computers. Scratch, a project of the Lifelong Kindergarten Group at the MIT Media Lab, provides not only the tool, but creates also a very inspiring environment for children, teachers and parents alike.
But sometimes creativity goes beyond creating "only" a program - physical interaction, tangible results become essential.

On the other hand, the Arduino project is quite famous and I'm impressed how well documented these microcontroller boards are, how easy they are to come by and how many slightly modified clones are around - all of them (Arduinos and clones) with a reasonable price tag. So it seems a good idea bringing Scratch and Arduino together.

This blog describes the advances step by step of setting up a robot controlled by an Arduino and easily programmed through a graphical enviroment. This project might be interesting to hobbyists, teachers, educators and parents (like me).

To allow for a maximum of creativity and flexibility the robot will use LEGO Technic / Education as the mechanical robotics platform.

Sunday, 15 September 2013

Graphical Programming the Arduino

Browsing the internet you'll find several possibilities using Scratch or programming environments following similar approaches to interface microcontrollers.
This list makes no claim to be complete - I would be very happy finding out more possibilites...

Scratch and BYOB/Snap!

All Scratch versions and BYOB/Snap! do not program the Arduino directly but use it as a sensor and control extension. This is realised with a kind of "listener" program that has to be downloaded to the Arduino; the computer running Scratch controls the remotely connected Arduino through a permanent connection. Thus a standalone operation of the Arduino is not possible with Scratch or BYOB/Snap!.


Scratch 2.0

Scratch 2.0 can be extendend as described in and . This project was recently updated from a CodeShield extension to a direct Arduino extension (both codes can be found on this github repository) and Alan Yorinks has done an amazing job - not to forget the excellent documentation.
The described concept using an Arduino JSON client presents in my opinion a very clean approach, as well as the rest of the employed software stack. 



BYOB/Snap! implements interesting programming concepts and adopts the underlying principles of Scratch at the same time; it seems to support older learners (14-20) by adding named procedures (thus recursion), procedures as data (thus higher order functions) structured lists, and sprites as first class objects with inheritance.
To my knowledge interfaching with the Arduino platform is not directly supported, whereas at least some extensions exist (e.g. LEGO NXT, Parallax S2) which should allow to create a connection to the Arduino world with reasonable effort.


S4A - Scratch for Arduino

S4A was developped to use the built in PicoBoard protocol of Scratch 1.4. It seems it comes as a kind of "turnkey" solution for controlling an Arduino with Scratch. The available output and input channels as well as their assigned purpose (motors, servos, sensors) might be regarded as a slight disadvantage. IMHO this is more than compensated through the available workshop materials providing an easy access to the use and control of Arduino's possibilities. For my impression a good starting point.


Minibloq is designed to provide a graphical programming environment for physical computing and robots. From my opinion the approach is not as stringent as it is implemented in Scratch, but it shows graphical programming and conventional text based program code in parallel, and hence might facilitate the transition.
Minibloq is a sister project of Multiplo, an open source physical computing / robotics platform. 


Modkit seems not to be a public available programming tool as it requires a 50$/year membership with the "Alpha Club". From the impression you get from the website, it might be worth the invest....


The concept of ArduBlock seems to enable the programmer creating sketches through graphical elements, thus provides the possibillity for standalone Arduino operation.
On first sight it allows to lower the hurdle for unexperiences programmers in directly accessing all features of the Arduino. Probably not my first choice for my son, but I will surely follow the evolution of this project as it might present a second or third step towards "normal" (text based) programming.

No comments:

Post a comment