Chipkit Uno 32 Review

The Arduino electronics prototyping platform is one of the most successful electronics hobbyist products in the world. It has introduced thousands of ordinary people to digital electronics and is probably the most famous open source hardware project ever. One of the reasons it is so popular is it’s simplicity. It does without things like 32 bit computing and fancy features and sticks to a simple, small 8 bit processor. For most hobbyist’s electronics projects an Arduino Uno board will give all the computing power they could ever need. However, there are some projects that require a bit more grunt or some more pins without having to splash large amounts of cash on an Arduino Mega. Like building a servo humanoid robot for example. Or a 3D printer, or some big LED display. Then the Arduino hobbyist is faced with a problem. They can buy an expensive Arduino Mega with more power or try and learn a whole new platform like the PIC32. Both of those options can be daunting and expensive. Enter the chipKit line of Arduino compatible development boards for the PIC32.

There are two versions of the chipKit development boards much like the arduino boards. There’s the chipKit Uno32 and the chipKit Mega 32. The chipKit Uno32 is the lower end board and lacks some of the features of the chipKit Mega 32 like Ethernet, USB and 83 I/O pins. However, the chipKit Uno is a very powerful board anyway. It has:

  • 42 I/O pins
  • 80 Mhz 32 bit processing power
  • 128K of Flash and 16K of SRAM
  • Arduino form factor and compatibility

Out of the box

I received my chipKit Uno32 board from element 14  Australia about a week ago. The chipKit Uno 32 comes in a box very similar to the one the official Arduino Uno comes in. A nice addition is some anti static foam for the board to rest on so it isn’t fried during it’s journey to your front door. I’m not exactly sure how that would happen but it’s a nice touch nonetheless. The Arduino Uno board doesn’t come with this foam. However, the chipKit Uno 32 packaging lacks a nice booklet like the one the Arduino Uno comes with.

First impressions are that this thing is pretty cool. It has a LOT of input and output pins-  42 in total. It looks very similar to the Freetronics Etherten with the flat chip and mini USB connector. Everything is laid out carefully in the same layout as the Arduino Uno so there is no need to worry about shield compatibility (apart from the 3.3V issue, more on that later).

At the core of the development board is PIC32MX320F128 processor. Now this is where the two chipKit boards differ. The chipKit Mega 32 has a PIC32MX795F512 processor which has advanced communications capabilities such as USB, Ethernet and a high number of I/O built in. The chipKit Uno’s PIC32MX320F128 processor does not have these features built in. It is still a powerful processor with 128K of flash and 16K of SRAM. Here’s a comparison between the chipKit Uno32 and the Arduino Uno:

chipKit Uno32 (Microchip 32 bit PIC32MX320F128) vs Arduino Uno (AVR 8 bit ATMega328):

  • Flash: 128K vs 32KB
  • SRAM: 16K vs 2KB
  • I/O: 42 vs 14
  • Speed: 80Mhz vs 16Mhz
  • Operating voltage: 3.3V vs 5V

So I think it’s pretty clear to see that this thing is a powerhouse out of the box compared to the official Arduino Uno. And it even runs at a lower voltage than the standard Arduino Uno. Let’s look at what it takes to get a blink sketch up and running.

Getting off the ground

To get started with a chipKit Uno32 you’ll need to download a special modified Arduino IDE from here: https://github.com/chipKIT32/chipKIT32-MAX/downloads . I downloaded the 3rd one down – the windows zip package. I’m pretty sure that the chipKit board does not work with the official Arduino IDE as I tried to program it straight up with that and it didn’t work.

Once you have the modified IDE downloaded and extracted you can start the MPIDE. You’re presented with what looks like the normal Arduino IDE with a message in the splash box saying it’s a modified version. Have a look at the boards menu though. It has a multitude of other PIC32 boards along with the standard arduino boards.

I loaded the blink sketch from the examples in mpide no problems. Don’t forget to select the UNO32 board from the menu. Hit the upload button and the pin 13 LED flashes just like on a standard Arduino.

So setting up the chipKit Uno32 is just as easy as setting up an Arduino Uno. Let’s do a speed comparison between the two.

Speed test!

The main differences between the chipKit Uno32 and a standard Arduino Uno are the amount of I/O pins and the computing speed. It’s pretty obvious the difference in pins so I decided to do a computing test.

I used serial to do a basic speed comparison between the chipKit Uno32 and an Arduino Duemilanove. My Arduino Uno wasn’t working so I couldn’t test it with that. However, the Arduino Uno and Duemilanove are very similar in computing power. I wrote this simple program to count to a million and report how long it took by printing out the time in milliseconds to the serial monitor. Once it has printed out the time it has taken in milliseconds it prints it out every 5 seconds as a sort of test to see whether the value was true. Here’s the code:

void setup() {
  Serial.begin(9600);
}
unsigned long number;
int time;
void loop(){
number++;
if(number > 1000000){
time = millis();
Serial.println(time);
delay(5000);
}
}

The chipKit Uno32 achieved a time of 250 milliseconds every time.

A stock standard Arduino Duemilanove achieved a time of  2263 milliseconds every time.

Ouch. That’s quite a big difference if your Arduino sketches commonly include large calculations.

Some features

