Phi-3 shield is one of the most versatile shields on the do-it-yourself electronics market! It is the latest update from my Phi-shield. This shield is intended for an Arduino MEGA2560, although you can still use it on an Arduino UNO.
List of features
The following hardware are provided by the shield:
+ 20X4 LCD with back light on/off control
+ Six buttons (up/down/left/right/B/A)
+ Two LED indicators
+ MicroSD card slot
+ Real-time clock (DS3231)
+ EEPROM (32KB 24LC256)
+ Connector for Adafruit Ultimate GPS module or Bluetooth module
+ Stacking headers for easy access to all pins.
+ Recessed board right edge for easy access to MEGA's 18X2 pin headers on the right side.
+ Reset button
The following software functions are provided by various supporting libraries:
+ User-selectable menu (LCD + buttons)
+ Number and text entry (LCD + buttons)
+ Scrollable long text (LCD + buttons)
+ Date and time (DS3231 or GPS)
+ Location (GPS)
+ Data and configuration storage (MicroSD card and EEPROM)
+ Playing simple tones (speaker)
+ Indicators (LEDs)
+ Wireless connection (Bluetooth module)
Alarm clock program with the shield:
Components of the shield:
Assembling modules of the shield:
Kit0: board parts, no LCD, MicroSD card slot, or DS3231/EEPROM.
Kit1: Kit0, MicroSD card board, and DS3131/EEPROM. The MicroSD card board and DS3231/EEPROM have been tested against flaws.
Kit2: Kit1 and a yellow/black I2C LCD that has been adjusted and tested.
First batch of 10 kits will come with colorful button caps. Next batch will have buttons with long black plungers.
+ Standalone or PC data logger
+ Lab data acquisition system (Physics, Chemistry, Earth science etc.)
+ Weather station
+ Input or operating panel, like security panels or garage door opener
+ Handheld GPS
+ Alarm clock (see complete project code)
+ Tweet update display
+ Morse code trainer (see complete project code)
+ The list goes on…
Flow of the test code
The test code tests all functions of the shield. You will need to make sure you adjusted your LCD's contract to see the text on screen. The code does the following:
1. It displays a long message. You can scroll it with up/down and dismiss it with B or A.
2. It displays a sample menu with six items. Use up/down to navigate through the menu and press B to select an item. Your selection will be displayed (0-5).
3. It displays a number entry with a default value of 40000. Use left and right to select which digit to modify and up/down to modify the digit. Press B to confirm. Your number will be displayed and saved to SD card. The file name is LOG.TXT. The time stamp of the file will come from either the RTC or GPS, depending on the value of use_GPS. The code will restart.
Menus, number entries, and scrollable text
The code is quite self-explanatory. You can try and modify the code to see what happens. The menu and number entry are extremely easy to do, thanks to my phi_prompt library.
All you need to do is to call simple_text_area() function and include the text in the parenthesis. The function will return when the user dismisses the message with B or A.
// Displays a long message
simple_text_area("This is a sample code for displaying information, menu, and collecting user inputs on phi-3 shield with phi_prompt library.\nAuthor: Dr. Liu\nDate: 2017-02-17");
Menu is also very easy. Define a variable ret_val to store return value. Call simple_select_list() function with the content of the menu. Each item is ended by a "\n" including the last item. The first item is treated as menu title and will always be displayed on the top line. The return value ranges from 0-5 for the following menu that has 6 options.
ret_val=simple_select_list("Main menu:\nDisplay GPS info\nRecord GPS info\nErase data\nDisplay records\nParameters\nShow credit\n");
This is not too hard either. You first define a user_input as long integer if you want number entry. Then you define a char string to hold the initial value, which will turn into final value when the user confirm with B. Print a prompt with lcd.print(). Then call simple_input_panel(). The function needs the buffer's name, and the lower and upper limits of the characters that are allowed. In the following example '0' and '9' limits the entry to be only number. Once done, call sscanf() to turn the text into number and store in user_input.
|Open Source||Hardware||Docs & Files||Software|
|Open Source Hardware Definition v1.0||Creative Commons - Attribution - ShareAlike 3.0||Creative Commons - Attribution - ShareAlike 3.0||Creative Commons - Attribution - ShareAlike 3.0|
Update: Due to USPS mailing restrictions, a coin battery is no longer included in the kit. Sorry for the inconvenience. The new kits now come with female stacking headers with ...
In case you have trouble ordering, you may order a kit directly from my blog at liudr.wordpress.com USPS has doubled international rates to around $12.75 to most part of the ...
|Destination & Service||Shipping Time||Cost|
|Worldwide - Standard||7-14 Business Days||$12.95 for first item, $3.95 for each additional item|
|Domestic (USA) - Standard||3-7 Business Days||$3.75 for first item, $1.50 for each additional item|
|Domestic (USA) - Express||2 Business Days||$6.95 for first item, $1.50 for each additional item|
InMojo supports the Open Source Hardware Definition v1.0