Makeblock Orion, a friendly Arduino Uno Alternative
A complete solution for building and controlling robots
If you want to program your own rovers, robotic arms, XY plotters and more, then Arduino is an awesome platform.
However there are some practical problems you tend to run into. I have used my Arduino to run a sort of model factory with conveyer belts and robot arms. The problem you run into is when you want to pack it away. Disconnecting and then reconnecting every individual cable in the future is cumbersome. It is easy to forget what goes where.
To deal with this I ended up making my own little box, with various connection points. However since then I believe I’ve found a solution which has more potential.
Makeblock RJ25 Cable Solution
And this is Makeblock. They sell a wide variety of mechanical parts for making robots, as well as electronic parts to control them. What is nice is that they have built an entire system on top of Arduino based on RJ25 connectors. These are used in the telecoms industry for voice and data.
This is somewhat similar to Lego Mindstorms NXT and EV3 which use RJ12 connectors. Both the Lego RJ12 and the Makeblock RJ25 are 6P6C, meaning they both contain 6 individual cables which can carry a signal.
This contrasts with the normal Arudino world, which is centered round the usage of Dupont wire / jumper cable as shown below.
This is what I’ve normally been using but while they are really flexible, they are not well suited for connecting and disconnecting stuff quickly. They typically require you to keep track of lots of individual cables which don’t connect quickly. Registered jack cables (RJ25, RJ12) connect and disconnect very quickly. When connected they are firmly attached.
Doing anything useful requires often a minimum of 3 different cables:
- Ground, GND (negative pole of battery).
- Vcc (positive pole of battery). Together these power whatever device you are connecting to.
- Signal wire. Where you either send control signal or receive some measurement.
With RJ25 you can do all this with just one cable, because it has 6 individual wires inside it. If you really need Dupont wires, Makeblock sell adapters, like these.
Comparison of Arduino Uno and Makeblock Orion
So now that you got some introduction to the use of RJ25 cables, let us look at the Makeblock version of Arduino Uno. This is the classic Arduino most Makers have probably already used at some point.
You can read more about the details of the pins here. But here is a quick summary:
- Most pins can be set to input or output using the pinMode(pin, mode) function, when programming the Arduino.
- Pins 0–13 are typically used for digital input and output.
- Pins A0 — A5 are used for analog output and input.
Makeblock has made their own version of Arduino Uno, which has RJ25 connections. To be able to compare the inputs and outputs it is useful to be aware of that some pins have special usage. Here are some special usage which is good to know about.
- Pin 13 LED. Good for initial testing. Send output to Pin 13, to see that code actually executes on your board.
- Pin 0 (RX) and 1 (TX) are used to receive and transmit data. When you connect your USB cable to your Arduino and transmit programs or other data, it is as if communication happens on these pins.
- Pin 3, 5, 6, 9, 10, and 11 are used for PWM (Pulse Width Modulation). All these pins are marked with a
~
on the board. PWM is typically used with motors, to control how fast they move. Basically you shut on and off the motors very quickly thus allowing you to control the total average power output.
If you look at the diagram below, which shows what the various output and input pins on the Arduino connect to on the actual AVR micro-controller placed on the Arduino board, you can see that a lot of the pins have multiple usage. Look at A5 and A4 for instance.
These are labeled as PC5 (ADC5/SCL/PCINT13) and PC4(ADC4/SDA/PCINT12) respectively. I will not cover all of this, but highlight that SCL (A5) and SDA (A4) is listed. These two pins, Serial Clock (or SCL) and Serial Data (or SDA), are used for I2C communications. It is a way in which you can communicate with up to 128 different devices all connect to the same two pins. It relies on using serial communications where the Arduino gives the address of the device data is meant for.
The reason I mention this is because it is featuring in the description of the connections to the Makeblock Orion board, shown below.
You can see ports are color coded, to make it easy to understand which electronic modules from Makeblock can be connected to them. Below is a description of what each color means. See more details on Makeblock website for Orion.
Remember I said the RJ25 connectors are 6P6C? You can see every port has 6 wires attach to it. Look at red port 1 for instance. It has listed as having:
- Pin 10 and 11 for PWM, hence the
~
. - Ground (GND)
- V-M, which is potentially up to 12 Volts. This power comes from external power supply. Most other ports will say 5V instead. Which is unsuitable for driving larger electric motors.
- SDA and SCL, which are analog pins A5 and A4 as mentioned earlier.
This is useful to be aware of if you want to use regular Arduino code for interfacing with the rest of the world, and have no idea what each port corresponds to.
You can see that most of the RJ25 ports on the Orion have two Arduino input/output pins attached to one of its wires in addition to supply voltage and ground. So when coding one will refer to port number and slot number to get a pin. Makeblock has a Github repository with all their Arduino software which you can download if you want to program it like a regular Arduino.
If you look at the example code for stepper motors you will find this part:
#include "MeOrion.h"
int dirPin = mePort[PORT_1].s1;//the direction pin connect to Base Board PORT1 SLOT1
int stpPin = mePort[PORT_1].s2;//the Step pin connect to Base Board PORT1 SLOT2
void setup()
{
pinMode(dirPin, OUTPUT);
pinMode(stpPin, OUTPUT);
}
You can see there are constants like PORT_1
and PORT_2
for the ports. While slots are referred to as s1
and s2
. One of the common Makeblock modules is the Me RJ25 adapter module seen below.
Based on the color coding you can connect this to either a blue, yellow or black port. This allows you to interface with a regular Dupont jumper wire. When you flip the module around you can see pins marked as s1 and s2. On the top it says SLOT1 and SLOT2.
How to program the Makeblock Orion
The reason why I started writing this article is because dealing with the Makeblock universe was a bit overwhelming. They have made a lot of stuff and it is not always clear how it differs from the Arduino world.
While you can use the Arduino IDE to program Makeblock Arduino variants such as the Orion, it is often easier and friendlier especially for children to use their mBlock software. mBlock is based on Scratch, which is a visual programming language developed at MIT. Programming constructs are presented as sort of lego blocks you can snap together. Makeblock has taken Scratch and expanded on it to create mBlock. What that gives you is an environment where you can program both sprites on your mac or PC, but also programs which run on an Arduino or micro:bit.
But here is my guide to help you avoid getting confused by all the software they make with overlapping functionality.
- The same software often exists in 3 different forms:
- Desktop version (Mac or PC)
- Tablet Version (iOS or Android)
- Browser (typically Chrome)
- Browser versions requires a driver mLink to be installed.
- mBlock 5 vs mBlock 3. While mBlock 5 is the new version based off Scratch 3.0, while mBlock 3 is based off Scratch 2.0, it is not a complete replacement. E.g. I could not figure out how to program my XY Plotter v2.0 from mBlock 5.
- There are quite some difference in how you interact with your Makeblock device with each software. mBlock 5 was e.g. initially a bit confusing because it operates at a much higher level. The newer Makeblock kits come with blue tooth communications and you can just pair up with an iPad and create programs visually on an iPad and instantly run them on your Makeblock vehicle. mBlock 3 is more traditional. You hook up your USB, determine what virtual serial port you are communicating on and upload your program to the Arduino onboard.
- Specialized software like mDraw which can be used with different Makeblock kits which draw things such as the XY Plotter. However at least on my Mac I found it quite buggy. It crashed frequently and I had no idea what exactly went wrong.
This is perhaps the issue with Makeblock. They have expanded enormously and cover a lot of stuff. It seems they have not been able to keep everything coherent. And so there are gaps in functionality and some confusion. However if you use their new kits as intended it is generally a good experience. E.g. my kids have had a lot of fun with the mBot Ranger.
But for Geek parents (like me) who want to get into a bit more of the details of how it all works, it is not as obvious a Arduino.
However there is no doubt Makeblock offers an amazing package. You have a huge variation of mechanical parts, electronic parts and software.
What about the Competition? Lego, MakerBeam, Fischertechnik, Servo Erector Set etc?
I’ve dabbled with a lot of different solutions for building various model machines and robots. They all have their different strengths and weaknesses.
So here are some reflections on why you may want to use Makeblock over the competition. While Lego Mindstorms is easy to get into and offers a very polished surface, I am not a huge fan. The problem with Lego is perhaps best illustrated by comparing with another system based on plastic parts, Fischertechnik.
Lego is not really made for 3D building. The ideas are bricks, which you stack on top of each other. Good for building houses but not for complicated machinery, which needs to connect in all dimensions. A basic Fischertechnik block can be connected in every direction easily and holds together much stronger than lego. Elements can be attached almost anywhere, not just where studs or holes are placed.
Perhaps more importantly Fischertechnik mimics what real world industrial prototyping systems look like. They tend to be based on T-slots, which is what Fischertechnik is modeled on. That means you can find compatible parts on the market from other vendors. E.g. MakerBeam sells aluminum beams which are compatible with Fischertechnik allowing you to build really strong frames. They also allow you to use regular round steel axels. The irregular lego axels in plastic give a lot of friction.
Makeblock is a little bit hard to compare since you cannot snap together pieces as quickly as with lego or Fischertechnik. You actually need to use screws. But if you want to take a slight step up and be able to use more industry components and build much sturdier structures Makeblock is a great choice.
Like Lego and Fischertechnik they offer such a comprehensive choice of components that you can easily buy a bunch of parts from them and build anything. If you go with prototyping systems like MakerBeam, there are a lot of parts you need to buy separately from other vendors. It does not offer a complete solution. You are more likely to need to get out a drill, saw or laser cutter for some jobs.
Makeblock is more like Lego in that you can do almost anything with standardized unmodified building blocks supplied in a kit.
It is worth emphasizing this generalized nature of Makeblock. Like Lego or Fischertechnik you can use it for almost anything. There are other great systems out there like Servo Erector Set, but they are very specialized towards making robots. They would not be suited for making a plotter e.g.