Category Archives: Customer Projects

Monitor your health with Raspberry Pi & an E-health sensor

You can monitor various health parameters with your Raspberry Pi or RBPi. All you need to do is to use the e-Health Sensor Platform by plugging it atop your RBPi. This arrangement is especially helpful in performing biometric and medical applications where nine different body parameters are to be sensed: oxygen in blood or SPO2, pulse, body temperature, airflow or breathing, electrocardiogram or ECG, galvanic skin response or GSR or Sweating, blood pressure or sphygmomanometer and patient position or accelerometer.

All this information is available in real time, and can be used to monitor the state of health of a patient. The sensitive data can be stored for subsequent analysis for medical diagnosis. Depending on the application, the biometric data gathered can be sent wirelessly over any of the six different connectivity options available: ZigBee, 802.15.4, Bluetooth, GPRS, 3G or Wi-Fi.

For real time image diagnosis, you can attach a camera and send photos and videos of the patient to the medical diagnosis center. For permanent storage, the data can be sent to the Cloud. Visualization in real time is possible by transmitting the data over to a Smartphone or a laptop directly. There are plenty of applications for the iPhone and Android Smartphones that will allow the patient’s information to be seen.

This opens up a new era of open source medical products. The RBPi provides the new e-Health applications and products a quick proof of concept with the necessary tools. However, one of the key points in such applications is privacy and several security levels are provided with the platform.
The communication link layers use WPA2 for Wi-Fi and AES 128 for ZigBee and 802.14.5. The application layer uses a secure protocol (HTTPS) to ensure a point-to-point secure tunnel between the web server and each sensor node. Banks use this type of communication security protocols for their transactions.

The e-Health Sensor Platform is available from Cooking Hacks. Cooking Hacks, the open hardware division of Libelium, have designed it. The platform helps artists, developers and researchers to measure different biometric sensor data for their experimentation, tests or fun purposes. Compared with the expensive and proprietary medical market solutions, Cooking Hacks provides a comparatively cheap and open alternative.

Cooking Hacks also provides an RBPi to Arduino shields connection bridge, which includes the possibility of connecting the analog and digital sensors to both the boards. This allows harnessing the power and capabilities of the RBPi with the pinot of the Arduino. Further, they also have the arduPi library that allows the use of RBPi with the same code that is used for the Arduino. The arduPi library allows wireless modules, sensors, shields and electronic module or actuator to be interchangeably used for both RBPi and the Arduino.

Note: The e-Health Sensor Platform does not yet have a medical certification. Therefore, it must not be used to monitor patients who are critical and who need to be monitored by medical methods that are more accurate or those whose conditions need monitoring for ulterior professional diagnosis.

A Cross-Compiler for Your Raspberry Pi

Your pet dog knows it has to “Fetch” the Frisbee you throw out and to “Sit” when you command it to do so. The dog knows this since it has been trained to learn some commands. As its association with you grows, so does its vocabulary. As the dog is an intelligent creature, it sometimes chooses to ignore your commands, depending on its mood.

Fortunately, the Raspberry Pi or RBPi does not have moods to ignore your commands. Not possessing any intelligence of its own, it faithfully obeys (or tries to) what you throw at it. As a processor, your RBPi can understand only machine level language or MLL made up of two logic states ‘0’ and ‘1’, whereas you usually send it commands in C, BASIC, Python or similar high level languages or HLL.

Linux, the Operating System used in your RBPi has a compiler that translates your HLL codes into the MLL understood by the processor. As not all processors are the same, you must inform the compiler as to what processor it should translate the code for. Therefore, when you write code for your RBPi, the compiler creates a binary file, which consists of the machine code suitable for the processor in your RBPi board.

When you write your program code in HLL, there may be unknown errors called bugs that prevent the program from running smoothly on your RBPi. You have to spend time in debugging your program until the desired result is obtained. Most of the time, the bugs are not obvious and you are not sure why the program crashed or did not operate.

The amount of memory available in the Raspberry Pi and its CPU capabilities are limited. Therefore, when you have to debug and compile a long program, these limitations become a bottleneck. Debugging and compiling a lengthy program on a desktop or a laptop PC running Linux, is far faster than trying to compile it on an RBPi. The only problem is it will not be compiled for the RBPi processor, but rather for the processor within the PC.

