SlideShare a Scribd company logo
Raspberry Pi with Java 8 + Pi4J 
Robert Savage 
Software Architect, MTS 
Harman International 
#DV14 #pi4j @savageautomate
What is Pi4J? 
Pi4J is an open-source project providing a library for Java 
programmers to interact with the low-level I/O capabilities 
on the Raspberry Pi platform. 
www.pi4j.com 
• Open Source Project 
• Low Level I/O Library 
• Object-Oriented API 
• Event Based 
• Java & C (JNI + Native) 
#DV14 #pi4j @savageautomate
Pi4J Supported I/O 
Digital Interfaces 
• GPIO 
(General Purpose Input/Output) 
Data Interfaces 
• UART, SERIAL 
(Universal Asynchronous Receiver/Transmitter) 
• SPI 
(Serial Peripheral Interface) 
• I2C 
(Inter-Integrated Circuit) 
Analog Interfaces* 
#DV14 #pi4j @savageautomate
GPIO 
• Input or Output 
• Digital States 
• HIGH = +3.3 VDC 
• LOW = 0 VDC 
• RPi Models 
• A  B = ~21 GPIO 
• B+ = 28 GPIO 
• Compute Module = 46 GPIO 
#DV14 #pi4j @savageautomate
Pi4J GPIO Pin Addressing 
Visit pi4.com for a detailed pin addressing diagram! 
#DV14 #pi4j @savageautomate
GPIO Outputs 
• Control Things 
(ON  OFF) 
#DV14 #pi4j @savageautomate
GPIO Output Circuit 
#DV14 #pi4j @savageautomate
GPIO Output Example 
// 
create 
GPIO 
controller 
final 
GpioController 
gpio 
= 
GpioFactory.getInstance(); 
// 
create 
GPIO 
output 
pin 
final 
GpioPinDigitalOutput 
output 
= 
gpio.provisionDigitalOutputPin( 
RaspiPin.GPIO_12, 
PinState.LOW); 
// 
control 
GPIO 
output 
pin 
output.high(); 
output.low(); 
output.toggle(); 
// 
invert 
current 
state 
output.pulse(1000); 
// 
set 
state 
for 
a 
limited 
duration 
#DV14 #pi4j @savageautomate
GPIO Output Circuit 
Active-High Relay Board 
12 VDC  
Strobe 
Light 
12 VDC 
Illuminated  
Switch 
12 VDC 
Power Source 
#DV14 #pi4j @savageautomate
GPIO Output Demo 
• Sample Code 
• Live Demo 
#DV14 #pi4j @savageautomate
GPIO Inputs 
• Monitor Things 
• ON  OFF 
• Open  Close 
#DV14 #pi4j @savageautomate
GPIO Input Circuit 
#DV14 #pi4j @savageautomate
GPIO Input Reference 
• GPIO inputs require a “reference” voltage. 
• Without a reference, a GPIO pin can “float” 
• The Raspberry Pi includes internal PULL-UP and 
PULL-DOWN resistor settings that can be configured 
via Pi4J. 
#DV14 #pi4j @savageautomate
GPIO Input Reference 
• PULL-DOWN 
Resistance provides a reference (bias) to  
GROUND (0 VDC). If your circuit expects to  
provide +3.3VDC to signal the GPIO pin HIGH,  
then you need a PULL-DOWN reference.  
• PULL-UP 
Resistance provides a reference (bias) to  
+3.3 VDC. If your circuit expects to provide  
GROUND to signal the GPIO pin LOW, then  
you need a PULL-UP reference. 
#DV14 #pi4j @savageautomate
GPIO Input Reference 
Alternatively, you can build the PULL-UP or PULL-DOWN 
reference in the hardware circuit. The circuit below  
demonstrates a PULL-UP resistor at R1. 
This circuit signals the GPIO 
input pin to LOW when the 
switch closes the circuit and a 
path to GROUND is complete. 
PULL-UP 
RESISTOR 
#DV14 #pi4j @savageautomate
GPIO Input Example 
// 
create 
GPIO 
controller 
final 
GpioController 
gpio 
= 
GpioFactory.getInstance(); 
// 
create 
a 
GPIO 
input 
pin 
final 
GpioPinDigitalInput 
input 
= 
gpio.provisionDigitalInputPin( 
RaspiPin.GPIO_02, 
PinPullResistance.PULL_DOWN); 
#DV14 #pi4j @savageautomate
GPIO Input Listener Example 
// 
create 
event 
listener 
for 
GPIO 
input 
pin 
input.addListener((GpioPinListenerDigital) 
Java 8 
Lambda 
(GpioPinDigitalStateChangeEvent 
event) 
-­‐ 
{ 
// 
set 
output 
state 
to 
match 
the 
input 
state 
output.setState(event.getState()); 
}); 
#DV14 #pi4j @savageautomate
GPIO Input Demo 
• Sample Code 
• Live Demo 
#DV14 #pi4j @savageautomate
Pi4J Component API 
• The component APIs provides an abstraction layer from the 
hardware I/O layer. 
• This allows hardware design/circuitry to change with *less* impact 
to your implementation code. 
• For example, a RELAY could be controlled from GPIO, RS232, SPI, or 
I2C. You program defines the RELAY impl up front based on the 
hardware interface, but the rest of your program logic works against the 
RELAY component interface and not the direct hardware /communication 
IO interfaces. 
#DV14 #pi4j @savageautomate
Component Interfaces 
• Keypad 
• Light / LED 
• Dimmable Light 
• LCD 
• Power Controller 
• Relay 
• Momentary Switch 
• Toggle Switch 
• Analog Sensor 
• Distance Sensor 
• Motion Sensor 
• Temperature Sensor 
#DV14 #pi4j @savageautomate
GPIO Components Example 
// 
create 
LED 
component 
final 
Light 
light 
= 
new 
GpioLightComponment(output); 
// 
usage 
example 
light.on(); 
(or) 
light.off(); 
// 
create 
momentary 
switch 
component 
final 
MomentarySwitch 
ms 
= 
new 
GpioMomentarySwitchComponment( 
input, 
PinState.LOW, 
// 
“OFF” 
pin 
state 
PinState.HIGH); 
// 
“ON” 
pin 
state 
#DV14 #pi4j @savageautomate
Component Demo 
• Sample Code 
• Live Demo 
#DV14 #pi4j @savageautomate
UART / Serial / RS-232 
• The Raspberry Pi supports on on-board UART for 
serial communication. 
• Pi4J supports basic serial communication. 
• To use RS232 serial communication a level-shifter is 
required to convert between the TTL voltage levels 
(+3.3 VDC) and those required for RS232 
communication. 
#DV14 #pi4j @savageautomate
RS-232 Level Shifter 
#DV14 #pi4j @savageautomate
USB to RS-232 Adapter 
In addition to the on-board UART, you can also use a USB to 
RS232 adapter connected to the Raspberry Pi to provide 
RS232 serial communication. 
#DV14 #pi4j @savageautomate
UART / RS-232 Example 
// 
create 
an 
instance 
of 
the 
serial 
communications 
class 
final 
Serial 
serial 
= 
SerialFactory.createInstance(); 
// 
open 
the 
default 
serial 
port 
provided 
on 
the 
P1 
header 
// 
(this 
is 
where 
our 
LED 
reader 
is 
connected) 
serial.open(Serial.DEFAULT_COM_PORT, 
2400); 
// 
send 
Hello 
World 
message 
to 
sign 
serial.writeln(ID01PACLHello 
World! 
-­‐-­‐ 
); 
serial.writeln(ID01RPA); 
#DV14 #pi4j @savageautomate
UART / RS-232 Listener Example 
// 
create 
and 
register 
the 
serial 
data 
listener 
serial.addListener((SerialDataListener) 
Java 8 
Lambda 
(SerialDataEvent 
event) 
-­‐ 
{ 
// 
print 
out 
the 
data 
received 
to 
the 
console 
System.out.println(event.getData()); 
}); 
#DV14 #pi4j @savageautomate
UART / RS-232 Demo 
• Sample Code 
• Live Demo 
#DV14 #pi4j @savageautomate
Putting It All Together 
Lets create a real-world demo using a Raspberry 
Pi, Java, Pi4J, GPIO Inputs  Outputs, and RS232 
(Serial) devices to do something useful. 
#DV14 #pi4j @savageautomate
Demo Project Goal 
• Create a sophisticated model rocket launching 
platform. 
#DV14 #pi4j @savageautomate
Demo Project Requirements 
• Implement a safety key 
switch to arm the rocket 
and protect from  
accidental launch ignition. 
• Implement a launch 
activation button to  
initiate a launch sequence. 
#DV14 #pi4j @savageautomate
Demo Project Requirements 
• Implement an audible safety  
alarm to alert spectators of 
launch ready conditions. 
• Implement a visible alert 
device to notify spectators 
of launch ready conditions. 
#DV14 #pi4j @savageautomate
Demo Project Requirements 
• Implement an abort button 
to abort the launch sequence. 
• Implement a safety IR beam 
detector to abort launch if a 
person approaches the launch 
pad. 
#DV14 #pi4j @savageautomate
Demo Project Requirements 
• Implement an LED message board to show 
spectators the countdown and phases of the  
launch. 
• Implement a countdown timer for the launch 
sequence. 
#DV14 #pi4j @savageautomate
Demo Project Requirements 
• Implement an on-screen console/dashboard 
#DV14 #pi4j @savageautomate
Demo 
Project 
Wiring
Demo Project 
• Sample Code 
• Live Demo 
#DV14 #pi4j @savageautomate
Sides  source code available now at http://www.savagehomeautomation.com/devoxx

