Computing stuff tied to the physical world

Finished PCBs with RFM12B

In AVR on Feb 12, 2009 at 00:13

Here are the finished PCBs – my first steps on the road to custom electronics:

Finished PCBs with RFM12B

Component side at the bottom, with the radio SMD-like pads on the right.

This board is by PCB-POOL in Ireland. I omitted the silk screen for this first run. The board looks very well made, with a very clean and smooth outside border.

The big question of course is: is the board correct, will the circuit work?

Step 1 – resistor, IC socket, and ISP/SPI connector (actually, I also needed the 16 MHz resonator):

Finished PCBs with RFM12B

Step 2 – add ATmega168 and program the boot loader:

Finished PCBs with RFM12B

It works! (no errors)

Step 3 – add all 5 capacitors:

Finished PCBs with RFM12B

Step 4 – add 3.3V regulator and FTDI connector:

Finished PCBs with RFM12B

It works! (ASCIITable example)

Step 5 – add the RFM12B radio module. Note that it’s slightly too close to the ISP/SPI connector:

Finished PCBs with RFM12B

But that’s hardly noticeable in the end (also added the 85 mm wire antenna):

It’s called a JeeNode

It works! (using RF12demo).

Here is one more view from the bottom side:

Finished PCBs with RFM12B

The remaining pads are four “ports” (to be used for sensors and all sorts of goodies), and a 4-pin power/I2C bus which can be used to tie multiple units together – or simply to supply power instead of the FTDI connection.

All four “port” pinouts are identical (top/outside view, left-to-right):

  1. IRQ – a pin shared with all ports and tied to INT1
  2. DIO – digital input/output
  3. GND – ground
  4. AIO – analog in, or digital input/output
  5. VCC – 3.3V regulated, ≈ 50 mA max per port
  6. PWR – ≥ 4V, as supplied to the on-board regulator

In some cases, you’ll only need the center pins 3 & 4. In most cases the middle 4 pins are probably sufficient to hook up all sorts of physical devices. And for advanced port use, all 6 pins are available.

The 4-pin power/I2C connector has the following pinout:

  1. PWR – ≥ 4V, as supplied to the on-board regulator
  2. GND – ground
  3. SCL – I2C clock
  4. SDA – I2C data

(as seen from the top FTDI connector side, left-to-right)

The ISP/SPI connector is a hybrid 2×4-pin connector, with a standard 2×3-pin ISP layout for programming on pins 3..8, plus the ATmega168’s PB0 & PB1 lines on pins 1 & 2, respectively (Arduino pins 8 & 9).

Note that this board requires a ≥ 4V external power supply, and runs internally on 3.3V. The FTDI connector is very convenient as it can supply 5V (make sure it’s set to work with 3.3V signals), I used a “USB BUB” from Modern Device (with the jumper set to 3.3V). Small quirk: the FTDI board has to be inserted upside down.

Oh well. My first Arduino-compatible setup with on-board 868 MHz wireless, and IT WORKS!!!

EAGLE schematic (PDF) & board files (jee-pcb-002).

Update – The listing of the “port” pins was reversed: pin 1 is IRQ.

Update #2 – There’s now some basic documentation at JeeNode-v1 as PDF.

  1. Great job! I started working on the arduino with a RFM12B with the idea to end up with a solution like yours. Would have taken me a lot of time since I know little about electronics. Your solution looks perfect. Do you sell the PCB’s? Or even better a version that is already assembled.

  2. Well, if there is more interest, I’ll consider it. It’s still very early days right now and it’s quite expensive to produce boards and kits in small quantities. Also, the current design doesn’t have markings about where to place the components – though there are only a few. As for pre-assembled units: I don’t know whether I can do this at a reasonable cost. Right now, I’m still exploring the hardware and software possibilities, like you.

    (Aha, I see you’re Dutch: groetjes uit Houten! ;)

  3. Congrats on your progress, just found your site and have just read all your previous posts. I too have been pondering a mesh based WSN around the home based on RFM12/arduino combination and its great to see how far you have got.

    What is the highest speed you are reliably talking at with the RFM and your Arduino library?

  4. Thanks. I’ve been using the RFM12B modules for over a month @ 38.4K with good range. Plan to move up to 57.6K soon, but haven’t tested the effects on range / reception quality yet.

  5. I understand, must be patient :-( But if you’re are ordering a second batch please order a few extra for me. Doesn’t matter it is not finished yet. Would be nice just to experiment with it. I live nearby (Utrecht) so could pick them up and pay you directly.

  6. Heh, small world. I’ve sent you an email.

Comments are closed.