Welcome to Pi4J!

This project is intended to provide a friendly object-oriented I/O API and implementation libraries for Java Programmers to access the full I/O capabilities of the Raspberry Pi platform. This project abstracts the low-level native integration and interrupt monitoring to enable Java programmers to focus on implementing their application business logic.

News / Announcements

2015-03-15

The RELEASE CANDIDATE for Version 1.0 is now available. Please report any defects/bugs that you find in the release candidate builds via GitHub. No new features or enhancements will be added to the release candidate version, only bug fixes. Further enhancements and features will now be contributed in the 1.1-SNAPSHOT builds. (The release candidate codebase is now maintained in the 'master' branch.)

The 1.1-SNAPSHOT build includes a completely overhauled Serial communication implementation and API. Thus please note that to add these enhancements some APIs required breaking changes where they may no longer be backwards compatible with prior versions. (The latest development codebase is now maintained in the 'develop' branch.)

Project Status

Please note that this project is continually under development but has been very stable for well over a year. The functionality is very stable but improvements and bug fixes are continually committed into the 'develop' branch in the Pi4J GitHub repository.

You are welcome to start using and integrating this library in your project. Please provide any feedback good, bad or ugly. (Well maybe keep the ugly feedback to a minimum.)

Visit the Downloads page to download the latest Pi4J library builds.

Features

  • Export & unexport GPIO pins
  • Configure GPIO pin direction
  • Configure GPIO pin edge detection
  • Control/write GPIO pin states
  • Pulse GPIO pin state
  • Read GPIO pin states
  • Listen for GPIO pin state changes (interrupt-based; not polling)
  • Automatically set GPIO states on program termination (GPIO shutdown)
  • Triggers for automation based on pin state changes
  • Send & receive data via RS232 serial communication
  • I2C Communication
  • SPI Communication
  • Extensible GPIO Provider interface to add GPIO capacity via expansion boards
  • Access system information and network information from the Raspberry Pi
  • Wrapper classes for direct access to WiringPi Library from Java

Getting Started

The simplest method to install Pi4J on your RaspberryPi is to execute the following command directly on your RaspberryPi.
curl -s get.pi4j.com | sudo bash

To get started using the Pi4J library, please see the following pages:

Examples

Review each of the following examples to explore the functionality provided by the Pi4j library.