Introducing Phi-1 shield LCD/button/GPS/EEPROM/RTC

I've designed a shield for beginners to learn and prototype with character LCDs, buttons, real time clock, EEPROM, and GPS.

The shield makes it very easy to use the above parts so a user can concentrate on his/her project ideas instead of which wire is connected wrong.

The shield is compatible with arduino UNO, MEGA, and Duemilanove. It also has spots for two RJ11 jacks so you can extend your arduino's reach as far as a phone cord can take you, without messing with wireless or jumper wires or screw headers.

Details and sample codes are posted on http://liudr.wordpress.com

Here is a couple of pictures:

Here is a video of an alarm clock I made:

I've got an electronics store (dipmicro) to carry this board. They're in Canada, near USA. Feels nice to see my own design up for sale. By the way, they will carry arduinos early next year.

Bare PCB: PHI-1 Shield for Arduino By John Liu (aka liudr) - PCB Only - dipmicro electronics
Kit: PHI-1 Shield for Arduino By John Liu (aka liudr) - Kit - dipmicro electronics

The kit has a list of parts that you can just purchase from if the kit is not available.

Here is the permanent page: Phi-1 shield | LiuDr Electronic Solutions LLC Official Blog

I've got an electronics store (dipmicro) to carry this board.

Pretty cool. You have a right to be proud. Congratulations.

Thanks a lot Paul. This past summer has been my best summer, learning PCB and actually getting my first PCB made. Quite a few members helped me with my learning process. Now, this board is my 5th PCB and counting. I'll make some smaller boards that can utilize the RJ11 connector on, say plug it on a breadboard or solder to a protoboard, or have a relay. I think with some time and effort, one can learn the basics of making PCB.

Just ordered the kit a few minutes ago via standard shipping. It's surprising cheap - about the same price as a 16x2 LCD on its own.

I'm planning to use this as a data logger and display for an ECG detector. I'll let you know how it goes!

VladimirK,

Thanks! That's how much an LCD is supposed to cost you. Lots of places sell them at 3X the price. That is a reason I chose this online store. I shopped there many times. I got an LCD at a......t for $12 but only finds out that I will regret for the price, and the slightly slow response.

If you have any trouble, let me know. Please read the documentation and make sure you enable the LCD by putting two jumpers (detailed in the documentation).

Did you add your shield allready to http://shieldlist.org/ ?

Thanks bottillaart! I did know that website that Jonathan started. It seems to have a lot more stuff than I looked last time. I just submitted my shield.

Jon - I bought everything in the list of parts on the "Kits" page @ dipmicro.com, but I seem to be short a few things, namely the EEPROM and GPS connector and breakout. Being pretty new to this stuff, I'm not sure what to buy and from where. I searched the Dipmicro site, and didn't find the GPS connector at all. I did find a lot of choices for EEPROM, not sure what I should buy. Any insight would be appreciated.

Also, I saw in your "fig-1" what appears to be a couple of risers (also not in the kit), which I assume are used to support the LCD - are those necessary?

Two more items: the instructions say "The resistor for LCD back light (please consult your LCD's spec)" - how do I find out what I need? Also, "the resistors for the buzzer and LED if you plan to use the buzzer and LED" - how do I determine what resistors I need for those?

Joatmon,

First of all, thank you!

Next, risers are not needed. I take one 40-pin female header (hope you bought two as per the list), then I use a 45 degree cutter to cut it to the size I need. Say I need a 6-pin riser(female header), I take a row of female header, clip on the 7the pin on both the pin side and the hole side, this breaks the 7th pin but after trimming the edges, I get the 6-pin header. I will then trim off the edge on the rest of the row of female pins, then cut one more time to get another header out. Remember, if you need a header with 6 pins, cut on the 7th pin so you get a complete 6-pin header. So for a 40-pin female header you will get say 8-1-8-1-16-1-2-1-2. Red indicate you destroy the pin to separate into the size you need. Then use the other 40-pin header to get one more 8 and two 6.

The following picture is an illustration:

Then the EEPROM and GPS header, dipmicro is not carrying them. You may get them here, and the GPS module:
GPS connector: JST SH Vertical 6-Pin Connector - SMD - GPS-00579 - SparkFun Electronics
EEPROM: I2C EEPROM - 256k Bit (24LC256) - COM-00525 - SparkFun Electronics
GPS module: http://www.sparkfun.com/products/465
This is exactly where I got my stuff. I've posted on my blog (liudr.wordpress.com) on how to hook up the GPS.