More Related Content

What's hot (20)

PDF
Vlsi es-lab-manual
twinkleratna
 
PPTX
MG3130 gesture recognition kit
Pantech ProLabs India Pvt Ltd
 
PDF
Wireless Temperature Measurement with LabVIEW and Spartan3E
Vincent Claes
 
PPTX
[5]投影片 futurewad樹莓派研習會 141218
CAVEDU Education
 
PDF
Embedded system lab work
JIGAR MAKHIJA
 
PDF
Intel galileo
Sofian Hadiwijaya
 
PDF
Micrcontroller iv sem lab manual
RohiniHM2
 
PDF
AT89C52 Data sheet
Microtech Solutions
 
PDF
Android Things Linux Day 2017
Stefano Sanna
 
PPTX
Building your own RC Car with Raspberry Pi
Jeff Prestes
 
PPTX
Introduction to the rockwell automation library of process objects
IntelligentManufacturingInstitute
 
PDF
Dsd lab Practical File
Soumya Behera
 
PDF
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
David Fowler
 
PDF
Programming with PIC microcontroller
Raghav Shetty
 
PPTX
Part-1 : Mastering microcontroller with embedded driver development
FastBit Embedded Brain Academy
 
PPTX
Intel galileo gen 2
srknec
 
PPTX
Tae technologies powers up with reliable control system
IntelligentManufacturingInstitute
 
