After doing some research into Zigbee devices, I've settled on the Jennic 5139 modules for my home automation projects, which I now sell via New Millennium Networking.
The interface to the PC is via RS232 (TTL, so you'll need to level shift to 3.3V or hack a USB to serial cable), and the modules have a lot of cool stuff onboard.
The modules themselves comprise a PCB with semicircular solderable notches on the side. You can use them by press-fitting in between some pin headers, or by soldering it directly to another PCB. While this is great for production, it is too fiddly (1.27mm pin pitch!) to easily use for prototyping, so I've whipped up a carrier board that you can solder it to then plug into a prototype board.
You only need to etch the top side of the board for normal use. The underside and JP3-JP6 are required only if you want to make use of the onboard serial & ICSP headers. The header follows the Atmel standard pinout.
If you do not etch the bottom layer and install the jumpers, you should externally connect SPISSZ (JP1 Pin 9) to SPISSM (JP1 Pin 13) to allow the microcontroller to address the flash chip. Without this connection, the microcontroller will not boot from the internal flash chip.
Etching the bottom layer allows you make use of the ICSP header to program the flash without going through the microcontroller.
| S1 |
Reset |
Press this button to reset the module |
| S2 | Program | Press this button while resetting the module to enable programming the module over the UART |
| JP3 | Serial | Connects to UART0 (use a 3.3V TTL serial line), pinout is Ground, RX, TX, +3.3V |
| JP5 | ICSP Enable | Move the jumper to pins 2&3 to enable ICSP, move it to pins 1&2 to allow the microcontroller to boot normally |
| JP7 | Write Protect | Install this jumper to write protect the module |
The Jennic 5139 module should be soldered to the carrier board. Ideally, you should use a reflow technique to acheive this (Google "DIY reflow"). If you want to use the additional features of the board, install the switches, jumpers and ICSP header. Finally, install JP1 & JP2 on the underside of the board - they are spaced to fit into a standard 2.54mm prototype board.
At this time, you will have to fabricate the board yourself. Download and extract the board layout, it is available in Eagle format (a free to evaluate & use for non-profit use electronic CAD package).
I have added a header to access UART0 on the Jennic module (JP3). I've also increased the thickness of some of the tracks to reduce the chance of manufacturing errors (there are still a lot of 0.1mm tracks though).
While checking a physical print, I noticed that a couple of traces were too close together - they have now been moved apart.
I tried cutting the PCB on my mill tonight, unfortunately the traces are too fine to come out reliably, and end up breaking when the mill runs adjacent to it. I'll have a shot at etching it via toner transfer.
A few days ago I relaid the board with wider spacing and thicker traces, suitable for milling.
I was able to successfully cut this version out on the mill.
To solder the Jennic module on, I first filled the wells on the side of the module with solder. I then tinned the PCB and positioned the module carefully. Using a low power, fine tipped soldering iron, I drew the solder down from the wells onto the PCB. I did each of the corners first, then went back and did others.
Since the PCB was milled, the holes are not through plated. As a result, I soldered in small pieces of solid core copper wire to complete the vias, and soldered the pin headers on both sides of the board.
On the rear of the board, I was overzealous when sanding off the rough edges, and accidentally removed part of a trace. I also lifted a few traces (boo) due to excess heat. These were repaired by soldering a single strand of solid core copper wire over the breaks.
I was able to successfully program the module over the UART. In order to do so, I had to pull the WP line up - leaving it floating was not sufficient. I will have to add a pullup resistor to Revision 1.4.
I've added the features mentioned above, as well as widening most of the traces for increased reliability.
There are 3 0 Ohm resistors on the board, you can short these with a solder blob. They are intended to allow you to disconnect LEDs 2, 3 & 4 from their IO lines, to prevent them from flashing (and loading the lines) if you are going to configure those lines as inputs. Be aware that disconnecting TX & RX will also disconnect the respective lines from the UART header.
I have dropped the small form factor board, as the larger board is easy enough to work with on a breadboard, and also had enough space to cram in the extra LEDs. I have left the files for the Revision 1.3 board available, which does have the small form factor board available, but this will not be updated going forward.
To err on the safe side, the 68 Ohm resistors should probably be 75 Ohm - I'll correct this in the next revision of the board.
I've written a simple 10 LED scanner to get aquainted with the development environment. I have come across one issue when setting the output pins. It is tracked on the Jennic forums. Grab blinkenlights.c to have a play (yes, I know the UART code is extremely naieve).
Some minor adjustments, I've added text labels to the pins and changed the LED resistors to 75 Ohms.
| Attachment | Size |
|---|---|
| Jennic5139_Carrier_1.3.zip | 44.84 KB |
| Jennic5139_Carrier_1.4.zip | 79.9 KB |
| blinkenlights.c | 5.91 KB |
| Jennic5139_Carrier_1.5.zip | 51.74 KB |
| jennic.lbr | 4.13 KB |