Webscale
I spent some time today putting together a simple web page that would allow me to send commands to Mirobot from a web page. I used Blockly to make a Scratch-like gui for composing your commands, then made a quick and dirty WebSocket <-> TCP proxy using Node.js so I could send them direct from the browser. I’m going to put the WebSocket handling into the Arduino eventually, so this is just a quick fix for now. One of the nice things about the WiFi module I’m using is that it has space onboard to embed some web pages, so I’ll be able to make a nice GUI that’s served from the robot itself.
I like the idea of being able to have parity between a few different ways of telling the robot what to do. Here we have a visual programming language which effectively compiles down to Javascript commands, which in turn just send LOGO to the robot. These layers of abstraction provide quite a nice way of gradually being able to expand your knowledge as it’s used for learning. You can see all three in this screenshot:
One of the nice side effects of this is that you can now effectively program the robot in Javascript using the library I made directly, which should open up some really interesting opportunities for hacking and extending it. Websockets are also useful because they don’t have the same cross domain issues that regular HTTP calls would which mean they can be used from anywhere.
Read moreMirobot is alive!
After working on a lot of the component parts of Mirobot in isolation, I decided it was about time to actually make it do what it has been designed to do; draw!
I ran this simple program on it:
REPEAT 5 [
FORWARD 120
RIGHT 144
]
Which makes it go forward 120mm and then turn 144 degrees to the right (5 times). That’s the beauty of a simple language like LOGO when it comes to these first steps of learning how to program - it’s very easy to understand what it’s meant to do. This (if you haven’t already run it through in your head) makes it draw a five pointed star. Here’s the proof:
One of the issues I had was that in my initial design for Mirobot I had the battery pack (which is the heaviest part of the robot) towards the back of the chassis near the rear caster wheel as you can see in this photo:
Unfortunately this created too much friction on that wheel which is meant to be free turning. I’ve improved on this by moving the battery upright and as close to the main drive wheels as possible which means they grip better and the caster wheel doesn’t grip as much:
I’m going to get another run of the PCBs done without the nice outline for the pen and designed to slot upright into the chassis base. Should be done in time for Christmas for my kids :-)
Read moreArduinobot is now Mirobot
The project is still very much alive. After a hiatus of almost two years it’s great to be posting something here again.
The first news is that I’ve changed the name of the project. Arduinobot was a bad name because it piggy-backed on the Arduino brand (which is a bad thing to do) so I’ve renamed it to Mirobot. There are a few things behind the name but essentially it came from thinking about what an artistic drawing robot might be called. It’s named after Joan Miró, the 20th Century Spanish artist.
Since I left Xively I’ve been dedicating several days a week to completing the first version of Mirobot. This was the main reason for the hiatus - it was too difficult to do work on hardware without a good workshop. Setting up on the kitchen table is far from ideal so now I’ve got a proper workshop (with room for a laser cutter :-) I’ve made much better progress. Some of the things I’ve done in the last couple of months are:
- Re-worked the drive train to use direct-drive geared steppers. This massively simplifies the mechanical design as well as being even lower cost
- Designed a custom circuit board that fits nicely in the robot and that’s very low cost to build. It’s all through-hole so it can be easily soldered. More on that later.
- Set up a WiFi module so it’s completely wireless and networkable.
- Written a couple of Arduino libraries;
- HotStepper is a lightweight interrupt driven stepper motor driver
- LogoVM is a customisable virtual machine that runs the LOGO language for telling it what to do
The aims of the project are unchanged; create a low cost, fully open source drawing robot that can be used to teach children about technology and programming.
There are lots of plans for building the supporting parts of the project like the documentation and instructions as well as a web site where people can learn, but more about those in the future. I’m going to be selling Mirobots as kits to try and get lots out into the world. Sign up to the mailing list using the form below if you’d like to be notified when they are available.
Read more