The way out is to use a cross-compiler. This will run on the PC platform, but will generate the code necessary for the processor used in the Raspberry Pi. Using crosstool-ng is the simplest way to build a cross-compiler. A set of scripts is used to bring up a menuconfig type of interface allowing you to select your compiler settings. With the necessary inputs, the crosstool-ng downloads what else it needs, patches itself, configures itself, builds the cross-compiler and installs it for you. How to create the cross-compiler is detailed here.

Crosstools are notorious for the large amount of space they take up on the hard disk. This is due to the many files downloaded and intermediary build results necessary to be created when building up the crosstool. Be prepared with a 4-5GB amount of empty space on your HDD, as creating the crosstool-ng cross-compiler will take up at least 3.5GB. The Linaro C-compiler works well for the Raspberry Pi, although this is an experimental version.

Why Are Industrial Sensors Going Wireless?

Industries are increasingly opting for low-power wireless photoelectric sensors with extended range of signals that carry for miles. Such improvements have been made possible with the proliferation of low-power micro-controllers that have boosted the range of the sensors and enhanced their battery life.

In general, wireless sensors conserve and extend battery life by switching themselves off when they are not taking measurements. This allows the sensor to spend most of its time not consuming any power. With this simple technique itself, the battery life of the sensor is boosted by a factor of 100 or more in comparison to that of a continuously powered sensor. However, as the sensor does not sense when it is off, the response time suffers.

To understand how much the battery life can be extended, consider a dry contact wireless sensor that typically dissipates about 100 to 200 µW of power. Such a sensor operates on two AA batteries, which last for five years with the dry contact wireless sensor sampling at 10 times or more every second. In comparison, a powered sensor system can remain on continuously and can respond more quickly. It is also possible to run them at higher power levels to produce a longer wireless range.

To provide reliable and interference-free communication, FHSS or Frequency-Hopping Spread Spectrum techniques are used in industrial wireless sensors. Basically, FHSS switches a carrier rapidly among several possible frequencies, using a pseudorandom sequence. When bound or paired devices communicate with each other, data and control packets are interchanged using these frequency channels randomly, but in a pattern known only to the communicating pair.

Typically, the bandwidth necessary for frequency hopping is much larger than that required for transmitting the same information on just one carrier frequency. However, the transmission takes place only on a small portion of the bandwidth at any given time. Since the effective bandwidth of any interfering signal is the same as that for a narrow carrier, frequency hopping greatly diminishes interference from narrowband sources. Usually, a site survey is conducted before installation of wireless sensors to determine if there is RF interference and whether this is strong enough to be a problem.

Modern wireless sensor systems have a radio master device or gateway that polls all its sensor nodes at specific intervals to ascertain radio communications are still operating. If there is no response from one of the sensors, the system reacts deterministically; the system enters a state to maintain control in a fail-safe way.

The radio master connects to multiple sensors allowing many dozens of wireless sensor nodes to work within a single radio network. Using a TDMA or Time-Division Multiple-Access technique, ensures that all the sensors in the network have adequate time to transmit their data and receive their individual instructions. This effectively eliminates the possibility of multiple sensors trying to communicate simultaneously.

One of the major advantages of using wireless sensors and indicator lights is the elimination of complex cable installation. Rearrangement can easily be done if the plant layout changes. The modern wireless sensor with its own battery, radio and sensor in a single housing, allows higher productivity with real-life status of the production line.

Automate Your Home HVAC System from the Internet Using the Raspberry Pi

The HVAC devices in your home, typically the air-conditioner, thermostats, heating and ventilation, use one or more remote handheld devices working on Infrared (IR) technology. As the HVAC devices are from different manufacturers, you will most likely own a multitude of remote devices, making it difficult to handle and set each of them independently.

However, with the Raspberry Pi or RBPi, a small board called the IR Remote Shield and a wireless interface, you can control all the HVAC devices and that too from the Internet. Imagine setting up the environment in your home just as you are leaving office, so that you have a cozy atmosphere to relax at home.

There are two steps in this project. The first step involves teaching the Raspberry Pi and IR Remote Shield combination the codes that the remote handheld devices utilize to control the various functions of each of the HVAC devices. The second step is to connect the RBPi to the Internet through any one of the wireless interfaces such as Wi-Fi, 3G, GPRS, Bluetooth, and ZigBee or 802.15.4. These interfaces are available from Cooking Hacks, and you can choose one.

