• The robots are coming!

    Ben Pirt11/02/2015 at 13:56 1 comment

    All of the pieces finally came together and over the weekend I shipped out the first batch of kits to the Early Access Kickstarter backers.

    and here's a look inside the box - instruction manual and all!

  • Making Progress

    Ben Pirt08/13/2015 at 12:27 0 comments

    Things are moving along nicely! I just sent out 10 early version of the v2 Mirobot to some volunteer beta testers to make sure everything is working well - here's how they're looking:

    I'm really happy with how all of the pieces fit in. I'm having some custom boxes made but these ones are DIY on the laser cutter. Although this 10 were hand made, I've also made good progress having the PCBs assembled in volume:

    In case you're interested in seeing how Mirobot goes together in more detail, here's the instructions for the latest version that just went online

  • ESP8266 Firmware Development

    Ben Pirt07/14/2015 at 09:52 0 comments

    It's been great switching to a WiFi module where I actually have a good degree of control over the firmware it runs. I've spent quite a bit of time over the past couple of weeks building the firmware management system for Mirobot and it's now at a point I'm pretty pleased with. I've taken the following approach:

    • Check for a new release on GitHub releases
    • Update the flash by making a POST request to the relevant HTTP endpoint
    • I then read back the flash in that segment and compare it to make sure it's written properly
    • I then do another POST request with a GET parameter present which does the actual switch to the new firmware or flashes the Arduino

    The nice thing is that most of the logic is running in Javascript in the browser which means I can keep the firmware simpler. I'm running a custom bootloader (rboot) that someone in the community developed which lets me allocate a couple of large slots for the main firmware, one for the UI web pages and one for the Arduino firmware.

    The other thing I'm pretty happy with is that it runs a captive portal so when you join the built-in network it routes all DNS requests to itself which makes a modern OS pop up a window with the control UI in it so you can configure the WIFi easily. It also means you can just open any web address in your browser and you'll get the Mirobot control interface. Much easier than trying to explain IP addresses to 7 year olds! I'm also hoping to add in support for Zeroconf to make it even easier to find.

  • June Update

    Ben Pirt06/16/2015 at 16:04 0 comments


    I've sent off for the next version of the PCB. Not a lot has changed on it, except a move to a slightly different WiFi module. It's still ESP8266 based, but this time it's the ESP-12. The main reason for this is because this module has been certified for FCC, which means I'll have an easier time selling Mirobot. This is also a surface mount component, but since the boards are coming pre-assembled this isn't an issue.

    You'll also see a Sparkfun credit for the Arduino Pro Mini on there, thanks go to Ben Gray (Phenoptix / MeArm) for leading a good example.

    One nice addition I've made is that it will be possible to reflash the ESP WiFi module using a serial adaptor if you want to really customise it (or for some reason it needs rescuing). Normal firmware updates will be over WiFi of course!

    Pen Holder

    The Pen holder mechanism has remained unchanged since pretty much the first iteration of Mirobot and I've always wanted to improve it. It was always a bit fiddly to assemble, a bit wobbly once it was assembled and kids often had issues with the small screwdriver required to put it together. Here's a photo showing old (left) vs. new (right)

    There's now a central piece slotted through the main pen arm which provides more stability. This design has also allowed me to have the screw heads flush, which means I've been able to eliminate the need for any tools to assemble Mirobot. Instead of using a slotted screw head, I'm now using a hexagonal head and providing a simple and easy-to-use tool cut from MDF - you can see this to the right of the previous image, but here's another shot:

    This is particularly useful in schools because if you're building 10 robots, they now don't need to find 10 screwdrivers and gather them all back in! I've also added a small slot in the chassis which will hold it safe when you're not using it.

    It could be a little tricky to get the pen arm perfectly adjusted in V1 units, so I've also included a small jig which helps you get everything aligned perfectly before putting the arm in to the main chassis.


    I've modified the previous packaging but kept the principle the same. There are a few improvements that will benefit me in production this time:

    • All parts are now seated in the layers of the MDF. Besides protecting them in transit, it means there's no step needed to sort into bags
    • It's about 20% lighter. The last version weighed in at about 550g, which meant that for certain countries it fell into a higher price bracket. This version is more shipping-friendly
    • There's an internal box (see the next photo). This will then be wrapped in a more attractive slip case. When it's shipped, there will be another layer of packaging which will mean that if you order one as a gift you're safe to remove the packaging and re-wrap it. There are a couple of other optimisations over V1 that will make it much easier to pack.

    What's next?

    The design for manufacture is pretty much done now. I still need to test the latest version of the PCB when it arrives from China, but now I'm starting to build the relationships with the various manufacturing partners I'm going to be using for production.

    Full steam ahead!

  • Custom ESP8266 Firmware

    Ben Pirt04/28/2015 at 11:21 2 comments

    I love this chip! Being able to write custom firmware that runs on the WiFi module has opened up a lot of opportunities for improving the whole user experience for Mirobot. I thought I'd write up a few more details about what I'm doing on the module because I think it would be pretty useful for lots of projects, not just this one. At the moment I'm using the basic ESP-01 module:

    I chose this version because besides being the most widely available, it's also easy to plug straight into the board, rather than needing surface mount soldering.

    At the moment, it's running a web server and a WebSocket server which means you can use the built in web pages to control an Arduino from your browser via WebSockets, which is what I'm doing with Mirobot and it's working great. It means your control app is self-contained and will run in any browser because it's just static Javascript.

    You can check out the code from my GitGub repository and then build it using ESP-Open_SDK. If you want to modify the web pages, just replace the files in the "html" folder and run "make flashall" again to flash it to the module. There's also code in there to let you upgrade the web pages over http.

    One of the other things I'm quite pleased about is that it can reflash an attached Arduino if you connect up GPIO0 to the Arduino reset pin. It can talk the STK500 Arduino bootloader protocol, which means that you're able to drag and drop an Arduino firmware file onto a web page and it will flash the Arduino over WiFi. I've coded it so that this happens in two steps; first it caches the binary file in the WiFi module flash and then it sends it across to the Arduino. Works a treat.

    There are a bunch of other things I'd like to add to this code, including a captive portal for when you're configuring it and Zeroconf so you don't need to use IP addresses and what's great is that because this chip has such a growing open source following, people are already working on things like this.

    Take a look at the code and have a play around if you're interested! If you want to play around with it in a robot, then take a look at the Mirobot Kickstarter!

  • Kickstarter and Maker Faire

    Ben Pirt04/27/2015 at 13:50 0 comments

    It's been a busy week for Mirobot - on Tuesday I launched the latest version on Kickstarter then spent that evening demoing it at the London IoT Meetup (which is well worth a visit if you're in town).

    On Friday night I headed up to Newcastle to show Mirobot at Maker Faire UK. As usual, it was a great event. Well organised and well attended. Lots of interesting maker things to see and do (CNC plasma cutter anyone?). Mirobot was well received and I set it up so that it would draw a star pattern over and over which ended up reminding a lot of people of the Spirograph of their youth.

    It's always hard getting your head into doing development work whilst running a kickstarter - too much time spent obsessing over Twitter and Kicktraq to concentrate, but I'm going to spend some time working on the new packaging design and a few code features like support for arcs and maybe a accelerometer controller app. Should be fun :-)

  • The latest version

    Ben Pirt04/21/2015 at 09:36 1 comment

    I've made a bunch of changes to Mirobot recently that solve all of the issues that I've collected from the people using it over the last year.

    It's a complete redesign of the chassis which solves quite a few of the issues in one shot

    • No more pegs needed to hold it together. These used to pop out and get lost and were also quite difficult for kids to get in right. Now as you put in each piece it holds the previous one in place until it's all held together by the PCB
    • I moved the chassis base up so it now also holds the steppers in place and means you don't need to use extra stepper mounts. It also means the sides go on much easier now
    • Because the base has moved up, all of the wiring is now neatly tucked underneath which makes it a lot less intimidating for the less technically able
    • No big and fragile antenna - yay! This was the bit that broke the most often.

    Here's a quick video showing what it takes to assemble it now:

    Electronically, the major change has been switching out the WiFi module for one based on the Hackaday favourite ESP8266 (I'm using the ESP-01 because it has easily plugged in pins). Aside from meaning that the external antenna is no longer needed, it should solve a lot of the reliability problems because I can build the firmware myself. The initial code for this is up on GitHub and it includes both an on-board web server for serving out the local javascript app and a WebSocket server for real-time control. I've also added the ability to re-flash the Arduino over HTTP which means firmware upgrades will be a lot easier this time and can be done from the browser.

    Another electronics change has been to move the PCB to the front of the board which means that the collision switches can now be integrated and don't need wires. I'm going to keep the line following on a separate PCB but it will clip straight on instead of needing more wires this time. The battery pack has been separated again and sits at the back for better weight distribution. This also makes it easier to change the batteries.