Phi-2 shield is almost ready - any suggestions?

Hi everyone,

I'm almost ready to start producing a revision of my Phi-1 shield, the Phi-2 shield. Here is a few pictures:
Notice that the "board" was a 1:1 printout double sticky taped onto a cardboard and many holes were poked on it!

The following functions still exist since the Phi-1 shield:

  • 16X2 LCD character display
  • 6 push buttons – four arranged in arrow keys and two more on the side
  • Optional buzzer
  • Real time clock with battery backup keeps the time when Arduino is turned off
  • EEPROM for easy data logging keeps data when Arduino is turned off
  • GPS connector and breakout for this popular GPS module
    (GNSS Receiver - EM-506N5 - GPS-19629 - SparkFun Electronics)
  • Reset button for Arduino
  • All Arduino pins are brought out for maximal flexibility.

The following functions are gone, and replaced:

  • 2 RJ11 ports for long and robust connections with sensors or control devices-replaced by RJ45 connections with 8 lines per port, 16 total!!
  • LED in place of the RJ11 ports-replaced by a sensor block (bottom right 3X3 female headers). You can connect a variety of sensors such as thermistor, LM35, photoresistor, phototransistor, sonic ranger, Hall sensor (analog or digital), photo gate, trimpot, etc. Pretty much anything with a 5V, GND, and a signal (analog or digital) can go on the sensor block.
  • Hackable for more functionalities (see the end of the assembling)-removed. Now all RJ45 pins are brought out to female headers, so is the buzzer. The analog 2 and 3 are no longer dedicated to buzzer and led any more. More flexibility!

The following functions are newly added:

  • Two 3mm indicator LEDs below the LCD. I didn't put them on the "board".
  • SCL and SDA are no longer tied to arduino UNO or Duemilanove analog pins 4 and 5 but to two female headers. You can jump them to UNO analog 4 and 5 or MEGA pins 20 and 21(right?)
  • Now the shield is pin-compatible with official Ethernet shield. I could use your help to find the height of the RJ45 connector on the ethernet shield!! If the ethernet shield is connected to the Phi-2 shield, the LCD is still functional, as well as several buttons.

Please feel free to leave suggestions!
I'll be making RJ45 breakout boards, relay boards (RJ45, terminal block connection), and other stuff as well. Keep tuned in.

Meanwhile, the Phi-1 shield PCB and kit are still for sale at The price is rock-bottom low. This new PCB I'm shooting for $16.

Looks good, I love the mock up.

Why did you move from RJ11 to RJ45?

Does your sensor block conform to the quasi-standard GND-VOLTS-SIGNAL format?


Thanks Graymond!

There are more connections on RJ45 plugs so one can say control POV or other shift registers and stuff that need more pins. Plus my supplier runs low on RJ11 jacks but he will get RJ45 plugs at good price for kits. I'll be making RJ45 breakout boards and relay boards with RJ45 and terminal block connections.

I have to admit being a physicist doesn't improve my 3D intuition too much. We get things the easy way, like using dot product to find angle between two arbitrary lines in 3D, no need to think and feel. So I'm fond of mocking up my designs with paper or other stuff. My sensor block has the following combination:
GND-Volts-sig, and two other permutations minus their mirror images:) You're covered in all possible combination.

SDA / SCL is 20 / 21 on the mega.

Just soldered a header to a 16x2 lcd and used that on your phi-1 shield.

For the mega the A and B button are 54 and 55 respectively. You might want to add some compiler directives to have this work for mega users.
Maybe something like this would do:

#ifdef ATmega1280
#define btn_b 54
#define btn_a 55

#ifdef ATmega2560
#define btn_b 54
#define btn_a 55

#ifdef ATmega328
#define btn_b 14
#define btn_a 55

The only thing I have against the RJ connectors is that I'm afraid someone will fry his arduino by connecting a telephone/ISDN/ethernet device.
The good thing is of course availability of cheap cables connectors and crimping tools.
I like your new design especially the two leds :wink:

Hey wortelsoft,

Thanks for your suggestions. I'll include the #ifdef statements in my new code releases.

I've added two LEDs per your suggestion. I think you will also like the sensor block feature. It makes testing sensors easier, you plug them into the block and test them out. No need to pass 5V and GND to a breadboard.

In the new version, I've totally disconnected the RJ jacks and buzzers from arduino pins. With female headers and some jumper wires, you will be free to wire any number of pins in any order you like between the RJ jack and arduino. You can control some shift registers by passing 5V, GND (next to each RJ-45 jack) and three digital pins down one RJ-45. Or maybe you want to do TTL serial with another arduino through RJ-45, you can do it. I'm anxious to get the prototype now.

I made a mistake with ifdef before (it's still not working if you have a 168 / 8) I'm not sure if you can use an or statement in the preprocessor section.

I didn't realise that the RJ45 will be jumpered to the pins you want to use. Very clever.

As another suggestion maybe you can make the pads for the resistors of the 3mm leds so that it can either be throughole resistor or for a cleaner look a smd resistor.
But that might be to much trouble for little benefit.

Thanks wortelsoft. I'll look into the preprocessor directives more carefully once I get my boards. If you think the resisters are in the way, you can hang them below the board. There's nothing on arduino that will collide with the resistors hanging below the shield.

About the RJ45, yeah, all 8 pins are broken out and there are 5v and gnd near each jack for easy access to power and ground. The buzzer and sensor block are also loose, so you can jump them to any pin. It's more work on the user but offers more flexibility.