phi-panel
Where to buy:
This hardware is for sale in several online stores that ship internationally.
Buy directly from me:
You can place an order right here for a kit or follow the link below to visit online stores to make your purchase, with more options and purchase other hardware I sell:
Click to buy the phi-panel 16X2 kit (including LCD)
Click here to buy the phi-panel 20X4 kit (including LCD)
Click here to buy the phi-panel 16X2 backpack kit (including LCD)
Click here to buy the phi-panel 20X4 backpack kit (including LCD, no keypad)
Buy from online stores:
There are more options you can buy at online stores but you do need to register at some of these stores.
Please click this link to redirect to the “buy” page for where to purchase this hardware.
Introduction
The family of phi-panels currently has 3 members: The 16X2 version has a 16*2 character LCD with integrated 16-key keypad, buzzer, and 4 LED indicators. The 20X4 version has a 20*4 character LCD with integrated 16-key keypad, buzzer, and 4 LED indicators. The backpack version can work with many display sizes and directly hooks up to a 4*4 membrane matrix keypad and a buzzer. The versions with integrated keypads etc. will easily make your project look and feel professional while the backpack versions gives you the freedom on keypad locations and display choices to fit in your project’s space.
This phi-panel is a revolutionary add-on to arduino projects which can connect to arduino or any serial device (PIC, BASIC stamp or PC). It has an on-board micro-controller that will take care of all your interactive user interface needs, including displaying menus, lists, input numbers, texts, sensing key presses, returning user choices, and a lot more.
You can integrate it in your existing project within one minute. The following code will create an interactive menu on the phi-panel, connected directly to arduino’s hardware serial (you can use software serial as well). Making changes on the code to suit your needs definitely takes less than a minute and everything is in human-readable strings!
No need to create elaborate codes to do objects, generate menus, sense buttons with debouncing or wasting dozen of arduino pins on LCD and keypad. All you need to get started is Serial.print() you learned from Arduino-> Examples-> communication. But wait, experienced programmers / software developers, easy_to_start!=dumbed_down. I have a 30-page long detailed manual with a dozen examples for you to go so much beyond basic use on this panel that your limit is your own imagination.
Here is how easy and human-readable to create a short menu:
Serial.println(“Menu:”); // Display ” Menu” on line 1
Serial.println(“1.Display GPS info”); // Display option 1 on line 2
Serial.println(“2.Record GPS info”); // Display option 2 on line 3
while(1) {
if (Serial.available()) { // Make sure there is a key press
char response=Serial.read(); // Read key press from phi-panel
if (response==’1′) display_GPS(); // Display GPS info on LCD
if (response==’2′) record_GPS(); // Record GPS info on SD card or EEPROM
break; // Breaks out of the while (1) loop.
}
}
Here is what the menu looks like:
I challenge you to come up with less code if you try to create a short menu on a display and keypad without using phi-panel.
Customer Projects using phi-panel:
More to come…
Picture and video gallery:
How to assemble the backpack:
A video demonstrating all features of the panel on the compact 16×2 panel
This is the on board menu for parameter adjustment: baud rate, startup beep, back light, and key repeat speed.
Multi-tap is integrated in phi-panel, all you need to do is to tell the panel to enable it for alphanumerical and symbol inputs and turn it off after done. Multi-tap input is not immediate or real time by nature so turning it off after done will make keypad report key press in real time.
Quick look at the phi-panels. This full-size unit has on-board power regulator, which is not necessary if you power it via an arduino with 5V.
This is the compact size panel quick look around:
Here is a play list of phi-panel demo videos:
http://www.youtube.com/playlist?list=PL17A2C9B777ACFCB0
Variants:
There are three variants of the panel, one full-size panel with 20X4 display, one compact-size panel with 16X2 display, and one backpack that fits many displays but requires a matrix keypad. The following diagram shows the relation among the variants and their sizes:
List of functions:
Hardware:
- ATMEGA328 microcontroller manages all hardware
- TTL-Serial (0-5V) interface, compatible with all Arduino variants and most other microcontrollers
- 20X4 character display or 16X2 character display
- Keypad has 0-9, four directional keys, enter, and escape
- 4 LEDs
- 4 general purpose digital outputs (20X4 only)
- Buzzer for simple buzz or any tone
- Software adjustable LCD back light intensity
- Optional EEPROM for storage (20X4 only)
- Reset key behind the panel so you can decide whether the user can reset the panel
- Optional power supply from wall adapter or battery (20X4 only)
- SPI interface for possible upgrade (20X4 only)
- I2C interface for possible upgrade (20X4 only)
- Firmware can be upgraded for more functions
Software (display):
- Wraps messages automatically at the end of a line.
- Automatic scrolls lines up with new messages.
- Supports control characters: newline (‘\n’), return (‘\r’), backspace (‘\b’), tab (‘\t’).
- Supports most ANSI escape sequences: cursor position, blinking/underline cursor.
- Supports local echo of key presses for regular inputs or no local echo of key presses to conceal inputs for password fields.
- Supports LCD back light brightness control 0-255.
Software (keypad):
- Relays key presses via serial port such as ’0′ to ’9′ on the number pad and 1, 2, 3, 4, 5 and 6 on the arrow pad and enter and escape.
- Getting user input with multi-tap (like on cell phone number pad) for alphanumerical and symbol inputs
- Getting numbers and passwords is as easy as 1-2-3 with few lines of code.
Software (interactive features):
- Supports phi_prompt user interface library such as long text areas, interactive lists or menus, YES/NO or OK dialogs and various number and text inputs.
- Supports on-the-fly baud rate change.
- Planned upgrade will support “store and recall” functions to store messages, menus and lists on-board the panel so they can be recalled by their indices (like display menu#1 instead of sending of the entire menu) to free your Arduino FLASH by up to 256KB (requires serial adapter, special software and external EEPROM).
Software (peripheral):
- Can control 4 LEDs for status indication
- Can control 4 digital output for general purpose
- Can output any tone on the buzzer
Multi-tap diagram:

As you can see, when multi-tap is enabled, you can enter all 32 printable symbols, 26 letters in both upper or lower cases, all 10 numbers, space, back space and enter. By default the letters are in upper case. A single press of the shift (up arrow) will make all subsequent input in lower case. Another press will resume upper case for subsequent input. The temporary result of an input is rendered locally on the pad so that only the final entry of a character is relayed via the serial port. The developer should relay the final character back to the panel via serial, like regular keys in normal key mode, if they want their users to see the final entry of a character, including space, back space, and enter.
Documentation
Please visit the Google code page for most up-to-date documentation:
http://code.google.com/p/phi-panel/
Test and demonstration code
There are tons of codes for you, all located at the google code site:
http://code.google.com/p/phi-panel/
Programming tips:
Search my blog for programming tips. Here are some:
Printing custom characters on phi-panel
Firmware update:
There has been updates to the firmware. The firmware is located at the google code site:
http://code.google.com/p/phi-panel/
Please visit this page to learn how to update firmware:
http://code.google.com/p/phi-panel/wiki/updateFirmware
Face plates:
The Corel DRAW file of the face plates and exported .svg file are on the google code page too:
















Got the Phi-panel kit today w/20×4 LCD. Two questions… the leds positive lead should be on the resister side? Your instructions say “top” hole which doesn’t apply here. However, I assume that it the hole next to the resistor.
Second, I didn’t get any mounting hardware for the display (bolts, nuts, spacers). I can figure something out but figured you might want to update your parts kit.
Looking forward to putting power to this thing. The serial number on my unit is 0009.
Roy,
The left LED hole is negative, the right side is positive. The LCD will be directly soldered to the panel circuit board so there is no need to bolt them together. If you flip the LCD upside down, you can see 8 black metal feet on the bottom of the LCD. They have the exactly same height as the plastic on male pins. So when you push the LCD with male pins into the panel board, use rubber band to secure them together and you can solder them together on the under side of the panel circuit board. Make sure you trim all metal leads on top of the panel circuit board so they don’t short connections by touching the back side of the LCD. Let me know if you have more questions
Thanks Liudr.
Roy,
You are welcome. Let me know if you have any other questions.
Liudr
Liudr,
How much are you selling the optional power kit for??
Roy,
Currently I am out of the power switch (funny thing the switch is the most expensive part of the power kit http://www.sparkfun.com/products/102). Everything else I have in large enough quantity to sell at $1.50 (2X 10uf capacitors, Power barrel, Diode, Voltage regulator). If you don’t need the power switch (replace with a wire), you can have the rest mailed to you in an envelop tomorrow for $2. I’ll be looking into cheaper power switches otherwise.
Liudr.
Liudr,
Sounds good to me. You still have my charge card info or would you prefer paypal? You can invoice me via paypal at wurth1@cox.net
Alright invoice sent. It looks like paypal will charge $0.40 for just $2 transfer LOL. I should buy their stocks. I’ll mail you the parts tomorrow.
Thanks for the money!
Amount received:
$2.00 USD
Fee amount:
-$0.36 USD
Net amount:
$1.64 USD
LOL! Paypal is greedier than credit card companies, banks and US government combined.
I bought one of those rgb lcds from adafruit. I want to be able to change the background color of the lcd via pwm pins on the arduino. What is the best course of action to integrate that with your backback that I have yet to solder together?
Thanks
Allan, Thanks for purchasing the backpacks. At the moment there is no native support for RGB back lights but you can wire the pins to your main arduino to control them. I was looking for a good source of displays with RGB back light but haven’t found one yet. Here is also not enough pins on the backpack’s ATMEGA328 to drive all three colors if I need to keep the keypad connector, which uses 8 pins. Do you need a keypad connected to the panel?
So the best move is to not solder the pins from lcd to the backpack that would be used to control the backlight. Instead route the wiring from the lcd direct to the arduino. That won’t cause havoc with the backpack expecting something that isn’t there? I would need the keypad to take advantage of the built in menu structure. It isn’t critical though. The lcd is mostly a situational display. The rgb is cool because it can be green for normal and red for alert.
Thanks
Yep, that is what I would recommend. Just leave the back light unsoldered and wire them to your main arduino. When you purchase a keypad, make sure you get the 4*4 one, otherwise there won’t be any keys available for scrolling lists.
Hi Liudr,
I’ve purchased x2 20×4 phi-panels kits.
After 2 days working fine with the first one, I’m having troubles with the keypad. It seems that the down / Right arrows keys aren’t working properly. (the “down” button seems to act like the #5 button.)
I haven’t assembled the second kit yet, hope it will be ok.
Apart of that, it is a great kit to enhance arduino projects
Thanks for your work!
Mickaël
Mickaël,
Thanks for purchasing! If you hook the panel to your arduino and just look at the serial port output, what does the down and right button output to the serial monitor? I’d like to know what actually went wrong. Was it possible that you held two buttons together and that drew too much current to damage a shift register?
Liudr,
Yes, I may have pushed two buttons together…
I’ve writed fhe following short code on my arduino mega:
void setup() {
Serial3.begin(19200); //PhiPanel hardware serial
Serial.begin(9600); //Serial to computer
}
void loop() {
if (Serial3.available()) {
char response=Serial3.read();
Serial.println(int(response));
}
}
On the computer serial monitor, I can see the following effects (button / serial data)
1 / 49
2 / 50
3 / 51
4 / 52
5 / 53
6 / 54
7 / 49
8 / nothing
9 / 57
0 / 48
left arrow / 8
right arrow / nothing
down arrow / 53
up arrow / 45
B / 10
A / nothing (but it shows / hide the main menu of phi-panel on the display)
Hope it will help you
OK I just checked the symptom with the diagram I have. Here is what I found out:
The shift register 0, the one further away from the speaker, is probably shot or the solder was not good.
The shift register has 8 output channels 0A, 0B, … 0H
Channel 0C (pin 2 of the shift register) is dead or the solder came loose. No response to the two buttons connected to it, i.e. “8″ and “right”.
Channel 0E (pin 4 of the shift register) and 0H (pin 7 of the shift register) are acting like they are connected, either because solder bridges or they are damaged internally. The buttons connected to them are acting strangely.
I suggest you check to see if there’s any bad solder or shortage on shift register 0 first. If there is, fix it and try again. If not, you still have the second kit you can take one shift register out to replace the bad one. Remember, it’s the one chip further away from the speaker (circular), not the one in the middle.
From what you can still sense, the ATMEGA328 on board is intact. The shift registers are cheaper to replace. Since the connections are covered below the LCD, I suggest you use wire cutters to cut out the bad chip’s all legs, then remove each leg and its lead with solder wick. Then you can solder from the chip side instead of under the chip, which you generally do when assembling.
http://liudr.wordpress.com/2011/06/25/desoldering-tricks/
Here is a blog post on how to remove things.
Some raw analysis for my own records:
7 / 49 (1) D08 – 0E 0E mixing with 0H?
8 / nothing D08 – 0C
right arrow / nothing D09 – 0C
down arrow / 53 (5) D09 – 0E 0E mixing with 0H?
Thanks for your explanations.
I have assembled the 2nd kit, and I’ve used sockets for the two shift registers, so if the same problem occurs, it’ll be easyer to check / replace.
Solders on the defective kit seems all good, so..
I’m going abroad for holidays now, but I’ll order some shift registers, and when I’ll be back (february) I’ll replace it on the board.
Thanks for the desoldering tricks, will be usefull !
Hi again!
I’ve replaced the two shift registers, (using sockets, just in case) and it works fine again, thanks!
Great! I might consider using analogbuttons for my next revision so there won’t be problems like you encountered.
For backpack version is the same firmware?
They are different. The integrated panel uses 5 pins and shift registers to sense keys and the backpack version has no keys and will sense a matrix keypad with 8 pins. Please find different firmware downloads on the google code site.
Hi Liudr,
I purchased 4 * Phi-panel 20*4 and I find them great and very useful. After working with the panelsfor a while I have noticed a couple of questions that I need to get answered.
In the hardware specification it says “4 general purpose digital outputs (20*4 only)”. My first questions is; how to program these outputs. I can not find information about this in the documentation.
My second question concerns the optional EEPROM storage. It is described in the documentation as a planned upgrade. Is this upgrade planned in the near future?
.
Olle,
Thanks for your purchase a while back! Here is the link to the documentation:
http://code.google.com/p/phi-panel/downloads/detail?name=Phi-panel-serial%20documentation%2020111113.pdf&can=2&q=
The general purpose output is mentioned on page 35 of the documentation. It uses the same syntax as turning on and off the on board LED indicators. Please be advised that these outputs are from a shift register and should not exceed 20mA. If you need to switch larger loads, connect the output to a proper transistor to switch them. These outputs are just left over from the second shift register so their initial status at panel power up was not well defined until the panel fully powers up and set them to LOW. If that momentary undetermined status is a problem, use a pull-down resistor to make sure the initial status is always LOW.
For the EEPROM, good question. At the moment, the EEPROM slots are not used yet. I have not finished my plan yet but will post here when I do finish it. When finished, you can dump long messages on the EEPROM and at run time just tell the panel to grab “that EEPROM message” instead of storing it on Arduino and sending it over serial. It’s nice isn’t it? Just wait a bit for the summer, when my teaching is done.
Hi liudr,
Thank you for the information. I have read the documentation from the beginning to the end and back again several times and I have missed the part “general purpose output status”. Now I have tested it and it works fine.
The EEPROM feature is great and I will wait patiently for it.
I read the announcement about the advanced features and the PC emulator. This sounds very interesting. When will it be available to order?
Olle,
You have to blame the manual. It’s too long. I can’t even keep track of what’s in it myself
Regarding the PC emulator, I’m still working on what to put in the development kit for sale. At the moment, I want to have these in the kit:
1) Commercial license of phi_prompt $30 value (go make money with phi_prompt, with my blessing)
2) Emulation setup including .h and .cpp files, how to config manual and video tutorial
3) Advanced phi_prompt features source code and video tutorial and infinite updates thereafter
4) A $50 value towards my professional assistance (I charge $100 per hour regular rate to software development) to write you a template for your project or help you with your coding.
The package is $99.