PDF
Experiment write-vhdl-code-for-realize-all-logic-gates
Ricardo Castro
 
PDF
VHDL Practical Exam Guide
Eslam Mohammed
 
PDF
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
mfrancis
 
Vlsi es-lab-manual
twinkleratna
 
MG3130 gesture recognition kit
Pantech ProLabs India Pvt Ltd
 
Wireless Temperature Measurement with LabVIEW and Spartan3E
Vincent Claes
 
[5]投影片 futurewad樹莓派研習會 141218
CAVEDU Education
 
Embedded system lab work
JIGAR MAKHIJA
 
Intel galileo
Sofian Hadiwijaya
 
Micrcontroller iv sem lab manual
RohiniHM2
 
AT89C52 Data sheet
Microtech Solutions
 
Android Things Linux Day 2017
Stefano Sanna
 
Building your own RC Car with Raspberry Pi
Jeff Prestes
 
Introduction to the rockwell automation library of process objects
IntelligentManufacturingInstitute
 
Dsd lab Practical File
Soumya Behera
 
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
David Fowler
 
Programming with PIC microcontroller
Raghav Shetty
 
Part-1 : Mastering microcontroller with embedded driver development
FastBit Embedded Brain Academy
 
Intel galileo gen 2
srknec
 
Tae technologies powers up with reliable control system
IntelligentManufacturingInstitute
 