After you connect your RBPi to the Internet and feed in the IR codes used by your HVAC components, you can use a webserver, a laptop or even your Smartphone to control all your home HVAC appliances from anywhere in the world. But, a few words about Infrared technology first.

Started in 1993, IrDA or Infrared Data Association is the technology popularly used for controlling devices such as air-conditioners, TVs, radios, audio systems and many others. It is based on light rays in the infrared spectrum and invisible to the human eye. Using infrared transmitters and receivers, communication between two devices can be established in direct line of vision. The infra-red transmitters use special types of Light Emitting Diodes and the receiver uses a photocell sensitive only to the infra-red light.

Infra-red communication or control uses serial data transfer by emitting pulses of light, which is coded in binary, a language micro-processors are capable of deciphering. Therefore, for deciphering the binary code protocol that the remote is sending, you must hold the remote in front of the receiver on the IR Remote Shield mounted on your Raspberry Pi.

To decode and copy an IR code, press the “Receive” button on the IR Remote Shield. This will allow RBPi to capture the code the remote button is sending. In the software, you will have to tag each code with its individual function, for example, a certain code may be for raising the temperature and another for lowering it.

Once all codes from all the remotes are in the RBPi, it is a simple matter to map the codes and their functions on a web application. As the RBPi is connected to the Internet, any browser on the Internet can call up the web application, and the specific settings for the HVAC units altered. This allows the software program running on the RBPi to send the altered binary code to the specific HVAC unit via its IR link and change its status.

Brewing beer with Raspberry Pi

Ever since man first tasted naturally made beer, there has been no looking back. Not only man, animals also find beer irresistible. Beer brewers have always been looking for improving on the natural method to make beer tastier. Their work has become somewhat simpler and more high-tech with the introduction of Raspberry Pi or RBPi.

By using open source software and ultra-cheap computer hardware such as the RBPi and the Arduino, people are interconnecting all types of existing devices making them interact with each other. An ardent home brewer and Dutch electrical engineering student, Elco Jacobs has turned his refrigerator into a home beer brewing system. He calls it his BrewPi system and plans to sell kits. He has turned over his instructions and source code on-line for free, since he thinks they might be useful to others even if they do not brew beer.

Elco Jacobs has essentially beefed up his refrigerator with sensors, which send their data to an Arduino board. The Arduino adjusts the controls on the refrigerator for temperature and displays the results on an OLED display. The RBPi has a web server loaded and it provides the web-based interface for viewing. A Python script running on the RBPi allows it to communicate with the Arduino.

By using Jacob’s code, anyone can build a web interface to control an Arduino. The code makes it easy to use an Arduino to control an OLED display and present data on it after filtering the sensor data. When Jacob first started brewing beer at home, he was still a university student. He became interested after learning that to start brewing beer would cost him about 60 euros. He quickly learnt that temperature control was the main thing required when brewing to determine the fermentation rate of the beer and subsequently its flavor.

Hefeweizen, the favorite style of beer for Jacob, is particularly sensitive to temperature fluctuations. The taste of this beer alters radically if the heat to the beer buckets was not under finely tuned temperature controls. However, commercial temperature controls being outside the affordability of a university student, Jacobs wanted something cheap that he could control from the web.

That is how he hit upon the combination of the Arduino (for temperature control) and the RBPi for the web interface). Jacob’s goal is to sell a kit, which will require no soldering. The kit will not have the RBPi and the refrigerator.

By controlling the temperature of the fridge that holds the carboy, BrewPi is able to control the temperature of the fermenting beer accurately. Two zones of temperature are controlled separately, the fridge temperature and the beer temperature. This allow the beer temperature to be held far more steady than if a single thermostat were to be used. However, you can set BrewPi to operate in three modes: constant fridge temperature, constant beer temperature or allow it follow a temperature profile for your beer.

Highlights of BrewPi: four outputs for actuators, single wire bus for all sensors, a OneWire distribution board and lots of pluggable terminals.

Raspberry Pi and Laika

Raspberry Pi and Laika – A Powerful Combination for Robotics

Some of you may recall Laika, the first dog in space, and the first animal to orbit the Earth. In 1957, Laika gave up her life to prove that living beings can survive being launched into orbit.

