diff --git a/404.html b/404.html index e2c8493b2..c982b1dff 100644 --- a/404.html +++ b/404.html @@ -1,2 +1,2 @@ 404 Page not found -

Error

Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.

Go to homepage

Page not found!

\ No newline at end of file +

Error

Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.

Go to homepage

Page not found!

\ No newline at end of file diff --git a/about/download/index.html b/about/download/index.html index 46e3bf5a6..2c2fa12a6 100644 --- a/about/download/index.html +++ b/about/download/index.html @@ -1,7 +1,7 @@ Pi4J Downloads - Pi4J -
\ No newline at end of file diff --git a/about/index.html b/about/index.html index 602b3374b..f61cb483b 100644 --- a/about/index.html +++ b/about/index.html @@ -1,6 +1,6 @@ About - Pi4J -
\ No newline at end of file diff --git a/about/license/index.html b/about/license/index.html index b2b294fc2..48637a295 100644 --- a/about/license/index.html +++ b/about/license/index.html @@ -1,6 +1,6 @@ License (Open Source) - Pi4J -
\ No newline at end of file +limitations under the License.

\ No newline at end of file diff --git a/about/new-in-v2/index.html b/about/new-in-v2/index.html index 65e4bb783..061845bb9 100644 --- a/about/new-in-v2/index.html +++ b/about/new-in-v2/index.html @@ -1,6 +1,6 @@ What's New (V.2) - Pi4J -
\ No newline at end of file diff --git a/about/previous-version-v1/index.html b/about/previous-version-v1/index.html index d098e430e..f607aac96 100644 --- a/about/previous-version-v1/index.html +++ b/about/previous-version-v1/index.html @@ -1,6 +1,6 @@ Previous versions (V.1) - Pi4J -

Previous versions (V.1)

Documentation of the 1.X versions

Pi4J Version 1.4

  • Released 2021-03-03
  • Support for JDK/JRE 11 and 64-bit ARM platforms
  • This release is the final release for the Pi4J Version 1.x codebase
  • The Pi4J project is now prioritizing focus on providing Java programs access, control and communication with the core I/O capabilities of the Raspberry Pi platform
  • Changed project to Apache License, Version 2.0
  • Removed pi4j-device and pi4j-gpio-extension library
  • Removed platform support for Odroid, BananaPi, BPi, NanoPi, OrangePi
  • Various improvements and bug fixes listed here: GitHub Issues (v1.4)
  • Not using Java-modules yet, this will be part of the V.2
  • Documentation website V1.4

Pi4J Version 1.3

Pi4J Version 1.2

Pi4J Version 1.1

Pi4J Version 1.0

\ No newline at end of file diff --git a/about/release-notes/index.html b/about/release-notes/index.html index 20dffee45..da1c333d8 100644 --- a/about/release-notes/index.html +++ b/about/release-notes/index.html @@ -1,7 +1,7 @@ Release Notes - Pi4J -

Thanks to contributions by @ylexus, @mores, @taartspi, @eitch, @fdelporte.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.6.1...2.7.0

2024-07-29 - V2.6.1

This is a minor bug fix release to allow a smoother integration in a Spring Boot Starter by allowing to run on PC for testing without initialization errors and with reduced logging of the I2C Mock plugin.

  • Issue #354: Gracefully handle UnsatisfiedLinkError on newAutoContext when not running on a Raspberry Pi, for instance, when testing on Windows or macOS.
  • Clean up of logs in MockI2C.java.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.6.0...2.6.1

2024-04-29 - V2.6.0

Thanks to contributions by @fusetim, @taartspi, @eitch, @fdelporte.

Make sure to also read the interviews with Robert von Burg and Tom Aarts.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.5.1...2.6.0

2024-03-18 - V2.5.1

Sorry! Because of a configuration error, the wrong native code is included in 2.5.0 for the new GpioD Provider. But thanks to the lightning fast action of Robert von Burg we have a fixed version for you to enjoy :-)

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.5.0...2.5.1

2024-03-18 - V2.5.0

With over 100 commits from multiple branches, this is a major release with many improvements! With many thanks to the core team (Robert von Burg, Tom Aarts), and a major addition of Alexander Liggesmeyer, Pi4J is again lifted to a higher level!

You can find out more about Alexander in this blog post.

The new GpioD Provider needs the latest Raspberry Pi OS version (Debian GNU/Linux 12 (bookworm)).

Changes in 2.5.0

  • A new GpioD Provider adds support for the Raspberry Pi 5.
    • Issues #321, #320, #317
    • This new GpioD provider interfaces directly with the Raspberry Pi’s gpiochip device, located at /dev/gpiochip.... It leverages the native libgpiod library, which is developed as a part of the Linux kernel. Libgpiod is currently the recommended way to control GPIO pins. Therefore, using this provider is also recommended.
    • This new provider can be used without the need to start a Pi4J application with sudo, so also fixes #212 when you only need DigitalInput and/or DigitalOutput.
  • Better handling of mock Plugins: Plugins can now define if they are mocks, and these are not auto-detected anymore. The default target for the Pi4J library is the Raspberry Pi, and thus auto-detecting mocks on the Pi, which are only for tests is counterintuitive.
  • Extended Providers with a priority: this priority helps to determine which Provider should be loaded, when multiple Providers with the same IOType are being loaded by different plugins. This change enforces that a given IOType can only have one Provider loaded at runtime preventing errors when, for instance, two I2C providers are loaded at the same time, concurrently writing to the I2C bus.
  • Fix for: LinuxFile reused scratch buffers ensuring size was usable. But the limit value cannot be modified so later usage failed as an intended overwrite. Pull request #331, commit ed208f2.
  • Fix for: I2C interface should use a restart between the write and read operation. Pull request #333.
  • Fix for: Shutting down pool executor too early. Commit 7909a2d.
  • ProviderProxyHandler got removed, simplifying provider loading, thus no more reflection on the instances.
  • You can now add and remove IO instances at runtime.
  • You can now easily switch a GPIO from output to an input and vice versa, see issue #26, extending on the work by @MEBoo, in pull request #1.
  • A race condition got fixed in the default runtime registry.
  • Proper life cycle management got added for of all threads in Pi4J.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.4.0...2.5.0

Known Issue

  • java.io.IOException: Remote I/O error java.base/java.io.RandomAccessFile.writeBytes(Native Method). Using linuxfs-i2c, dependent upon i2c operations this exception can occur: If the program initially uses read or write, and later uses readRegister or writeRegister there is no exception. However, if the program initially uses readRegister or writeRegister subsequent write or read may encounter this exception. For more info and the temporary fix, check #335.

2023-10-24 - V2.4.0

Thanks to @GeVanCo, @MMMMMNG, @IAmNickNack, @savageautomate, @eitch, @taartspi, @FDelporte.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.3.0...2.4.0

2023-02-06 - V2.3.0

  • Improvements for PIGPIO.gpioCfgInterfaces by @bwaldvogel.
  • New i2c interface to support multibyte register address by @taartspi.
  • Fix in LinuxFsI2C byte array offset by @harlanhu.
  • Remove unused JNA references by @taartspi.

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.2.1...2.3.0

2022-10-17 - V2.2.1

Multiple fixes by @taartspi:

  • Better error message when mixing 32- and 64-bit artifacts
  • SPI improvements:
    • Add missing initialization in constructor
    • Track weather the user set the mode or bus config values to improve the use of SPI flags

All changes: https://github.com/Pi4J/pi4j-v2/compare/2.2.0...2.2.1

2022-08-30 - V2.2.0

What an amazing achievement! No major issues were found in the previous release, but several small fixes were added by more people than ever before in the Pi4J-history. This is a real confirmation of the openness of this project and how a community can work together to further improve a project.

A big thank you to everyone who experimented with Pi4J, took part in the discussions, filed an issue, created a merge request, added examples,…!

New example implementations

Thanks to the work of FHNW students and @taartspi, the list of available example implementations has become larger and larger. We even moved them to their own section of this documentation website! Take a look at Example implementations if you need a quick-start to use a buzzer, camera, LED strip, TCA9548, MCP4725,… or any of the other examples.

Changes in V2.2.0

Multiple improvements were added in this release (and others are already in progress for the next one!):

  • by @taartspi to improve SPI initialization, see #229
  • by @haumacher regarding the use of ByteBuffers, see #185
  • by @savageautomate regarding the polarity of digital output, see #93
  • by @gugrim to ensure positive values are returned from reading unless at end of file, see #164
  • by @eitch to also export LinuxFS I2C in module-info.java
  • by @eitch to also copy native libs to distribution zip
  • by @hagen to be able to configure sample rate and peripheral in PiGpio
  • by Saskia Bikle to add an implementation of deregistration/shutdown for IO’s
  • by @savageautomate to add a new value “flags” too SPI implementation

All the differences can be checked by comparing with the previous release 2.1.1 via this link.

Earlier release notes

Release notes of the previous releases of Pi4J V.2 are available on github.com/Pi4J/pi4j-v2/releases.

\ No newline at end of file diff --git a/about/team/index.html b/about/team/index.html index 76091a9e5..f5b077527 100644 --- a/about/team/index.html +++ b/about/team/index.html @@ -1,6 +1,6 @@ The Team - Pi4J -

The Team

Robert Savage, Project Founder, Architect, Lead Developer.

Principal Software Architect/Engineer. Consultant, technology enthusiast, entrepreneur, open source contributor, technology blogger. Founder at shadeBlue, LLC and SavageSoftware, LLC. Robert has a more than 20 year career working in the professional audio visual and home/commercial automation industry and an extensive background in developing technology solutions with a special focus on home automation and hardware/firmware/software integration. In 2012, Robert created the Pi4J project which provides Java developers an easy to use Java library enabling access to low-level I/O functionality (GPIO, I2C, SPI, Serial, etc.) of embedded systems like the Raspberry Pi. I created Pi4J to empower Java programmers to get involved with embedded platforms such as the Raspberry Pi and provide an easy to use and accessible Java-centric object-oriented library enabling control of real world (physical) “things”. Pi4J V.2 brings an entirely new and modern approach to Java I/O programming for embedded systems. I’m excited to get V.2 released and see what additional creative projects emerge.

Read more about Robert Savage in this interview on Foojay.io.
Frank Delporte, Project organization, Documenter, Developer.

Java and Raspberry Pi-enthousiast, blogger on webtechie.be and author of the book “Getting Started with Java on Raspberry Pi”. Technical writer at Azul. Lead coach CoderDojo in Ieper, Belgium. Software developer with more than 25 years of experience in video, multimedia, technical project management, digital signage and (web) programming. I’m a strong believer in the power and fun of Java on the Raspberry Pi. My goal is to make it as easy as possible to get started for new and experienced Java developers who want to start there first hardware experiment. That was the reason I wrote a book about this subject and share my experiments on my blog and GitHub. Pi4J V.2 brings a lot of improvements to an already great project, and - just one example - the use of the BCM pin numbers will make it even a lot easier to use the GPIO’s. That’s why I join this great team to assist in delivering this V.2 and extend it further so we can bring even more Java to the Raspberry Pi.

Read more about Frank Delporte in this interview on Foojay.io.
Robert von Burg aka “Eitch”, Developer, Releaser.

As lead developer for strolch.li we use Raspberry Pi as our platform to connect with products, and to implement a PLC in Java. The Pi4J project allows us to encapsulate the low level aspects of communicating with the hardware, and stay in our preferred choice. The strolch.li/plc.html project allows us to also stay in the same DSL for writing server applications, as well as communicating with low level devices. Since I love open source projects, it felt natural to me to start investing time in the Pi4J projects to assist in the further development.
Dr. Dieter Holz, Lecturer, Software Developer.

Dr. Dieter Holz is lecturer and a software developer with more than 40 years of experience. He co-founded Canoo, a Software-Boutique based in Basel, Switzerland (now known as Karakun) and worked in several large scale Java projects. For over 10 years, he teaches at FHNW Java / JavaFX in the context of real-world business applications, and Kotlin and Jetpack Compose for native Android-Apps and desktop applications.

Together with his students, Dieter created the CrowPi example implementations, the Pi4J Operating System, and other examples and documentation here on the Pi4J website.

Read more about Dieter Holz in this interview on Foojay.io.
Thomas Aarts (aka Tom), Developer, Creating IC examples.

My previous work entailed a decade in Alaska involving HF through Microwave communication and airport Instrument Landing Systems (ILS) DME NDB VASI. The next decade was centered around telephony. Working for ‘ROLM’ I was a software engineer working on the CBX series of switches. Most years in assembler using the DG instruction set. Later years on the larger CBX that used a company designed compiler much like ‘C’ on a much different instruction set. The last two decades I worked within an IBM lab. At the start I worked the AS400, a mid to large size server. Initially development of software at the user interface, above the MI. After a few years I moved in the firmware stack at the time all the servers, mid-mainframe, changed to using the IBM RISC processor. After some years in the firmware stack I moved to a newly formed simulation team. This entailed developing a simulation of the entire central processor complex (CPC) or Central Electronic Complex (CEC) to enable the firmware stack to boot and the partitions to boot on top and run. So after a long time working just above the hardware or simulating the hardware I found the Pi4j project of interest. After its’ use for some sensors and displays I am spending more time learning its capability and if possible offer something to the project. After that by decade history rundown I should add I retired.

Read more about Tom Aarts in this interview.
Muhammad Hashim aka “mhashim6”, Developer, Focus on Kotlin.

I’m a Software Engineer at Instabug, Writer & Blogger at The Upside-Down Trees & The Unhappy Folk. I go by “Timeless, Placeless” As it better reflects the crafts I do; my art and interests; and my life. I’ve joined the team to bring Kotlin to Pi4J; The project that brought the JVM to the Raspberry Pi.
Alexander Liggesmeyer, Student Worker at Max Planck Institute for Informatics, personal website.

Alexander created the GpioD Provider for release 2.5.0 to make Pi4J compatible with the Raspberry Pi 5. He also loves drinking cocktails with the CocktailPi as a result.

Read more about Alexander Liggesmeyer in this interview on Pi4J.com.
\ No newline at end of file diff --git a/architecture/about-the-code/build-instructions/index.html b/architecture/about-the-code/build-instructions/index.html index ae8c1e3c0..602d59486 100644 --- a/architecture/about-the-code/build-instructions/index.html +++ b/architecture/about-the-code/build-instructions/index.html @@ -1,7 +1,7 @@ Build Instructions - Pi4J -

Build Instructions

Building the Pi4J Project is simple and requires minimal effort. Pi4J is primarily built using Apache Maven and Java 11. @@ -36,4 +36,4 @@ more information about the profiles illustrated in these commands.

Additional information about Docker Builds vs Cross-Compiler builds can be found here: https://github.com/Pi4J/pi4j-v2/issues/21#issuecomment-651976487


Custom Build Profiles

The Pi4J Maven build includes a number of custom profiles that can be activated to perform various build steps.

ProfileDescriptionNotes
sourcesPackage raw sources for each JAROnly needed when performing a snapshot or release build.
javadocCompile and package JavaDoc for each JAROnly needed when performing a snapshot or release build.
nativeCompile any native libraries included in the buildOnly needed when modifying native code or performing a snapshot or release build.
dockerUse docker builder containers to compile native library artifactsOnly used when incuding the native profile or performing a snapshot or release build.
cross-compileUse cross-compilers on host to compile native library artifactsOnly used when incuding the native profile or performing a snapshot or release build.
test-hardwarePerform hardware integration testingEXPERIMENTAL
macUse docker builder containers to compile native library artifacts (Same as docker profile)Automatically activated when running build from a MacOS host system.
windowsUse docker builder containers to compile native library artifacts (Same as docker profile)Automatically activated when running build from a Windows host system.
transferPerform SSH/SCP file transfers for each JAR to a remote Raspberry PiUsed for parallel development and testing.

You can activate a build profile using the -P{profile-name} argument in the Maven command:

mvn clean install -Pjavadoc
 

Release/Snapshot Builds

Pi4J release and snapshot builds are reserved for the Pi4J Development Team. A release build ensures all JARs, resources, source-bundles, native libraries, and javadoc artifacts are compiled and deployed to the public Maven repositories. You can use the following command to perform all the build steps that would be performed during a release or snapshot build.

mvn clean install -Drelease-build
-
\ No newline at end of file +
\ No newline at end of file diff --git a/architecture/about-the-code/code-styling/index.html b/architecture/about-the-code/code-styling/index.html index f4b47c1a6..0d85c0390 100644 --- a/architecture/about-the-code/code-styling/index.html +++ b/architecture/about-the-code/code-styling/index.html @@ -1,7 +1,7 @@ Code styling - Pi4J -

Code styling

To prevent unnecessary code (tabs versus spaces, number of characters per line…) we have defined an editorconfig for IntelliJ IDEA. You can find more info here about its use.

Some tips to keep the code clean and readable:

  • Short methods with a clear name
  • Use SonarLint to get improvement tips while code
  • Use shortcuts
    • CTRL+ALT+L: Reformat code
    • CTRL+ALT+O: Optimize imports
\ No newline at end of file +Welcome to Pi4J > Architecture/Design > Project source structure > Code styling

Code styling

To prevent unnecessary code (tabs versus spaces, number of characters per line…) we have defined an editorconfig for IntelliJ IDEA. You can find more info here about its use.

Some tips to keep the code clean and readable:

\ No newline at end of file diff --git a/architecture/about-the-code/download-sources/index.html b/architecture/about-the-code/download-sources/index.html index 88c5484f2..6bfb87fca 100644 --- a/architecture/about-the-code/download-sources/index.html +++ b/architecture/about-the-code/download-sources/index.html @@ -1,7 +1,7 @@ Download/Install - Pi4J -