Experiment write-vhdl-code-for-realize-all-logic-gates
Ricardo Castro
 
VHDL Practical Exam Guide
Eslam Mohammed
 
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
mfrancis
 

Similar to RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014) (20)

PPTX
Raspberry pi and pi4j
Narendran Solai Sridharan
 
PPTX
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
GlobalLogic Ukraine
 
PPTX
IoT from java perspective
Dmytro Panin
 
PDF
Raspberry Pi - best friend for all your GPIO needs
Dobrica Pavlinušić
 
PPT
RaspberryPI PPT WITH ALL THE DETAILS OF PROGRAMMING
Asif Iqbal
 
PDF
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
Mr.Nukoon Phimsen
 
PDF
Ins and Outs of GPIO Programming
ICS
 
PDF
Hardware interfacing basics using AVR
Mohamed Abdallah
 
PPTX
ScratchGPIO, Raspberry Pi & BerryClip
David Dryden
 
PDF
4. GPIO Access
Mayank Joneja
 
PPTX
Custard pi 7 user information
Seggy Segaran
 
PPTX
Raspberry pi led blink
vishal choudhary
 
PPTX
Got Python I/O: IoT Develoment in Python via GPIO
Adam Englander
 
PPTX
How to make your Money Machine with Internet of Things
Jeff Prestes
 
PDF
lesson2 - Nodemcu course - NodeMCU dev Board
Elaf A.Saeed
 
DOCX
HOME AUTOMATION USING ARDUINO
Eklavya Sharma
 
PDF
Raspberry Pi GPIO Tutorial - Make Your Own Game Console
RICELEEIO
 
PDF
Embedded Systems: Lecture 9: The Pi Control ARM
Ahmed El-Arabawy
 
PDF
Android Things in action
Stefano Sanna
 
PPTX
M.Tech Internet of Things Unit - III.pptx
AvinashAvuthu2
 
Raspberry pi and pi4j
Narendran Solai Sridharan
 
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
GlobalLogic Ukraine
 
IoT from java perspective
Dmytro Panin
 
Raspberry Pi - best friend for all your GPIO needs
Dobrica Pavlinušić
 
RaspberryPI PPT WITH ALL THE DETAILS OF PROGRAMMING
Asif Iqbal
 
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
Mr.Nukoon Phimsen
 
Ins and Outs of GPIO Programming
ICS
 
Hardware interfacing basics using AVR
Mohamed Abdallah
 
ScratchGPIO, Raspberry Pi & BerryClip
David Dryden
 
4. GPIO Access
Mayank Joneja
 
Custard pi 7 user information
Seggy Segaran
 
Raspberry pi led blink
vishal choudhary
 
Got Python I/O: IoT Develoment in Python via GPIO
Adam Englander
 
How to make your Money Machine with Internet of Things
Jeff Prestes
 
lesson2 - Nodemcu course - NodeMCU dev Board
Elaf A.Saeed
 
HOME AUTOMATION USING ARDUINO
Eklavya Sharma
 
Raspberry Pi GPIO Tutorial - Make Your Own Game Console
RICELEEIO
 
Embedded Systems: Lecture 9: The Pi Control ARM
Ahmed El-Arabawy
 
Android Things in action
Stefano Sanna
 
M.Tech Internet of Things Unit - III.pptx
AvinashAvuthu2
 
Ad

Recently uploaded (20)

PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
How Cloud Computing is Reinventing Financial Services
Isla Pandora
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PPTX
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PDF
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
How Cloud Computing is Reinventing Financial Services
Isla Pandora
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
Human Resources Information System (HRIS)
Amity University, Patna
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Transforming Mining & Engineering Operations with Odoo ERP | Streamline Proje...
SatishKumar2651
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Online Queue Management System for Public Service Offices in Nepal [Focused i...
Rishab Acharya
 
Ad

RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)

  • 1. Raspberry Pi with Java 8 + Pi4J Robert Savage Software Architect, MTS Harman International #DV14 #pi4j @savageautomate
  • 2. What is Pi4J? Pi4J is an open-source project providing a library for Java programmers to interact with the low-level I/O capabilities on the Raspberry Pi platform. www.pi4j.com • Open Source Project • Low Level I/O Library • Object-Oriented API • Event Based • Java & C (JNI + Native) #DV14 #pi4j @savageautomate
  • 3. Pi4J Supported I/O Digital Interfaces • GPIO (General Purpose Input/Output) Data Interfaces • UART, SERIAL (Universal Asynchronous Receiver/Transmitter) • SPI (Serial Peripheral Interface) • I2C (Inter-Integrated Circuit) Analog Interfaces* #DV14 #pi4j @savageautomate
  • 4. GPIO • Input or Output • Digital States • HIGH = +3.3 VDC • LOW = 0 VDC • RPi Models • A B = ~21 GPIO • B+ = 28 GPIO • Compute Module = 46 GPIO #DV14 #pi4j @savageautomate
  • 5. Pi4J GPIO Pin Addressing Visit pi4.com for a detailed pin addressing diagram! #DV14 #pi4j @savageautomate
  • 6. GPIO Outputs • Control Things (ON OFF) #DV14 #pi4j @savageautomate
  • 7. GPIO Output Circuit #DV14 #pi4j @savageautomate
  • 8. GPIO Output Example // create GPIO controller final GpioController gpio = GpioFactory.getInstance(); // create GPIO output pin final GpioPinDigitalOutput output = gpio.provisionDigitalOutputPin( RaspiPin.GPIO_12, PinState.LOW); // control GPIO output pin output.high(); output.low(); output.toggle(); // invert current state output.pulse(1000); // set state for a limited duration #DV14 #pi4j @savageautomate
  • 9. GPIO Output Circuit Active-High Relay Board 12 VDC Strobe Light 12 VDC Illuminated Switch 12 VDC Power Source #DV14 #pi4j @savageautomate
  • 10. GPIO Output Demo • Sample Code • Live Demo #DV14 #pi4j @savageautomate
  • 11. GPIO Inputs • Monitor Things • ON OFF • Open Close #DV14 #pi4j @savageautomate
  • 12. GPIO Input Circuit #DV14 #pi4j @savageautomate
  • 13. GPIO Input Reference • GPIO inputs require a “reference” voltage. • Without a reference, a GPIO pin can “float” • The Raspberry Pi includes internal PULL-UP and PULL-DOWN resistor settings that can be configured via Pi4J. #DV14 #pi4j @savageautomate
  • 14. GPIO Input Reference • PULL-DOWN Resistance provides a reference (bias) to GROUND (0 VDC). If your circuit expects to provide +3.3VDC to signal the GPIO pin HIGH, then you need a PULL-DOWN reference. • PULL-UP Resistance provides a reference (bias) to +3.3 VDC. If your circuit expects to provide GROUND to signal the GPIO pin LOW, then you need a PULL-UP reference. #DV14 #pi4j @savageautomate
  • 15. GPIO Input Reference Alternatively, you can build the PULL-UP or PULL-DOWN reference in the hardware circuit. The circuit below demonstrates a PULL-UP resistor at R1. This circuit signals the GPIO input pin to LOW when the switch closes the circuit and a path to GROUND is complete. PULL-UP RESISTOR #DV14 #pi4j @savageautomate
  • 16. GPIO Input Example // create GPIO controller final GpioController gpio = GpioFactory.getInstance(); // create a GPIO input pin final GpioPinDigitalInput input = gpio.provisionDigitalInputPin( RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN); #DV14 #pi4j @savageautomate
  • 17. GPIO Input Listener Example // create event listener for GPIO input pin input.addListener((GpioPinListenerDigital) Java 8 Lambda (GpioPinDigitalStateChangeEvent event) -­‐ { // set output state to match the input state output.setState(event.getState()); }); #DV14 #pi4j @savageautomate
  • 18. GPIO Input Demo • Sample Code • Live Demo #DV14 #pi4j @savageautomate
  • 19. Pi4J Component API • The component APIs provides an abstraction layer from the hardware I/O layer. • This allows hardware design/circuitry to change with *less* impact to your implementation code. • For example, a RELAY could be controlled from GPIO, RS232, SPI, or I2C. You program defines the RELAY impl up front based on the hardware interface, but the rest of your program logic works against the RELAY component interface and not the direct hardware /communication IO interfaces. #DV14 #pi4j @savageautomate
  • 20. Component Interfaces • Keypad • Light / LED • Dimmable Light • LCD • Power Controller • Relay • Momentary Switch • Toggle Switch • Analog Sensor • Distance Sensor • Motion Sensor • Temperature Sensor #DV14 #pi4j @savageautomate
  • 21. GPIO Components Example // create LED component final Light light = new GpioLightComponment(output); // usage example light.on(); (or) light.off(); // create momentary switch component final MomentarySwitch ms = new GpioMomentarySwitchComponment( input, PinState.LOW, // “OFF” pin state PinState.HIGH); // “ON” pin state #DV14 #pi4j @savageautomate
  • 22. Component Demo • Sample Code • Live Demo #DV14 #pi4j @savageautomate
  • 23. UART / Serial / RS-232 • The Raspberry Pi supports on on-board UART for serial communication. • Pi4J supports basic serial communication. • To use RS232 serial communication a level-shifter is required to convert between the TTL voltage levels (+3.3 VDC) and those required for RS232 communication. #DV14 #pi4j @savageautomate
  • 24. RS-232 Level Shifter #DV14 #pi4j @savageautomate
  • 25. USB to RS-232 Adapter In addition to the on-board UART, you can also use a USB to RS232 adapter connected to the Raspberry Pi to provide RS232 serial communication. #DV14 #pi4j @savageautomate
  • 26. UART / RS-232 Example // create an instance of the serial communications class final Serial serial = SerialFactory.createInstance(); // open the default serial port provided on the P1 header // (this is where our LED reader is connected) serial.open(Serial.DEFAULT_COM_PORT, 2400); // send Hello World message to sign serial.writeln(ID01PACLHello World! -­‐-­‐ ); serial.writeln(ID01RPA); #DV14 #pi4j @savageautomate
  • 27. UART / RS-232 Listener Example // create and register the serial data listener serial.addListener((SerialDataListener) Java 8 Lambda (SerialDataEvent event) -­‐ { // print out the data received to the console System.out.println(event.getData()); }); #DV14 #pi4j @savageautomate
  • 28. UART / RS-232 Demo • Sample Code • Live Demo #DV14 #pi4j @savageautomate
  • 29. Putting It All Together Lets create a real-world demo using a Raspberry Pi, Java, Pi4J, GPIO Inputs Outputs, and RS232 (Serial) devices to do something useful. #DV14 #pi4j @savageautomate
  • 30. Demo Project Goal • Create a sophisticated model rocket launching platform. #DV14 #pi4j @savageautomate
  • 31. Demo Project Requirements • Implement a safety key switch to arm the rocket and protect from accidental launch ignition. • Implement a launch activation button to initiate a launch sequence. #DV14 #pi4j @savageautomate
  • 32. Demo Project Requirements • Implement an audible safety alarm to alert spectators of launch ready conditions. • Implement a visible alert device to notify spectators of launch ready conditions. #DV14 #pi4j @savageautomate
  • 33. Demo Project Requirements • Implement an abort button to abort the launch sequence. • Implement a safety IR beam detector to abort launch if a person approaches the launch pad. #DV14 #pi4j @savageautomate
  • 34. Demo Project Requirements • Implement an LED message board to show spectators the countdown and phases of the launch. • Implement a countdown timer for the launch sequence. #DV14 #pi4j @savageautomate
  • 35. Demo Project Requirements • Implement an on-screen console/dashboard #DV14 #pi4j @savageautomate
  • 37. Demo Project • Sample Code • Live Demo #DV14 #pi4j @savageautomate
  • 38. Sides source code available now at http://www.savagehomeautomation.com/devoxx