Espruino - Review

Table of contents

RoadTest: Espruino

Author: crosseyejack

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Any Arduino board or any other hobbyist Microcontroller on the market.

What were the biggest problems encountered?: Board not responding.

Detailed Review:

This is more of a "First opinions" review than a full review. My JavaScript skills are in need of a refresher. I will return to this review and give a more detailed review of the JavaScript side of things once I brushed up on my JavaScript.


This is a Bare bones product; in order to use it you will need a micro USB cable and a soldering iron. As this product is targeted more towards JavaScript users the lack of a micro USB cable isn't the end of the world the lack of headers may be an issue for beginners. A separate SKU with pre-soldered headers and a cable might be more convenient for beginners.

When I first connected the board to my Windows 7 machine (64bit SP1) the drivers for the board were not automatically installed. I had to open Device Manager, select the board and trigger a driver install via Windows Update. Once I had done this Windows figured out that it already had the drivers for the board and installed them. I cannot blame this on the board but on Windows but again it could be a trap for young players.

Once the drivers were installed I installed the Web IDE. The Web IDE is a Google Chrome App and for me the installation was as easy as Opening Chrome, going to the Espruino Web IDE Download Page and pressing Install. The Web IDE is Chrome only due to the IDE needing access to the boards Serial Port which is something Firefox cannot do without the need of a 3rd party plug-in.

 

The Web IDE provides a terminal to fire off instant commands, an editor to write programs in JavaScript and a Scratch Like Graphical Designer to quickly get programs running. From a fresh install you are presented with a "Hello World" LED Blinker program.

var  l = false;
setInterval(function() {
  l = !l;
  LED1.write(l);
}, 500);

It’s as simple as a code based Hello World example needs to be, The only problem is make sure you make a note of this example as this is only displayed once after first launch. After that the IDE displays the last piece of code you were working on. The website does contain some tutorials but the only reference to the above code is  on the Flashing Lights Tutorial page and that is how the above code (not displayed) can be condensed to a single line to code to:

 

setInterval("digitalWrite(LED1,l=!l);",500);

 

It would be nice if some simple example code could be easily imported through the IDE, but maybe I've been spoilt by the Arduino IDE. But it is nice to know that I can use some Arduino commands and get up to speed on using the system quicker. For example you can create a simple LED toggle using all 3 on-board LEDS using :-

 

setInterval("l=!l; digitalWrite(LED1,l); digitalWrite(LED2,!l); digitalWrite(LED3,l);",500);

 

The Built-in tutorial will guide you though setting outputs, read inputs and gets you used to writing functions through the terminal.


image

There is only one tutorial built into the Web IDE but there are plenty more on the Espruino Website.

If you are new (or like me rusty) on JavaScript the Graphical Designer is perfect to get started. But the Graphical Designer isn't just for beginners but powerful enough to get a fast prototype yup and running without having to worry too much about typos.

One of the great things you can do is design parts (or all) of you program in the Graphical Designer, send the code to the Espruino and then run the dump() function to see the code that is actually running on the micro. Below is a simple program that will set LED1 High for one second when you press the onboard button.


image

But you can also use multiple blocks to get the job done.


image

I tried connecting a BlueTooth module to this but the module I got turned out to be a dud. But soldering the module to the board was straight forward. There is a footprint on the underside of the board for the common HC-05 Bluetooth module, these are cheaply available and when you power the device from an non USB data power source (such as using a USB Charger) the micro controller will use UART1 for its communication. As the module I received was a dud and I am still waiting on a replacement I mimicked this module by soldering on a USB Serial Convertor and sure enough you can program this board using UART1 if there isn't a USB host device detected on the USB port.

 

But the real power comes from using the JavaScript interpreter. My JavaScript Skills are a little too rusty at the moment do give this justice. Once I have brushed up on my JavaScript I will return to this and give a more detailed review of the JavaScript side of the platform.


Issues I've had with the product so far:-

While I have had a couple of issues none of them have been world ending. As I said above the drivers didn't "Auto" install for me on first plug in. I had to manually kick Windows into action, but once I had done this Windows started to play ball. But I cannot blame this on the board. To try and recreate this issue I uninstalled the drivers for the board and rebooted the machine, this time I didn’t let Windows try and auto install the drivers but downloaded and installed the driver provided by ST pointed to by the quick start page. The installer did its job and happily installed the driver and device manager assigned it to the board and gave me a comm port to use with the device, so if Windows plays up for you just run the installer and everything should be good to go.

The other interesting issue I had with the board is that is stopped responding to me a couple of times. The board would be seen by the computer as a comm port and I could connect to the comm port via the Web IDE and via a terminal program but I wouldn’t get any response from the board. But putting the board into its bootloader mode and re-flashing the Espruino firmware to it got the board responding once again. Looking at this as a positive the bootloader on the ST Micro makes it very hard to brick this device. If you do something wrong and end up messing up the serial comm’s, no worries just re-flash the firmware onto the micro and away you go again. A note on flashing the firmware, when flashing the firmware will also wipe any program you have saved on the micro.


Product Performed to Expectations:
I’ve got to say that the product out performed my expectations. “Does exactly what it says on the tin” springs to mind. If you know JavaScript this is a perfect product to get you programming for the physical world instead of for websites. If you don't know JavaScript the Block Style Programming will have you up and running in no time


Specifications were sufficient to design with:
The specs of the board and the firmware are just fine, it’s a bit of a pain to plug into a breadboard to prototype with but then again it’s not like you can take an Arduino Uno and plug that into a breadboard without some jumpers. Mounting the device in a case will cause some head scratching but nothing that cannot be worked around (They say duct tape can fix anything, but in this case I think I would go with some double sided tape instead).


Demo Software was of good quality:
You have 2 choices when it comes to interfacing with the Espruino, Using a terminal application (Whatever comm port it is using and a Baud speed of 9600) or using the Web IDE though Chrome. The Web IDE is easy enough for beginners to use either the built-in terminal or Graphical Designer, but if you don’t wish to use Chrome then connecting via your preferred terminal application is a snap. Personally I’ve found myself writing code in Sublime Text and just copying and pasting my code over a terminal application.


Demo was easy to use:
The “Hello World” code and tutorial provided with in the Web IDE are cleanly laid out and easy to understand. The tutorial holds your hand though setting outputs, reading inputs creating functions and trying them all together, more in-depth information is clearly laid out on the Espruino Website.


Support materials were available:
There are plenty of support documents available on the Espruino website. There is a good supply of code examples and libraries for a number of common components and the peripherals on the device are well documented in the software reference.


The price to performance ratio:
While the price of £25 is still reasonable price point I too have to bring up what lucie tozer states and that for £10 more you can pick up a Beaglebone Black which is a more powerful platform. Before playing with the Espruino I probably would have spent the extra on the Beaglebone, but now I have had the chance to play around with it I can say that I would happily purchase another. But if the price point is an issue for you to try out the platform than the Espruino firmware can also run on other boards such as the low cost STM32 VL Discovery. All of which is documented on the website.

All in all I am very pleased with the board and glad I got the chance to try it out. I will definitely be keeping it on hand to a) re-learn my JavaScript skills and use them in a micro controller sense 2) use as a quick prototyping tool. I would like to thank both Element14 and Espruino for giving me the chance to test out this platform.

Anonymous