JeeNode v6 - JN

Hardware Reference

The JeeNode is a wireless micro-controller board designed for a variety of Physical Computing tasks. From measuring and reporting temperature, humidity, and other environmental data to tracking and controlling energy consumption around the house. It was inspired by the Arduino Duemilanove and Uno boards, and by the “Real Bare Bones Board” (RBBB) from Modern Device.

At a glance

What’s on a JeeNode v6, from left to right:

  • 6-pin FTDI-compatible serial I/O port, used for power, re-flashing, and communication
  • 3.3V power regulator which accepts 3.5 … 13V as external power source
  • 8-pin combined Power / Serial / I2C / Extended (PSIX) connector
  • ATmega328P microcontroller by Atmel, with 16 MHz ceramic resonator
  • 2x4-pin combined SPI / ISP connector, with 2 general-purpose I/O lines
  • RFM12B wireless RF module for the 433, 868, or 915 MHz ISM band, by Hope RF
  • short wire - acts as radio antenna (78, 82, 165 mm long, for 915, 868, 433 MHz, respectively)

And on the long sides of the board: two I/O “ports” each, with one analog/digital I/O, one digital I/O, +3.3V, ground, PWR, and interrupt (IRQ) line. All ports have an identical pinout for use with “plugs”.

Arduino compatibility


  • both run the same OptiBoot bootstrap code , and can therefore run Arduino IDE’s sketches (see Bootstrap Versions)
  • same ATmega328P micro-controller as the most popular Arduino’s and other “~~duinos”


  • there’s a 433, 868, or 915 MHz wireless RF module on board
  • completely different physical layout, incompatible with Arduino “shields”
  • a JeeNode runs internally at 3.3V, not 5V~~ this also affects all I/O ports & pins
  • not all the Arduino pins are brought out on connectors, some pins are assigned fixed roles
  • the ISP connector has 2 extra pins, to allow re-using it as SPI bus for 1 or 2 devices
  • the TWI bus has been permanently assigned to its own connector
  • runs at 16 MHz - but using a slightly less accurate ceramic resonator i.s.o. a crystal
  • there are no LEDs, to reduce power consumption when running off batteries

Design choices

The main reason for creating the JeeNode was that Arduinos are not yet very convenient for 3.3V devices such as the RFM12B module. By including a 3.3V regulator, the JeeNode can be powered from USB with an FTDI cable/board, a DC power adapter, or various types of 3.6 … 12V batteries.

A second reason was to have a unit which includes wireless connectivity by default. The RFM12B module is a low cost option with sufficient power and range to provide reliable communication around the house - a basic packet protocol can be implemented in under 3 Kb of C code.

The third reason is that it is quite common to run out of power and ground connectors when hooking up a few sensors to an Arduino. While there are nice “proto shields” to overcome this, it seemed logical to try and come up with a different connector scheme for the common case of just a few sensors / actuators.

Furthermore, being identical, all four JeeNode ports have the same features and connections, allowing sensors to be re-used and re-combined later on.

Lastly, a key design objective was for the JeeNode to support very low-power use with batteries.


Microcontroller: ATmega328P
Maximum frequency: 16 MHz (down to 3.3V)
Power consumption: 4 µA .. 35 mA
Supply voltage: 3.3V .. 13.0V
Dimensions: 85.9 x 21.1 x 9.9 mm
Weight: 12 g

Connectors & pinout

Port/pin mapping

Port Name Extras Arduino Signal Chip
Port 1 DIO1 - Digital 4 PD4 pin 6
AIO1 Analog-in Digital 14 / Analog 0 PC0 pin 23
Port 2 DIO2 PWM (timer 0) Digital 5 PD5 pin 11
AIO2 Analog-in Digital 15 / Analog 1 PC1 pin 24
Port 3 DIO3 PWM (timer 0) Digital 6 PD6 pin 12
AIO3 Analog-in Digital 16 / Analog 2 PC2 pin 25
Port 4 DIO4 - Digital 7 PD7 pin 13
AIO4 Analog-in Digital 17 / Analog 3 PC3 pin 26