Now for the resistor, say you bought this from dipmicro (Character LCD 16x2 BLUE Backlight SPLC780/HD44780 Tinsharp TC1602A-09T - dipmicro electronics), its spec sheet is here (http://www.gzliyedz.com/download/yjpzf/162-4.pdf)
It says V=4.1 I=120mA about the back light. This current is kind of big but with calculation, you need 7.5Ohm resistor. I would use a larger value like 150 Ohms. I don't want my backlight to burn so bright that it reduces its life time. All you need is when the lights are turned off in the room, the back light makes the display totally visible.

This is very similar to the one dipmicro sells. The comments are quite helpful too.

Thanks, Jon -

I got all the parts you suggested (it is nice to live so close to Sparkfun), and have it fully assembled. Just can't seem to get it to work. I have double checked that I did everything according to the instructions. The backlight comes on when I plug in the USB cable, but there is no display after uploading the test code. I tried adjusting the contrast as your video shows, but nothing. Can you suggest a method for troubleshooting? I'm not sure how to go about isolating the individual components to see what is working and what isn't.

Joatmon,

Have you used two jumpers to enable the display? Here is the instruction on the documentation:

Jump pin 0 to pin 7 (purple jumper on fig. 3). Jump pin 1 to pin 6 (green
jumper on fig. 3). This enables the LCD.

By the way, have you attached male pins on arduino pin 0 and 1? If you have, snip them off with a wire cutter.
Here's the picture:

Note there's no pins on 0 or 1. There's also two jumper wires.
This is when I forgot and I cut the pins from bottom:

Yes, I do have the jumpers. And yes, originally I did have the male pins attached on pins 0 and 1, but I caught that when I was troubleshooting, and reviewing the instructions, so I snipped those two pins.

It looks to me that in your pictures of the assembled board, the middle four male pins on the LCD are not attached, but there is no reference in the instructions to not attach them. Should I snip those, as well?

Joatmon,

Those four pins are not needed since the LiquidCrystal standard library can use 4-bit data. Connecting them will not make a difference. OK so I guess assembly might be alright. What code are you running? Can you post the code (at least a part of it) and maybe a few pictures of the assembly (front/back)?

Here are some pics - let me know if you want to see something specific.:






The code that I am using is the testing code from your website (Phi_1_testing_v1). I also tried the Phi_1_test_clock_v1.

Everything looks good on the picture. Now, if you can pull the LCD out, test the pins 7-14 to make sure they're all isolated from one another. The red jumper could use a little push down on the left side.

Then run this simple code: The buzzer should sound an alarm and the LED is flashing. The top LCD line will show black boxes. If you can't see them, adjust the contrast until you can see them.

#include <LiquidCrystal.h>
#define buzzer 16
LiquidCrystal lcd(8, 9, 7, 6, 2, 4); //Phi-1 shield setting

void setup()
{
  lcd.begin(16, 2);
}

void loop()
{
  while(1)
  {
    tone(buzzer,770);
    digitalWrite(led,HIGH);
    delay(75);
    noTone(buzzer);
    digitalWrite(led,LOW);
    delay(75);
    tone(buzzer,770);
    digitalWrite(led,HIGH);
    delay(75);
    noTone(buzzer);
    digitalWrite(led,LOW);
    delay(75);
    delay(850);
  }
}

Let me know how it goes with these steps.

I've soldered the shield together and it works on my seeeduino 328 but not on my mega. The sda/scl lines are on a different location so the real time clock doesn't work.

And I'm considering buying a 16x2 lcd as my 16x4 is to large it covers the buttons.

wortelsoft,

You're quick! I thought you just received it in the mail. I have one easy way to make it work for mega: (I wish I had a mega before I made the design)

First set the analog pins 4 and 5 to input with pull-up resistors so they won't interfere with the communication. Then jump pins 4 and 5 with the female header on the shield, to the I2C pins on mega: so analog 4 to digital 20, analog 5 to digital 21. This should work then.

Yeah, I'd say the 16*4 is too big. I thought about designing the buttons on the right side but then I don't have space for RJ11 or buzzer. :slight_smile:

As I was typing this reply, I almost suggested snipping off the male pins on analog 4 and 5 as a one-way trip. Then I realized it could be done within software and a couple of jumpers ;D

Please let me know if this works OK.

Another solution would be to cut the trace between the male and female headers for the sda/scl lines. That way the two pins are still usable for other things.

Maybe in a next version you could ad a solder jumper with header pins. Mega users can than cut he trace and use header pins or just a wire a to connect it.

I had most parts needed for the shield laying around so only some soldering was needed. The lcd isn't a big thing as these 16x4 are rare anyway, but I could get hold of them very cheap. Maybe I just have the display on some flatcable.