SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Vlsi es-lab-manual
Vlsi es-lab-manualVlsi es-lab-manual
Vlsi es-lab-manualtwinkleratna
 
Wireless Temperature Measurement with LabVIEW and Spartan3E
Wireless Temperature Measurement with LabVIEW and Spartan3EWireless Temperature Measurement with LabVIEW and Spartan3E
Wireless Temperature Measurement with LabVIEW and Spartan3EVincent Claes
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218CAVEDU Education
 
Embedded system lab work
Embedded system lab workEmbedded system lab work
Embedded system lab workJIGAR MAKHIJA
 
Micrcontroller iv sem lab manual
Micrcontroller iv sem lab manualMicrcontroller iv sem lab manual
Micrcontroller iv sem lab manualRohiniHM2
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017 Stefano Sanna
 
Building your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiBuilding your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiJeff Prestes
 
Introduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntroduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntelligentManufacturingInstitute
 
Dsd lab Practical File
Dsd lab Practical FileDsd lab Practical File
Dsd lab Practical FileSoumya Behera
 
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...David Fowler
 
Programming with PIC microcontroller
Programming with PIC microcontroller Programming with PIC microcontroller
Programming with PIC microcontroller Raghav Shetty
 
Part-1 : Mastering microcontroller with embedded driver development
Part-1 : Mastering microcontroller with embedded driver development Part-1 : Mastering microcontroller with embedded driver development
Part-1 : Mastering microcontroller with embedded driver development FastBit Embedded Brain Academy
 
Intel galileo gen 2
Intel galileo gen 2Intel galileo gen 2
Intel galileo gen 2srknec
 
Experiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesExperiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesRicardo Castro
 
VHDL Practical Exam Guide
VHDL Practical Exam GuideVHDL Practical Exam Guide
VHDL Practical Exam GuideEslam Mohammed
 
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
Device Abstraction in OSGi Based Embedded Systems - Dimitar ValtchevDevice Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchevmfrancis
 

Was ist angesagt? (20)

Vlsi es-lab-manual
Vlsi es-lab-manualVlsi es-lab-manual
Vlsi es-lab-manual
 
MG3130 gesture recognition kit
MG3130 gesture recognition kitMG3130 gesture recognition kit
MG3130 gesture recognition kit
 
Wireless Temperature Measurement with LabVIEW and Spartan3E
Wireless Temperature Measurement with LabVIEW and Spartan3EWireless Temperature Measurement with LabVIEW and Spartan3E
Wireless Temperature Measurement with LabVIEW and Spartan3E
 
[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218[5]投影片 futurewad樹莓派研習會 141218
[5]投影片 futurewad樹莓派研習會 141218
 
Embedded system lab work
Embedded system lab workEmbedded system lab work
Embedded system lab work
 
Intel galileo
Intel galileoIntel galileo
Intel galileo
 
Micrcontroller iv sem lab manual
Micrcontroller iv sem lab manualMicrcontroller iv sem lab manual
Micrcontroller iv sem lab manual
 
AT89C52 Data sheet
AT89C52 Data sheetAT89C52 Data sheet
AT89C52 Data sheet
 
Android Things Linux Day 2017
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017
 
Building your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry PiBuilding your own RC Car with Raspberry Pi
Building your own RC Car with Raspberry Pi
 
Introduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objectsIntroduction to the rockwell automation library of process objects
Introduction to the rockwell automation library of process objects
 
Dsd lab Practical File
Dsd lab Practical FileDsd lab Practical File
Dsd lab Practical File
 
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
 
Programming with PIC microcontroller
Programming with PIC microcontroller Programming with PIC microcontroller
Programming with PIC microcontroller
 
Part-1 : Mastering microcontroller with embedded driver development
Part-1 : Mastering microcontroller with embedded driver development Part-1 : Mastering microcontroller with embedded driver development
Part-1 : Mastering microcontroller with embedded driver development
 
Intel galileo gen 2
Intel galileo gen 2Intel galileo gen 2
Intel galileo gen 2
 
Tae technologies powers up with reliable control system
Tae technologies powers up with reliable control systemTae technologies powers up with reliable control system
Tae technologies powers up with reliable control system
 
Experiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gatesExperiment write-vhdl-code-for-realize-all-logic-gates
Experiment write-vhdl-code-for-realize-all-logic-gates
 
VHDL Practical Exam Guide
VHDL Practical Exam GuideVHDL Practical Exam Guide
VHDL Practical Exam Guide
 
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
Device Abstraction in OSGi Based Embedded Systems - Dimitar ValtchevDevice Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
Device Abstraction in OSGi Based Embedded Systems - Dimitar Valtchev
 

Ähnlich wie RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)

Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”GlobalLogic Ukraine
 
Building the Internet of Things with Raspberry Pi
Building the Internet of Things with Raspberry PiBuilding the Internet of Things with Raspberry Pi
Building the Internet of Things with Raspberry PiNeil Broers
 