Ports 1 .. 4

Pin Name Description
1 PWR external power
2 DIO digital I/O line
3 GND ground
4 +3V regulated +3.3V
5 AIO analog I/O line
6 IRQ interrupt (tied to INT1)

SPI / ISP connector

Pin Name Description Pin Name Description
1 MISO master in / slave out 2 +3V regulated +3.3V
3 SCK SPI clock 4 MOSI master out / slave in
5 RST reset 6 GND ground
7 SEL0 tied to PB0 (A. pin 8) 8 SEL1 tied to PB1 (A. pin 9)

FTDI connector

Pin Name Description
1 GND ground
2 N.C. not connected
3 PWR external power
4 RX serial receive
5 TX serial transmit
6 RTS for bootstrap / reset

PSIX connector

Pin Name Description
1 +3V regulated +3.3V
2 RXD serial receive
3 GND ground
4 PWR external power
5 SDA TWI/I2C data
6 SCL TWI/I2C clock
7 TXD serial transmit
8 RST reset

Parts list

Part Value Details Digi-Key#
R1 10 kΩ reset pull-up 10KEBK-ND
C1, C2, C3, C4 0.1 µF decoupling BC1160CT-ND
C5 10 µF electrolytic, polarity matters! P966-ND
IC1 ATmega328-20 can also use older ATmega168 ATMEGA328P-PU
IC2 MCP1702-33 3.3V LDO linear regulator MCP1702-3302E/TO
X1 16 MHz resonator 3-pin, built-in capacitors X908-ND
D1 Diode v5 only - v6 check bridged on bottom side Not required for V6

Construction hints - RFM12B module

You will see in the picture at the top that some RFM12B module pins are left unsoldered. This is because those pins are for signals that are not used in this design. For example, the module can output a clock signal to be used with an MPU lacking its own clock generator - that does not apply here. If you look at the zoomed false-color snapshot below, only pads with red traces need soldering (hard to see but this includes ANT and GND). If you want to count the pins carefully, then this method is fine. But soldering them all is fine as well.

It is important to mount the module sitting squarely in position. The pad spacing is necessarily small so if the module is skewed, there is a risk of a solder short between pad positions, hidden just under the edge of the module. A good technique is to solder a single corner pin first, check that the alignment at each pad is good (adjust the skew if required). Next solder the diagonally opposite corner, check again, then solder up at least the remaining required pins.

RFM12B pin/pad layout

The antenna (Ant) is required and can be a simple 1/4-wavelength piece of wire soldered at the ANT position:

  • for 433 MHz, use a 165 mm wire
  • for 868 MHz, use a 82 mm wire
  • for 915 MHz, use a 78 mm wire

The wire supplied with the kit is a little longer to allow for trimming - simply bend a cm. or two back on itself at the floating end of the wire and cut to length only when adjustment is complete. Note that the lengths quoted allow for the short PCB track length on the module and some stray capacitance in this area - the actual lengths for best performance are not critical to the last few mm.

Without access to some measurement system, simply trim to the length for the corresponding Band entry shown above - that is close enough for most systems.

If you have access to a field strength meter, or are using the soft NRfMon-nano Spectrum Analyzer , you can adjust this temporary “shortening” for maximum effective output power (take care to not disturb the aerial position between tests for consistency - the radiation pattern is affected by all conductors within about one wavelength of any part of the aerial including hands!)

The ground (GND) connection is not required when using a simple, single wire aerial. The GND pad is reserved for when the aerial is mounted remotely through a length of co-axial cable. Solder the outer sheath of the coax here, leaving the shortest length of unshielded inner white insulation that is practical.

Bootstrap Versions

As of mid-Jan 2012, JeeNodes ship with OptiBoot 4.4, which is compatible with Uno boards (the previous bootstrap was for Duemilanove’s). Check you have the correct board type selection in the Arduino IDE (usually the wrong setting generates error avrdude: stk500_getsync(): not in sync: resp=0x00 )

Related weblog posts


Also available in: PDF HTML TXT