This platform, aptly named the Laika Explorer, presents a powerful robotics control for your Raspberry Pi (Raspberry Pi). With Laika Explorer and using C, Python or Scratch programming, you can control switches, lamps, motors, robots and more from your Raspberry Pi.

The Laika Explorer is a simple platform, and you can start with the Scratch programming language for controlling the hardware in a matter of minutes. You only need to download the drivers, plug in the USB cable and you are ready to go, building up your hardware and software skills.

The Laika Explorer provides you with:

— Inputs to connect sensors, switches and other input devices – 2x analog and 4x digital;
— Outputs for controlling LEDs, motors, sounders and other output devices – 7x digital;
— Control for motors, drive forward, reverse and brake – 2x H-bridge motor drivers;
— Interaction between hardware and software – 4x switches;
— Diagnostics for digital outputs – 7x indicator LEDs

All the above are available on one PCB. You connect this PCB to your Raspberry Pi using a USB lead, and start the control by using one of the three programming languages – C, Python or Scratch. If you buy the Inventor’s kit, you get a laser cut, custom designed Perspex base to mount the Explorer board and the Raspberry Pi (the Pi is not included with the kit). Some motors, LEDs, potentiometers, wiring, etc., are thrown in. The USB connection will give you access to all the hardware control on the Laika Explorer board.

By sending a Scratch Broadcast, you transfer data to the Explorer board and to the seven digital outputs. Each output is capable of handling 500mA, although not at the same time. Each output is also protected by a back-emf diode, which means you can connect small motors, relays and solenoids, without having to worry about blasting the output driver transistors.

The dual h-bridge motor driver on the Explorer board is very useful in driving two motors individually. The two motors can be independently driven either in backwards, forwards or in braked condition. Both channels can each handle 1.5A continuously, or 3A if you want to drive one bigger motor with the outputs tied together.

The two analog inputs on the Explorer board provide 10-bit resolution. This makes it possible to use variable resistors or potentiometers to give precise control.

In practice, you do not need Scratch running on your Raspberry Pi to control the connected Laika Explorer. You can run a special Python script on your Raspberry Pi, allowing use of Scratch to communicate with the Laika Explorer over a network connection. Therefore, now you can control your Raspberry Pi robot through your Wi-Fi connection.

What does the future look like for Laika? Well, it is quite exciting as of now, with other modules in development. One such module is the multiple radio transceivers (868MHz for EU and 915MHz for US) forming a mesh network extension option, an exciting option for home automation to control lights, music and more through Raspberry Pi and Laika.

Publishing Photos with the Raspberry Pi and Pygmyfoto

You have tons of photos, which you would like to share with your acquaintances, loved ones and so on. Well, there are several sites on the web that will allow you to do so, but doing it through your own server has a separate charm. Additionally, if that server can be put up with the new Raspberry Pi you just bought, then the project takes on a whole different hue altogether.

Although your Raspberry Pi (RBPi) is completely capable of doubling up as a web-server and sharing photos on the web, most of the popular photo publishing applications, such as Piwigo, Gallery, etc., are heavyweights meant for the PC. For publishing your photos online through RBPi, a lightweight entity such as Pygmyfoto is a better choice. Not only can you publish your photos in a continuous roll, Pygmyfoto allows you to add a brief description and assign tags to your photos. In addition, Pygmyfoto displays key EXIF data after automatically processing the photos.

Now the viewer has all information of the exposure, aperture and ISO you used when you clicked the photo. Not only this, Pygmyfoto also adds a link to the photo’s full size version, along with a map URL. Now, if your photo was geotagged, the URL will allow the viewer to use OpenStreetMap service to view the exact place where you had clicked the photo.

When you need simple photo sharing without the unnecessary extras, bells and whistles of more advanced blogging platforms, Pygmyfoto may be more suited to your needs. Since it is open-source, you can tweak it to meet the requirements of even the simplest of hardware. Pygmyphoto is meant to be simple, and if you find something you need is missing, well, you can program it in.

So, how do you install Pygmyfoto on an RBPi? First, you need some required packages to be installed. For this, set up your RBPi to run the following command:

sudo apt-get install apache2 php5 sqlite3 php5-sqlite imagemagick libimage-exiftool-perl git

Now you must switch to the directory /var/www and clone the repository of the Pygmyfoto GitHub:

