The chipKIT DP32 is a great little board. Designed to fit in a standard project box and providing a respectable prototyping area to construct support circuitry on, it would be a good choice of board for many different hobby projects or one off custom designs or prototypes. It is also equipped with a potentiometer, four LED's and two push buttons, along with unpopulated footprints for an SPI Memory Chip and a temperature sensor. The basic building blocks for any Microcontroller training course which, when combined with it's keen pricing, make it a good choice for education too.
But, as a development board it begins to fall short. The same onboard peripherals that make it such a great educational tool start to get in the way. Whilst jumpers are provided for USB pins D+, D-, and USBID, allowing you to free up the pins for other use, the Buttons, LED's and Potentiometer have no such option and consume valuable pins, a scarce resource on a 28 pin package. Granted the LED's are buffered and so will coexist but the buttons hold the pins low and may well interfere with other use of the pins and the POT totally excludes that pin from the equation. The footprints for the possible Headers to access the Pins, whilst well placed for access by support circuitry built on the prototyping area, run down the center of the board, in a single row, making it difficult to connect a daughter board in any stable manner. To make matters worse, the header row is fractionally out of pitch, when measured from the top row of the prototyping area, so adding a second header row for stability would result in daughter boards of a non standard pitch to match. My personal bugbear is the lack of a Power ON LED, especially if you are doing any hardware interfacing. If you are not running a Sketch that blinks the LED's and you are not in Bootloader mode, you have no way of knowing that the board is ON. The natural instinct is to start looking for smoke in case your latest experiment has shorted the Power Bus.
Don't get me wrong, this is still my favorite board in the chipKIT family so far. But what I propose, and have done, turns this simple, low cost chipKIT into a very capable, compact and portable development tool for very little additional outlay.
Here then is a summary of what I have done in the hope that it will help other current and future owners of the DP32, who would like to maximise its potential as a development tool, rather than simply as a project board. No special tools are required, just a standard Hobbyist Soldering Iron, wire cutter, needle nose pliers, a steady hand and keen eyesight (or in my case a good pair of spectacles and a magnifying glass).
The first thing I did was relocate the ICSP Header. The header is not actually populated as shipped but has staggered pads allowing a 6 pin header to press fit. Unfortunately this leaves the attached PICkit in an awkward position and upside down. To relocate it to a more convenient spot, I soldered a 6 pin, right angle, male header into the upper right corner of the prototyping area. I then connected two stips of 6 socket, machine pin headers in parallel. I didn't, however, make any connections from it to the PIC32. That way you have the flexibility, with the aid of jumper wires, to connect any PICkit Pin to any device Pin. Perfect for using the PICkit's Logic Tool or UART tool for debugging. I did connect Vss and Vdd, but via Jumpers, situated directly below it, on the right hand edge of the board. If using any of the PICkit functions they remain connected, but by removing the Jumpers you free up the header to accept other boards that have an, up to, 6 PIN Female connector but may well have Power and Ground located on different Pins.
By relocating the ICSP Header you also provide a convenient location for a Power ON LED. Power and Ground are already routed to the through hole pads of JP6 and, after removing two surface mount resistors, R3 and R4, you have convenient and isolated pads in which to insert a Red 3mm LED and a 1K resistor.
If you are going to install Jumpers for JP2 (D+) and JP3 (D-), do so now, whilst you still have easy access to cut the traces on the top side of the board. For headers I used the same type of Female Header that are used on the Larger chipKIT Boards and Arduino. Two strips of 13 are required and can be easily cut from a a 40 sockets length of Header strip. Buy at least two strips, the rest will be used later. Don't populate the Temperature sensor footprint, it will be in the way.
Header J4 has a spare pin, indicated by a gap in the silk screen. A short length of flexible wire from the no longer needed Pin 1 (MCLR) of JP6, to this Pin of the Header, gives us a conveniently located RESET pin that can both Reset the PIC32 and allow the Reset Button to Reset any external devices connected to it at the same time as the CPU.
With any development system it is convenient to be able to quickly and easily add expansion modules to support your current project. In the Arduino World people add Shields, and the two larger chipKIT's (the UNO and the MEGA) adopted this approach too. However, in order to accept Shields, the Board must conform to both the form factor of the Arduino and perpetuate the alignment error that creeped into the first Arduino's production run. The DP32, therefore, cannot accept shields, but that need not prevent it from accepting expansion modules offering similar capabilities. I looked at the breakout boards offered by Adafruit, Sparkfun, iTead and other popular hobbyist friendly manufactures but apart from the header pitch there was no standardisation between the boards from any one manufacturer, let alone across manufacturers.
The iTead Studio's Electronic Brick system held the most promise but the range is somewhat limited to simple peripherals and as the interface is 4 pin parallel or 3 pin serial but the modified ICSP header installed above could be used to interface with them.
Extending the search to Development Board manufactures I considered Digilent's Pmod System.
They have a good selection of compatible modules and a standard connector, well two actually, 6 Pin Single Row or 12 Pin Double Row, but they also have 8 different Pinout Standards. Our small board could never accommodate that many connectors.
Next on the list was MikroElektronika's mikroBUS.
mikroBUS is perfect for our needs. It has a single specification for Connector type and Pinouts, It has a small footprint, and there are Boards available that range from simple LED Bar graphs all the way up to Accelerometers and GSM modules. The form factor is such that a hobbyist could easily construct their own modules with Strip Board and mikro.com even grant you a licance to sell your compatable creations as long as you don't call them "Click Boards".
To accommodate mikroBUS compatible Boards, I installed two more rows of 8 Pin Female Headers, located in the Right Hand 8 holes of the top row of the prototyping area, with a parallel row at the bottom of the prototyping area. It is a perfect fit and the larger plug in modules will extend out above the ICSP port, with sufficient clearance to allow a PICkit to be docked at the same time.
The mikroBUS is versatile but is predominantly a serial bus. It would be nice to be able to accommodate peripherals that require more digital pins without having to reallocate any of the Pins used by the mikroBUS.
I added a Female Header strip of 10 Sockets adjacent to the mikroBUS but running vertically. I left one column of holes between them to allow boards in the docking port to extend slightly to the left, as per the microBUS specification, without blocking access to the Expansion Port Header. The footprint between the microBUS headers, the Expansion Header and the ICSP header is just enough space to install an 8 port, I2C Bus I/O Expander module. This location also allows us to design custom boards that still fit into the mikroBUS port for stability but have access to 8 additional GPIO lines.
One of the most popular Shields is the Prototyping shield with a Half Size Breadboard attached. Unfortunately a Half Size Breadboard is almost as large as our DP32 so attempting to accommodate one would be difficult at best. But the Header placement above leaves sufficient space, on the left of the prototyping area, to comfortably attach a mini Breadboard. Despite their compact size these boards are very useable and can easily accommodate a 28 pin package, so we are not so much losing the 28 pin prototyping footprint as we are expanding its capabilities exponentially.
I mentioned at the start that the onboard peripherals, whilst invaluable for education, are inconvenient for development. I made one final addition to the now fully populated DP32 board to rectify this. I SuperGlued an 8 Socket Female Header to the Left of the mini Breadboard. This leaves the pins flush with the edge of the DP32, out of harms way, but conveniently located to connect wires to it on the bottom of the DP32 board. The Mini Breadboard is now framed by the Expansion port on the Right, J3 on the Bottom and a Peripheral Header on the left, making it easy to access most of the pins commonly needed whilst bread boarding circuits. Even if the microBUS and ICSP port are both occupied as well.
I decided to leave BTN2 and LED's 1 and 2 permanently connected as they are needed for the bootloader. Then, by simply removing 4 surface mount resistors, I isolated BTN3, the Potentiometer and LED's 3 and 4. I connected suitable replacement resistors to the Peripheral Header strip, extending into the board on the underside, and used flexible wire to connect the 4 peripherals. A 5h connection is taken up as the INT pin for the I2C Port Expander leaving 3 pins that can be connected to the ICSP header, giving our Breadboard convenient access to the PICkit Logic Tool for Hardware Debugging.
With only simple tools and easily obtainable parts you can turn a simple project or training board into a full featured, small footprint, Development platform with multiple expansion possibilities.
The ICSP header now has the ability to use all of the features offered by the PICkit, rather than just its programming ability, and the same port is flexible enough to accept 3rd party boards that suit the current development goals of the project at hand.
The standardised mikroBUS connector makes it a simple matter to design and build plugin modules with readily avalable strip board and common header strips. In my initial testing it took only 15 minutes to build a module to accept a 64 x 84 pixel Graphics LCD and it ran first time when docked. Alternativly modules can be purchased ready made from mikro.com and 3rd parties.
An additional 8 GPIO Lines are available, allowing greater flexibility to assign and use the PIC32MX chip's wealth of onboard peripheral modules via PPS and still have IO Pin intensive peripherals such as LCD Character displays and Hex Keypads available to support development.
A versatile Solderless Breadboard allows for rapid development and testing of support hardware, with the possibility of easily transferring the design to stripboard so that it is readily available as a plug in module for later experiments and projects.
And finally the POT, a Push Button and 2 Buffered LED's have been made readily available to the breadboarding area to support development and testing of prototypes, without impacting on any of the scarce device pins.
For anyone looking for more details and guidance on how to do any or all of these modifications I will be posting a series of How To entries in my Blog in due course, suitable I hope for beginners to follow along and get the same satisfaction that these changes have given me. To say nothing of the productivity boost they provide. Cheers,