Raspberry Pi GPIO Tutorial - Make Your Own Game Console
Raspberry Pi GPIO Tutorial - Make Your Own Game ConsoleRaspberry Pi GPIO Tutorial - Make Your Own Game Console
Raspberry Pi GPIO Tutorial - Make Your Own Game ConsoleRICELEEIO
 
Scottish Ruby Conference 2010 Arduino, Ruby RAD
Scottish Ruby Conference 2010 Arduino, Ruby RADScottish Ruby Conference 2010 Arduino, Ruby RAD
Scottish Ruby Conference 2010 Arduino, Ruby RADlostcaggy
 
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...Anne Nicolas
 
1032 practical linux system administration
1032 practical linux system administration1032 practical linux system administration
1032 practical linux system administrationNoel Ng
 
Introduction to Arduino Microcontroller
Introduction to Arduino MicrocontrollerIntroduction to Arduino Microcontroller
Introduction to Arduino MicrocontrollerMujahid Hussain
 
Internet of Things With PHP
Internet of Things With PHPInternet of Things With PHP
Internet of Things With PHPAdam Englander
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Tom Paulus
 
Exploring Raspberry Pi
Exploring Raspberry PiExploring Raspberry Pi
Exploring Raspberry PiLentin Joseph
 
Build a Java and Raspberry Pi weather station
Build a Java and Raspberry Pi weather station Build a Java and Raspberry Pi weather station
Build a Java and Raspberry Pi weather station Marco Pirruccio
 
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)Mr.Nukoon Phimsen
 
Introducing the Arduino
Introducing the ArduinoIntroducing the Arduino
Introducing the ArduinoCharles A B Jr
 
Raspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentRaspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentCorley S.r.l.
 
Arduino for Beginners
Arduino for BeginnersArduino for Beginners
Arduino for BeginnersSarwan Singh
 
Introduction to Arduino and Circuits
Introduction to Arduino and CircuitsIntroduction to Arduino and Circuits
Introduction to Arduino and CircuitsJason Griffey
 

Ähnlich wie RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014) (20)

Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
Java Webinar #9: “Raspberry Pi Platform for Java Programmers”
 
Building the Internet of Things with Raspberry Pi
Building the Internet of Things with Raspberry PiBuilding the Internet of Things with Raspberry Pi
Building the Internet of Things with Raspberry Pi
 
Raspberry pi and pi4j
Raspberry pi and pi4jRaspberry pi and pi4j
Raspberry pi and pi4j
 
Raspberry Pi GPIO Tutorial - Make Your Own Game Console
Raspberry Pi GPIO Tutorial - Make Your Own Game ConsoleRaspberry Pi GPIO Tutorial - Make Your Own Game Console
Raspberry Pi GPIO Tutorial - Make Your Own Game Console
 
Scottish Ruby Conference 2010 Arduino, Ruby RAD
Scottish Ruby Conference 2010 Arduino, Ruby RADScottish Ruby Conference 2010 Arduino, Ruby RAD
Scottish Ruby Conference 2010 Arduino, Ruby RAD
 
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...
Kernel Recipes 2018 - New GPIO interface for linux user space - Bartosz Golas...
 
1032 practical linux system administration
1032 practical linux system administration1032 practical linux system administration
1032 practical linux system administration
 
PPT+.pdf
PPT+.pdfPPT+.pdf
PPT+.pdf
 
Introduction to Arduino Microcontroller
Introduction to Arduino MicrocontrollerIntroduction to Arduino Microcontroller
Introduction to Arduino Microcontroller
 
Internet of Things With PHP
Internet of Things With PHPInternet of Things With PHP
Internet of Things With PHP
 
Scratch pcduino
Scratch pcduinoScratch pcduino
Scratch pcduino
 
Switch & LED using TMS320C6745 DSP
Switch & LED using TMS320C6745 DSPSwitch & LED using TMS320C6745 DSP
Switch & LED using TMS320C6745 DSP
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013
 
Exploring Raspberry Pi
Exploring Raspberry PiExploring Raspberry Pi
Exploring Raspberry Pi
 
Build a Java and Raspberry Pi weather station
Build a Java and Raspberry Pi weather station Build a Java and Raspberry Pi weather station
Build a Java and Raspberry Pi weather station
 
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)
 
Introducing the Arduino
Introducing the ArduinoIntroducing the Arduino
Introducing the Arduino
 
Raspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application DevelopmentRaspberry Pi - HW/SW Application Development
Raspberry Pi - HW/SW Application Development
 
Arduino for Beginners
Arduino for BeginnersArduino for Beginners
Arduino for Beginners
 
Introduction to Arduino and Circuits
Introduction to Arduino and CircuitsIntroduction to Arduino and Circuits
Introduction to Arduino and Circuits
 

Kürzlich hochgeladen

Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Kürzlich hochgeladen (20)

Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

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