RoadTest: chipKIT™ Pi
Author: semih.iseri
Creation date:
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Arduino Uno, STM32F4 DISCOVERY
What were the biggest problems encountered?: Lack of mounting holes, voltage regulator overheat
Detailed Review:
Hi there!
In this RoadTest, I will review chipKIT Pi from element14. Basically, it is an Arduino compatible expansion board that fits right into the GPIO port of the Raspberry Pi.
I organized my review in three parts. In first part, I will talk about the hardware. In the second part, I will try to investigate the documentation, easiness of getting started and the SD card image. Then I included a project that I used chipKIT Pi with Raspberry Pi. At the end, I finalized with pros/cons.
Now let's get started.
chipKIT Pi comes in a fancy cardboard box, featuring its picture on the front side and some information on key features and benefits on the back side.
Package includes only chipKIT Pi and safety and regulation notes.
For documentation and software support, package includes a link to “element14.com/chipkit_pi” which redirects to element14 community page for chipKIT Pi.
The board I have is powered by a PIC32MX250F128B, which is a very powerful 32-bit chip running at 3.3V. This is what makes this board special because most of the Arduino boards on the market are running at 5V and this makes them impossible to use directly with Raspberry Pi, as it has 3.3V terminals. Note that even the PIC32 has some pins that are 5V tolerant, it is better to use 3.3V shields as not all the pins are 5V tolerant.
The micro-controller has 128+3 KB of flash memory and 32 KB of RAM which is plenty when compared to the Atmel on Arduino Uno with 32KB of flash memory and 2 KB of RAM (I know that it is unfair to compare these two, but a comparison is needed here :)). This allows the user to have larger and more memory hungry programs. The PIC32 itself has even more peripherals inside such as USB OTG, DMA, I2S which may be useful for advanced users.
As can be seen from the photographs above, the board has a large number of connectors on it. I will group them as “Raspberry-related”, “Arduino-related” and “other” in order to investigate each connector in detail.
As Raspberry-related, there are two connectors: One is located at the back side, which connects the board to Raspberry Pi, and the other is located at the front side, which breaks out most pins of Raspberry Pi. Note that, orientation of the pins on chipKIT Pi are quite different than the pins on Raspberry Pi. For the pin connections you can refer to the chipKIT Pi community page but schematics may not be easy to understand for beginners. A multimeter in continuity mode is a good tool to verify these connections.
As Arduino-related, there exists standard Arduino Uno R2 connectors, in twins. This means that you can use both shields and jumper cables at the same time. However, not all the pins on these connectors wired to the micro-controller! These pins can be seen from the schematics, but here is a list too: AREF, A2, A3, D4, D5, D6, D7 pins are not connected (A denotes analog, D denotes digital).
As other-connectors, the board has a JTAG connector, a Mini USB socket, 5mm DC jack socket and some empty place to solder an ICSP connector. JTAG and ICSP connectors are used in order to program the PIC32 with an external programmer. However a regular Arduino user may not need to use these connectors as long as the PIC32 is alive The Mini USB socket is connected to the PIC32.
The 5mm DC jack socket is one of the features that I loved about this board. Thanks to this socket, you can use a random AC to DC adapter (Well, not really random I will explain this) or a battery to power the both chipKIT Pi and Raspberry Pi. This socket is connected to a voltage regulator, NCP1117, which is capable of converting voltage range 6.5V-15V to 5V. In order to protect the voltage regulator, and the whole circuit, from the reverse polarity there exists a diode between the jack and voltage regulator. Also, by setting the jumper, you can use a 5V adapter too.
As a conclusion you can use any AC-DC adapter that is capable of sourcing at least 1A with voltages 5V or 7V-15V range. You can use this socket to connect another non-5V power source (still satisfying 7V-15V and 1A). When using with a non-5V power source (say, a lithium battery on a robot) this board eliminates using a separate power regulation board, very handy.
As add-ons, the board has empty spaces to connect an external 3.3V battery (CR1220) and crystal (with required capacitors) to run chipKIT Pi without running Raspberry Pi. This is probably intended for internal RTCC of PIC32, as the CR1220 battery is too weak to power the board for a long run.
This board has a large number of jumpers. With the help of this 14 jumpers, you can map some pins to different connectors/peripherals when needed. At first sight it may seem confusing to have 14 jumpers but only a small number of them are actually used for remapping the I/O pins. There is a table in the “Getting Starter Guide” to express what does each jumper connect/disconnect.
Board features 5 LEDs and 2 buttons. One is power LED, two is RX/TX LEDs, and other two is user LEDs. Actually RX/TX LEDs are directly connected to pins, so they can be count as user LEDs which sums up to total 4 user available LEDs. Buttons on the other hand, are reserved for bootloader-enable and reset.
By means of size, the board is 92x57 (in mm), slightly larger than Raspberry Pi. This may not posses a problem since when SD card inserted into Raspberry Pi it becomes longer than chipKIT Pi. When the chipKIT Pi and Raspberry Pi is stacked total size is 95x60x30 (in mm, approximately).
Maybe you noticed from previous pictures, there is a piece of plastic at the back side of the board. This piece prevents chipKIT Pi to touch to the Ethernet socket. This is sufficient for on-the-bench usage. However, if something applies pressure to the chipKIT Pi, this may not be enough. Also there are NO mounting holes! This means, if you intend to do some “heavy accelerating” robot or something, you have to mount it somehow. It is a big drawback!
At the back side of the box element14.com/chipkit_pi is given for more information. In the site, there are links to getting started guides, software downloads, projects, schematics and so on.
Actually, the “Getting Starter” guide is more like a combination of reference document and a getting starter guide for chipKIT Pi. It includes almost everything about jumpers, connectors and LEDs. Other than the reference information, the guide includes helpful links to various pages related to chipKIT Pi. There is also a link to a “ready-to-install” SD card image and a link to an application to flash the image to the SD card (for Windows only, Linux or Mac users have to Google it and find their own ways). This image includes raspbian, packed with MPIDE and some python games :). If you want to install MPIDE to another platform or Linux distribution, you can find the procedures on the community page for chipKIT Pi. Also, I founded out that ssh was ready-to-use on this image. I liked it since I don't have a HDMI display :).
Programming the chipKIT Pi is easy, almost same as other Arduinos. You just have to enable the bootloader mode as stated in getting started guide (press and hold bootload-en button, press and release reset button, release bootload-en button) and click Upload button from the MPIDE. MPIDE includes a high number of examples on chipKIT Pi features and external devices.
Well, the project that I had in my mind was not this. I mean, yeah I wanted to make the car follow me (or a marker) but I want it on higher speeds Unfortunately, due to limited processing capacity of Raspberry Pi, blurry imaging of my camera (a webcam, not quite good while moving) and excessive minimum speed of the car, it was not possible. I tried several libraries for several algorithms (not including basic color filter, as it is highly prone to noise). For example OpenTLD is better for moving images however it is too pricey in terms of computational power. On the other hand while ArUco runs very fast, it does not detect the marker when the image is a little blurry. I chose ArUco. So at the end project became a slow-moving (at the video, I am triggering the throttle as the camera sees the marker), marker following car.
The project is very simple in terms of coding You can see the required code pieces in the attached file.
chipKIT Pi is a great board for including Raspberry Pi to real-life hacks. It can be used with an battery or an unregulated AC-DC adapter which makes it the perfect companion for my projects. Also, using Arduino environment for basic I/O tasks eases the development, compared to Raspberrys Pi I/O pins. However, lack of mounting holes limits the application areas in robotics. I think this is the only real flaw of the card (personal opinion :)). The voltage regulator problem can be resolved by switching it with another IC or with a breakout board with a better voltage regulator.
In terms of pricing (prices retrieved from tr.farnell.com, 01.01.2014) it is almost same (it is cheaper 0.24 €) with Arduino Uno while offering way too better performance.