My friend Thomas Edwards, who was the founder of Dorkbot DC, and is now involved in Dorkbot SoCal, told me that he’d gotten a MAKE Controller Kit v2 to work with some of his networked physical computing projects. I asked him if he’d like to write a no-holds-barred review of the kit. Here’s what he had to say. – Gareth Branwyn
I’ve programmed a lot of microcontrollers in my day: PICs, BASIC Stamps, Comfile CUBLOCs, and of course, Arduinos. But recently I’ve been working on networked physical computing projects that require Ethernet, motor drivers, and servo drivers. Rather than try to stack up a bunch of Arduino shields, I decided to take the plunge and try the MAKE Controller v2, which integrates all those capabilities.
What is the MAKE Controller Kit?
The MAKE Controller Board ($60 separate) is built on the Atmel AT91SAM7X256 microcontroller. This chip incorporates the ARM7TDMI ARM Thumb Processor, which has a 32-bit RISC architecture and a 16-bit instruction set. The chip has 256 Kbytes of internal high-speed flash memory for programs and 64 Kbytes of static RAM. It packs a lot of power.
In order to do anything interesting with the MAKE Controller Board, it needs a power supply and other support circuitry, so the board must be plugged into a support board. One support option is the Interface Board ($32.50, or $85 with MAKE Controller Board), which provides 35 digital input/outputs, 2 serial ports, TWI, CAN, SPI, Ethernet, and USB interfaces.,The other option is the Application Board ($52). The MAKE Controller Kit ($120 altogether) from Making Things is a combination of MAKE Controller Board and the MAKE Application Board.
The Application Board is about 3-Â¼” long by 4″ wide, and when combined with the Controller Board, comes to about 5/8″ tall. There are six screw holes for mounting.
Ins and Outs
The MAKE Controller Kit has eight analog inputs with 10 bits of resolution. The Kit can read input voltages from 0-3.3V, but is protected from damage if higher voltages are applied to the analog inputs.
The Kit also has eight high-current (1A) digital outputs. These are driven from two SN754410NE quad H-driver chips, and can be configured to drive eight individual digital outputs, drive four DC motors in forward or reverse using the H-drivers, control two stepper motors, or a combination of these options. These digital outputs can also be controlled with pulse-width modulation (PWM), for controlling DC motor speed, for example. There are four PWM signal generators available on the board, each one driving two of the digital outputs.
The analog in and digital outs utilize screw-down terminal connectors. You need to get a small (jeweler-size) screwdriver to effectively use these, but they’re very convenient compared with having to solder header pins on wires to connect to an Arduino.
The Kit also has four connections to drive standard servos. Jumpers allow the V+ voltages for the digital and servo outputs to come either from the regulated 5V supply, or from an external DC power supply, if you need more current or a different V+ voltage.
The external supply for the servos is separate from the external V+ “main power supply” for the board. So, for example, you might want to drive your servos with an external 6V supply, but provide your digital outputs with 12V from the main board power to drive a DC motor. To add flexibility, each bank of four digital outputs has its own 5V/V+ jumper. Obviously, Making Things has been thinking deeply about real-world uses of this board.
The Kit has both mini USB and Ethernet interfaces. The USB connection can also power the Kit (although with a limited amount of output DC current). Other data interfaces include a hardware serial port and a Two-Wire Interface (TWI, aka I2C) bus. Four status LEDs are found on the Application Board, and a single status LED is located on the Controller Board.
The Kit can be powered with an external DC supply with voltage in a range of 5V to 24V. I ran it with a 12V supply and did not find any “hot spots” on the board (unlike my experience with the Arduino).
It should be noted that v2 of the Application Board has changed significantly from v1. No longer present is the 8-position DIP switch and trimpot, and the JTAG (used for on-chip debugging) and CAN bus connectors on the v1 Application Board are now just solder pads, available if you want to add connectors to them.
Making Things Happen
The Kit comes preloaded with the “Heavy” firmware. If you hook it up via USB to your PC, it will turn on and start to flash the LED on the Controller Board to let you know that it’s alive.
The “Heavy” firmware allows you to control the outputs and poll the inputs of the kit using the Open Sound Control (OSC) protocol. OSC is a protocol originally intended for sharing music performance data between computers. Many musical controllers as well as the computer audio processing software Max/MSP and Pure Data support OSC communication. There are even iPhone apps for OSC control.
The “mchelper” program (available for download from the Making Things site) will identify a board connected via USB or Ethernet to your PC and allow you to send manual OSC messages to it. Note that it may have some trouble identifying a board over a network if you are using more than one active network interface on your PC (such as using wired and wireless networks at the same time). If you right-click on the board, you will be able to get or set its IP address. DHCP is an option.
What do these OSC commands look like? The OSC command
/appled/0/state 1 will turn on one of the LEDs on the Application Board.
/servo/0/position 256 will position a servo hooked up to servo connector 0.
/analogin/2/value will read the analog input from analog input port 2.
Besides using mchelper or other OSC-enabled software packages to talk to the Kit, you could write your own OSC-enabled application. The Making Things site has details on writing Flash and C# programs to send OSC commands.
For many users, the ability to control motors, servos, and read analog inputs from their PC using OSC will be all they need. But others will want the MAKE Controller Kit to start thinking for itself.
Writing Your Own Firmware
If you want your MAKE Controller Kit to operate autonomously from your PC, you can write and install your own firmware, similar to writing a program in Processing that you download to an Arduino.
Unlike the Arduino, the MAKE Controller Kit uses real C coding. But so you don’t have to dive too deeply into an understanding of the underlying AT91SAM7X256 microcontroller technical details, Making Things has provided a fairly rich set of libraries to access the inputs and outputs of the board.
So instead of writing:
AT91C_BASE_PWMC->PWMC_CH[ 0].PWMC_CUPDR = 1023;
You just write:
to set the PWM duty cycle on PWM channel 0 to 1023.
A key element of the MAKE Controller library is the Real Time Operating System (RTOS). This allows for multiple tasks to be running simultaneously on the Kit (something impossible for Arduino). The tasks can communicate in a thread-safe fashion using Queues, and can use Semaphores and MUTEXes to protect access to shared resources. Not all applications need to use these kinds of techniques, but it’s nice to know they are available.
The network functionality of the Kit can be accessed through a Socket library (if you are familiar with IP networking) or through a Web Client/Server library. The Kit can properly DHCP both an IP address and a valid gateway from the DHCP server (not all microcontroller Ethernet systems can do this), and you can use the Socket library to either make TCP connections or send out UDP packets. It is amazing to think that your physical computing project can be so easily connected to the Internet!
In preparation for developing your own firmware, you may find Heavy firmware really useful to test out connections and concepts. Do you have the right resistor divider on your analog input? What PWM values do you want for your motor speed? These kind of things can be worked out with OSC commands in Heavy before you start writing C code, where it’s harder to debug.
In order to prepare your MAKE Controller to receive new firmware, it must be “erased.” The Heavy firmware can erase itself based on an OSC command, but unless your firmware has its own hooks to erase itself, you need to physically short the erase pin and the 3.3V pin on the Application Board.
All the libraries and the Heavy firmware itself are open source, so you can learn much more about the workings of the AT91SAM7X256 chip if you wish.
Is it too Expensive?
The MAKE Controller Kit is not inexpensive. But let’s think about what it would take to put together a similar set of functions with an Arduino-based solution:
Arduino USB Board…………$29.95
Motor Shield kit……………….$19.50
Ethernet Shield Kit……………….$15
Which is not that different from the price of the MAKE Controller Kit. Of course, you still wouldn’t have an RTOS, a second hardware serial interface, the four servo connectors, or the 256Kbytes of flash.
The MAKE Controller Kit is an excellent package that provides a wide variety of physical computing capabilities. The great integration of Ethernet, servo controls, and motor drivers make it unique. Writing new firmware is fairly easy with all the included libraries, and the RTOS is great for complex functionality that requires many concurrent tasks.
Though much of what you need to know is on the Making Things website, you often have to dig deeply on the site for some things (such as the Application Board 2.0 pinouts). Because there are two different versions of both the MAKE Controller and the Application Board, it is probably time to clean up the website (for example, the “Application Board Overview” still has an image of the Application Board v1). The Making Things Forums are especially slow, which is a real problem given the lack of any other substantial community sites.
The MAKE Controller Kit is a reliable and powerful system that works. It has saved me a lot of effort in integrating networking and driver circuitry, and I find it reasonably easy to program. For someone doing complex physical computing projects (like the five servo, one fan project pictured below), I highly recommend it. It may also be a great system for a maker who wants to try many different kinds of projects from a single board.
In the Maker Shed:
Make Controller Kit v2.0 (includes Application Board)
Our Price: $120
Make Controller v2.0 and Interface Board Kit
Our Price: $85.00