Download/Install

You can build the project from sources available on GitHub.

Pi4J V.2

  • Checkout the project pi4j-v2
  • Select JDK11, e.g. sdk use java 11.0.16.1-zulu
  • In the root of pi4j-v2 run mvn clean install
[INFO] Executed tasks
@@ -31,4 +31,4 @@
 /target/distribution/run.sh
 /target/distribution/slf4j-api-2.0.0-alpha0.jar
 /target/distribution/slf4j-simple-2.0.0-alpha0.jar
-

Running on the Raspberry Pi

  • After copying all files from target/distribution to a Raspberry Pi, start ./run.sh
\ No newline at end of file +

Running on the Raspberry Pi

  • After copying all files from target/distribution to a Raspberry Pi, start ./run.sh
\ No newline at end of file diff --git a/architecture/about-the-code/hardware-testing/index.html b/architecture/about-the-code/hardware-testing/index.html index d55337284..77c76df5f 100644 --- a/architecture/about-the-code/hardware-testing/index.html +++ b/architecture/about-the-code/hardware-testing/index.html @@ -1,7 +1,7 @@ Hardware testing - Pi4J -

Hardware testing

This is an experimental project which will need a lot of love… The new Raspberry @@ -16,4 +16,4 @@ and the Arduino Test Harness.

To be able to fully test all board types, a custom PCB needs to be created to perform all the interconnects between the Raspberry Pi 26-pin/40-pin headers, and the Arduino board. This way enough test harnesses could be build for each Raspberry Pi model and have a permanent setup for on-demand testing. This of course is a huge effort just by itself, -and perhaps too ambitious – but seeking a means to reach automated testing is really needed for the long term.

\ No newline at end of file +and perhaps too ambitious – but seeking a means to reach automated testing is really needed for the long term.

\ No newline at end of file diff --git a/architecture/about-the-code/index.html b/architecture/about-the-code/index.html index 057256b57..822cc59d6 100644 --- a/architecture/about-the-code/index.html +++ b/architecture/about-the-code/index.html @@ -1,7 +1,7 @@ Project source structure - Pi4J -

Project source structure

To ensure the Pi4J V.2 project is easy to maintain, there is a clear separation between the core functions and @@ -9,4 +9,4 @@ GitHub Pi4J Project.

Pi4J V.2 code structure

Pi4J V.2 Main project

Pi4J Parent POM

  • /pom.xml
  • This is “the grandparent POM” and the place to build the entire project.

