If you are reading this, stop! Phi-1 shield is superseded by phi-2 shield. Please DON’T download code or documentations from this page. For archive only!
Welcome to Phi-1 shield home page!
Best multifunctional shield for Arduino
Thank you very much for purchasing this product! I’ve sold 100 boards in 2.5 months from a store virtually unknown from Arduino community. All support remains the same or better with the new Phi-2 shield! Now we have Phi_prompt and Phi-menu running on both shields.
(Update: scroll down for FAQ section in the bottom)
I have designed this shield to help Arduino new bees to quickly get started with prototyping. I have many fully-functional sample codes (scroll down below the videos), like alarm clock, Morse code trainer, etc that you can load and run. Learn from the code and make your own code from the samples.
(Update: dipmicro is out of stock on the kits right now but if you follow the kit link and purchase the items listed on that page, you will get everything! Alternatively, leave me a message on this thread or visit their ebay store http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=330532350804)
I’m able to have my favorite electronics store dipmicro carry my shield. They have both bare PCBs and kits (PCB with all parts, including the LCD and real time clock!) for sale at $12, and $22, which is a great deal. The kit page contains a list of all necessary parts so if it’s not available, just go through the list to purchase all the parts. Please click the following links: bare PCB or kit or go to http://www.dipmicro.com/ and search phi-1, select “Search out-of-stock” right below the search box if you can’t find it.
They have a lot of good stuff at bottom-low price that I couldn’t believe. I’ve made countless purchases there. Just a heads up: they will be carrying Arduino boards soon.
Here is a list of its functions:
- 16X2 LCD character display
- 6 push buttons – four arranged in arrow keys and two more on the side
- 2 RJ11 ports for long and robust connections with sensors or control devices
- Optional buzzer and LED in place of the RJ11 ports
- 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
- Reset button for Arduino
- All Arduino pins are brought out for maximal flexibility.
- Hackable for more functionalities (see the end of the assembling)
Here is the bare PCB:
Here is a list of possible project:
- Alarm clock
- Standalone or PC data logger
- Lab data acquisition system (Physics, Chemistry etc)
- Weather station
- Input or operating panel, like security panels or garage door opener
- Handheld GPS
- Morse code generator
- Car parking backing obstacle sensor
- The list goes on…
Sample codes: (All fully functional, just load and run)
- Clock display This is a basic program that displays the Clock. You can modify it to suit your needs.
- Testing all functions This program tests everything, LCD, buttons, the clock, and EEPROM if you have one on board. Learn the basics of everything with this program.
- Alarm clock (buzzer and LED) This program is a fully-functional alarm clock. You will find it more complex than the basic clock. If you can’t understand, try the Click display first.Go to the blog post for more details
- Morse encoder This program allows you to type in a sentence in letters, numbers, and symbols. Then it plays it in Morse code. Use the arrow up and down to type letters (think old-school arcade game record) use left and right to move cursor. Use B to enter. This is meant to be an archive so please check out the Morse encoder/decoder for latest updates.
- Morse encoder/decoder This program is an upgrade to the Morse encoder. You can key in the di and dah and arduino translates them into characters. I’ve also added a menu.Go to the blog post for more details
- Keyboard tray sensor Arduino will play a tune when you pull out your keyboard tray from your computer desk. It will play another tune when you push the tray back. Go to the blog post for more details
- Interactive GPS logger Arduino has a full menu you can choose from recording, erasing, recording parameters, displaying GPS coordinates. Go to the blog post for more details
- Car parking backing obstacle sensor: Interactive sensor with audio alert of obstacles behind your car. Go to the blog post for more details. Two code versions are provided, full, and nutshell.
- Animated characters on LCD You have a few animated arrows and adjust speed and direction of animation. Full code, nutshell
- Password input panel You demand password from the user before you show them top secrets! Full code, nutshell
Here is an ever-growing list of videos, from the sample projects above:
Here is a video of a 360 degree view of an assembled Phi-1 shield:
Just running a clock with DS1307 Real Time Clock (RTC) module
Running a testing routine to make sure everything works
Running a fully-functional alarm clock (it woke me up this morning) Details of making the alarm clock is on a separate post. The code is listed near the end of this post.
Morse encoder: type in a sentence and translate it into Morse code.
Morse encoder/decoder: This one translates both ways. Key in the di and dah to see them translated into characters.
Keyboard tray sensor: pull out your computer keyboard and it plays a tune. Push it back and it plays another tune. Just fun.
Interactive GPS logger
Car backing parking obstacle sensor
Animated characters on LCD
Password input panel
More to come!
Fully assembled shield running clock:
PCB and parts:
Connector board design pictures:
Standard board breaks out connections from the RJ11 jack and 5V/GND. The prototype space has 5V/GND running down middle for convenience. You can make a TTL-RS232 circuit on it, or maybe power an opamp, add I2C A/D converter to it or else. The screw terminals are pretty convenient and their connections are brought out for prototyping. You can also simply plug it into a breadboard. It also has two LED indicators and has connections for X, Y, 5V and GND.
The relay board has a standard AC or DC relay with control signal coming through the RJ11 jack from the main board. Several screw terminals are included for wiring. A power jack is also included so that it can easily power a single piece of equipment with the relay. You can turn on and off an electromagnetor else light with it.
This board passes the RJ11 connection to a 3.5mm stereo plug. It also has an LED indicator.
- How do I get the 2-pin, 6-pin, and 8-pin female headers pictured in your parts photo?
- Where do I get an EEPROM, the GPS connector, and the GPS module?
- Where to get a decent soldering iron for the assembling?
- How do I solder the headers so they don’t end up tilted or rotated?
- How do I enable the LCD?
- How to choose LCD back light resistor?
- How do I secure the LCD to the shield, besides pushing the headers together?
- How do I test my assembled shield?
- How do I make use of the RJ11 connectors?
- My EEPROM/RTC test didn’t pass. What should I do?
- Which way do the buzzers and LEDs go on the board?
- Can I use other pins for I2C bus?
- What pins can I use for my project, sensors and etc?
I take one 40-pin female header (hope you bought two as required on the parts list), then I use a regular 45 degree cutter ($2USD at a hardware store) to cut it to the size I need. Say I need a 6-pin female header, I take a row of female headers, clip on the 7th pin on both the pin side and the hole side, this destroys the 7th pin but after trimming the edges, I get a 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(keep)-1(break)-8(keep)-1(break)-16(keep for lcd)-1(break)-2(keep for 5V/GND)-1(break)-2(keep). Break indicates you destroy the pin to separate into the size you need. Then use the other 40-pin header row to get one more 8 and two 6. Here is an illustration:
Here is a list of the links to the vendor:
GPS module: http://www.sparkfun.com/products/465
The best way is to tape the headers to the board using masking tape. You will wrap the header with tape only leaving one pin exposed for soldering. Then solder this one pin so the header will not move when you remove the tape. After that, solder all rest pins, starting from the opposite end to the first soldered pin.
Jump pin 0 to pin 7 (purple jumper on picture). Jump pin 1 to pin 6 (green
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.
For the buzzer slot, on the PCB, top hole is positive and bottom hole is negative. It is important.
For the LED, the left hole is negative and right hole is positive. You can also look at the the cut on the side of the LED, which should face left, as indicated by the white silk screen on the PCB. Normally, the short leg on the LED is negative and the cut is also negative side.
The I2C bus on ATMEGA 328 chip (heart of Arduino Duemilanove and UNO) is multiplexed on the analog pins 4 and 5. This means the hardware I2C function block is hardwired to these two pins. You can’t move these to other pins. On Arduino MEGAs, these pins are digital 20 and 21. I don’t think you can move them either. All shields that use I2C bus will have to comply.
There are software implementations of I2C bus by some people but that slows the arduino to a grinding stop. With software, arduino has to check on the I2C bus so often that it has no time to do other stuff. With hardware, arduino just gets stopped if there is something coming in and doesn’t have to check on the bus all the time. My best analogy is software checking is like tending babies, you can’t step away. Hardware I2C is like tending teenagers, you can do your stuff until they come to you with requests (often money).
Section 5 from page 3 to 4 and Table 2 on page 4 detail the pin usage on the shield. All the LCD related pins are tied to the LCDs and should not be used for other stuff. Digital 12 and 13 are not connected to anything on the shield. Use them any way you like. The button pins can be used for your sensors as long as you’re not pressing them. Among the 6 analog pins, the first 2 are connected to buttons B and A so you can use them if you don’t use these buttons. then analog 2 and 3 are channeled to the buzzer and LED, they’re free to use if you don’t connect the buzzer or LED. Analog 4 and 5 are hardwired to I2C bus so to use them, you need to remove the real time clock and EEPROM. That’s the ATMEGA requirement.