sudo git clone https://github.com/dmpop/pygmyfoto.git

Now change the directory’s owner and group with:

sudo chown www-data:www-data -R pygmyfoto

Switch to the Pygmyphoto directory and use a text editor to open phpliteadmin.config.php. Replace the default password by editing the line –

$password = “admin”

Modify the default values in the file config.php, if necessary.

Now you can add photos to the directory pygmyphoto/photos. Run the ./pygmyphoto.sh command in a terminal, and provide the required into.

The viewer must point their browser to http://127.0.0.1/pygmyphoto to view your photos. Of course, they must replace the 127.0.0.1 with the IP address or the domain name of your server.

For accessing and managing your database at pygmyphoto.sqlite, you must make it writable. Use the command:

sudo chmod 600 pygmyphoto.sqlite

Now, you can point your browser to http://127.0.0.1/pygmyfoto/phpliteadmin.php and log in. you must use the password you specified in the file phpliteadmin.config.php earlier. Do not forget to replace the 127.0.0.1 with the IP address or the domain name of your server.

All about Fritzing

Fritzing is a software program to help designers translate their prototypes into real products. Created at the University of Applied Sciences, Potsdam, the software is an open source software tool. It runs on Linux, Mac OS X and MS Windows.

The Open Source Idea

The term open source in software development indicates an approach that provides any individual access to the design of a product or improvements made to it. The Internet has made the concept of open source more viable.
In an open source program, any individual may open or unlock the source code. An innovative programmer may even make modifications to the code in an attempt to improve upon it.

Concepts behind Fritzing

To understand Fritzing, it is important to know something about Breadboard View, Schematics View, and Printed Circuit Boards View.

Breadboard View – Fritzing can present your circuit in breadboard view, making it easy to visualize how components will fit together and be wired together. Fritzing has a vast library of parts to represent all major components in the Breadboard view.

Schematic View – This is the traditional view of the circuit as represented in books. Frtizing has a large library of schematic parts to build up the Schematic View.

Printed Circuit Board View – A printed circuit board (PCB) consists of electronic components connected electrically on copper tracks laminated on a non-conducting substrate. This view is necessary to fabricate the PCB for the circuit.

Purpose of Fritzing

The software program allows designers and other professionals to record their prototypes created for various circuits and design corresponding PCBs. You can use the company website to communicate your ideas and drafts with other individuals. Others may create electronic items based on your prototypes. This concept of sharing helps reduce production costs.

One of the great advantages of Fritzing is amateur electronics enthusiasts can design circuits and build PCBs suited to their needs. All the gear needed is available from the Fritzing store.

You can even play with the Raspberry Pi using Fritzing. The rapidly growing Fritzing library now features the Raspberry Pi Model B!

Making your own PCB

You can design and create a printed circuit board using the Fritzing software.
Print your circuit diagram onto a sheet of glossy photographic paper using a laser printer. Place the sheet on a copper board with the printed side facing the board. Run a hot clothes iron over the sheet. If you have done the job well, you should get a clear etching of the circuit on the board. You may need to clear away the excess copper with a Ferric Chloride solution.

Be careful with the Ferric Chloride solution as this is a very corrosive liquid and will eat through most clothing and skin. Wearing a PVC apron, gloves and PVC shoes is recommended when working with Ferric Chloride.

The Fritzing software company provides a service called the Fritzing Fab. You will have to upload your file, place your order and make the payment. At the time of placing your order, you can request extra services like punching holes for mounting the board. The company will deliver your printed circuit board in about two weeks.

4 Accessories to Turn your Raspberry Pi into a Workhorse!

Gert Board To Pair Up Your Raspberry Pi With The ATmega Microcontroller

You can now expand the General Purpose Input Output (GPIO) pins of your Raspberry Pi with a Gert Board. Gert Board is the brainchild of Gert Van Loo, one of the developers of the alpha version of the Raspberry Pi. With the addition of the 28-pin ATmega microcontroller, you have the entire Arduino Integrated Development Environment (IDE) at your disposal. Moreover, it is possible to add any of the following ATmega controller models to the Raspberry Pi – ATmega 48A/PA, ATmega 88A/PA, ATmega 168A/PA or the ATmega 328A/PA.

