Smartibot Programming

Smartibot A.I. bot stands in front of a laptop with the Smartibot IDE open.

Smartibot is programmed using a platform called Espruino which was created by Gordon Williams. It offers two ways of programming your Smartibot; using written code in JavaScript or visually using a Scratch-like blocks editor. An Espruino configuration optimised for Smartibot is available here. Check out the Guided Tour to see how it works.

Espruino connects to Smartibot over Bluetooth and for this to work you need to be running it in Chrome on a Mac or Windows 10 laptop, or an Android device. You can also program your Smartibot over USB on other platforms by installing the Espruino Chrome extension.

To use Espruino to program your Smartibot you need to update the firmware (apologies about this). To do this:

  1. Download the NRF Toolbox app for iOS or Android
  2. Download the Smartibot Espruino Firmware
  3. Switch on your Smartibot
  4. Put your Smartibot into firmware update mode by holding down the 'A' button and, whist you are doing that rebooting by either pressing and then releasing the 'RESET' button or switching it off and then on again with the switch on the battery box. You can release the 'A' button a few seconds after it has powered back up.
  5. Open up the NRF Toolbox app
  6. Press the 'DFU' button
  7. Press 'Select File' and select the firmware file you had downloaded
  8. Press 'SELECT DEVICE' and select 'DFU Tag' (that's how your Smartibot appears when it is in firmware update mode)
  9. Press 'Upload' - The firmware update should take about 2 minutes and the NRF Toolbox app will tell you when it is done


Programming with JavaScript

You can find reference JavaScript to use the functions on the Smartibot main circuit board and the two extension boards at

Tutorials to show how to use these functions in practice will be available soon.

Programming with Blocks

Clicking on the icon at the bottom centre with </> on it switches to the blocks editor. In the 'Smartibot' section you can find blocks to set the Motor outputs 'M1' to 'M4', Servo outputs 'S1' to 'S10', control the eye LEDs and read the two buttons. Blocks to access the functions on the two extension boards will be available soon as will tutorials on how to use all the blocks.

Sharing and Discussion

If you have any questions or want to show off something you have made with your Smartibot or something you have programmed it to do please post in the Smartibot Subreddit.