The chipKit Uno32 has some nifty little features built in. Here’s some of the cool ones:

  • Mini USB connector. Just like an etherten’s so it doesn’t short against shields. A criticism of the Arduino boards that hasn’t been addressed.
  • Open source. Always a cool thing. Get the schematics and everything else you could ever need here:http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,892,893&Prod=CHIPKIT-UNO32
  • 2 User LEDs. On pin 13 and 43. They are placed on the outer edge of the board so they can still be clearly seen when a shield is plugged in. There’s 2 of them so you can have twice the super fast trippy blinking LED fun than before. What, isn’t that what you did when you first got an Arduino?
  • Lots of input and output pins. 42 in fact. 12 analog pins. Enough to drive just about enough LEDs for any christmas project.
  • 32 bits and 80 Mhz of grunt.
  • ICSP PIC programming header holes. If you own a PICkit 3 you can use that to program it.
  • Heaps of program space. So you can program in all the Christmas tree animations you could ever imagine.

So those are the good bits. Here’s the bad stuff:

  • The chip can’t be removed. Unless you’re a Jedi at soldering. This means you can’t program the chip like with the Arduino Uno and then put it in a socket on your custom project circuit board.
  • No AVR ICSP programming header. So you can’t program this with an AVR ICSP.
  • 3.3V operating voltage means that some shields won’t work. Most should though.
  • There’s no atmega8u2 chip like in the Arduino Uno. No emulating HID USB devices (keyboards, mice etc) for you. Not that anyone seems to have figured out how to do that anyway….
  • I think there’s some code that doesn’t work. For example, I was going to use some of the Arduino Test Suite code on the board and it didn’t work. See here for more on the issue of code compatibility: http://www.chipkit.cc/wiki/index.php?title=ChipKIT%E2%84%A2_Support_Resources#chipKIT.E2.84.A2_Development_Environment.2C_functions_and_libraries

But that’s about all that’s wrong with it. It’s a great board for those who love the Arduino concept but need something a bit more powerful. It’s easy to get started with and is extremely powerful (especially the Mega model). It’s probably not the best choice if you’re just starting out in Arduino though. It’s definitely the way to go if you want some more grunt in your Arduino projects. I highly recommend it. Pick one up now at element 14 for $35.

Also have a look at some of their other digilent boards while you’re there.

 

 

 

Advertisements

Arduino issues.

More Stuff

Here’s some stuff I’m buying tonight. The other stuff has already arrived and works (5x atmega328s and an FTDI).

The real deal Arduino Uno. I decided to stop being cheap and buying ebay stuff and buy the real thing to support the arduino project. I also needed to get an arduino that supports removing the chip as my current freetronics etherten has an SMD atmega328. This limits the hackability of the board as you can not utilise the atmega8u2 on the board other than using it with the SMD chip. http://littlebirdelectronics.com/products/arduino-uno 

The real deal.

The real deal.

But I am still a cheap guy so I’m buying some more parts from my beloved ebay. There are actually red, green and blue LEDs in this kit enabling me to make my own RGB lights and whatever else I can think of with the large amount of parts. http://www.ebay.com.au/itm/Arduino-DIY-Starter-Kit-lcd-Relay-Stepper-Infrared-1602-/160651462842?pt=LH_DefaultDomain_0&hash=item256792c8ba#ht_4278wt_1270 

Everything you need.

Everything you need.

The last thing I’m buying is an ebay arduino duemilanove. Now don’t say I’m being a hypocrite by being all high and mighty about buying the real arduino uno and then buying a fake one. The reason I’m buying a duemilanove from ebay is that the duemilanove isn’t available from genuine retailers like little bird electronics any more. I want to get duemilanove because they have an onboard FTDI and are compatible with the AVR ISP sketch. The Arduino Uno is still quite a cool board as it features HID device support by using an atmega8u2 instead of an FTDI. This means it can show up as a keyboard or mouse or whatever. http://www.ebay.com.au/itm/Arduino-Duemilanove-ATMega328-STOCK-OZ-/260763561062?pt=AU_Components&hash=item3cb6b82c66#ht_603wt_1037

Arduino duemilanove. A more hacker friendly board.

Arduino duemilanove. A more hacker friendly board.

Arduino issues.

Leonardo.

This new board released by the arduino team is obviously a revolution in that it allows for lower costs and simpler design. This was to make it easier for people to design and produce their own arduino compatible products. At least that’s how it seems.The leonardo features an atmega8u2 at the core of it’s design meaning that it only needs one chip as the atmega8u2 has USB support built in. This is to make it easier for people to understand and modify the arduino. However, I don’t think that is true. Here’s why:

  1. The leonardo comes with an SMD chip. That means you can’t remove it and embed it in your own projects.
  2. There’s not much out there about the atmega8u2 as a programmer. Everyone just kind of left it alone in their unos. Everbody knows how to use FTDIs to program. Not atmega8u2s.
  3. The atmega8u2 is not available in a DIP package meaning that it is harder to make your own prototype of dev boards.

So in my opinion the new leonardo is anything but hacker friendly. The chip can’t be embedded and the programming nobody understands but hey, let’s wait and see.

Uno

In the days of the duemilanove everyone could load bootloaders and program standalone chips using the FTDI on the board. With the uno, you can’t program any chips that don’t have the arduino optiboot. No worries, you say, I’ll just bootload the chips using the AVR ISP sketch. The new arduino uno doesn’t support that sketch without some hacks that don’t seem to work. Hmmmmm. You can’t program a chip on the board without using a bootloader that the board can’t load. With the duemilanove you can program and bootload pain-free.

However, the arduino uno does have HID support meaning it can talk to the computer as if it is a mouse, keyboard or anything else that plugs in over USB. This is achieved by using the atmega8u2 to talk to the computer. The leonardo has the same feature.

The uno is a pretty cool board. I just prefer the duemilanove.

Cool. I’ve got some awesome stuff planned for the holidays like building my synth, retro game controllers and other stuff.