So, what does this mean for your Raspberry Pi? By adding the Gert Board, you get an 18V @ 2A port for your motor projects. You also get a 2-channel, 8-, 10- or 12-bit Digital to Analog converter along with a 2-channel 10-bit Analog to Digital converter. Additionally, you get 6-Open Collector drivers capable of 50V @ 0.5A, 12-Buffered I/O’s and three push buttons.

PiFace Digital Controller

If you intend to control external hardware via the Raspberry Pi’s GPIO header, the easiest way is to use the PiFace Digital developed by Andrew Robinson of the University of Manchester. The PiFace Digital has two onboard changeover relays, and this is the central feature of the add-on board. The changeover relays have open-and-close positions, which are accessible to the user. Each open-and-close position of the relay can handle 5V @ 10A maximum. You can program the board through Python, C or Scratch. Scratch has also developed an emulator, called the PiFace Emulator. This gives you a graphical control over the features of PiFace. Not only this, PiFace has additional onboard features such as eight digital inputs., eight open-collector outputs on connectors, eight LED indicator lights on the outputs and four tactile switches.

Pi Camera

The Raspberry Pi has an onboard CSI port, which you can connect using a ribbon cable to the Camera Module. The Raspberry Pi camera module measures only 25mm x 20mm x 9mm. The tiny module has an Omnivision 5647 fixed-focus module that can handle 5MP still images, while weighing only 3 gm. You must use a 4GB or larger SD Card on your Raspberry Pi, as this is where the images from the camera are stored. The camera can handle resolutions of 1080p30 (1080 pixels at 30 frames per second), 720p60, and 480p60/90. The CSI bus on the Raspberry Pi is capable of handling high data rates streamed directly to the processor on board (BCM2835 ARM 11).

A Slice of Pi

This breakout board, called the Slice of Pi, is the least expensive of all the expansion boards for the Raspberry Pi. The board has a serial peripheral IO port expander, MCP23017, which adds 16-input/output channels to your Raspberry Pi. Apart from this unique feature, you can also use the board as a custom development area. One key feature of this Slice of Pi is the Xbee style connector mounts. Since this can support the XRF, Xbee and the RN-XV wireless modules, the functionality definitely expands the popularity of the board. Apart from this, you have easy access to the on-board GPIO, the 3V3, 5V; GND and the TX/RX solder points.

Do Even More with your Raspberry Pi

When you own a Raspberry Pi, there is so much you can do with it. However, combine the bare Raspberry Pi with some attachments, and you have a gadget that could far exceed your expectations. Presented here are some of the more useful attachments, which will increase your expectations from the Raspberry Pi.

LCD Option from 4D

When you want to exploit the full HD capabilities of the Raspberry Pi, give it the color LCD options from 4D Systems. The company’s EVE (Extensible Virtual Engine) that is featured by the “Picasso Processor” drives the 480×272 pixels on the TFT Screen of the 4.3-inch “uLCD-43-PT-Pi”. This gives you 65,000 true to live colors on a 4.3-inch diagonal screen. The 4.3-inch screen is notable for its resistive touch layer, which can sense both finger as well as stylus interaction.

When you are going portable with your Raspberry Pi, this screen will be absolutely essential. To connect with the Raspberry Pi, this series of LCD screens from 4D has a “4D Serial Pi Adapter” that connects to the GPIO port of the Raspberry Pi board, through a 5-way cable adapter. The best feature of this adapter is it does not hog all the GPIO port, but allows for duplication of the GPIO lines, so that you can stack another board on top.

AlaMode

A team of like-minded students and engineers has made the AlaMode board that has some special features. Working off the Raspberry Pi GPIO port, AlaMode is a stackable board compatible with Arduino. The goal of the Wyolem Team was to provide the Raspberry Pi and its user’s access to the vast library, devices and “Shield” expansion boards available for the Arduino and its community. This allows you the complete freedom to program the Raspberry Pi in any language you prefer and control the Arduino or the AlaMode directly.

The AlaMode takes its power directly from the Raspberry Pi, or you can power it separately from USB, wall-mart or external batteries. For application memory support or for data logging, a micro-SD card slot is added. You also have a real-time clock (DS3234), which reports its time back to the Raspberry Pi, thus removing the necessity to program two clocks.

You can even connect a Fastrax UP501 GPS receiver module on the AlaMode. This opens up the Raspberry Pi to the expanding stackable shields of the Arduino.

LCD & Keypad Kit