Pi4J Libraries

  • /libraries/*
  • This folder contains (JNI native) libraries that Pi4J or Pi4J plugins may require for runtime.
  • Libraries are not Pi4J extension, plugins, providers, platforms, etc.
  • At this moment only a PiGpio library is included, but could be extended in the future.
  • By isolation the native functions in libraries, the underlying I/O interface can easily be replaced later without breaking the core library.

Pi4J Libraries Parent POM

  • /libraries/pi4j-library/pom.xml
  • Base library to be used when creating a new library.
  • Contains the parent pom.xml-file for all library implementations.

Pi4J PiGPIO JNI Wrapper Library

  • /libraries/pi4j-library-pigpio
  • This library is a Java library to wrap the PiGPIO API and implement the JNI layer to facilitate use of PiGPIO in Java.
  • There is no Pi4J specific API or code in this library.
  • This PiGPIO wrapper can be used directly without using the Pi4J-core but in that case your application highly depends on the methods of PiGPIO and will be very hard to refactor if you need to use another wrapper.

Pi4J Core Library

  • /pi4j-core
  • This is the Pi4J V.2 API and core implementation of the framework and runtime.
  • Doesn’t contain any actual I/O providers, platforms or IO/platform implementation –> those are all provided via extensions/plugins.

Pi4J Unit/Integration Test

  • /pi4j-test
  • This is intended to be a place for unit and integration tests to test the APIs and features.
  • It only performs tests using MOCK I/O via the Mock IO Provider (plugin).
  • It should not attempt to perform any real I/O testing.

Pi4J Plugins: the actual I/O providers, platforms and implementations

  • /plugins/*
  • This folder contains any plugins for use with Pi4J such as IO providers, platforms, or extensions.
  • Plugins must implement the Pi4J Plugin Interface (com.pi4j.extension.Plugin) and declare the implementation class using the “provides” directive in the module info class.
  • See for an example in /plugins/pi4j-plugin-mock/src/main/java/module-info.java

Pi4J Libraries Parent POM

  • /plugins/pi4j-plugin/pom.xml*
  • Base library to be used when creating a new plugin.
  • Contains the parent pom.xml-file for all plugin implementations.

Pi4J LinuxFS Provider

  • /plugins/pi4j-plugin-linuxfs
  • This plugin is intended to implement I/O Providers for Linux file system operations such as SERIAL, SPI, I2C and perhaps basic GPIO.
  • This plugin is mostly empty at this moment.
  • Goal is to have an I/O Provider which is totally independant of an underlying program.

Pi4J Mock Platform & Provider

  • /plugins/pi4j-plugin-mock
  • This plugin implements both a Mock Platform and Mock I/O Providers for every I/O type supported by Pi4J.
  • This Mock plugin is used by the unit and integration testing project.

Pi4J PiGPIO Provider

  • /plugins/pi4j-plugin-pigpio
  • This plugin implements I/O Providers for every I/O type supported by the PiGPIO library.
  • At this moment, this single plugin supports both ** local/native connectivity to PiGPIO ** remote (TCP) connectivity to PiGPIO -** TO BE DISCUSSED: Perhaps this should be separated into two plugins? Or moved to a separate “remote connectivity project”?

Pi4J RaspberryPi Platform & Provider

  • /plugins/pi4-plugin-raspberrypi
  • This plugin is intended to implement the Provider for the Raspberry Pi models and declare the default I/O providers for each of the I/O types supported by each RPi model.

Pi4J WiringPi Provider

  • NOT IN THE PROJECT CODE
  • This plugin was intended to implement I/O Providers for use with the WiringPi library, similar to the PiGPIO provider.
  • However with the WiringPi project no longer being maintained publicly, this plugin was not implemented

Stand-alone projects

Pi4J Test Harness

  • github.com/Pi4J/pi4j-test-harness
  • This project contains the source code (both Java library and Arduino code) for the hardware test harness which has been created to eventually perform hardware testing at the physical layer to help speed up verification for each RPI hardware model
  • Current state is very rough but functional.
  • This project has been moved outside of the core project as this is only used for the validation test cycle before releasing a new version.
  • For more info, see “Hardware testing”

Pi4J Example projects

Pi4J Minimal example

Pi4J Examples

  • github.com/Pi4J/pi4j-examples
  • This project contains numerous code examples to demonstrate how to use Pi4J
  • Certain functions have examples to reach the same goal with different use types, e.g. initialization of a DigitalInput with code, properties and annotations.

Pi4J Telegraph example

\ No newline at end of file +** TO BE DISCUSSED: Perhaps this should be separated into two plugins? Or moved to a separate “remote connectivity project”?

Pi4J RaspberryPi Platform & Provider

  • /plugins/pi4-plugin-raspberrypi
  • This plugin is intended to implement the Provider for the Raspberry Pi models and declare the default I/O providers for each of the I/O types supported by each RPi model.

Pi4J WiringPi Provider

  • NOT IN THE PROJECT CODE
  • This plugin was intended to implement I/O Providers for use with the WiringPi library, similar to the PiGPIO provider.
  • However with the WiringPi project no longer being maintained publicly, this plugin was not implemented

Stand-alone projects

Pi4J Test Harness

  • github.com/Pi4J/pi4j-test-harness
  • This project contains the source code (both Java library and Arduino code) for the hardware test harness which has been created to eventually perform hardware testing at the physical layer to help speed up verification for each RPI hardware model
  • Current state is very rough but functional.
  • This project has been moved outside of the core project as this is only used for the validation test cycle before releasing a new version.
  • For more info, see “Hardware testing”

Pi4J Example projects

Pi4J Minimal example

Pi4J Examples

  • github.com/Pi4J/pi4j-examples
  • This project contains numerous code examples to demonstrate how to use Pi4J
  • Certain functions have examples to reach the same goal with different use types, e.g. initialization of a DigitalInput with code, properties and annotations.

Pi4J Telegraph example

\ No newline at end of file diff --git a/architecture/about-the-code/maven-settings/index.html b/architecture/about-the-code/maven-settings/index.html index db207fe21..3c3598c24 100644 --- a/architecture/about-the-code/maven-settings/index.html +++ b/architecture/about-the-code/maven-settings/index.html @@ -1,7 +1,7 @@ Maven settings - Pi4J -

Maven settings

To simplify development but not commit sensitive information, you can add personal or PC-specific settings in the Maven settings.xml file. This file is stored or needs to be created in the “.m2” directory in your home directory:

  • Windows: C:\Users\YOUR_NAME.m2
  • Linux: /home/YOUR_NAME/.m2
  • Mac: /Users/YOUR_NAME/.m2

For more info see this article on Baeldung.

This is an example settings file, including settings for compiling of Pi4J and credentials to upload the generated code to a Raspberry Pi.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
@@ -39,4 +39,4 @@
   </activeProfiles>
 
 </settings>
-
\ No newline at end of file +
\ No newline at end of file diff --git a/architecture/advanced/annotated-provisioning/index.html b/architecture/advanced/annotated-provisioning/index.html index 3d91efe79..c57f66f58 100644 --- a/architecture/advanced/annotated-provisioning/index.html +++ b/architecture/advanced/annotated-provisioning/index.html @@ -1,7 +1,7 @@ Annotated provisioning - Pi4J -
\ No newline at end of file diff --git a/architecture/advanced/dependency-injection/index.html b/architecture/advanced/dependency-injection/index.html index c3b91ef13..68fba7c07 100644 --- a/architecture/advanced/dependency-injection/index.html +++ b/architecture/advanced/dependency-injection/index.html @@ -1,7 +1,7 @@ Dependency injection - Pi4J -
\ No newline at end of file diff --git a/architecture/advanced/index.html b/architecture/advanced/index.html index 421f30dfa..2ffc780bb 100644 --- a/architecture/advanced/index.html +++ b/architecture/advanced/index.html @@ -1,7 +1,7 @@ Advanced - Pi4J -

Advanced

Pi4J V.2 tries to focus on its core functionality (the GPIO I/O) but at the same time wants to provide the possibility to extend and adapt to other hardware, underlying framework etc.

You can find more info on these pages about some of the current functionalities to achieve this:

\ No newline at end of file +Welcome to Pi4J > Architecture/Design > Advanced

Advanced

Pi4J V.2 tries to focus on its core functionality (the GPIO I/O) but at the same time wants to provide the possibility to extend and adapt to other hardware, underlying framework etc.

You can find more info on these pages about some of the current functionalities to achieve this:

\ No newline at end of file diff --git a/architecture/advanced/library-path/index.html b/architecture/advanced/library-path/index.html index 2b0ded952..5240194b3 100644 --- a/architecture/advanced/library-path/index.html +++ b/architecture/advanced/library-path/index.html @@ -1,7 +1,7 @@ Native Library Path - Pi4J -

Native Library Path

Overview

Some Pi4J plugins, such as the Pi4J PiGpio Provider plugin, depend on native JNI libraries to communicate with the @@ -28,4 +28,4 @@ NativeLibraryLoader.java class: https://github.com/Pi4J/pi4j-v2/blob/master/libraries/pi4j-library-pigpio/src/main/java/com/pi4j/library/pigpio/util/NativeLibraryLoader.java


Where To Get The Native Libraries

The Pi4J native libraries can be obtained by extracting the architecture specific libpi4j-xxx.so file from the plugin JAR file’s resources.

Additionally, the Pi4J native libraries are published as independant artifacts in the Maven Repository: -https://oss.sonatype.org/#nexus-search;quick~pi4j-library-pigpio

\ No newline at end of file +https://oss.sonatype.org/#nexus-search;quick~pi4j-library-pigpio

\ No newline at end of file diff --git a/architecture/advanced/plugins/index.html b/architecture/advanced/plugins/index.html index 497d7b962..d534e6a7d 100644 --- a/architecture/advanced/plugins/index.html +++ b/architecture/advanced/plugins/index.html @@ -1,7 +1,7 @@ Plug-ins - Pi4J -

Plug-ins

The goal of Pi4J V.2 is to provide a solid base with all required “minimal functionality” while at the same time, promote third-party development and extensibility, thus enabling developers to build and maintain their extensions outside of the Pi4J core projects codebase.

This will enable us to deliver a stable, fully tested framework as the number of features inside of Pi4J can be limited and support for specific I/O hardware can be provided with an extension for Pi4J.

More info about how this extensibility is achieved:

  • Extensible I/O hardware PROVIDERS: things like GPIO expanders, I2C bus expanders, GertBoard, add-on hardware shields, etc.
  • Extensible SBC platforms PLATFORMS: the core project may only support Raspberry Pi, but the platform and libraries should be written to allow a third party to create plugins for alternate hardware platforms/boards.
  • Extensible plugins.

Plugins are extensible service modules that interact with or augment the Pi4J infrastructure. The most common plugins are I/O Providers and Platforms. Other plugin examples could be a web app to view/control the Pi4J runtime state/status, some third-party observer to the Pi4J runtime state/status,…

Plugins are implemented as Java modules using Service Provider Interfaces (SPI).

Plugins must declare their pluggable interface in their “module-info.java” config file. Example from the Raspberry plugin:

module com.pi4j.plugin.raspberrypi {
@@ -17,4 +17,4 @@
 
     provides com.pi4j.extension.Plugin with RaspberryPiPlugin;
 }
-

ServiceLoader overview by Piotr Mińkowski.

Pi4J V.2 architecture

\ No newline at end of file +

ServiceLoader overview by Piotr Mińkowski.

Pi4J V.2 architecture

\ No newline at end of file diff --git a/architecture/advanced/remote-support/index.html b/architecture/advanced/remote-support/index.html index 2612fd629..fc3a7bc5f 100644 --- a/architecture/advanced/remote-support/index.html +++ b/architecture/advanced/remote-support/index.html @@ -1,11 +1,11 @@ Remote support - Pi4J -

Remote support

One of the big features on the wish-list for V.2: native support for remote I/O capability. Predominantly to support the ability for a user to perform development work on their desktop/laptop and be able to run their project with remote support slaving the I/O to a daemon running on the Raspberry Pi (or other supported SBC).

TO BE DECIDED: the V.2 codebase does support this currently by using the PiGpio daemon.
This may be an OK place to start for the first release, but a separate Pi4J daemon may be ideal for a long term solution to capture some of the edge cases and provide remote I/O capability no matter which underlying I/O library -is being used.

\ No newline at end of file +is being used.

\ No newline at end of file diff --git a/architecture/index.html b/architecture/index.html index 910811c97..8a18697a6 100644 --- a/architecture/index.html +++ b/architecture/index.html @@ -1,6 +1,6 @@ Architecture/Design - Pi4J -

Architecture/Design

The code of Pi4J is based on a layered approach, visualized in the picture below.

Since Pi4J is a low-level library, it tries to avoid inheriting third-party libraries at all costs. More complex dependency chains make it more difficult for users, especially novice users. Therefor, the only dependency Pi4J V.2 has is SLF4J to provide a standardized and extensible logging framework.

The dark grey blocks “Annotation Engine”, “@Register” and “@Inject” are here as a future idea but are not included in the current V2.

Pi4J V.2 architecture

\ No newline at end of file diff --git a/architecture/pi4j-logo/index.html b/architecture/pi4j-logo/index.html index c42dde558..d548a55ac 100644 --- a/architecture/pi4j-logo/index.html +++ b/architecture/pi4j-logo/index.html @@ -1,7 +1,7 @@ The Pi4J Logo - Pi4J -
\ No newline at end of file diff --git a/blog/2022/20220113_javafx_pi4j_template/index.html b/blog/2022/20220113_javafx_pi4j_template/index.html index cd6140227..c71a1dccd 100644 --- a/blog/2022/20220113_javafx_pi4j_template/index.html +++ b/blog/2022/20220113_javafx_pi4j_template/index.html @@ -1,9 +1,9 @@ Getting Started Template - Pi4J -
\ No newline at end of file diff --git a/blog/2022/20221117_kotlin_on_raspberrypi/index.html b/blog/2022/20221117_kotlin_on_raspberrypi/index.html index 6691adad3..903759421 100644 --- a/blog/2022/20221117_kotlin_on_raspberrypi/index.html +++ b/blog/2022/20221117_kotlin_on_raspberrypi/index.html @@ -1,6 +1,6 @@ Kotlin on the Raspberry Pi - Pi4J -
\ No newline at end of file +Confused as you are, you might want to check the full documentation on these new APIs and lots more.

The story doesn’t end

There are still more DSLs on their way for communication protocols and standards like SPI, I²C and more!

Tell us what you think

Try it out! Tell us what you think and give us some ideas! Here is the GitHub Repository.

\ No newline at end of file diff --git a/blog/2022/20221128_led_strip_with_jbang/index.html b/blog/2022/20221128_led_strip_with_jbang/index.html index 03c6e4e28..eab34100c 100644 --- a/blog/2022/20221128_led_strip_with_jbang/index.html +++ b/blog/2022/20221128_led_strip_with_jbang/index.html @@ -1,6 +1,6 @@ LED strip with Pi4J and JBang - Pi4J -
\ No newline at end of file +Give it a try!!!

\ No newline at end of file diff --git a/blog/2023/20230731_pi4j_os/index.html b/blog/2023/20230731_pi4j_os/index.html index 4f9df826d..188934ee0 100644 --- a/blog/2023/20230731_pi4j_os/index.html +++ b/blog/2023/20230731_pi4j_os/index.html @@ -1,6 +1,6 @@ Pi4J Operating System - Pi4J -

History of the project

This project was originally started by Pascal Mathis as a student at the FHNW University in Switzerland, while working on a project to control all the electronic components in an Elecrow CrowPi with Java code.

Dieter Holz, Lecturer for Object-Oriented-Programming and UI Engineering at FHNW, further expanded the Pi4J OS in the different “flavors” to offer the ideal setup for his students.

Our students (1st and 2nd semester) should be able to focus on learning programming, especially in Java). Without the Pi4J OS images, they would have to learn a lot about Linux configuration, installation utilities, remote deployment, Maven, etc before they could start with their projects. All of these topics they need to learn later during their studies, but it’s overwhelming if you need to know it from the very first day.

Setting up a complete image is really time consuming, even if you know the bits and pieces already. At FHNW we start with CrowPi. The SD-card with Pi4J-CrowPi-Image is already plugged in. Students can start with their Pi4J-experiments “immediately”, even without typical hardware problems like connecting a LED.

In a second phase, we use the Pi4J-Basic-OS, and the first hardware-connection experiments are added.

In the third phase, using our JavaFX-template-project, they start with their “real” project. If they want to build a FXGL game, the Picade-Image is used. The main advantage here is, that ENTER-, cursor-, and ESC-keys are mapped on OS-Level. This is necessary to get the default FXGL-behaviour for the main-menu.

Conclusion

Pi4J is an ideal way to introduce the Java language into experiments with electronic components. And Pi4J OS makes this even easier for students and everyone interested in #JavaOnRaspberryPi.

\ No newline at end of file +

History of the project

This project was originally started by Pascal Mathis as a student at the FHNW University in Switzerland, while working on a project to control all the electronic components in an Elecrow CrowPi with Java code.

Dieter Holz, Lecturer for Object-Oriented-Programming and UI Engineering at FHNW, further expanded the Pi4J OS in the different “flavors” to offer the ideal setup for his students.

Our students (1st and 2nd semester) should be able to focus on learning programming, especially in Java). Without the Pi4J OS images, they would have to learn a lot about Linux configuration, installation utilities, remote deployment, Maven, etc before they could start with their projects. All of these topics they need to learn later during their studies, but it’s overwhelming if you need to know it from the very first day.

Setting up a complete image is really time consuming, even if you know the bits and pieces already. At FHNW we start with CrowPi. The SD-card with Pi4J-CrowPi-Image is already plugged in. Students can start with their Pi4J-experiments “immediately”, even without typical hardware problems like connecting a LED.

In a second phase, we use the Pi4J-Basic-OS, and the first hardware-connection experiments are added.

In the third phase, using our JavaFX-template-project, they start with their “real” project. If they want to build a FXGL game, the Picade-Image is used. The main advantage here is, that ENTER-, cursor-, and ESC-keys are mapped on OS-Level. This is necessary to get the default FXGL-behaviour for the main-menu.

Conclusion

Pi4J is an ideal way to introduce the Java language into experiments with electronic components. And Pi4J OS makes this even easier for students and everyone interested in #JavaOnRaspberryPi.

\ No newline at end of file diff --git a/blog/2024/20240318_interview_alexander_liggesmeyer/index.html b/blog/2024/20240318_interview_alexander_liggesmeyer/index.html index a1c247640..7884cfc99 100644 --- a/blog/2024/20240318_interview_alexander_liggesmeyer/index.html +++ b/blog/2024/20240318_interview_alexander_liggesmeyer/index.html @@ -1,7 +1,7 @@ Alexander Liggesmeyer and RPi5 - Pi4J -

Alexander Liggesmeyer and RPi5

2024-03-18, by Frank Delporte

Interview with Alexander Liggesmeyer about Pi4J for Raspberry Pi 5

Today, version 2.5.0 of Pi4J got released with many changes, fixes and improvements. The most important one being support for the Raspberry Pi 5. Short after the release of this new board, several issues were raised on GitHub as Pi4J was not compatible. The Raspberry Pi 5 uses a completely new way to interact with the GPIOs: the RP1 chip. Thanks to this chip, GPIO, SPI, I2C, USB, ethernet,… are seperated from the SoC to make it easier to develop newer boards. But this new approach wasn’t supported by the PiGpio library used in Pi4J V2… Until Alexander Liggesmeyer took up the challenge to find a solution!

Thanks Alexander for your amazing work! Can you introduce yourself?

I’m Alexander, and I’m currently doing a PhD at Saarland University’s HCI Lab. The research chair is working in the area of human computer interaction, which also often involves prototyping hardware.

What is your interest in the Pi4J project and how are you using it?

I first used it to develop a Cocktail mixing machine, whose software is based on Spring Boot. Spring Boot is a well-known Java framework for developing APIs. Pi4J allows me to control the Raspberry Pi’s GPIO interfaces directly from Java.

When you discovered that Pi4J wasn’t compatible with this new chip, what made you decide to dive into the problem and add a new provider?

I got the new Raspberry Pi 5 and ran a few applications on it. I saw that the CocktailPi application which could take about 60 seconds to start on a Raspberry Pi 4, can now start in less than 15 seconds. So I wanted to use the new Raspberry. Unfortunately, Pi4J wasn’t yet compatible with the new platform. I also saw that nobody was actively working on changing this, so I thought, why shouldn’t I do that myself? I’m actively using this library and wanted a feature that it hasn’t got yet. The library is open source and one of the advantages of that is that everybody can contribute. So why not do that? In the end, everybody profits.

This new provider is backwards compatible with earlier Raspberry Pi boards, how did you achieve this?

The new provider interfaces with LibGpioD, the library directly interacting with Gpio devices. I didn’t dig into how it actually manipulates the gpiochip device files, but I don’t think that they differ significantly (if at all) between Raspberry Pi versions. This is more something on the operating system level. The only thing the provider needs to do is find the correct gpiochip device. On the Raspberry Pi, this device always contains the name pinctrl in its name, so finding it is straightforward.

An OOS-project can only improve thanks to contributions of the community. Was it easy to understand how to add functionality to the Pi4J project? How can the code or website be improved to attract more contributors?

I think Pi4J is very well documented. Adding a new provider was a bit tricky, since I needed some libraries that were not part of the builder Docker images initially. But this could be solved by cloning and updating the builders as well. The only thing that I see could be improved is making the link to Slack more prominent.

How do you see the future of Java on embedded devices like the Raspberry Pi?

It depends on what a person wants to achieve. I personally like to use Python to develop small prototypes. For larger projects, I prefer type-safe programming languages because they already prevent most type errors at compile time. Java requires the developer to add the type of a variable every time it is defined, which adds to readability. On the other hand, Python does not force the developer to add type hints, leading to many developers not adding them. This makes refactoring code harder and more prone to errors.

\ No newline at end of file diff --git a/blog/2024/20240417_led_matrix_max7219_spi_web/index.html b/blog/2024/20240417_led_matrix_max7219_spi_web/index.html index 263bcf3b9..4a4652f3d 100644 --- a/blog/2024/20240417_led_matrix_max7219_spi_web/index.html +++ b/blog/2024/20240417_led_matrix_max7219_spi_web/index.html @@ -1,6 +1,6 @@ LED Matrix with SPI MAX7219 - Pi4J -

While working on his project, Roberto contributed extra LED character definitions for the Pi4JLedMatrixSpi.java single-file application in the Pi4J V2 JBang project.

Demos

-

Wiring

This demo project uses:

  • Raspberry Pi 2 Model B V1.1
  • 8x8 LED Matrix with Max7219 SPI

Connections:

  • DIN -> blue -> MOSI -> header 19
  • CS -> purple -> CE0 -> header 24
  • CLK -> white -> SCLK -> header 23
  • VCC -> 5V -> header 2
  • GND -> ground -> header 9

Project and Code

Check the README in the project sources of Roberto for more info.

\ No newline at end of file +

Wiring

This demo project uses:

Connections:

Project and Code

Check the README in the project sources of Roberto for more info.

\ No newline at end of file diff --git a/blog/2024/20240418_i2c_improvements/index.html b/blog/2024/20240418_i2c_improvements/index.html index bdadc71e7..6982a59c3 100644 --- a/blog/2024/20240418_i2c_improvements/index.html +++ b/blog/2024/20240418_i2c_improvements/index.html @@ -1,8 +1,8 @@ Ongoing I2C Improvements - Pi4J -
\ No newline at end of file diff --git a/blog/2024/20240419_interview_robert_von_burg/index.html b/blog/2024/20240419_interview_robert_von_burg/index.html index ebd13ee3d..c92562bd5 100644 --- a/blog/2024/20240419_interview_robert_von_burg/index.html +++ b/blog/2024/20240419_interview_robert_von_burg/index.html @@ -1,6 +1,6 @@ Interview Robert von Burg - Pi4J -

How did you get involved in the Pi4J development?

For our electronic cabinets we use Raspberry Pis as the embedded platform to communicate with our custom PCBs using I2C. As we want to use the same programming language and domain model on the server and the cabinets, we looked for a Java library giving us access to the Raspberry Pi’s I/Os. Thus, the Pi4J project was selected. During our use we detected a bug, and since the Pi4J maintainer was a little busy, I offered to send a merge request for the fix. Over time, this lead to more involvement with the core project.

What are you focusing on in the Pi4J project?

My focus is on code review and testing of GPIO and I2C interfaces, as these are the interfaces where I have a certain amount of understanding.

Do you use Pi4J in any personal projects?

Yes, I use it for a bit of LED and power outlet control.

Do you think Java on Raspberry Pi is a valid choice for business use?

Absolutely. Thanks to the community, of which Azul has done a lot, we have a robust JVM on the Raspberry Pi, and we can stay in our domain model on the server and the embedded systems, which makes developing the software easier.

How do you think the Pi4J project can evolve further?

We are focusing on making the API easier to understand and use, make it work on the different Raspberry Pi versions and then help the community create a standard suite of components to communicate with different hardware which people use in their projects. This makes it easier for newcomers to start using Java on the Raspberry Pi and thus strengthen the Java community as a whole.

What is the future of Java on embedded or small systems like the Raspberry Pi?

These devices, as they become more and more powerful with each generation, make it easier to implement more and more features at home. If we think how people use them to extend their home networks for security, media playback, or home automation, I see a bright future. Our goal with the Pi4J project is to make it as easy as possible to onboard newcomers.

\ No newline at end of file +

How did you get involved in the Pi4J development?

For our electronic cabinets we use Raspberry Pis as the embedded platform to communicate with our custom PCBs using I2C. As we want to use the same programming language and domain model on the server and the cabinets, we looked for a Java library giving us access to the Raspberry Pi’s I/Os. Thus, the Pi4J project was selected. During our use we detected a bug, and since the Pi4J maintainer was a little busy, I offered to send a merge request for the fix. Over time, this lead to more involvement with the core project.

What are you focusing on in the Pi4J project?

My focus is on code review and testing of GPIO and I2C interfaces, as these are the interfaces where I have a certain amount of understanding.

Do you use Pi4J in any personal projects?

Yes, I use it for a bit of LED and power outlet control.

Do you think Java on Raspberry Pi is a valid choice for business use?

Absolutely. Thanks to the community, of which Azul has done a lot, we have a robust JVM on the Raspberry Pi, and we can stay in our domain model on the server and the embedded systems, which makes developing the software easier.

How do you think the Pi4J project can evolve further?

We are focusing on making the API easier to understand and use, make it work on the different Raspberry Pi versions and then help the community create a standard suite of components to communicate with different hardware which people use in their projects. This makes it easier for newcomers to start using Java on the Raspberry Pi and thus strengthen the Java community as a whole.

What is the future of Java on embedded or small systems like the Raspberry Pi?

These devices, as they become more and more powerful with each generation, make it easier to implement more and more features at home. If we think how people use them to extend their home networks for security, media playback, or home automation, I see a bright future. Our goal with the Pi4J project is to make it as easy as possible to onboard newcomers.

\ No newline at end of file diff --git a/blog/2024/20240423_pwm_rpi5/index.html b/blog/2024/20240423_pwm_rpi5/index.html index a1a58b3ca..9a7543240 100644 --- a/blog/2024/20240423_pwm_rpi5/index.html +++ b/blog/2024/20240423_pwm_rpi5/index.html @@ -1,6 +1,6 @@ PWM Hardware Support on RPi5 - Pi4J -

Connect LED

Use appropriate Resistor in LED Cathode path. Connect Cathode lead to ground, Anode lead to GPIO18.

LED Connection

To calculate the resistor size, you can use this LED Series Resistor Calculator by DigiKey.

Run sample program

The example program can be called passing the parameter -a for the address, for example, in this configuration -a 2. But the program defaults to address 2. This means no parameter is required with this example when using dtoverlay=pwm.

\ No newline at end of file diff --git a/blog/2024/20240425_interview_tom_aarts/index.html b/blog/2024/20240425_interview_tom_aarts/index.html index 6f144f2d4..67663cae3 100644 --- a/blog/2024/20240425_interview_tom_aarts/index.html +++ b/blog/2024/20240425_interview_tom_aarts/index.html @@ -1,6 +1,6 @@ Interview Tom Aarts - Pi4J -

Can you introduce yourself? What is your history in software (Java) development?

Hi I’m Tom. My degree and career started in hardware. In 1971, I was working on HF transmitters that used vacuum tubes the size of your fist. By the eighties, I transitioned to firmware and software engineering.

My first Java involvement was at IBM in the 90’s when Java was first implemented on the AS400 to support the SOM (SystemObjectModel) architecture. This was the initial Java compiler, JIT and Garbage collector for the AS400. So although I was doing Java implementations, I interacted with these teams learning from them.

Then next was WebSphere, implementing a distributed Java financial application. After this time, my work was in server firmware development and later hardware simulation. Although the languages being used were not Java, Java remained my preferred language to code any tools my work required.

How did you get involved in the Pi4J development?

As I neared retirement I looked for future activities of interest and selected Raspberry Pi to be one of those activities. At that time, Pi4J was V1 and I used it to use some I2C chips. When V2 was released, and I migrated my existing code to V2, I became more interested in the Pi4J implementation.

The direction in V2 was no longer to provide device specific implementations. I offered to make my existing device implementations public if they could assist new users to understand Pi4J. Ongoing, while assisting on the discussions, I used the chip in question to create an example to demonstrate a way to solve a question. Along the way, I supplied a couple Pi4J fixes and enhancements becoming more involved in maintenance of the Pi4J V2 code base.

What are you focusing on in the Pi4J project?

My focus remains device support and examples to assist in issues and discussions. Also, helping with the work brought on by the new Raspberry Pi 5 to support the RP1 chip and bug fix and enhancements that result from various questions.

How do you use Pi4J in your own personal or company projects?

I have a couple home projects for clocks and temperature, and a great number of prototype boards to support the various chips I implemented.

You answer a lot of questions in the Pi4J discussions and tickets. What is the most challenging part to be able to help users?

Users usually ask a specific question. The difficulty is determining what level of response they need. Based on some questions, the details that are given, and what is asked, I think this particular user is experienced and understands Pi4J and the Raspberry Pi so a technical response to just their question will be good.

Some questions include details that make me conclude this person is new to Pi4J. So I need to think about what ’newbie’ mistakes could be made and provide a larger list of recommended steps and references of where more detail is available.

It are the questions that fall between these two categories that are more difficult to rapidly help the user. If I think they have more understanding, than they actually feel my response is too short and the user tries to accomplish what I suggested, and they make little or no progress and likely get frustrated. On the other hand if I think they are not experienced and give a great deal of information, the user then views it as a waste of their time as they already correctly completed what I suggest, and that certainly frustrates that user.

How do you think the Pi4J project can evolve further?

By adding more demonstration cases of Pi4J we can increase the interest and users. Pi4J doesn’t intend to implement IOT devices or supply Machine Learning applications, but we need these as reference projects. These should be simple but fully functional projects to demonstrate the capability of a Raspberry Pi using Pi4J. I believe this will bring in more users wanting to implement Home or Work IOT and do the implementation themselves. In addition, it can encourage STEM learning centers to use the Raspberry Pi and Pi4J as the Raspberry Foundation originally intended: a learning tool.

What is the future of Java on embedded or small systems like the Raspberry Pi?

I think Java will remain a valuable choice for these cases. Currently, there is emphasis on languages that prevent memory leaks and provide security, Java does both these items. I think we can assume the Java Runtime Environments will continue to improve performance and memory usage of Java. Also, there are very useful IDEs available for development, and of course Java portability.

\ No newline at end of file +

Can you introduce yourself? What is your history in software (Java) development?

Hi I’m Tom. My degree and career started in hardware. In 1971, I was working on HF transmitters that used vacuum tubes the size of your fist. By the eighties, I transitioned to firmware and software engineering.

My first Java involvement was at IBM in the 90’s when Java was first implemented on the AS400 to support the SOM (SystemObjectModel) architecture. This was the initial Java compiler, JIT and Garbage collector for the AS400. So although I was doing Java implementations, I interacted with these teams learning from them.

Then next was WebSphere, implementing a distributed Java financial application. After this time, my work was in server firmware development and later hardware simulation. Although the languages being used were not Java, Java remained my preferred language to code any tools my work required.

How did you get involved in the Pi4J development?

As I neared retirement I looked for future activities of interest and selected Raspberry Pi to be one of those activities. At that time, Pi4J was V1 and I used it to use some I2C chips. When V2 was released, and I migrated my existing code to V2, I became more interested in the Pi4J implementation.

The direction in V2 was no longer to provide device specific implementations. I offered to make my existing device implementations public if they could assist new users to understand Pi4J. Ongoing, while assisting on the discussions, I used the chip in question to create an example to demonstrate a way to solve a question. Along the way, I supplied a couple Pi4J fixes and enhancements becoming more involved in maintenance of the Pi4J V2 code base.

What are you focusing on in the Pi4J project?

My focus remains device support and examples to assist in issues and discussions. Also, helping with the work brought on by the new Raspberry Pi 5 to support the RP1 chip and bug fix and enhancements that result from various questions.

How do you use Pi4J in your own personal or company projects?

I have a couple home projects for clocks and temperature, and a great number of prototype boards to support the various chips I implemented.

You answer a lot of questions in the Pi4J discussions and tickets. What is the most challenging part to be able to help users?

Users usually ask a specific question. The difficulty is determining what level of response they need. Based on some questions, the details that are given, and what is asked, I think this particular user is experienced and understands Pi4J and the Raspberry Pi so a technical response to just their question will be good.

Some questions include details that make me conclude this person is new to Pi4J. So I need to think about what ’newbie’ mistakes could be made and provide a larger list of recommended steps and references of where more detail is available.

It are the questions that fall between these two categories that are more difficult to rapidly help the user. If I think they have more understanding, than they actually feel my response is too short and the user tries to accomplish what I suggested, and they make little or no progress and likely get frustrated. On the other hand if I think they are not experienced and give a great deal of information, the user then views it as a waste of their time as they already correctly completed what I suggest, and that certainly frustrates that user.

How do you think the Pi4J project can evolve further?

By adding more demonstration cases of Pi4J we can increase the interest and users. Pi4J doesn’t intend to implement IOT devices or supply Machine Learning applications, but we need these as reference projects. These should be simple but fully functional projects to demonstrate the capability of a Raspberry Pi using Pi4J. I believe this will bring in more users wanting to implement Home or Work IOT and do the implementation themselves. In addition, it can encourage STEM learning centers to use the Raspberry Pi and Pi4J as the Raspberry Foundation originally intended: a learning tool.

What is the future of Java on embedded or small systems like the Raspberry Pi?

I think Java will remain a valuable choice for these cases. Currently, there is emphasis on languages that prevent memory leaks and provide security, Java does both these items. I think we can assume the Java Runtime Environments will continue to improve performance and memory usage of Java. Also, there are very useful IDEs available for development, and of course Java portability.

\ No newline at end of file diff --git a/blog/2024/20240517_bosch_sensor_gas_measurement/index.html b/blog/2024/20240517_bosch_sensor_gas_measurement/index.html index ddbb08f3c..8334b792d 100644 --- a/blog/2024/20240517_bosch_sensor_gas_measurement/index.html +++ b/blog/2024/20240517_bosch_sensor_gas_measurement/index.html @@ -1,10 +1,10 @@ Bosch sensor gas measurement - Pi4J -
\ No newline at end of file diff --git a/blog/2024/20240927-bits-bytes-signed-unsigned/index.html b/blog/2024/20240927-bits-bytes-signed-unsigned/index.html index ab81372f2..00639153b 100644 --- a/blog/2024/20240927-bits-bytes-signed-unsigned/index.html +++ b/blog/2024/20240927-bits-bytes-signed-unsigned/index.html @@ -1,6 +1,6 @@ Signed versus unsigned values - Pi4J -

This gets explained more in detail in this blog post and this video:

\ No newline at end of file diff --git a/blog/2024/20241104-download-stats/index.html b/blog/2024/20241104-download-stats/index.html index 9381f6fe5..93bea46eb 100644 --- a/blog/2024/20241104-download-stats/index.html +++ b/blog/2024/20241104-download-stats/index.html @@ -1,6 +1,6 @@ Maven Downloads - Pi4J -

Maven Downloads

2024-11-04 by Frank Delporte

As an open-source project it’s very difficult to understand how much it’s used “in the wild”. The only stats we have, are the number of downloads from the Maven repository. So end of October I made a few screenshots to share here with the statistics including September 2024.

These are the numbers for all Pi4J libraries combined. Is this much? I have no clue as I can’t compare it with a similar project. ;-)

What I notice is the quick pickup of a new version. For instance, for 2.6.1 which was released on 2024-07-29.

Another remarkable conclusion: there are a lot of Kotlin Pi4J users!

\ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 8c0351e06..275dbf364 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,6 +1,6 @@ Blogs - Pi4J -
\ No newline at end of file diff --git a/categories/index.html b/categories/index.html index 584e8179f..abbeabb7e 100644 --- a/categories/index.html +++ b/categories/index.html @@ -1,5 +1,5 @@ Categories - Pi4J -
\ No newline at end of file diff --git a/debugging-failures/index.html b/debugging-failures/index.html index c59c2db5b..aafe0f130 100644 --- a/debugging-failures/index.html +++ b/debugging-failures/index.html @@ -1,6 +1,6 @@ Debugging Failures - Pi4J -

Unexpected Results on Electronic Components

If your software starts OK, and the log output shows that everything works as expected, but you still don’t get the desired result on the connected electronic component, check:

  • Are all the required wires connected?
  • Are they connected correctly?
  • Did you check the orientation of the pin numbering, where is pin 1?
\ No newline at end of file diff --git a/documentation/board-info/index.html b/documentation/board-info/index.html index e52a32742..c03084b1b 100644 --- a/documentation/board-info/index.html +++ b/documentation/board-info/index.html @@ -1,6 +1,6 @@ Using Board Info - Pi4J -
\ No newline at end of file diff --git a/documentation/build-io/index.html b/documentation/build-io/index.html index a802a2419..af96292b7 100644 --- a/documentation/build-io/index.html +++ b/documentation/build-io/index.html @@ -1,6 +1,6 @@ Building an I/O Instance - Pi4J -
\ No newline at end of file diff --git a/documentation/building/fat-jar/index.html b/documentation/building/fat-jar/index.html index 1d5663e63..38957dd03 100644 --- a/documentation/building/fat-jar/index.html +++ b/documentation/building/fat-jar/index.html @@ -1,7 +1,7 @@ Build as a FAT JAR with Maven - Pi4J -

Build as a FAT JAR with Maven

About FAT JARs

With Pi4J V1 you can create a so-called FAT JAR, which packages all the dependencies into one jar-file. That way it is @@ -110,4 +110,4 @@ ├─PROVIDER: "RaspberryPi PWM Provider" {raspberrypi-pwm} <com.pi4j.plugin.raspberrypi.provider.pwm.RpiPwmProviderImpl> {com.pi4j.plugin.raspberrypi.provider.pwm.RpiPwmProviderImpl} └─PROVIDER: "PiGpio PWM Provider" {pigpio-pwm} <com.pi4j.plugin.pigpio.provider.pwm.PiGpioPwmProviderImpl> {com.pi4j.plugin.pigpio.provider.pwm.PiGpioPwmProviderImpl} [main] INFO com.pi4j.util.Console - -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/building/index.html b/documentation/building/index.html index c5037a3b1..30a1d3d48 100644 --- a/documentation/building/index.html +++ b/documentation/building/index.html @@ -1,9 +1,9 @@ Building and running - Pi4J -

Building and running

When you create your application with and IDE on the Raspberry Pi itself (e.g. with Visual Studio Code), you can simply run the application. But ofcourse, you want to build and package your project to easily deploy it on one or more Raspberry -Pi’s.

There are different possibilities:

\ No newline at end of file +Pi’s.

There are different possibilities:

\ No newline at end of file diff --git a/documentation/building/javac/index.html b/documentation/building/javac/index.html index 7f1c1928a..eaa6f8890 100644 --- a/documentation/building/javac/index.html +++ b/documentation/building/javac/index.html @@ -1,7 +1,7 @@ Building with javac - Pi4J -

Building with javac

You can build a Pi4J project using only java and javac.

Wiring

No wiring is needed for this minimal example as it only demonstrates how to create a minimal application which initializes @@ -112,4 +112,4 @@ REGISTRY: [1] "I/O Registered Instances" <com.pi4j.registry.impl.DefaultRegistry> ??IO: "DOUT-1" {my-digital-output-1} <com.pi4j.plugin.raspberrypi.provider.gpio.digital.RpiDigitalOutput> {DOUT-1} [main] INFO com.pi4j.util.Console - -


Thanks to Manuel de Vega Barreiro for this contribution.

\ No newline at end of file +

Thanks to Manuel de Vega Barreiro for this contribution.

\ No newline at end of file diff --git a/documentation/building/jbang/index.html b/documentation/building/jbang/index.html index ede10e76d..bd0c6baa3 100644 --- a/documentation/building/jbang/index.html +++ b/documentation/building/jbang/index.html @@ -1,7 +1,7 @@ Running Pi4J with JBang - Pi4J -

Running Pi4J with JBang

JBang allows you to execute Java code with dependencies as a single file without the need for a full Maven or Gradle project. You also don’t need to compile your code. So it’s a very easy way to get started with Java and Pi4J.

Multiple examples and more information is available in the section “Example Implementations > JBang Examples”.

\ No newline at end of file +Welcome to Pi4J > Documentation > Building and running > Running Pi4J with JBang

Running Pi4J with JBang

JBang allows you to execute Java code with dependencies as a single file without the need for a full Maven or Gradle project. You also don’t need to compile your code. So it’s a very easy way to get started with Java and Pi4J.

Multiple examples and more information is available in the section “Example Implementations > JBang Examples”.

\ No newline at end of file diff --git a/documentation/building/modules-gradle/index.html b/documentation/building/modules-gradle/index.html index 05eee6755..0f487470a 100644 --- a/documentation/building/modules-gradle/index.html +++ b/documentation/building/modules-gradle/index.html @@ -1,7 +1,7 @@ Build Java modules with Gradle - Pi4J -

Build Java modules with Gradle

The Pi4J V.2 project itself uses Maven and most example projects also use this build tool. But if you prefer to use Gradle, @@ -13,4 +13,4 @@ the native bindings running locally on the Raspberry Pi, then you make have to run the program using sudo to gain the necessary access permissions to the hardware I/O.

This is the list of files created by the build process of this example application:

  • pi4j-core
  • pi4j-example-minimal
  • pi4j-library-pigpio
  • pi4j-plugin-pigpio
  • pi4j-plugin-raspberrypi
  • slf4j-api
  • slf4j-simple
  • run.sh –> this is the actual start file which will run pi4j-example-minimal

Run on Raspberry Pi

Make the run script executable and start it like this:

$ chmod +x run.sh
 $ sudo ./run.sh
-
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/building/modules-maven/index.html b/documentation/building/modules-maven/index.html index d382fc73f..0ac453b53 100644 --- a/documentation/building/modules-maven/index.html +++ b/documentation/building/modules-maven/index.html @@ -1,7 +1,7 @@ Build Java modules with Maven - Pi4J -

Build Java modules with Maven

Because the Pi4J V.2 project follows the modular approach of Java, the functionality of the framework has been split into @@ -21,4 +21,4 @@ -rw-r--r-- 1 pi pi 52173 Jun 19 10:04 slf4j-api-2.0.0-alpha0.jar -rw-r--r-- 1 pi pi 15372 Jun 19 10:04 slf4j-simple-2.0.0-alpha0.jar $ sudo ./run.sh -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/create-context/index.html b/documentation/create-context/index.html index 07b9c0532..37e435353 100644 --- a/documentation/create-context/index.html +++ b/documentation/create-context/index.html @@ -1,6 +1,6 @@ Creating a Pi4J Context - Pi4J -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/index.html b/documentation/index.html index 217ff0d5e..4fdfb117f 100644 --- a/documentation/index.html +++ b/documentation/index.html @@ -1,8 +1,8 @@ Documentation - Pi4J -
\ No newline at end of file diff --git a/documentation/io-examples/digital-input/index.html b/documentation/io-examples/digital-input/index.html index 268954227..bf05676c8 100644 --- a/documentation/io-examples/digital-input/index.html +++ b/documentation/io-examples/digital-input/index.html @@ -1,7 +1,7 @@ Digital Input (GPIO) - Pi4J -

Digital Input (GPIO)

Similar to a digital output pin, a digital input translates an input value of 0V or 3.3V to the value false/true. This @@ -29,4 +29,4 @@ console.println("Button is pressed"); } }); -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/digital-output/index.html b/documentation/io-examples/digital-output/index.html index c3b02461c..8c8bdd109 100644 --- a/documentation/io-examples/digital-output/index.html +++ b/documentation/io-examples/digital-output/index.html @@ -1,7 +1,7 @@ Digital Output (GPIO) - Pi4J -

Digital Output (GPIO)

A digital output translates a false/true (or 0/1) to an output value of 0V or 3.3V. This @@ -54,4 +54,4 @@ // shutdown Pi4J pi4j.shutdown(); -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/i2c/clock-stretching/index.html b/documentation/io-examples/i2c/clock-stretching/index.html index 13b98b812..f9f7d7792 100644 --- a/documentation/io-examples/i2c/clock-stretching/index.html +++ b/documentation/io-examples/i2c/clock-stretching/index.html @@ -1,8 +1,8 @@ I²C Clock Stretching - Pi4J -

I²C Clock Stretching

Clock Stretching

Please be aware there are some hardware issues when using @@ -54,4 +54,4 @@ # set timeout to 1 second: i2c_set_clkt_tout 1000 -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/i2c/index.html b/documentation/io-examples/i2c/index.html index e350afd6f..baef41544 100644 --- a/documentation/io-examples/i2c/index.html +++ b/documentation/io-examples/i2c/index.html @@ -1,8 +1,8 @@ Inter-Integrated Circuit (I²C) - Pi4J -

Inter-Integrated Circuit (I²C)

What is it?

I²C (spoken as I-Squared-C) is a bus originally invented by Philips. @@ -118,4 +118,4 @@ return sb.toString(); } } -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/index.html b/documentation/io-examples/index.html index 18558a216..966364ea2 100644 --- a/documentation/io-examples/index.html +++ b/documentation/io-examples/index.html @@ -1,7 +1,7 @@ I/O Examples - Pi4J -

I/O Examples

Here you can find detailed examples for the different functionalities of Pi4J per I/O type.

The supported low-level I/O interface types are defined in the core library as an enumerated list.

ANALOG_INPUT(AnalogInputProvider.class, AnalogInput.class, AnalogInputConfig.class, AnalogInputConfigBuilder.class),
@@ -12,4 +12,4 @@
 I2C(I2CProvider.class, com.pi4j.io.i2c.I2C.class, I2CConfig.class, I2CConfigBuilder.class), 
 SPI(SpiProvider.class, Spi.class, I2CConfig.class, I2CConfigBuilder.class), 
 SERIAL(SerialProvider.class, Serial.class, SerialConfig.class, SerialConfigBuilder.class);
-
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/pwm/index.html b/documentation/io-examples/pwm/index.html index 529ac3382..7d04f83e2 100644 --- a/documentation/io-examples/pwm/index.html +++ b/documentation/io-examples/pwm/index.html @@ -1,7 +1,7 @@ Pulse Width Modulation (PWM) - Pi4J -

Pulse Width Modulation (PWM)

What is it?

The abbreviation PWM stands for “Pulse Width Modulation” and is also often referred @@ -189,4 +189,4 @@ } } -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/serial/index.html b/documentation/io-examples/serial/index.html index 94c43464e..3cfe14e24 100644 --- a/documentation/io-examples/serial/index.html +++ b/documentation/io-examples/serial/index.html @@ -1,7 +1,7 @@ Serial (UART/RS232) - Pi4J -

Serial (UART/RS232)

What is it?

Serial communication can be used to transfer data between different boards, devices, etc. Data is transfered bit-by-bit @@ -132,4 +132,4 @@ [SerialReader] INFO com.pi4j.util.Console - Data: '$GPGSV,2,1,06,05,33,304,20,07,67,101,21,09,39,079,29,11,38,228,20*7E' [SerialReader] INFO com.pi4j.util.Console - Data: '$GPGSV,2,2,06,16,11,030,24,20,63,283,*73' [SerialReader] INFO com.pi4j.util.Console - Data: '$GPGLL,5054.02265,N,00301.10531,E,143723.00,A,A*6A' -

\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/io-examples/spi/index.html b/documentation/io-examples/spi/index.html index 8493f640b..49efd6ebd 100644 --- a/documentation/io-examples/spi/index.html +++ b/documentation/io-examples/spi/index.html @@ -1,7 +1,7 @@ Serial Peripheral Interface (SPI) - Pi4J -
SPI @@ -226,4 +226,4 @@ spi.write(command, data); } } -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/java-installation/index.html b/documentation/java-installation/index.html index 9c9a5dcb1..b903a77f6 100644 --- a/documentation/java-installation/index.html +++ b/documentation/java-installation/index.html @@ -1,6 +1,6 @@ Java for ARMv6/7/8 - Pi4J -
\ No newline at end of file diff --git a/documentation/logging/index.html b/documentation/logging/index.html index da013ec0d..fb68dfaf0 100644 --- a/documentation/logging/index.html +++ b/documentation/logging/index.html @@ -1,6 +1,6 @@ Logging with SLF4J - Pi4J -
\ No newline at end of file diff --git a/documentation/pin-numbering/index.html b/documentation/pin-numbering/index.html index 1227fed6c..718014b0a 100644 --- a/documentation/pin-numbering/index.html +++ b/documentation/pin-numbering/index.html @@ -1,8 +1,8 @@ Pin numbering - Pi4J -
\ No newline at end of file diff --git a/documentation/platforms/index.html b/documentation/platforms/index.html index 999c4561d..471f8721b 100644 --- a/documentation/platforms/index.html +++ b/documentation/platforms/index.html @@ -1,7 +1,7 @@ Choosing a Platform - Pi4J -

Choosing a Platform

Platforms are extensible service modules responsible for defining a set of default I/O providers and specific hardware @@ -12,4 +12,4 @@ to accept as the default platform at runtime (on start up).

The idea here is that a user could have multiple platform plugins in their directory but only one, theoretically the best suited, will be determined and used at runtime based on the runtime environment which makes it possible to develop, run and test on e.g. Windows with the MockPlatform and when finished run on the Raspberry Pi with the same generated -jar’s which use the RaspberryPiPlatform.

Current supported platforms:

\ No newline at end of file +jar’s which use the RaspberryPiPlatform.

Current supported platforms:

\ No newline at end of file diff --git a/documentation/platforms/raspberry-pi/index.html b/documentation/platforms/raspberry-pi/index.html index 1ddb9c26c..b2914ede4 100644 --- a/documentation/platforms/raspberry-pi/index.html +++ b/documentation/platforms/raspberry-pi/index.html @@ -1,7 +1,7 @@ Raspberry Pi - Pi4J -

Raspberry Pi

Pi4J was designed for the Raspberry Pi, so this is the only supported platform (at this moment), although the architecture of the project allows other platforms to be added.

Add this dependency to include the Raspberry Pi Platform Plugin.

    <dependency>
@@ -9,4 +9,4 @@
         <artifactId>pi4j-plugin-raspberrypi</artifactId>
         <version>${pi4j.version}</version>
     </dependency>
-
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/providers/gpiod/index.html b/documentation/providers/gpiod/index.html index fcf74010f..1d1d94c90 100644 --- a/documentation/providers/gpiod/index.html +++ b/documentation/providers/gpiod/index.html @@ -1,7 +1,7 @@ GpioD Provider - Pi4J -
GpioD @@ -22,4 +22,4 @@ <artifactId>pi4j-plugin-gpiod</artifactId> <version>${pi4j.version}</version> </dependency> -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/providers/index.html b/documentation/providers/index.html index 287d6cafd..5c0ba8ffd 100644 --- a/documentation/providers/index.html +++ b/documentation/providers/index.html @@ -1,7 +1,7 @@ Choosing an I/O Provider - Pi4J -
GpioD @@ -19,4 +19,4 @@ System.out.println("-------------------------------------------------"); pi4j.providers().describe().print(System.out); System.out.println("-------------------------------------------------"); -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/providers/linuxfs/index.html b/documentation/providers/linuxfs/index.html index e229b3337..04323f231 100644 --- a/documentation/providers/linuxfs/index.html +++ b/documentation/providers/linuxfs/index.html @@ -1,7 +1,7 @@ LinuxFS Provider - Pi4J -
LinuxFS @@ -56,4 +56,4 @@ .shutdown(0) .build(); } -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/providers/pigpio/index.html b/documentation/providers/pigpio/index.html index 71871fcee..f7646d9ef 100644 --- a/documentation/providers/pigpio/index.html +++ b/documentation/providers/pigpio/index.html @@ -1,7 +1,7 @@ PiGpio Provider - Pi4J -
PiGpio @@ -30,4 +30,4 @@ <artifactId>pi4j-plugin-pigpio</artifactId> <version>${pi4j.version}</version> </dependency> -
\ No newline at end of file +
\ No newline at end of file diff --git a/documentation/registry/index.html b/documentation/registry/index.html index d1c44b40f..e67731777 100644 --- a/documentation/registry/index.html +++ b/documentation/registry/index.html @@ -1,6 +1,6 @@ I/O Registry - Pi4J -

I/O Registry

An additional V.2 feature is an I/O registry where all I/O instances that have been created can be maintained, managed, re-accessed, etc. As the library keeps track of all the created I/O instances, they become publicly accessible through a registry where users can interrogate, iterate, identify and access all created I/O instances that Pi4J is managing.

This is very useful for add-ons/plugins that want to provide runtime information about the state of all I/O, for example a web app illustrating the current state of I/O.

The registry is responsible for managing I/O instance lifecycles and provides a means for your program to easily access any I/O instance using its unique identifier.

\ No newline at end of file diff --git a/documentation/shutdown/index.html b/documentation/shutdown/index.html index 946a2b732..2a75eb31a 100644 --- a/documentation/shutdown/index.html +++ b/documentation/shutdown/index.html @@ -1,6 +1,6 @@ Shutting down the Pi4J Context - Pi4J -
\ No newline at end of file diff --git a/examples/communityimplementation/bmp280/index.html b/examples/communityimplementation/bmp280/index.html index fef3034c1..39bb772c9 100644 --- a/examples/communityimplementation/bmp280/index.html +++ b/examples/communityimplementation/bmp280/index.html @@ -1,7 +1,7 @@ BMP280 Sensor - Pi4J -

BMP280 Sensor

Description

The BMP280 is a Pressure and temperature sensor accessed via I2C or SPI. The BMP280 @@ -104,4 +104,4 @@ pi4j.shutdown(); } } -

\ No newline at end of file +
\ No newline at end of file diff --git a/examples/communityimplementation/index.html b/examples/communityimplementation/index.html index 0ddd450c4..d6383c785 100644 --- a/examples/communityimplementation/index.html +++ b/examples/communityimplementation/index.html @@ -1,7 +1,7 @@ Community Implementations - Pi4J -
1602A @@ -18,4 +18,4 @@ TCA9548 VL53L0X

Community Implementations

On this page we want to keep a list of projects which contain implementation code for specific devices using the Pi4J V.2 core library. Please let us know via Pi4J V.2 Discussions if you want to have your project added -to this list.

Current available device support projects

Device(s)Developed byLink
1602A LCD HD44780UThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
1602A_LCD_PCF8574A I2C ControllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
1602A LCD MCP23017 I2C ControllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
ADS1256 24bit A-to-DThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
AT24c512 SEEPROMThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
BME280 Sensor Temperature and PressureThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
BMP280 Temperature and Pressure SensorThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
DAC8552 16bit DAC SPI connectedThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
DHT22 Temp/Humidity sensorThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
IS31FL3731 matrix controllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23008 drive and read chip GPIOsThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23008 and MCP23017 Pin monitoringThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23017 drive and read chip GPIOsThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP3008 A/D 10bit converterThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP4725 12 bit DACThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MPL3115A2 AltitudeThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
NeoPixel LED stripThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
RotaryEncoder5880Thomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
SN74HC595 8 Bit shift registerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
SSD1306 OLED DisplayThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
TCA9548 (1x8 I2C switch)Thomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
VL53L0X TimeOfFlight deviceThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
\ No newline at end of file +to this list.

Current available device support projects

Device(s)Developed byLink
1602A LCD HD44780UThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
1602A_LCD_PCF8574A I2C ControllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
1602A LCD MCP23017 I2C ControllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
ADS1256 24bit A-to-DThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
AT24c512 SEEPROMThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
BME280 Sensor Temperature and PressureThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
BMP280 Temperature and Pressure SensorThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
DAC8552 16bit DAC SPI connectedThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
DHT22 Temp/Humidity sensorThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
IS31FL3731 matrix controllerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23008 drive and read chip GPIOsThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23008 and MCP23017 Pin monitoringThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP23017 drive and read chip GPIOsThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP3008 A/D 10bit converterThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MCP4725 12 bit DACThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
MPL3115A2 AltitudeThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
NeoPixel LED stripThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
RotaryEncoder5880Thomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
SN74HC595 8 Bit shift registerThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
SSD1306 OLED DisplayThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
TCA9548 (1x8 I2C switch)Thomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
VL53L0X TimeOfFlight deviceThomas Aartsgithub.aaakk.us.kg/Pi4J/pi4j-example-devices
\ No newline at end of file diff --git a/examples/communityimplementation/prototype-board/index.html b/examples/communityimplementation/prototype-board/index.html index d00e8c8ba..92fe94819 100644 --- a/examples/communityimplementation/prototype-board/index.html +++ b/examples/communityimplementation/prototype-board/index.html @@ -1,7 +1,7 @@ Prototype Board - Pi4J -

Prototype Board

A Versatile Prototype Board

Experimenting with various ICs ‘chips’ may require different methods to connect @@ -31,4 +31,4 @@ the chip with its pin 1 at the pin 1 of the chip breadboard it simplifies pin identification between the chips datasheet and its breadboard connection. Using the chips Datasheet jumpers connect between pins of the chip to the Pi -GPIOs on Gpio breadboard connector or 5v/3.3v and ground on the chip breadboard.

\ No newline at end of file +GPIOs on Gpio breadboard connector or 5v/3.3v and ground on the chip breadboard.

\ No newline at end of file diff --git a/examples/components/ads1115/index.html b/examples/components/ads1115/index.html index df754ce6a..ce76c2e07 100644 --- a/examples/components/ads1115/index.html +++ b/examples/components/ads1115/index.html @@ -1,7 +1,7 @@ AD Converter ADS1115 - Pi4J -

AD Converter ADS1115

Description

The Analog Digital Converter Ads1115 is a template class, that you can use in your own Java-project. @@ -79,4 +79,4 @@ } } -

Further project ideas

  • An application, which detects the deflection of an analog joystick.
  • An application, that determines the current position of a potentiometer.
\ No newline at end of file +

Further project ideas

\ No newline at end of file diff --git a/examples/components/buzzer/index.html b/examples/components/buzzer/index.html index c1c73555a..1018d1984 100644 --- a/examples/components/buzzer/index.html +++ b/examples/components/buzzer/index.html @@ -1,7 +1,7 @@ Buzzer - Pi4J -

Buzzer

Description

The Buzzer is a template class, that you can use in your own Java-project.

The Template Class gives you the option to play a note, and to create your own little melodies to play. The buzzer is controlled via a PWM output. The dutycycle is fixed at 50% and with the frequency the desired sound can be reproduced.

Layout

Buzzer Layout

\ No newline at end of file +

Further project ideas

  • An application, which triggers if you walk by and starts beeping, like an alarm.
  • An application, where you use many of them to create a beautiful sounding melody.
\ No newline at end of file diff --git a/examples/components/camera/index.html b/examples/components/camera/index.html index 19dba866d..7cad9d98b 100644 --- a/examples/components/camera/index.html +++ b/examples/components/camera/index.html @@ -1,7 +1,7 @@ Camera - Pi4J -

Camera

Description

The Camera is a template class, that you can use in your own Java-project. @@ -43,4 +43,4 @@ camera.recordVideo(vidconfig); camera.reset(); -

Further project ideas

  • Use a camera and a motion-sensor to create a wildlife-camera
  • Use a camera to monitor the entrance of a building, by publishing the preview of the camera to a webserver
\ No newline at end of file +

Further project ideas

\ No newline at end of file diff --git a/examples/components/index.html b/examples/components/index.html index 14b508f37..123fb11c5 100644 --- a/examples/components/index.html +++ b/examples/components/index.html @@ -1,7 +1,7 @@ Component Examples - Pi4J -

Component Examples

The FHNW University contributed a full project with example implementations of the following devices.

Current available components

Device(s)Developed byLink
Simple ButtonReto Stutz, Mike SchoderExample Devices
Simple LEDReto Stutz, Mike SchoderExample Devices
AD Converter ADS1115Reto Stutz, Mike SchoderExample Devices
BuzzerReto Stutz, Mike SchoderExample Devices
CameraReto Stutz, Mike SchoderExample Devices
JoystickReto Stutz, Mike SchoderExample Devices
Joystick AnalogReto Stutz, Mike SchoderExample Devices
LCD DisplayReto Stutz, Mike SchoderExample Devices
LED ButtonReto Stutz, Mike SchoderExample Devices
LED MatrixReto Stutz, Mike SchoderExample Devices
LED StripReto Stutz, Mike SchoderExample Devices
PotentiometerReto Stutz, Mike SchoderExample Devices
Servo MotorReto Stutz, Mike SchoderExample Devices

Simple Implementation

For a Simple Implementation, the recommendation is to use the Launcher Class. -With this, a simple application can be started.

Electrical Engineering

General inputs and help on electrical engineering can be looked up on Getting started with PI4J / Electrical Engineering page.

\ No newline at end of file +With this, a simple application can be started.

Electrical Engineering

General inputs and help on electrical engineering can be looked up on Getting started with PI4J / Electrical Engineering page.

\ No newline at end of file diff --git a/examples/components/joystick/index.html b/examples/components/joystick/index.html index c611789ae..07df9c6f4 100644 --- a/examples/components/joystick/index.html +++ b/examples/components/joystick/index.html @@ -1,7 +1,7 @@ Joystick - Pi4J -

Joystick

Description

The Joystick is a template class, that you can use in your own Java-project. @@ -40,4 +40,4 @@ // cleanup joystick.reset(); -

Further application

The class is not yet implemented in a project.

Further project ideas

  • Realize the popular arcade game Street Fighter on your own Raspberry Pi.
  • Create a claw crane game machine, the hit at every party.
\ No newline at end of file +

Further application

The class is not yet implemented in a project.

Further project ideas

\ No newline at end of file diff --git a/examples/components/joystickanalog/index.html b/examples/components/joystickanalog/index.html index ed6facafe..0106fdbc2 100644 --- a/examples/components/joystickanalog/index.html +++ b/examples/components/joystickanalog/index.html @@ -1,7 +1,7 @@ Joystick Analog - Pi4J -
Joystick analog @@ -35,4 +35,4 @@ //cleanup joystick.reset(); -

Further project ideas

  • create your own PlayStation controller
  • use the joystick to control the position of servo motors steplessly
\ No newline at end of file +

Further project ideas

  • create your own PlayStation controller
  • use the joystick to control the position of servo motors steplessly
\ No newline at end of file diff --git a/examples/components/lcddisplay/index.html b/examples/components/lcddisplay/index.html index b1fb8ff96..9d65be99b 100644 --- a/examples/components/lcddisplay/index.html +++ b/examples/components/lcddisplay/index.html @@ -1,7 +1,7 @@ LCD Display - Pi4J -

LCD Display

Description

The LcdDisplay @@ -145,4 +145,4 @@ } }

If you want to create an own character or symbol, then use the following tutorial. Right at the bottom, you can click on the bitmap to see the byte-code. -Create an own Symbol

Further project ideas

  • A Temperature Sensor hooked to a display, where it constantly shows how warm it is
  • A microphone, which listens what is said, and writing on the display what is said
\ No newline at end of file +Create an own Symbol

Further project ideas

\ No newline at end of file diff --git a/examples/components/ledbutton/index.html b/examples/components/ledbutton/index.html index 7b156fa33..c570a1c24 100644 --- a/examples/components/ledbutton/index.html +++ b/examples/components/ledbutton/index.html @@ -1,7 +1,7 @@ LED Button - Pi4J -
LED Button @@ -33,4 +33,4 @@ ledButton.reset(); System.out.println("LED button demo finished."); -

Further project ideas

  • An application, which includes a button. if the button is pressed, the app will order you a crate of beer from your favorite store.
  • An application, where you can play “whack a mole”. If the LED is on and you hit the right button, you get points.
\ No newline at end of file +

Further project ideas

  • An application, which includes a button. if the button is pressed, the app will order you a crate of beer from your favorite store.
  • An application, where you can play “whack a mole”. If the LED is on and you hit the right button, you get points.
\ No newline at end of file diff --git a/examples/components/ledmatrix/index.html b/examples/components/ledmatrix/index.html index 2810fd607..d2765bd27 100644 --- a/examples/components/ledmatrix/index.html +++ b/examples/components/ledmatrix/index.html @@ -1,7 +1,7 @@ LED Matrix - Pi4J -

LED Matrix

Although this example is still valid, an easier approach for the control of an array of LEDs can be achieved with the PixelBlaze Output Expander as described here.

Description

The LedMatrix is a template class, that you can use in your own Java-project. @@ -38,4 +38,4 @@ ledMatrix.close(); System.out.println("LED matrix app done."); -

Further application

The class is not yet implemented in a project.

Further project ideas

  • A suit with a sewn-on LED matrix, which can be used to display images and animations.
  • A LED-strip which can be used as a backlight of a screen. The color and brightness can change to the volume and mood of the displayed images.
\ No newline at end of file +

Further application

The class is not yet implemented in a project.

Further project ideas

\ No newline at end of file diff --git a/examples/components/ledstrip/index.html b/examples/components/ledstrip/index.html index 010142710..dd8e59319 100644 --- a/examples/components/ledstrip/index.html +++ b/examples/components/ledstrip/index.html @@ -1,7 +1,7 @@ LED Strip - Pi4J -

LED Strip

Although this example is still valid, an easier approach for the control of an array of LEDs can be achieved with the PixelBlaze Output Expander as described here.

Description

The LedStrip is a template class, that you can use in your own Java-project. @@ -49,4 +49,4 @@ System.out.println("Color "+ ledStrip.getPixelColor(0)); System.out.println("LED strip app done."); -

Further project ideas

  • A suit with LED-Strips sewn on, on which different animations can run.
  • A LED-strip which can be used as a backlight of a screen. The color and brightness can change to the volume and mood of the displayed images.
\ No newline at end of file +

Further project ideas

\ No newline at end of file diff --git a/examples/components/potentiometer/index.html b/examples/components/potentiometer/index.html index 01a2865e2..93a2498d5 100644 --- a/examples/components/potentiometer/index.html +++ b/examples/components/potentiometer/index.html @@ -1,7 +1,7 @@ Potentiometer - Pi4J -

Potentiometer

Description

The Potentiometer is a template class, that you can use in your own Java-project. @@ -39,4 +39,4 @@ ads1115.reset(); System.out.println("Potentiometer demo finished"); -

Further project ideas

  • An application, to control the brightness of some lights.
  • The speed and direction of a drone can be controlled with a potentiometer.
\ No newline at end of file +

Further project ideas

\ No newline at end of file diff --git a/examples/components/servo/index.html b/examples/components/servo/index.html index 595dd2620..561864b6d 100644 --- a/examples/components/servo/index.html +++ b/examples/components/servo/index.html @@ -1,7 +1,7 @@ ServoMotor - Pi4J -

ServoMotor

Description

The ServoMotor is a template class, that you can use in your own Java-project. @@ -45,4 +45,4 @@ servoMotor.moveOnRange(-10); // This will map -10 based on the previously defined range servoMotor.reset(); -

Further project ideas

  • As a Servo can cover up to 180 degrees, it could be used as a steering-wheel hooked to a potentiometer
  • As a pointer, to show how much time is left in a timer
\ No newline at end of file +

Further project ideas

\ No newline at end of file diff --git a/examples/components/simplebutton/index.html b/examples/components/simplebutton/index.html index cd69ad1d4..e2d25ac89 100644 --- a/examples/components/simplebutton/index.html +++ b/examples/components/simplebutton/index.html @@ -1,7 +1,7 @@ Simple Button - Pi4J -
Simple Button @@ -24,4 +24,4 @@ // Unregister all event handlers to exit this application in a clean way button.reset(); -

Further project ideas

  • An application, which includes a button. if the button is pressed, the app will order you a crate of beer from your favorite store.
  • An application, which includes a buzzer and a button. If the button is pressed, the buzzer beeps.
\ No newline at end of file +

Further project ideas

  • An application, which includes a button. if the button is pressed, the app will order you a crate of beer from your favorite store.
  • An application, which includes a buzzer and a button. If the button is pressed, the buzzer beeps.
\ No newline at end of file diff --git a/examples/components/simpleled/index.html b/examples/components/simpleled/index.html index 6b23e8480..1e846eeee 100644 --- a/examples/components/simpleled/index.html +++ b/examples/components/simpleled/index.html @@ -1,7 +1,7 @@ Simple LED - Pi4J -
Simple LED @@ -28,4 +28,4 @@ // That's it so reset all led.reset(); -

Further project ideas

  • Use an infrared LED to establish communication with an infrared receiver.
  • Use several red LEDs to recreate the running lights of KITT, the car from Knight Rider.
\ No newline at end of file +

Further project ideas

  • Use an infrared LED to establish communication with an infrared receiver.
  • Use several red LEDs to recreate the running lights of KITT, the car from Knight Rider.
\ No newline at end of file diff --git a/examples/crowpi/crowpi-examples/index.html b/examples/crowpi/crowpi-examples/index.html index 8e4aef201..fb3bd6a7d 100644 --- a/examples/crowpi/crowpi-examples/index.html +++ b/examples/crowpi/crowpi-examples/index.html @@ -1,8 +1,8 @@ CrowPi examples - Pi4J -

CrowPi examples

The CrowPi example code contains examples for the following components. The links in this table will bring you to the German documentation written by the students who created these examples.

ComponentLink
7-Segment Displayseven-segment
Buttonbutton
Button Matrixbutton-matrix
Buzzerbuzzer
Infrared Receiverir-receiver
LCD Displaylcd-display
LED Matrixled-matrix
Light sensorlight-sensor
PIR Motion Sensorpir-motion-sensor
Relaisrelay
RFIDrfid
Step motorstep-motor
Servomotorservo-motor
Sound Sensorsound-sensor
Temperature and humidity sensorhumi-temp-sens
Tilt Sensortilt-sensor
Touch Sensortouch-sensor
Ultrasonic distance sensorultrasonic-sensor
Vibration motorvibration-motor
\ No newline at end of file +CrowPi

CrowPi examples

The CrowPi example code contains examples for the following components. The links in this table will bring you to the German documentation written by the students who created these examples.

ComponentLink
7-Segment Displayseven-segment
Buttonbutton
Button Matrixbutton-matrix
Buzzerbuzzer
Infrared Receiverir-receiver
LCD Displaylcd-display
LED Matrixled-matrix
Light sensorlight-sensor
PIR Motion Sensorpir-motion-sensor
Relaisrelay
RFIDrfid
Step motorstep-motor
Servomotorservo-motor
Sound Sensorsound-sensor
Temperature and humidity sensorhumi-temp-sens
Tilt Sensortilt-sensor
Touch Sensortouch-sensor
Ultrasonic distance sensorultrasonic-sensor
Vibration motorvibration-motor
\ No newline at end of file diff --git a/examples/crowpi/develop-crowpi-with-intellij/index.html b/examples/crowpi/develop-crowpi-with-intellij/index.html index 0c79b205b..45f86165e 100644 --- a/examples/crowpi/develop-crowpi-with-intellij/index.html +++ b/examples/crowpi/develop-crowpi-with-intellij/index.html @@ -1,7 +1,7 @@ Develop with Intellij IDEA - Pi4J -
Pi4J OS @@ -49,4 +49,4 @@ the run configuration “crowpi-examples [install]”. Then start the application by pressing the green play button.

It immediately opens the “Run” window in IntelliJ IDEA. It takes a moment, and some text is displayed on the command line. After a few seconds the output stops, and it looks like this:

A number can now be typed in here according to the displayed list (+ Enter). The corresponding sample application is then executed. If there are still error messages in the command line, it is worth checking the network connection of the -computer and the Raspberry Pi again.

\ No newline at end of file +computer and the Raspberry Pi again.

\ No newline at end of file diff --git a/examples/crowpi/index.html b/examples/crowpi/index.html index 5faa456c6..99a717c6c 100644 --- a/examples/crowpi/index.html +++ b/examples/crowpi/index.html @@ -1,7 +1,7 @@ Electronics with CrowPi - Pi4J -

As the CrowPi contains a lot of components, its use is described on the following subpages:

The CrowPi sources and documentation are provided by the Swiss FHNW University based on a project in 2021 by Pascal Mathis and Tobias Siegrist under supervision of Barbara Scheuner and Dieter Holz. The original documentation (in German) is available on “CrowPi goes Java” -(with sources on GitHub).

\ No newline at end of file +(with sources on GitHub).

\ No newline at end of file diff --git a/examples/index.html b/examples/index.html index 5508bddc0..a0ffbd0a6 100644 --- a/examples/index.html +++ b/examples/index.html @@ -1,8 +1,8 @@ Example Implementations - Pi4J -
\ No newline at end of file diff --git a/examples/jbang/bme280_temperature_humidity_pressure/index.html b/examples/jbang/bme280_temperature_humidity_pressure/index.html index 4d71cefa4..42ae6d6c8 100644 --- a/examples/jbang/bme280_temperature_humidity_pressure/index.html +++ b/examples/jbang/bme280_temperature_humidity_pressure/index.html @@ -1,7 +1,7 @@ BME280 Sensor - Pi4J -
\ No newline at end of file +

Conclusion

Once again, JBang proves to be the perfect companion to experiment with Pi4J and an electronics component!

Read More

The following sources have been used for this example:

\ No newline at end of file diff --git a/examples/jbang/index.html b/examples/jbang/index.html index a65361267..702512b3d 100644 --- a/examples/jbang/index.html +++ b/examples/jbang/index.html @@ -1,7 +1,7 @@ JBang Examples - Pi4J -

JBang Examples

Want to get started with Java programming on the Raspberry Pi?

JBang is a great way to create your first program to control electronic components connected to the GPIO pins. @@ -15,4 +15,4 @@ $ sudo apt install code

Example scripts

The Pi4J JBang project on GitHub contains several examples to demonstrate both JBang and Pi4J. Each java-file is a full-containing runnable JBang application. This means you don’t need Maven, Gradle, or other Java build tool.

To tell JBang that it must handle the file as a Java application and do some upfront preparation work, the first line in each file is: ///usr/bin/env jbang "$0" "$@" ; exit $?.

When an application needs dependencies, they are defined inside the file itself in a line starting with //DEPS. For instance, to use the Pi4J Core library: //DEPS com.pi4j:pi4j-core:2.3.0.

Each of the provided examples contains more information about the wiring inside the file itself and are also explained here on the Pi4J website.

Get the Examples from GitHub

You can clone the project with the examples to your Raspberry Pi in the terminal with the following commands:

$ git clone https://github.com/Pi4J/pi4j-jbang
 $ cd pi4j-jbang
-

Detailed Info of Each Example

The examples in the GitHub project are explained on these pages:

Video Demo

This approach to demonstrate Pi4J with JBang has been explained and demonstrated on Voxxed Days Brussels on May 23th, 2023.

\ No newline at end of file +

Detailed Info of Each Example

The examples in the GitHub project are explained on these pages:

Video Demo

This approach to demonstrate Pi4J with JBang has been explained and demonstrated on Voxxed Days Brussels on May 23th, 2023.

\ No newline at end of file diff --git a/examples/jbang/jbang_minimal_example/index.html b/examples/jbang/jbang_minimal_example/index.html index 1f2ca57d4..e4195c62b 100644 --- a/examples/jbang/jbang_minimal_example/index.html +++ b/examples/jbang/jbang_minimal_example/index.html @@ -1,7 +1,7 @@ Minimal Example - Pi4J -
JBang @@ -96,4 +96,4 @@ [main] INFO com.pi4j.util.Console - LED high [main] INFO com.pi4j.util.Console - LED low [Thread-8] INFO com.pi4j.util.Console - Button was pressed for the 5th time -

Conclusion

With JBang we can have a single-source Java file that can be executed without the need for a full Maven or Gradle project. And we don’t even need to compile anything!

JBang is a great way to simply run Java-files, helps you to quickly get started with Pi4J on the Raspberry Pi, and can be the ideal getting-started method to experiment with electronics and Java.

\ No newline at end of file +

Conclusion

With JBang we can have a single-source Java file that can be executed without the need for a full Maven or Gradle project. And we don’t even need to compile anything!

JBang is a great way to simply run Java-files, helps you to quickly get started with Pi4J on the Raspberry Pi, and can be the ideal getting-started method to experiment with electronics and Java.

\ No newline at end of file diff --git a/examples/jbang/jbang_pi4j_spi_led_matrix/index.html b/examples/jbang/jbang_pi4j_spi_led_matrix/index.html index 41997a8f6..b5757e6ac 100644 --- a/examples/jbang/jbang_pi4j_spi_led_matrix/index.html +++ b/examples/jbang/jbang_pi4j_spi_led_matrix/index.html @@ -1,7 +1,7 @@ 8x8 LED Matrix - Pi4J -
JBang @@ -140,4 +140,4 @@ Scrolled : S Scrolled : T [main] INFO com.pi4j.util.Console - Finished -

Conclusion

The given example code is pretty long as it contains many helper methods and some enums. Normally in a “full Java application”, you would create separate files for these enums to keep the code easier to organize.

But for an example as this one, it’s nice that we can combine everything in one file and execute it with JBang.

\ No newline at end of file +

Conclusion

The given example code is pretty long as it contains many helper methods and some enums. Normally in a “full Java application”, you would create separate files for these enums to keep the code easier to organize.

But for an example as this one, it’s nice that we can combine everything in one file and execute it with JBang.

\ No newline at end of file diff --git a/examples/jbang/pixelblaze_output_expander/index.html b/examples/jbang/pixelblaze_output_expander/index.html index 0b9f32b91..a64a8ba77 100644 --- a/examples/jbang/pixelblaze_output_expander/index.html +++ b/examples/jbang/pixelblaze_output_expander/index.html @@ -1,7 +1,7 @@ Pixelblaze Output Expander - Pi4J -
JBang @@ -291,4 +291,4 @@ All red on LED matrix on channel 2 ... Closing /dev/ttyS0 -

Conclusion

I’m still curious to see the reliability of this serial control for LED strips in combination with other loads on the Raspberry Pi, but the Pixelblaze Output Expander is a great way to easily control such strips!

\ No newline at end of file +

Conclusion

I’m still curious to see the reliability of this serial control for LED strips in combination with other loads on the Raspberry Pi, but the Pixelblaze Output Expander is a great way to easily control such strips!

\ No newline at end of file diff --git a/examples/jbang/pixelblaze_output_expander_image/index.html b/examples/jbang/pixelblaze_output_expander_image/index.html index 8c4a85fcf..6c33528a9 100644 --- a/examples/jbang/pixelblaze_output_expander_image/index.html +++ b/examples/jbang/pixelblaze_output_expander_image/index.html @@ -1,7 +1,7 @@ Controlling a LED Matrix - Pi4J -
JBang @@ -168,4 +168,4 @@ Image data/image_8_32_raspberrypi.png loaded with W 32 and H 8 All off on channel 2 with 256 Closing /dev/ttyS0 -

Controlling an 8x8 matrix

Within the GitHub project, you can also find an example to send images to an 8x8 matrix.

Conclusion

By reusing the existing Pixelblaze Output Expander helper code, we are able to control a LED matrix and experiment with images.

\ No newline at end of file +

Controlling an 8x8 matrix

Within the GitHub project, you can also find an example to send images to an 8x8 matrix.

Conclusion

By reusing the existing Pixelblaze Output Expander helper code, we are able to control a LED matrix and experiment with images.

\ No newline at end of file diff --git a/examples/jbang/pixelblaze_output_expander_javafx/index.html b/examples/jbang/pixelblaze_output_expander_javafx/index.html index 15d96bec2..808b3ee2b 100644 --- a/examples/jbang/pixelblaze_output_expander_javafx/index.html +++ b/examples/jbang/pixelblaze_output_expander_javafx/index.html @@ -1,7 +1,7 @@ LED strip with a JavaFX UI - Pi4J -
JBang @@ -127,4 +127,4 @@ ff ff ff ff 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff ff -

Conclusion

JavaFX is an easy way to create a user interface and thanks to the reuse of the existing Pixelblaze Output Expander helper code, this example provides a lot of functionality with minimal code.

\ No newline at end of file +

Conclusion

JavaFX is an easy way to create a user interface and thanks to the reuse of the existing Pixelblaze Output Expander helper code, this example provides a lot of functionality with minimal code.

\ No newline at end of file diff --git a/featured-projects/binary-clock/index.html b/featured-projects/binary-clock/index.html index 854ef5e90..afcc52074 100644 --- a/featured-projects/binary-clock/index.html +++ b/featured-projects/binary-clock/index.html @@ -1,6 +1,6 @@ Binary Clock - Pi4J -

\ No newline at end of file +

\ No newline at end of file diff --git a/featured-projects/cocktail-maker-by-alex9849/index.html b/featured-projects/cocktail-maker-by-alex9849/index.html index 1c1edc5bf..709591768 100644 --- a/featured-projects/cocktail-maker-by-alex9849/index.html +++ b/featured-projects/cocktail-maker-by-alex9849/index.html @@ -1,6 +1,6 @@ CocktailPi - Pi4J -
\ No newline at end of file diff --git a/featured-projects/index.html b/featured-projects/index.html index d89214a3d..ee54ce45c 100644 --- a/featured-projects/index.html +++ b/featured-projects/index.html @@ -1,6 +1,6 @@ Featured Projects - Pi4J -
\ No newline at end of file diff --git a/featured-projects/joystick-game/index.html b/featured-projects/joystick-game/index.html index e107d22b2..54a5930f4 100644 --- a/featured-projects/joystick-game/index.html +++ b/featured-projects/joystick-game/index.html @@ -1,6 +1,6 @@ JMonkeyEngine with Joystick - Pi4J -
\ No newline at end of file +

Testing with a jmonkeyengine vehicle

It’s very hard to give you a full overview of how to create a jmonkeyengine vehicle in this tutorial, so you could fairly refer to jme docs and examples for more :

Video of operation

More at sources

\ No newline at end of file diff --git a/featured-projects/pijukebox-by-daniel-martensson/index.html b/featured-projects/pijukebox-by-daniel-martensson/index.html index 7126caf04..828b9318c 100644 --- a/featured-projects/pijukebox-by-daniel-martensson/index.html +++ b/featured-projects/pijukebox-by-daniel-martensson/index.html @@ -1,10 +1,10 @@ PiJukeBox - Pi4J -
\ No newline at end of file diff --git a/featured-projects/sensor-drivers/index.html b/featured-projects/sensor-drivers/index.html index de0cf89b3..27204f5ed 100644 --- a/featured-projects/sensor-drivers/index.html +++ b/featured-projects/sensor-drivers/index.html @@ -1,6 +1,6 @@ Sensor drivers - Pi4J -
\ No newline at end of file diff --git a/featured-projects/soft-real-time-plc-written-in-strolch/index.html b/featured-projects/soft-real-time-plc-written-in-strolch/index.html index 2b5f89469..544f62d23 100644 --- a/featured-projects/soft-real-time-plc-written-in-strolch/index.html +++ b/featured-projects/soft-real-time-plc-written-in-strolch/index.html @@ -1,6 +1,6 @@ Soft real time PLC - Pi4J -

These are projects by the company atexxi.ch.

A soft real time PLC written in Java running on Strolch

This PLC project by Robert von Burg combines Pi4j, Strolch and the Raspberry Pi.

It is being used in a material flow controller which coordinates FromStock orders with a medical dispensing robot and dispenses the packets into containers. These containers are then moved by a Strolch based PLC. The containers travel on a 12m long conveyor with multiple segments and entry/exits to position the container at the dispensing robot’s exit.

Medical cabinet with pick-by-light

The most recent project are medical cabinets which use I2C to communicate with custom electronics to control the locks, -perform a pick-by-light from slots and uses infrared to detect access to a slot with products in it.

\ No newline at end of file +perform a pick-by-light from slots and uses infrared to detect access to a slot with products in it.

\ No newline at end of file diff --git a/featured-projects/street-artist-robot/index.html b/featured-projects/street-artist-robot/index.html index 755171995..312a15986 100644 --- a/featured-projects/street-artist-robot/index.html +++ b/featured-projects/street-artist-robot/index.html @@ -1,6 +1,6 @@ Didier the street artist robot - Pi4J -

\ No newline at end of file +

\ No newline at end of file diff --git a/getting-started/developing-on-a-remote-pc/index.html b/getting-started/developing-on-a-remote-pc/index.html index 2eaaaec3b..e528f9efd 100644 --- a/getting-started/developing-on-a-remote-pc/index.html +++ b/getting-started/developing-on-a-remote-pc/index.html @@ -1,6 +1,6 @@ Developing on a remote PC - Pi4J -
\ No newline at end of file diff --git a/getting-started/electricalengeneering/index.html b/getting-started/electricalengeneering/index.html index c35936778..dcbfee240 100644 --- a/getting-started/electricalengeneering/index.html +++ b/getting-started/electricalengeneering/index.html @@ -1,6 +1,6 @@ Electrical Engineering - Pi4J -

Automatic wire stripper

Here is a short video that explains how the automatic wire stripper works.

Crimping tutorial

Here is a short video that explains the basics of crimping wires.

If the crimp connection does not hold, the following measures can lead to a better connection:
- Strip wire to double length, lay on top of each other and twist (see picture below)
- The crimping tool is too short, crimp the sleeve twice in different places (see picture below)

Crimping ferrules tutorial

Here is a short video that explains the basics of crimping ferrules to wires.

\ No newline at end of file diff --git a/getting-started/fxgl/fxgl-to-picade/index.html b/getting-started/fxgl/fxgl-to-picade/index.html index b4b5f976b..7046f7a4e 100644 --- a/getting-started/fxgl/fxgl-to-picade/index.html +++ b/getting-started/fxgl/fxgl-to-picade/index.html @@ -1,7 +1,7 @@ FXGl to Picade - Pi4J -

FXGl to Picade

In this section we demonstrate how to convert existing FXGL projects to work on a RaspberryPi

If you don’t have an existing FXGL project, go grab one from FXGLGames

Steps to get your app running on a RaspberryPi

  • Add Maven support to your project @@ -146,4 +146,4 @@ // allow access to classes in the following namespaces for Pi4J annotation processing exports com.pi4j.example to com.almasb.fxgl.core; } -
\ No newline at end of file +
\ No newline at end of file diff --git a/getting-started/fxgl/index.html b/getting-started/fxgl/index.html index 3f4a99839..7e038f825 100644 --- a/getting-started/fxgl/index.html +++ b/getting-started/fxgl/index.html @@ -1,7 +1,7 @@ Game development with FXGL - Pi4J -

Game development with FXGL

As described on the previous page you can use JavaFX to build @@ -53,4 +53,4 @@ --add-modules javafx.controls \ --module com.pi4j.example/com.pi4j.example.FxglExample $@

run-kiosk.sh
Runs the application with monocle in DRM (Direct rendering mode). -More to kiosk mode here

\ No newline at end of file +More to kiosk mode here

\ No newline at end of file diff --git a/getting-started/fxgl/kiosk-mode/index.html b/getting-started/fxgl/kiosk-mode/index.html index 2c33c9884..50196a341 100644 --- a/getting-started/fxgl/kiosk-mode/index.html +++ b/getting-started/fxgl/kiosk-mode/index.html @@ -1,7 +1,7 @@ JavaFX kiosk mode - Pi4J -

JavaFX kiosk mode

Visit webtechie.be for the full blogpost

Kiosk Mode

With Gluon’s JavaFX 17-ea, we are able to run applications in different modes: Desktop and Kiosk mode. @@ -30,4 +30,4 @@ A slight increase of RAM and CPU is noticeable, but the average frames per second do not improve that much. Non the less, the FPS was more stable while running in kiosk mode and might be an advantage when running games.

Overall the kiosk mode has advantages over the windowed mode but using the kiosk mode exclusively to boost the performance is not recommended.

Extra tips

Gluon documentation

Gluon keeps the documentation for Raspberry Pi constantly updated, keep an eye on gluonhq to stay up-to-date.

64-bit OS and JavaFX

If you want to go 64-bit, you can use the same approach. There is no official 64-bit Raspberry Pi OS yet, but you can find more information on “Faster & More Reliable 64-bit OS on Raspberry Pi 4 with USB Boot”.

Unclutter

Another great addition for a kiosk approach is Unclutter, a small tool which hides your mouse cursor when you do not need it. You only have to move the mouse for the cursor to reappear.

sudo apt install unclutter
 

To run the application in kiosk mode it is recommended to have an open ssh session on the side to follow the process or in case of errors, being able to restart the desktop with:

/sbin/init 5
-
\ No newline at end of file +
\ No newline at end of file diff --git a/getting-started/index.html b/getting-started/index.html index 1ea9432af..f3c71171d 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -1,8 +1,8 @@ Getting started with Pi4J - Pi4J -
\ No newline at end of file diff --git a/getting-started/java-development-on-the-raspberry-pi-with-vsc/index.html b/getting-started/java-development-on-the-raspberry-pi-with-vsc/index.html index e0ba833de..c3f805242 100644 --- a/getting-started/java-development-on-the-raspberry-pi-with-vsc/index.html +++ b/getting-started/java-development-on-the-raspberry-pi-with-vsc/index.html @@ -1,6 +1,6 @@ Java development with VSC - Pi4J -
\ No newline at end of file +
\ No newline at end of file diff --git a/getting-started/javafx-mvc-template/index.html b/getting-started/javafx-mvc-template/index.html index 62b8b387e..9ba180150 100644 --- a/getting-started/javafx-mvc-template/index.html +++ b/getting-started/javafx-mvc-template/index.html @@ -1,6 +1,6 @@ JavaFX GUI and MVC template - Pi4J -
\ No newline at end of file diff --git a/getting-started/learn-more/index.html b/getting-started/learn-more/index.html index 7df679a11..c1ea8f3ba 100644 --- a/getting-started/learn-more/index.html +++ b/getting-started/learn-more/index.html @@ -1,6 +1,6 @@ Learn more... - Pi4J -
\ No newline at end of file diff --git a/getting-started/minimal-example-application-fatjar/index.html b/getting-started/minimal-example-application-fatjar/index.html index 520e4b532..7b6ccac23 100644 --- a/getting-started/minimal-example-application-fatjar/index.html +++ b/getting-started/minimal-example-application-fatjar/index.html @@ -1,6 +1,6 @@ Minimal example as FAT JAR - Pi4J -
\ No newline at end of file diff --git a/getting-started/minimal-example-application/index.html b/getting-started/minimal-example-application/index.html index d9c112bda..affb9bdc3 100644 --- a/getting-started/minimal-example-application/index.html +++ b/getting-started/minimal-example-application/index.html @@ -1,6 +1,6 @@ Minimal example application - Pi4J -
\ No newline at end of file diff --git a/getting-started/set-up-a-new-raspberry-pi/index.html b/getting-started/set-up-a-new-raspberry-pi/index.html index 5ae806cf9..82c75923f 100644 --- a/getting-started/set-up-a-new-raspberry-pi/index.html +++ b/getting-started/set-up-a-new-raspberry-pi/index.html @@ -1,6 +1,6 @@ Set up a new Raspberry Pi - Pi4J -
\ No newline at end of file +Stretch (V9) to Buster (V10).

\ No newline at end of file diff --git a/getting-started/understanding-the-pins/index.html b/getting-started/understanding-the-pins/index.html index dac34ce85..9582dc4aa 100644 --- a/getting-started/understanding-the-pins/index.html +++ b/getting-started/understanding-the-pins/index.html @@ -1,6 +1,6 @@ Understanding the GPIO pins - Pi4J -
\ No newline at end of file diff --git a/getting-started/user-interface-with-javafx/index.html b/getting-started/user-interface-with-javafx/index.html index 3fa27b807..fcc5875f2 100644 --- a/getting-started/user-interface-with-javafx/index.html +++ b/getting-started/user-interface-with-javafx/index.html @@ -1,6 +1,6 @@ User interface with JavaFX - Pi4J -
\ No newline at end of file diff --git a/index.html b/index.html index 02d36e8dd..fe4a8add4 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@ Welcome to Pi4J - Pi4J -
navigation

Welcome to Pi4J

Latest release: V2.7.0 (2024-10-03, see Release Notes).

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.

Pi4J supports the new Raspberry Pi 5 as of version 2.5.0. Because of the new GPIO chip RP1, a new GPIO Provider was needed. See the release notes for more info.

If you immediately want to “dive” into Pi4J development, check these resources:

Brief History

The Pi4J Project was started in 2012, the same year the Raspberry Pi was introduced +

navigation

Welcome to Pi4J

Latest release: V2.7.0 (2024-10-03, see Release Notes).

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.

Pi4J supports the new Raspberry Pi 5 as of version 2.5.0. Because of the new GPIO chip RP1, a new GPIO Provider was needed. See the release notes for more info.

If you immediately want to “dive” into Pi4J development, check these resources:

Brief History

The Pi4J Project was started in 2012, the same year the Raspberry Pi was introduced as a tool to provide Java developers a simple and familiar object-oriented interface library to access the low-level I/O capabilities of the Raspberry Pi including GPIO, I2C, SPI, PWM and Serial communications.

Project Mission/Goals

The Pi4J Project’s mission is to provide a rich and powerful, yet simple to use, Java-friendly API library enabling programmatic access to the low-level hardware I/O capabilities of embedded platforms such as the Raspberry Pi.

Project Status Summary

The Pi4j project has evolved in all these years as the whole Java eco-system and Raspberry Pi systems have been evolving.

This resulted in two main versions.

Version 1

The original library which started in 2012 and got a last release in 2021. Up till version 1.3 the library targets Java 8, while version 1.4 relies on Java 11.

More info is provided on “Previous versions (V.1)”.

Version 2

As of Version 2.0, Pi4J no longer includes support for peripheral devices and -add-on chipsets/boards as part of the core project. A new plugin model has been introduced in version 2.0 that helps to enable third-party development and support third-party add-ons which can be developed and maintained independently of the core Pi4J project.

More info is provided on “What’s New (V.2)”.

\ No newline at end of file +add-on chipsets/boards as part of the core project. A new plugin model has been introduced in version 2.0 that helps to enable third-party development and support third-party add-ons which can be developed and maintained independently of the core Pi4J project.

More info is provided on “What’s New (V.2)”.

\ No newline at end of file diff --git a/kotlin/coroutines/index.html b/kotlin/coroutines/index.html index 0cee6be73..d299de716 100644 --- a/kotlin/coroutines/index.html +++ b/kotlin/coroutines/index.html @@ -1,6 +1,6 @@ Coroutines Support - Pi4J -
\ No newline at end of file diff --git a/kotlin/i2c/index.html b/kotlin/i2c/index.html index d76bfadc3..f3d1da66e 100644 --- a/kotlin/i2c/index.html +++ b/kotlin/i2c/index.html @@ -1,6 +1,6 @@ I²C Kotlin DSL - Pi4J -
\ No newline at end of file diff --git a/kotlin/index.html b/kotlin/index.html index 3b414a40f..982923a85 100644 --- a/kotlin/index.html +++ b/kotlin/index.html @@ -1,6 +1,6 @@ Pi4J Kotlin DSL - Pi4J -

GitHub projects:

  • Kotlin Interface & DSL for Pi4J V2: Pi4J-Kotlin
  • For Pi4J V1 Kotlin Bindings, check Pi4K
\ No newline at end of file diff --git a/kotlin/kotlin-api-docs/index.html b/kotlin/kotlin-api-docs/index.html index 8a2c8a006..5189896c0 100644 --- a/kotlin/kotlin-api-docs/index.html +++ b/kotlin/kotlin-api-docs/index.html @@ -1,6 +1,6 @@ Kotlin API & DSL Documentation - Pi4J -
\ No newline at end of file diff --git a/kotlin/minimal-kotlin-example/index.html b/kotlin/minimal-kotlin-example/index.html index 340ab6151..e7ac628e9 100644 --- a/kotlin/minimal-kotlin-example/index.html +++ b/kotlin/minimal-kotlin-example/index.html @@ -1,6 +1,6 @@ Minimal Kotlin Pi4J example - Pi4J -
\ No newline at end of file diff --git a/kotlin/serial/index.html b/kotlin/serial/index.html index b892e3154..3eda5cba9 100644 --- a/kotlin/serial/index.html +++ b/kotlin/serial/index.html @@ -1,6 +1,6 @@ Serial Kotlin DSL - Pi4J -
\ No newline at end of file diff --git a/pi4j-os/index.html b/pi4j-os/index.html index 718cc3bf4..0bf9f6b53 100644 --- a/pi4j-os/index.html +++ b/pi4j-os/index.html @@ -1,6 +1,6 @@ Pi4J Operating System - Pi4J -

Additional Features on top of Raspberry Pi OS

This project provides pre-built versions of OS images with all you need to develop 100% pure Java applications for specific Raspberry Pi setups. They are based on the latest official Raspberry Pi OS and are automatically built using Packer.

By using these images, you will get:

  • Preconfigured locale (en_US), keyboard (US) and timezone (Europe/Zurich).
  • Preconfigured wireless country (Switzerland) by default.
  • Remote management via SSH and VNC enabled by default.
  • Preinstalled OpenJDK 17 with latest JavaFX 20.
  • Starter script to launch JavaFX-apps in DRM (aka kiosk-mode).
  • Preconfigured /boot/config.txt supporting all components out of the box.
  • Dynamic wallpaper showing Ethernet/WLAN address and hostname.
  • User account pi, password pi4j.
    • You have to set the corresponding preferences in Raspberry Pi Imager.
  • Default WLAN connection.
    • Setup a hotspot, for example on your smartphone, and you’re ready to go.
      • SSID: Pi4J-Spot.
      • Password: MayTheSourceBeWithYou!.
    • Your laptop has to be in the same WLAN as the Rasperry Pi.

Available Flavors

Pi4J-Basic-OS

Download latest release of Pi4J-Basic-OS Image

Pi4J-CrowPi-OS

  • All of Pi4J-Basic-OS
  • Support for CrowPi
  • Comes with lirc preinstalled to run the IR receiver component
  • Use CrowPi template project to start your CrowPi experiments

Download latest release of Pi4J-CrowPi-OS

Pi4J-Picade-OS

Download latest release of Pi4J-Picade-OS

Table of content of the “Pi4J OS” section

\ No newline at end of file diff --git a/pi4j-os/prepare-sd-with-pi4j-os/index.html b/pi4j-os/prepare-sd-with-pi4j-os/index.html index b434bf812..116842a96 100644 --- a/pi4j-os/prepare-sd-with-pi4j-os/index.html +++ b/pi4j-os/prepare-sd-with-pi4j-os/index.html @@ -1,6 +1,6 @@ Prepare SD with Pi4J OS - Pi4J -

\ No newline at end of file +

\ No newline at end of file diff --git a/pi4j-os/test-pi4j-basic-os/index.html b/pi4j-os/test-pi4j-basic-os/index.html index f1ec5ed1e..24527d2e1 100644 --- a/pi4j-os/test-pi4j-basic-os/index.html +++ b/pi4j-os/test-pi4j-basic-os/index.html @@ -1,6 +1,6 @@ Test Pi4J Basic OS - Pi4J -
\ No newline at end of file diff --git a/pi4j-os/test-pi4j-picade-os/index.html b/pi4j-os/test-pi4j-picade-os/index.html index 4358d2dda..33cc3d305 100644 --- a/pi4j-os/test-pi4j-picade-os/index.html +++ b/pi4j-os/test-pi4j-picade-os/index.html @@ -1,10 +1,10 @@ Test Pi4J Picade OS - Pi4J -

Check the mapping of the Picade buttons to JavaFX KeyCodes:

PicadeKeyCode
Joystick upKeyCode.UP
Joystick downKeyCode.DOWN
Joystick leftKeyCode.LEFT
Joystick rightKeyCode.RIGHT
right side black buttonKeyCode.ENTER
left side black buttonKeyCode.ESCAPE
all other buttonsno mapping
\ No newline at end of file diff --git a/tags/1602a/index.html b/tags/1602a/index.html index 95848a897..4994281c2 100644 --- a/tags/1602a/index.html +++ b/tags/1602a/index.html @@ -1,5 +1,5 @@ 1602A - Pi4J -
\ No newline at end of file diff --git a/tags/ads1115/index.html b/tags/ads1115/index.html index 2177328e7..b7ad171e2 100644 --- a/tags/ads1115/index.html +++ b/tags/ads1115/index.html @@ -1,5 +1,5 @@ ADS1115 - Pi4J -
\ No newline at end of file diff --git a/tags/ads1256/index.html b/tags/ads1256/index.html index 6d5aba5d5..db9c32dc4 100644 --- a/tags/ads1256/index.html +++ b/tags/ads1256/index.html @@ -1,5 +1,5 @@ ADS1256 - Pi4J -
\ No newline at end of file diff --git a/tags/bh1750/index.html b/tags/bh1750/index.html index 1961eae93..4b8907a5c 100644 --- a/tags/bh1750/index.html +++ b/tags/bh1750/index.html @@ -1,5 +1,5 @@ BH1750 - Pi4J -
\ No newline at end of file diff --git a/tags/bme280/index.html b/tags/bme280/index.html index cfd438a99..feb5f439d 100644 --- a/tags/bme280/index.html +++ b/tags/bme280/index.html @@ -1,5 +1,5 @@ BME280 - Pi4J -
\ No newline at end of file diff --git a/tags/bme680/index.html b/tags/bme680/index.html index f6f4ff934..c204d529b 100644 --- a/tags/bme680/index.html +++ b/tags/bme680/index.html @@ -1,5 +1,5 @@ BME680 - Pi4J -
\ No newline at end of file diff --git a/tags/bme688/index.html b/tags/bme688/index.html index cc8d1ba04..7083b0009 100644 --- a/tags/bme688/index.html +++ b/tags/bme688/index.html @@ -1,5 +1,5 @@ BME688 - Pi4J -
\ No newline at end of file diff --git a/tags/bmp180/index.html b/tags/bmp180/index.html index 96d05ff3c..128ff34b8 100644 --- a/tags/bmp180/index.html +++ b/tags/bmp180/index.html @@ -1,5 +1,5 @@ BMP180 - Pi4J -
\ No newline at end of file diff --git a/tags/bmp280/index.html b/tags/bmp280/index.html index 5015dad12..785bf6fe0 100644 --- a/tags/bmp280/index.html +++ b/tags/bmp280/index.html @@ -1,5 +1,5 @@ BMP280 - Pi4J -
\ No newline at end of file diff --git a/tags/button/index.html b/tags/button/index.html index 109ad90fa..8e5825610 100644 --- a/tags/button/index.html +++ b/tags/button/index.html @@ -1,5 +1,5 @@ Button - Pi4J -
\ No newline at end of file diff --git a/tags/buzzer/index.html b/tags/buzzer/index.html index 8f9a6d43b..0ba2c2315 100644 --- a/tags/buzzer/index.html +++ b/tags/buzzer/index.html @@ -1,5 +1,5 @@ Buzzer - Pi4J -
\ No newline at end of file diff --git a/tags/camera/index.html b/tags/camera/index.html index ce5ef3a84..6dd505ba4 100644 --- a/tags/camera/index.html +++ b/tags/camera/index.html @@ -1,5 +1,5 @@ Camera - Pi4J -
\ No newline at end of file diff --git a/tags/crowpi/index.html b/tags/crowpi/index.html index 0eb0cbebd..ef01e8fd9 100644 --- a/tags/crowpi/index.html +++ b/tags/crowpi/index.html @@ -1,5 +1,5 @@ CrowPi - Pi4J -
\ No newline at end of file diff --git a/tags/dac8552/index.html b/tags/dac8552/index.html index b0c2e093d..4c40c135b 100644 --- a/tags/dac8552/index.html +++ b/tags/dac8552/index.html @@ -1,5 +1,5 @@ DAC8552 - Pi4J -
\ No newline at end of file diff --git a/tags/dht22/index.html b/tags/dht22/index.html index ddac9ad0e..32be425c2 100644 --- a/tags/dht22/index.html +++ b/tags/dht22/index.html @@ -1,5 +1,5 @@ DHT22 - Pi4J -
\ No newline at end of file diff --git a/tags/digital-input/index.html b/tags/digital-input/index.html index 0b939b5dc..dd17ad1eb 100644 --- a/tags/digital-input/index.html +++ b/tags/digital-input/index.html @@ -1,5 +1,5 @@ Digital Input - Pi4J -
\ No newline at end of file diff --git a/tags/digital-output/index.html b/tags/digital-output/index.html index 268e89744..dbd0d2852 100644 --- a/tags/digital-output/index.html +++ b/tags/digital-output/index.html @@ -1,5 +1,5 @@ Digital Output - Pi4J -
\ No newline at end of file diff --git a/tags/fatjar/index.html b/tags/fatjar/index.html index d243b5a9c..cd3350c27 100644 --- a/tags/fatjar/index.html +++ b/tags/fatjar/index.html @@ -1,5 +1,5 @@ FatJAR - Pi4J -
\ No newline at end of file diff --git a/tags/gpiod/index.html b/tags/gpiod/index.html index dc845eb61..4a45a24a2 100644 --- a/tags/gpiod/index.html +++ b/tags/gpiod/index.html @@ -1,5 +1,5 @@ GpioD - Pi4J -
\ No newline at end of file diff --git a/tags/gradle/index.html b/tags/gradle/index.html index 0d3cfc58a..cbe1b5cb3 100644 --- a/tags/gradle/index.html +++ b/tags/gradle/index.html @@ -1,5 +1,5 @@ Gradle - Pi4J -
\ No newline at end of file diff --git a/tags/htu21d/index.html b/tags/htu21d/index.html index 3594d1e13..22200c933 100644 --- a/tags/htu21d/index.html +++ b/tags/htu21d/index.html @@ -1,5 +1,5 @@ HTU21D - Pi4J -
\ No newline at end of file diff --git a/tags/i2c/index.html b/tags/i2c/index.html index 31111b75e..5df01472b 100644 --- a/tags/i2c/index.html +++ b/tags/i2c/index.html @@ -1,5 +1,5 @@ I2C - Pi4J -
\ No newline at end of file diff --git a/tags/index.html b/tags/index.html index def06d8e0..2f325de90 100644 --- a/tags/index.html +++ b/tags/index.html @@ -1,5 +1,5 @@ Tags - Pi4J -
\ No newline at end of file diff --git a/tags/intellij-idea/index.html b/tags/intellij-idea/index.html index c7d7785d6..006cde3ff 100644 --- a/tags/intellij-idea/index.html +++ b/tags/intellij-idea/index.html @@ -1,5 +1,5 @@ IntelliJ IDEA - Pi4J -
\ No newline at end of file diff --git a/tags/interview/index.html b/tags/interview/index.html index 6b620ed89..896ae8d8a 100644 --- a/tags/interview/index.html +++ b/tags/interview/index.html @@ -1,5 +1,5 @@ Interview - Pi4J -
\ No newline at end of file diff --git a/tags/is31fl3731/index.html b/tags/is31fl3731/index.html index 1a8bd3163..b6a5fc2e2 100644 --- a/tags/is31fl3731/index.html +++ b/tags/is31fl3731/index.html @@ -1,5 +1,5 @@ IS31FL3731 - Pi4J -
\ No newline at end of file diff --git a/tags/javac/index.html b/tags/javac/index.html index aac509e69..63dde1057 100644 --- a/tags/javac/index.html +++ b/tags/javac/index.html @@ -1,5 +1,5 @@ Javac - Pi4J -
\ No newline at end of file diff --git a/tags/javafx/index.html b/tags/javafx/index.html index 4e327968a..6e43a5c97 100644 --- a/tags/javafx/index.html +++ b/tags/javafx/index.html @@ -1,5 +1,5 @@ JavaFX - Pi4J -
\ No newline at end of file diff --git a/tags/jbang/index.html b/tags/jbang/index.html index 1b5f0f2bd..7017838ae 100644 --- a/tags/jbang/index.html +++ b/tags/jbang/index.html @@ -1,5 +1,5 @@ JBang - Pi4J -
\ No newline at end of file diff --git a/tags/joystick-analog/index.html b/tags/joystick-analog/index.html index 330a9c47d..98b6aeef3 100644 --- a/tags/joystick-analog/index.html +++ b/tags/joystick-analog/index.html @@ -1,5 +1,5 @@ Joystick Analog - Pi4J -
\ No newline at end of file diff --git a/tags/joystick/index.html b/tags/joystick/index.html index 7f4233415..de6619b2e 100644 --- a/tags/joystick/index.html +++ b/tags/joystick/index.html @@ -1,5 +1,5 @@ Joystick - Pi4J -
\ No newline at end of file diff --git a/tags/lcd-display/index.html b/tags/lcd-display/index.html index 7a4a1faab..390b71009 100644 --- a/tags/lcd-display/index.html +++ b/tags/lcd-display/index.html @@ -1,5 +1,5 @@ LCD Display - Pi4J -
\ No newline at end of file diff --git a/tags/led-button/index.html b/tags/led-button/index.html index d1951960d..cbeb1718b 100644 --- a/tags/led-button/index.html +++ b/tags/led-button/index.html @@ -1,5 +1,5 @@ LED Button - Pi4J -
\ No newline at end of file diff --git a/tags/led-matrix/index.html b/tags/led-matrix/index.html index e987cdf8c..9e12e08cd 100644 --- a/tags/led-matrix/index.html +++ b/tags/led-matrix/index.html @@ -1,5 +1,5 @@ LED Matrix - Pi4J -
\ No newline at end of file diff --git a/tags/led-strip/index.html b/tags/led-strip/index.html index 948161735..17fd3b125 100644 --- a/tags/led-strip/index.html +++ b/tags/led-strip/index.html @@ -1,5 +1,5 @@ LED Strip - Pi4J -
\ No newline at end of file diff --git a/tags/led/index.html b/tags/led/index.html index 6d475dcce..0365e97a5 100644 --- a/tags/led/index.html +++ b/tags/led/index.html @@ -1,5 +1,5 @@ LED - Pi4J -
\ No newline at end of file diff --git a/tags/linuxfs/index.html b/tags/linuxfs/index.html index 411339fbb..cb62d2433 100644 --- a/tags/linuxfs/index.html +++ b/tags/linuxfs/index.html @@ -1,5 +1,5 @@ LinuxFS - Pi4J -
\ No newline at end of file diff --git a/tags/maven/index.html b/tags/maven/index.html index 36c4631a3..c59ffc0aa 100644 --- a/tags/maven/index.html +++ b/tags/maven/index.html @@ -1,5 +1,5 @@ Maven - Pi4J -
\ No newline at end of file diff --git a/tags/max7219/index.html b/tags/max7219/index.html index 2eb513702..695060f7f 100644 --- a/tags/max7219/index.html +++ b/tags/max7219/index.html @@ -1,5 +1,5 @@ MAX7219 - Pi4J -
\ No newline at end of file diff --git a/tags/mcp23008/index.html b/tags/mcp23008/index.html index c5d9d4bfa..fceab758b 100644 --- a/tags/mcp23008/index.html +++ b/tags/mcp23008/index.html @@ -1,5 +1,5 @@ MCP23008 - Pi4J -
\ No newline at end of file diff --git a/tags/mcp23017/index.html b/tags/mcp23017/index.html index b8dd236ff..b818ae3b6 100644 --- a/tags/mcp23017/index.html +++ b/tags/mcp23017/index.html @@ -1,5 +1,5 @@ MCP23017 - Pi4J -
\ No newline at end of file diff --git a/tags/mcp3008/index.html b/tags/mcp3008/index.html index ade12d600..b29f65a4a 100644 --- a/tags/mcp3008/index.html +++ b/tags/mcp3008/index.html @@ -1,5 +1,5 @@ MCP3008 - Pi4J -
\ No newline at end of file diff --git a/tags/mcp4725/index.html b/tags/mcp4725/index.html index 2fd9d4c7f..e3e235e8f 100644 --- a/tags/mcp4725/index.html +++ b/tags/mcp4725/index.html @@ -1,5 +1,5 @@ MCP4725 - Pi4J -
\ No newline at end of file diff --git a/tags/pcf8575/index.html b/tags/pcf8575/index.html index 3201dab23..42e08c80f 100644 --- a/tags/pcf8575/index.html +++ b/tags/pcf8575/index.html @@ -1,5 +1,5 @@ PCF8575 - Pi4J -
\ No newline at end of file diff --git a/tags/pcf8591/index.html b/tags/pcf8591/index.html index bdcb50a85..1a44eba68 100644 --- a/tags/pcf8591/index.html +++ b/tags/pcf8591/index.html @@ -1,5 +1,5 @@ PCF8591 - Pi4J -
\ No newline at end of file diff --git a/tags/pi4j-os/index.html b/tags/pi4j-os/index.html index 4d27b677a..1002df822 100644 --- a/tags/pi4j-os/index.html +++ b/tags/pi4j-os/index.html @@ -1,5 +1,5 @@ Pi4J OS - Pi4J -
\ No newline at end of file diff --git a/tags/pi4j/index.html b/tags/pi4j/index.html index d985a1b55..16eaf1e49 100644 --- a/tags/pi4j/index.html +++ b/tags/pi4j/index.html @@ -1,5 +1,5 @@ Pi4J - Pi4J -
\ No newline at end of file diff --git a/tags/pigpio/index.html b/tags/pigpio/index.html index a4d2ea804..1c4de47d0 100644 --- a/tags/pigpio/index.html +++ b/tags/pigpio/index.html @@ -1,5 +1,5 @@ PiGpio - Pi4J -
\ No newline at end of file diff --git a/tags/pixelblaze/index.html b/tags/pixelblaze/index.html index c11322cec..a14e76a41 100644 --- a/tags/pixelblaze/index.html +++ b/tags/pixelblaze/index.html @@ -1,5 +1,5 @@ Pixelblaze - Pi4J -
\ No newline at end of file diff --git a/tags/potentiometer/index.html b/tags/potentiometer/index.html index 9d6b558ac..bf775ae06 100644 --- a/tags/potentiometer/index.html +++ b/tags/potentiometer/index.html @@ -1,5 +1,5 @@ Potentiometer - Pi4J -
\ No newline at end of file diff --git a/tags/prototype/index.html b/tags/prototype/index.html index 407b9bc89..0f9ac61aa 100644 --- a/tags/prototype/index.html +++ b/tags/prototype/index.html @@ -1,5 +1,5 @@ Prototype - Pi4J -
\ No newline at end of file diff --git a/tags/pwm/index.html b/tags/pwm/index.html index fa803f351..3f996a947 100644 --- a/tags/pwm/index.html +++ b/tags/pwm/index.html @@ -1,5 +1,5 @@ PWM - Pi4J -
\ No newline at end of file diff --git a/tags/serial/index.html b/tags/serial/index.html index baf27aef6..365479ba2 100644 --- a/tags/serial/index.html +++ b/tags/serial/index.html @@ -1,5 +1,5 @@ Serial - Pi4J -
\ No newline at end of file diff --git a/tags/servo-motor/index.html b/tags/servo-motor/index.html index 871cfb0bc..7eefbe7e1 100644 --- a/tags/servo-motor/index.html +++ b/tags/servo-motor/index.html @@ -1,5 +1,5 @@ Servo Motor - Pi4J -
\ No newline at end of file diff --git a/tags/signed/index.html b/tags/signed/index.html index ce1f5dbea..2ad11be34 100644 --- a/tags/signed/index.html +++ b/tags/signed/index.html @@ -1,5 +1,5 @@ Signed - Pi4J -
\ No newline at end of file diff --git a/tags/simple-button/index.html b/tags/simple-button/index.html index aac63335d..08167938e 100644 --- a/tags/simple-button/index.html +++ b/tags/simple-button/index.html @@ -1,5 +1,5 @@ Simple Button - Pi4J -
\ No newline at end of file diff --git a/tags/simple-led/index.html b/tags/simple-led/index.html index 9a66de857..b76051041 100644 --- a/tags/simple-led/index.html +++ b/tags/simple-led/index.html @@ -1,5 +1,5 @@ Simple LED - Pi4J -
\ No newline at end of file diff --git a/tags/sn74hc595/index.html b/tags/sn74hc595/index.html index 7faefb0f9..e4794ba0b 100644 --- a/tags/sn74hc595/index.html +++ b/tags/sn74hc595/index.html @@ -1,5 +1,5 @@ SN74HC595 - Pi4J -
\ No newline at end of file diff --git a/tags/spi/index.html b/tags/spi/index.html index eeb633284..ab0b08d75 100644 --- a/tags/spi/index.html +++ b/tags/spi/index.html @@ -1,5 +1,5 @@ SPI - Pi4J -
\ No newline at end of file diff --git a/tags/tca9548/index.html b/tags/tca9548/index.html index 5a2ac3fc6..efbf48c99 100644 --- a/tags/tca9548/index.html +++ b/tags/tca9548/index.html @@ -1,5 +1,5 @@ TCA9548 - Pi4J -
\ No newline at end of file diff --git a/tags/unsigned/index.html b/tags/unsigned/index.html index 9cdc26042..93faf82ec 100644 --- a/tags/unsigned/index.html +++ b/tags/unsigned/index.html @@ -1,5 +1,5 @@ Unsigned - Pi4J -
\ No newline at end of file diff --git a/tags/visual-studio-code/index.html b/tags/visual-studio-code/index.html index 1d81f6dcd..40d7a404a 100644 --- a/tags/visual-studio-code/index.html +++ b/tags/visual-studio-code/index.html @@ -1,5 +1,5 @@ Visual Studio Code - Pi4J -
\ No newline at end of file diff --git a/tags/vl53l0x/index.html b/tags/vl53l0x/index.html index 420031335..cb55f171b 100644 --- a/tags/vl53l0x/index.html +++ b/tags/vl53l0x/index.html @@ -1,5 +1,5 @@ VL53L0X - Pi4J -
\ No newline at end of file