RBX (Robotics Brick Extension) is a robotics kit designed for young tinkerers. It consists of a set of Lego-compatible "bricks" made with common Arduino components, such as LED, pushbutton, servo, motor etc. The brick housings are printed using a 3D printer. The RBX bricks are hooked up to a microcontroller via standardized "ports". Programming is done via a variant of Javascript on a browser-based IDE.
Target audience
The target audience is 8-12 year old children who need something between the simplicity of block-based programming environment such as Lego Mindstorm, and a full-blown IDE such as Arduino or PlatformIO. Not only is Javascript the de-facto scripting language, it also eliminates the long compile-run cycle, which is more suited for experimentation with impatient young minds.
Making hardware accessible
One of the first obstacles for a young student trying to break into microcontroller programming is hooking up the desired circuitry on a breadboard. Anything beyond the the introductory "Hello World" LED example requires a ton of wiring, which is quite a lot to ask for a young child. When servos or motors are involved, a separate power rail is required, which makes things even more complicated.
RBX uses various JST connectors to connect to the microcontroller. These are called "ports", which maps to the microcontroller pins. The ports come in 2, 3 and 4-pin variety, and each port has a unique identifier, Other connectors are used for providing power to motors or servos. In this way, hooking up components becomes a plug-and-play affair. Since the connectors need to be matching and oriented correctly, this makes it less likely for components to be hooked up the wrong way.
Microntroller
For the microcontroller, the ESP32 is chosen. It is incredibly powerful, and comes with built-in WIFI and bluetooth. The development board is also very affordable, available for only a few dollars online. It has a 2-core processor, and has enough RAM and flash storage to run a Javascript interpreter. It also has many pins available, which lets the microcontroller connect to many components simultaneously.
Programming made easy
For the JavaScript interpreter, Duktape was ported to the ESP32. Duktape has very low resource and memory requirement, which makes it particularly suited for a microcontroller.
The classic LED blinker that every Arduino newbie starts with looks like this:
var led = new Led(PORT_2A);
while(true) {
led.setState(true); delay(1000);
led.setState(false); delay(1000);
}
A browser-based IDE is served directly from the microcontroller, using Ace as the code editor. Once the microcontroller is powered on, the user is able to connect via a web browser and start entering and running JavaScript code immediately. Code can be saved to the flash storage on the ESP32 and retrieved later.
Conclusion
In summary, RBX is relatively cheap to make, yet it is far more versatile than most of the pre-built electronic/robotic kits on the market. A young maker can get up to speed with the kit very quickly. As more experience is accumulated, he/she can delve into each of the "bricks" to see what makes them tick, or even make them from scratch.
On the software side, although we start with JavaScript, it is quite easy to switch to Arduino for more complex projects. At the root of RBX is an Arduino library, which is pretty straightforward to engage with directly for a more experienced Arduino programmer.