My name is Joshua Grauman and I live in South Central Los Angeles. I moved to South LA with my family to care for and provide opportunities in a low resource community, especially for children. We have been active in local public schools, running kids camps, youth groups, and after school programs. One program I ran was an after school robotics program. I wanted a low cost robotics system to teach programming and robotics that included visual programming but also showed the correspondence between the visual representation and generated code. The system needed to work well with teaching curriculum, not overwhelming beginning students. I also wanted a system that was reliable, extensible, open, and simple. Not finding a low cost system that met my needs, I began working on my own. After multiple revisions of both hardware and software, I have a working prototype system that meets the following goals:
- Proven technologies for high reliability, configurability, and upgradability - based upon STM32 and mbed
- Beginners to advanced users use single platform - direct correspondence between visual and text programming
- Customizable to every learning environment or hardware setup - pre-built blocks for given sensors/devices
- Adapts well to any teaching curriculum - blocks can be assigned levels so that beginners aren't overwhelmed with all the concepts
- Low cost & easy administration - Raspberry Pi 3 compatibility where images can be cloned
- High reliability - all systems are free from dependence on the internet/cloud
- High speed - all systems run compiled binaries with no emulators or compatibility layers
- Simple for children - color coded board where inputs/outputs are matched to sensors/devices
- Built upon a powerful 32-bit ARM microcontroller with mbed libraries
- Open hardware and software extends easily to many types of sensors and devices
- Fully programmable and controllable wirelessly via Bluetooth
- Customizable Programming and Control Software (add new blocks or controls easily)
- Multi-platform software runs natively on low cost hardware (including Raspberry Pi 3)
- The board supports 6 DC motors, 12 Analog Inputs, 7 Digital I/Os, 4 Additional PWM outputs, 2 Serial Ports, Multiple I2C Devices, SPI, and more
- Wireless programming, reset, and pause are all built in
- All ports are color coded and matched to sensors/devices to make wiring easy
- Fast 100MHz 32-bit ARM processor runs programs directly on hardware for effecient, complex programs
Because the system is built on STM32 and the powerful mbed libraries, the board and software support hardware interrupts, timers, callbacks, serial/I2C/SPI communication, PID loops, string manipulation and more.
Visual Programming Software
The visual programming software is at the heart of the robotics platform. It generates C++ code from visual programming blocks. It allows students to dive into programming robotics systems easily. All the blocks can be modified or new ones added using text based configuration files making it easy to add or extend sensors or devices to the system. Each block is assigned a different "level" so that lessons can be designed to progressively introduce new features and concepts without overwhelming beginning students. The code that is generated is color coded to the visual blocks to see how the visual representation translates into actual code. You can also select blocks to see what code corresponds to those blocks. The software is fully customizable and could be completely reconfigured to even generate other systems' code (such as Arduino). The software supports save/open, import/export, zoom, copy/paste, printing, comments, functions, as well as programming, pausing, reseting, and controlling the board.
Visual Control Software
The Visual Control Software allows a computer to interface to the robotics board over a serial (Bluetooth) connection. It's polished look allows students to visualize various aspects of complex systems, and have the joy of being in complete control of their system (who doesn't love fancy remote controls!). Controls can be set to inputs or outputs, allowing full control and feedback of the board and whatever sensors or systems are connected to it. Like the programming software, the control software is highly configurable using only a text file. You can control almost every aspect of the look and style of each of the buttons and dials, as well as which Bluetooth codes the controls send or are updated by. You can easily create completely new dials and change the position and size of all the controls. Each button or dial can simultaneously display multiple sources of data and can send multiple data inputs as well.