Computing stuff tied to the physical world

Meet the Plug Shield

In Hardware on Nov 5, 2009 at 00:01

There are a couple of Arduino’s lying around idly here at the Jee Labs, so I thought it’d be nice to be able to attach some JeePlugs to them. Not all interface tasks require a wireless JeeNode, after all…

The main issue is how to deal with different voltage levels, i.e. 5V logic levels on the Arduino vs 3.3V on all the Jee stuff. Luckily, this is not a problem for an I2C bus, since there are chips which automatically convert between two different I2C bus levels.

So here’s the Plug Shield, carrying an RTC plug:

DSC_0731.jpg

Check out the gold lettering!

There is room for up to 5 port connectors, all connected in parallel, with right-angle 6-pin female headers (I take straight headers and just bend their pins). This supports two plugs lying flat on the board and three pointing outwards, although many more can be attached through daisy-chaining.

The PWR pin is connected to 5V. The IRQ signal is currently not connected to any pin but could be tied to PD3 to be compatible with JeeNodes.

Note that the Plug Shield will only work with I2C-type JeePlugs – things like the Room Board and the Thermo Plug cannot be used.

There is a regulator to supply 3.3V to the port connectors on-board, as well as an I2C bus level converter. To maximize the space available to plugs, these are all SMD’s. The reset button and ISP header have been brought out as well, since the original ones on the underlying Arduino board cannot be reached.

This shield allows stacking and can be sandwiched between an Arduino and any other shields. The only requirement is that analog pins 4 + 5 must be used for hardware I2C – these are not available as I/O pins.

Here’s a demo, reading out the RTC:

Screen shot 2009-11-03 at 00.32.07.png

Uses the standard “Wire” library that’s included with the Arduino IDE.

There is a wiring mistake in the shield, causing PB1 to be shorted to ground, so as a result digital pin 9 can’t be used with this shield. I placed one of the headers the wrong way around. Doh!

I’ve added this shield in the shop anyway. Got only a handful of ‘em for those who don’t care too much about that PB1/D9 issue. New shields will be made soon.

Apart from that, it’s working great. All I2C-based JeePlugs can now be used with standard Arduinos, without plug-stacking conflicts or voltage translation hassles. Want an RTC? LCD? UARTs? More I/O lines? You got it.

Update – The pcb was updated soon after this post, the above mistake only applies to the first few shields.

  1. “There is a regulator to supply 3.3V to the port connectors on-board, as well as an I2C bus level converter.” Do we need these to use JeePlugs with an Atmega running a 5V? The DS1340Z datasheet (for the RCT plug) seems to say it tolerates up to 5.5V on the supply, SDA and SCL lines but i’m not sure.

    • For some plugs (most of the current ones, in fact), no regulator or level converter is needed. For others such as the UART Plug, 5V is not an option. Note that mixing 3.3/5V devices on an I2C bus can be problematic. I’ve completely switched to 3.3V over here, but you’re right that it is not always needed for Arduino-based configurations.

      So for a Clock Plug for example, you don’t need the fully assembled Plug Shield. Just the PCB with a few jumpers will do. Or you can tie your plugs directly to the Arduino and forego the shield altogether, of course. It’s all going to depend on which plugs you use.

      I’ve got a couple of other plugs planned with sensor chips which are not 5V tolerant, so this will become more relevant later. To avoid confusion down the road, I’ve added a note to the documentation pages of those plugs which can also be used at 5V.

      Thanks for pointing this out.

Comments are closed.