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

Things to do.

So yesterday I got all obsessed with 3d printers. I wanted one soooo bad. So I tried to build 3D CNC (computer controlled cutter) out of lego robotics. I’ve done this before and failed ( this guy has succeeded). But this time around I had more gears and thought I might succeed. But I didn’t. I had really precise X and Y axes. But one side of the X- axis was dragged along by the other and couldn’t be fixed without adding a lot more gears which I don’t have. I might try a different design. Or I guess I better start saving for a $1299 makerbot. Or maybe I should build an eggbot instead.

Speaking of 3D printers, this exclusive interview with bre pettis by make is pretty interesting. Bre is the guy who started Makerbot Industries and is an interesting example of how you can make what you love doing as a hobby a full time job. He recently got $10 million dollars in funding from VCs and has sold a lot of printers so he’s a pretty happy guy. Check it out here: http://blog.makezine.com/archive/2011/10/makes-exclusive-interview-with-bre-pettis-of-makerbot-life-10m-in-funding-and-beyond.html

 

Tomorrow I’m going to Make Hack Void to work on some infrared hacking with my robosapien. These are seriously cool old toy robots that aren’t really all that intelligent and rely on humans to tell them what to do via remote control. If I can decode the infrared protocol that robosapiens use then I can control them using an arduino. I can then use the arduino to pass commands from the internet to the robot. This allows for both phone and computer control wirelessly. Then I want to build a little enclosure and webcam setup that lets anybody drive one of these robots using the internet. Kind of like a robotic version of one of the many RC cars around that anyone can control. I’d have it running for a week and film the results. But first I have to decode the infrared.

On the topic of internet controlled stuff I’m thinking about making my room phone controlled. And the whole google ADK usb host thing doesn’t look like it works with that much stuff yet so I think I’m going to take a different approach. I’d probably go with a browser based control application to allow me to switch on and off lights and power as well as music etc. One of the simpler ideas for doing cool lighting control was getting one of these and hacking what appears to be it’s infrared remote control system. That way I can control high powered RGB lighting without having to mess around with dangerous high voltage. I was also thinking of using something like a power switch tail to turn on and off other devices. And I might get some solenoids so I can have a phone controlled door lock. But if my phone went flat and my charger was in my room I would be a bit stuffed. Maybe I should build something like this instead for security.

When you think about it infrared is not as old fashioned and useless as it sounds. It can be used to control cheap chinese helicopters, humanoid robots, speakers and even DSLR cameras. So it’s actually pretty useful knowing how to use infrared protocols. Hence me wanting to learn more.

I really want to get into some programming to display some arduino data (like my synthesizers levels) visually in a computer application. I was thinking of learning processing as it seems to be a common choice for this sort of stuff. It’s open source and has a lot of cool example projects on it’s website. However, the arduino IDE is based on processing and it’s as slow as a turtle. I think that’s because it’s based on Java.

A while back i wrote for a magazine called aviator about my first flying lesson. I wrote an article because I went to a holiday school thing about how writing for magazines can make you a lot of money. I didn’t get anything for my article. But I keep on reading things in magazines like Make: and Popular Science on stuff that interests me. And there will always be something that I wish they wrote more about or something they didn’t include that’s really cool and would fit right in. I’ve got one week of holidays left so I might write something up on electronics. Maybe.

Here’s a cool project I saw recently

Looks like I’ve got a lot of stuff I can be doing. Better do it.

Collection of open source hardware awesomeness

At the moment I’m waiting for my uno board to come so I can make my synth more permanent and make videos etc, and I’m in the middle of trying to hack a robosapien. So there’s not much I can write about as I’ve realised that me blogging about unscrewing and rewiring things is quite boring.

So stuck for ideas as to what to write about today (I’m trying to write a post a day) I decided to collect some of the best open source hardware projects and products from around the net and gather them into one big list in no particular order.

Arduino is the grand-daddy of all open source hardware boards etc and is very popular among makers and hackers. It is commonly used to control just about anything that has wires sticking out of it. Hundreds of thousands of boards have been sold.

Spoke POV  by adafruit/ladyada. This is a really cool project that allows people to turn their standard bike wheels into throbbing 8 bit displays. There’s been a couple of projects on kickstarter recently that have been trying to steal its concept and make money out of it while keeping their designs closed-source. I guess it can’t really be called stealing though because it is open source hardware. Still.

Everything by adafruit/ladyada. She’s an open source pioneer and has built a lot of really cool projects and sells kits.

Make magazine. Make magazine is kind of like the main media source for building stuff. If you’re good at building stuff you’ll get hired by them.

Makerbot. It’s a 3D printer that can make itself.

Hackaday. This is a blog that showcases the best of open source hardware. You won’t get on these guys website for building a mood light. You have play star wars using floppy drives.

Teagueduino. It’s basically an arduino kit that has been tuned towards ease of use. Based on a teensy development board.

Go make something. It’s good for you.