<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace V5 Site Server v5.13.594-SNAPSHOT-1 (http://www.squarespace.com) on Wed, 16 Sep 2026 15:36:16 GMT--><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/"><rss:channel rdf:about="http://www.savagehomeautomation.com/projects/"><rss:title>Articles - Pi4J</rss:title><rss:link>http://www.savagehomeautomation.com/projects/</rss:link><rss:description>Do-It-Yourself Home Automation Projects</rss:description><dc:language>en-US</dc:language><dc:date>2026-09-16T15:36:16Z</dc:date><admin:generatorAgent rdf:resource="http://www.squarespace.com/">Squarespace V5 Site Server v5.13.594-SNAPSHOT-1 (http://www.squarespace.com)</admin:generatorAgent><rss:items><rdf:Seq><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-14-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-13-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-12-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-11-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-now-supports-non-privileged-access-no-more-rootsudo.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-with-java-programming-the-internet-of-things-io.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-10-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-pibrella.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/thank-you-devoxx.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-devoxx-2014.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/teaching-kids-to-program-things-with-java-and-the-raspberry.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-featured-in-java-magazine.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-oracle-java-se-7-jdkjvm-now-pre-installed-on-ra.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/thank-you-javaone.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/javaone-interview-with-robert-savage-on-nighthacking-tour.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/javaone-lets-get-physical-io-programming-with-java-on-the-ra.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-pi4j-version-005-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-programming-pi-face-with-java-pi4j.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-java-gpio-frequency-benchmarks.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-stepper-motor-control-breakout-board.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-version-004-released.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-sunrise-sunset-timer-for-christmas-lights.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/raspberry-pi-build-a-gpio-testing-board.html"/><rdf:li rdf:resource="http://www.savagehomeautomation.com/projects/pi4j-connecting-java-to-the-raspberry-pi.html"/></rdf:Seq></rss:items></rss:channel><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-14-released.html"><rss:title>Pi4J Version 1.4 - RELEASED!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-14-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2021-03-03T17:57:05Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi Utilities java pi pi4j raspberry raspi wiringpi</dc:subject><content:encoded><![CDATA[Pi4J v1.4 has been released. This is the final version for the Pi4J v1.x codebase and supports Java JDK/JRE 11.  All development effort for the Pi4J project will focus on the newer Pi4J v2.x codebase moving forward. 

Additional details are available at: 
 - http://www.savagehomeautomation.com/pi4j-1.4
 - https://www.pi4j.com/1.4
 - https://github.com/Pi4J/pi4j/releases/tag/release%2F1.4]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-13-released.html"><rss:title>Pi4J Version 1.3 - RELEASED!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-13-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2021-01-28T17:34:00Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi Utilities java pi pi4j raspberry raspi wiringpi</dc:subject><content:encoded><![CDATA[Pi4J V1.3 has been released. This is the final version for Java 8 with full support for all current Raspberry Pi boards and following fixes:

 - Added support for Raspberry Pi 4B
 - Added support for Raspberry Pi 400
 - Added support for Raspberry Pi Compute Module 4
 - Various improvements and bug fixes listed here: https://github.com/Pi4J/pi4j/milestone/10?closed=1

Additional details are available at: 
 - https://www.pi4j.com/1.3
 - https://github.com/Pi4J/pi4j/releases/tag/release%2F1.3]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-12-released.html"><rss:title>Pi4J Version 1.2 - RELEASED!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-12-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2019-02-28T19:34:17Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java pi pi4j raspberry raspi wiringpi</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><span><img src="http://pi4j.com/images/logos/pi4j-header.png?__SQUARESPACE_CACHEVERSION=1469644411083" alt="" /></span></span><span class="full-image-float-right ssNonEditable"><img style="width: 175px;" src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/available.jpg?__SQUARESPACE_CACHEVERSION=1429706937667" alt="" /></span></p>
<h3>Pi4J Version 1.2 Release</h3>
<p><strong><span style="font-size: 110%;">Version 1.2 of the <a href="http://pi4j.com/" target="_blank">Pi4J Library</a> is finally released!</span></strong></p>
<p>The long overdue release of version 1.2 is finally here! &nbsp;It's been over two year since the 1.1 release and there have been about 136 new commits to the 1.2 release which include many enhancements, optimizations, bug fixes and additional platform support for <span>Odroid, BananaPi, BananaPro, and OrangePi</span>&nbsp;boards as well as adding support for the new RaspberryPi models introduced during this time..</p>
<p>Pi4J Version 1.2 is also available in Maven Central. &nbsp;<em>&lt;&lt;<a class="offsite-link-inline" href="https://search.maven.org/search?q=g:com.pi4j" target="_blank">View in Maven Central</a>&gt;&gt;</em></p>
<h3><strong>Notable Version 1.2 Changes:</strong></h3>
<ul>
<li><strong>Removed support for statically compiled wiringPi library (for Raspberry Pi)</strong>.</li>
<li>Added support for Raspberry Pi 3B+</li>
<li>Added support for Raspberry Pi Zero W</li>
<li>Added support for Raspberry Pi Compute Module 3</li>
<li>Updated to Java 8 (enhancement #203)</li>
<li>Updated build dependencies/plugins to latest versions.</li>
<li>Removed unsupported sub-projects (pi4j-temp, pi4j-service).</li>
<li>Added SPI mode support for Odroid, BananaPi, BananaPro, and OrangePi platforms.</li>
<li>Added experimental support for OrangePi platform.</li>
<li>Added experimental support for Synovoip BPI (BananaPi) platform.</li>
<li>Added experimental support for NanoPi platform.</li>
<li>Fixed #438: ArrayIndex Out of Bounds when pin address address is &gt;= 100</li>
<li>Fixed #278: wiringPiSetup*: You must only call this once per program run.</li>
<li>Fixed #294; added java runtime and compiler check to pi4j helper script</li>
<li>Fixed #291; W1Device name contains "\n"</li>
<li>Fixed #275; LCDExample.java doesn't work in release</li>
<li>Fixed #276; RaspiBcmPin pins not firing pin state change events</li>
<li>Fixed #198; Problems with data from HMC5883L class</li>
<li>Fixed #351; Pi4J packages excluded in OSGI manifest ImportPackage declaration</li>
<li>Fixed #360; Serial.setBreak(TRUE|FALSE) is printing debug lines to stdout</li>
<li>Fixed #355; ButtonBase Executor Service should be closed on GpioController.shutdown()</li>
<li>Fixed #356; SystemInfoProvider CPU temperature was divided by 1000 on OrangePi</li>
<li>Fixed #272; SerialDataEvent should not fire when event.length() == 0</li>
<li>Fixed #361; SerialFactory isShutdown() state not getting updated on new instance</li>
</ul>
<h3><strong>Special Thanks:</strong></h3>
<p>Thank You to all the Pi4J users, contributors, testers, and tinkerers for all your help and support to continue making Pi4J the&nbsp;<em>go-to</em>&nbsp;library for Java access to the Raspberry Pi's hardware interfaces.&nbsp;</p>
<blockquote>
<h3><strong>Pi4J Related Links:</strong>&nbsp;</h3>
<ul>
<li><a class="offsite-link-inline" href="http://pi4j.com/" target="_blank">Pi4J Website</a></li>
<li><a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/" target="_blank">Pi4J Github Repository</a></li>
<li><a class="offsite-link-inline" href="https://groups.google.com/forum/#!forum/pi4j" target="_blank">Pi4J Google Groups/Forum</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/apidocs/index.html" target="_blank">Pi4J JavaDoc</a></li>
</ul>
</blockquote>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-11-released.html"><rss:title>Pi4J Version 1.1 - RELEASED!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-11-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2016-07-27T18:30:00Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java pi pi4j raspberry raspi wiringpi</dc:subject><content:encoded><![CDATA[Pi4J Version 1.1 has been released.  See this article for more details.]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-now-supports-non-privileged-access-no-more-rootsudo.html"><rss:title>Pi4J Now Supports Non-Privileged Access (no more root/sudo)</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-now-supports-non-privileged-access-no-more-rootsudo.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2015-12-14T17:00:00Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi access java pi4j privilege raspberry raspi root sudo</dc:subject><content:encoded><![CDATA[The <strong><a class="offsite-link-inline" href="http://www.pi4j.com" target="_blank">Pi4J Project</a></strong> now supports non-privileged access to the basic GPIO input and output functions of the Raspberry Pi. &nbsp;What this means is that launching your Java application with "sudo" or running as a user account with "root" permissions is no longer required!]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-with-java-programming-the-internet-of-things-io.html"><rss:title>Raspberry Pi with Java: Programming the Internet of Things (IoT)</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-with-java-programming-the-internet-of-things-io.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2015-12-10T23:15:00Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi gpio i2c java pi4j raspberry serial spi uart</dc:subject><content:encoded><![CDATA[Book Review: Raspberry Pi with Java: Programming the Internet of Things (IoT)]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-10-released.html"><rss:title>Pi4J Version 1.0 - RELEASED!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-10-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2015-04-22T13:07:54Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java pi pi4j raspberry raspi wiringpi</dc:subject><content:encoded><![CDATA[Pi4J Version 1.0 has been released.  See this article for more details.]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-pibrella.html"><rss:title>Pi4J + Pibrella</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-pibrella.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2015-02-23T15:00:00Z</dc:date><dc:subject>Embedded Computing Java Pi4J Pimoroni Raspberry Pi Raspberry Pi pi pi4j pibrella raspberry raspi rpi</dc:subject><content:encoded><![CDATA[<p style="text-align: center;">&nbsp;<img style="text-align: center;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25979586-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1424701394426" alt="" /></p>
<p><span class="full-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fpibrella.jpg%3F__SQUARESPACE_CACHEVERSION%3D1424702005788',600,600);"><img style="width: 300px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25979592-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1424702036383" alt="" /></a></span><span class="thumbnail-caption" style="width: 300px;">(click to enlarge)</span></span>The&nbsp;<strong><a class="offsite-link-inline" href="http://pibrella.com/" target="_blank">Pibrella</a></strong>&nbsp;add-on board serves as a simple and easy platform to get started with and learn about inputs and outputs on your Raspberry Pi. &nbsp;</p>
<p><strong><a class="offsite-link-inline" href="http://pibrella.com/" target="_blank">Pibrella</a></strong> is an excellent development tool for both hobbyist and students to learn about programmatic interfacing with inputs and outputs to monitor and control things in the real world.&nbsp;</p>
<p>For beginners, three LED lights and a momentary button are provided directly on the board so you can get started playing with the input signals for the momentary button and output signals for controlling the LED lights without having to wire any circuits yourself. &nbsp;</p>
<p>One you are ready to sense (<em>inputs</em>) or control (<em>outputs</em>) other external devices you can use the 4 generic inputs and 4 generic outputs at the bottom of the Pibrella board via the 2 8-pin header connectors. &nbsp;(Note, <a href="http://www.amazon.com/exec/obidos/ASIN/B00NJ3SIVS/savagehomeaut-20" target="_blank">breadboard/prototyping jump wires</a> fit perfectly into these header blocks.)&nbsp;</p>
<blockquote>
<p style="text-align: center;"><strong><br />&lt;&lt;&lt;&nbsp;</strong><strong><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B00MHKAFCE/savagehomeaut-20" target="_blank">BUY PIBRELLA ON AMAZON</a>&nbsp;$22.99 with Prime Shipping &gt;&gt;&gt;</strong></p>
</blockquote>
<p>More details and instructions for getting started can be found at: <a class="offsite-link-inline" href="http://pibrella.com/" target="_blank">http://pibrella.com/</a></p>
<p>&nbsp;</p>
<h2>Pi4J + Pibrella</h2>
<p>The Pibrella documentation primarily includes information about programming the Pibrella using Python. &nbsp;However, we at Pi4J recognizing the Pibrella device as an excellent tool for beginners did not want to leave Java programmers out of the party. &nbsp;So, we have added native support for the Pibrella board directly into Pi4J. &nbsp;</p>
<h3>Sources</h3>
<p>The Pibrella devices interfaces can be found here:<br /><a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/tree/develop/pi4j-device/src/main/java/com/pi4j/device/pibrella" target="_blank">https://github.com/Pi4J/pi4j/tree/develop/pi4j-device/src/main/java/com/pi4j/device/pibrella</a></p>
<p>An example program demonstrating the usage of the Pibrella device interface can be found here:<br /><a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/blob/develop/pi4j-example/src/main/java/PiBrellaExample.java" target="_blank">https://github.com/Pi4J/pi4j/blob/develop/pi4j-example/src/main/java/PiBrellaExample.java</a>&nbsp;</p>
<h3>Example</h3>
<p>Below is a sample program to help you get started using the Pibrella board in your Java program.</p>
<p><script src="https://gist.github.com/savageautomate/d1606160d802896caf6b.js"></script></p>
<h3>Board Layout<br /><br /><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fpibrella-pcb-layout.gif%3F__SQUARESPACE_CACHEVERSION%3D1424701782423',300,616);"><img style="width: 600px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25979616-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1424703949976" alt="" /></a></span></span></h3>
<blockquote>
<p style="text-align: center;"><strong><br />&lt;&lt;&lt;&nbsp;</strong><strong><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B00MHKAFCE/savagehomeaut-20" target="_blank">BUY PIBRELLA ON AMAZON</a>&nbsp;$22.99 with Prime Shipping &gt;&gt;&gt;</strong></p>
</blockquote>
<div><strong><br /></strong></div>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/thank-you-devoxx.html"><rss:title>Thank You Devoxx!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/thank-you-devoxx.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2014-11-13T09:49:03Z</dc:date><dc:subject>Embedded Computing Home Automation Java JavaFX Pi4J Raspberry Pi Raspberry Pi devoxx embedded java javafx pi pi4j raspberry raspi</dc:subject><content:encoded><![CDATA[<p><a href="http://www.savagehomeautomation.com/devoxx">http://www.savagehomeautomation.com/devoxx</a></p>
<p>&nbsp;</p>
<blockquote class="twitter-tweet" lang="en">
<p>Thanks to all that attended yesterday's <a href="https://twitter.com/hashtag/Devoxx?src=hash">#Devoxx</a> "Let's Get Physical" talk on <a href="https://twitter.com/hashtag/Raspberry_Pi?src=hash">#Raspberry_Pi</a> &amp; <a href="https://twitter.com/hashtag/Pi4J?src=hash">#Pi4J</a> <a href="https://twitter.com/hashtag/java?src=hash">#java</a> <a href="https://twitter.com/hashtag/iot?src=hash">#iot</a> <a href="https://twitter.com/hashtag/raspi?src=hash">#raspi</a> <a href="http://t.co/3dyngd6jKY">pic.twitter.com/3dyngd6jKY</a></p>
&mdash; Robert Savage (@savageautomate) <a href="https://twitter.com/savageautomate/status/532831846787461120">November 13, 2014</a></blockquote>
<p><script async src="http://www.savagehomeautomation.com//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<hr />
<blockquote class="twitter-tweet" lang="en">
<p>Thanks to all that attended today's <a href="https://twitter.com/hashtag/Devoxx?src=hash">#Devoxx</a> talk on <a href="https://twitter.com/hashtag/Java?src=hash">#Java</a> 8 <a href="https://twitter.com/hashtag/Raspberry_Pi?src=hash">#Raspberry_Pi</a> &amp; <a href="https://twitter.com/hashtag/Pi4J?src=hash">#Pi4J</a> with <a href="https://twitter.com/steveonjava">@steveonjava</a> <a href="https://twitter.com/JavaFXpert">@JavaFXpert</a> &amp; me. <a href="http://t.co/mbz5dH11vW">pic.twitter.com/mbz5dH11vW</a></p>
&mdash; Robert Savage (@savageautomate) <a href="https://twitter.com/savageautomate/status/532232625134796800">November 11, 2014</a></blockquote>
<p><script async src="http://www.savagehomeautomation.com//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<hr />]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-devoxx-2014.html"><rss:title>Pi4J @ Devoxx 2014</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-devoxx-2014.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2014-11-10T22:31:08Z</dc:date><dc:subject>Embedded Computing Home Automation Java JavaFX Pi4J Raspberry Pi Raspberry Pi devoxx embedded java javafx pi pi4j raspberry raspi</dc:subject><content:encoded><![CDATA[<div></div>
<div>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/Screen%20Shot%202014-11-11%20at%2012.36.31%20AM.png?__SQUARESPACE_CACHEVERSION=1415663049512" alt="" /></span></span><span class="full-image-float-right ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/Devoxx%202014.jpg?__SQUARESPACE_CACHEVERSION=1415660754353" alt="" /></span></span></p>
<p>Come join the <strong>Pi4J</strong> talks at <strong>Devoxx Belgium 2014.</strong></p>
<p>Pi4J is featured in the following sessions:</p>
<blockquote>
<h3>Let's Get Physical: I/O Programming with Java on the Raspberry Pi using Pi4J</h3>
<p><span><strong>CONFERENCE SESSION<br />Wednesday at 14:00 - 15:00 @ ROOM 4</strong></span></p>
<ul>
<li>Robert Savage (@savageautomate) &nbsp;&nbsp;</li>
</ul>
<p><a class="offsite-link-inline" href="http://cfp.devoxx.be/2014/talk/JWA-8162/Let's_Get_Physical:_I%2FO_Programming_with_Java_on_the_Raspberry_Pi_using_Pi4J" target="_blank">http://cfp.devoxx.be/2014/talk/JWA-8162/Let's_Get_Physical:_I%2FO_Programming_with_Java_on_the_Raspberry_Pi_using_Pi4J<br /></a></p>
</blockquote>
<blockquote>
<h3>Raspberry Pi with Java 8</h3>
<p><span><strong>UNIVERSITY SESSION<br />Tuesday at 13:30 - 16:30 @ ROOM 9</strong></span></p>
<ul>
<li>Stephen Chin (@SteveOnJava)</li>
<li>James Weaver (@JavaFXpert)</li>
<li>Robert Savage (@savageautomate) &nbsp;&nbsp;</li>
</ul>
<p><a class="offsite-link-inline" href="http://cfp.devoxx.be/2014/talk/IWS-5192/Raspberry_Pi_with_Java_8" target="_blank">http://cfp.devoxx.be/2014/talk/IWS-5192/Raspberry_Pi_with_Java_8</a></p>
</blockquote>
</div>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/teaching-kids-to-program-things-with-java-and-the-raspberry.html"><rss:title>Teaching Kids to Program Things with Java and the Raspberry Pi</rss:title><rss:link>http://www.savagehomeautomation.com/projects/teaching-kids-to-program-things-with-java-and-the-raspberry.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2014-09-30T06:00:00Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi pi4j javaone java bluej gpio</dc:subject><content:encoded><![CDATA[<div><span class="full-image-block ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/bluej/Screen Shot 2014-09-30 at 12.07.50 AM.png?__SQUARESPACE_CACHEVERSION=1412053843742" alt="" /></span></span></div>
<div><span class="thumbnail-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-1.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412054128902',2718,4300);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495786-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412054132561" alt="" /></a></span></span>I just attended a talk at JavaOne (2014) titled "<a class="offsite-link-inline" href="https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=3174" target="_blank">Teaching Kids to Program Things with Java and the Raspberry Pi</a>" where I learned about the <a class="offsite-link-inline" href="http://www.bluej.org/" target="_blank">BlueJ</a> project created by the University of Kent and its efforts to integrate with Pi4J and the Raspberry Pi. &nbsp;</div>
<div></div>
<div><br />BlueJ is a lightweight Java IDE designed for beginners and includes all the basic functionality to get started programming including a code editor, compiling, executing and debugging capabilities. &nbsp;</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div>&nbsp;</div>
<div>The idea is to install and use the BlueJ IDE directly on the Raspberry Pi to create Java programs that can run on the Pi and control things using the GPIO (via the Pi4J libraries). &nbsp;Running the IDE directly on the Pi greatly simlpifies the learning curve to get started and reduces what would typically be a bunch of command line shell interation to simple clean user interfaces point and click activities. &nbsp;</div>
<div>&nbsp;</div>
<div></div>
<div></div>
<div><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-3.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412055358601',3456,4608);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495824-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412055358603" alt="" /></a></span></span>The talk was hosted by <strong>Ian Utting</strong> and <strong>Fabio Hedayioglu</strong> from the University of Kent and they provided a nice overview of the two leading development approaches using the Raspberry Pi and the challenges faced by the project to build the IDE targeted at the Raspberry Pi platform. &nbsp;It was a great talk and introduction to BlueJ on the RaspberryPi.</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>
<div><strong>Learn more about BlueJ on the Raspberry Pi here:</strong></div>
<div><a class="offsite-link-inline" href="http://www.bluej.org/raspberry-pi.html" target="_blank"><strong>http://www.bluej.org/raspberry-pi.html</strong></a></div>
<div></div>
<div></div>
<div></div>
</div>
<div>&nbsp;</div>
<div>Below are a few of the key slides from the presentation. (<em>Click image to enlarge</em>)</div>
<div>&nbsp;</div>
<div><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-4.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412055740637',2730,4294);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495831-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412055740639" alt="" /></a></span>&nbsp;</span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-5.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412055915117',2706,4155);"><img style="width: 315px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495833-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056468511" alt="" /></a></span></span><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-6.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056136343',2678,4182);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495840-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056136344" alt="" /></a></span></span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-7.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056231436',2672,4253);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495843-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056231437" alt="" /></a></span></span>&nbsp;</div>
<div><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-2.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056391415',2668,4239);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495817-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056394983" alt="" /></a></span></span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-8.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056559895',2728,4171);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495859-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056559896" alt="" /></a></span></span><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-9.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056915746',3127,4448);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495867-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056918605" alt="" /></a></span></span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-10.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412056967239',3456,4608);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495873-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412056967241" alt="" /></a></span></span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fbluej%2Fbluej-11.jpg%3F__SQUARESPACE_CACHEVERSION%3D1412057184906',2688,4174);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-25495899-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1412057184907" alt="" /></a></span></span>&nbsp;</div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-featured-in-java-magazine.html"><rss:title>Pi4J Featured in Java Magazine</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-featured-in-java-magazine.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2014-09-09T11:51:11Z</dc:date><dc:subject>Embedded Computing Java Java Magazine Pi4J article Pi4J Raspberry Pi</dc:subject><content:encoded><![CDATA[<p><span class="full-image-inline ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/javamagpi4j.jpg?__SQUARESPACE_CACHEVERSION=1410264096583" alt="" /></span></span></p>
<p>For anyone that may have missed it, check out this article in May/June issue of Java Magazine featuring me and the Pi4J project.<br /><a class="offsite-link-inline" href="http://www.oraclejavamagazine-digital.com/javamagazine_open/20140506/?pg=18&amp;pm=1&amp;u1=friend" target="_blank">http://www.oraclejavamagazine-digital.com/javamagazine_open/20140506/?pg=18&amp;pm=1&amp;u1=friend</a></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr style="background-color: #d2d2d2; height: 30px;">
<td><img class="navlogo" src="http://images-cdn.dashdigital.com/javamagazine_open/include/icons/navbar_logo.gif?lm=1406168955000" alt="www.oracle.com/javamagazine" height="28" align="left" /></td>
<td style="color: #666666; font-weight: bold; font-family: tahoma, sans-serif; font-size: 11px; line-height: 15px; padding-right: 5px;" align="right"><span id="top_right_text">Look inside &gt;</span></td>
</tr>
<tr style="background-color: #ffffff;">
<td style="padding: 10px 0px;" colspan="2" align="center"><a title="View Magazine" onclick="window.open('http://www.oraclejavamagazine-digital.com/javamagazine_open/20140506?pg=18','sharewidget','toolbar=no,menubar=no,resizable=yes,scrollbars=yes,left=0,top=0,width='+(screen.width-10)+',height='+(screen.height-10)+'');return false;" href="http://www.oraclejavamagazine-digital.com/javamagazine_open/20140506?pg=18" target="_blank"><img src="http://images-cdn.dashdigital.com/javamagazine_open/20140506/data/imgpages/smtn/0018_pyabco.gif?lm=1406168955000" border="0" alt="17" /></a></td>
</tr>
<tr style="background-color: #d2d2d2; height: 30px;">
<td style="color: #666666; font-weight: bold; font-family: tahoma, sans-serif; font-size: 11px; line-height: 15px;" colspan="2" align="center"><span id="bottom_text">PI4J PROJECT</span></td>
</tr>
</tbody>
</table>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-oracle-java-se-7-jdkjvm-now-pre-installed-on-ra.html"><rss:title>Raspberry Pi - Oracle Java SE 7 (JDK/JVM) Now Pre-Installed on Raspbian</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-oracle-java-se-7-jdkjvm-now-pre-installed-on-ra.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-10-02T04:04:36Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi java javaone jdk jre oracle pi raspberry</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/raspi-banner680.png?__SQUARESPACE_CACHEVERSION=1344881925351" alt="" /></span></span></p>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/images/JavaOne_clr.gif?__SQUARESPACE_CACHEVERSION=1380687133179" alt="" /></span></span></p>
<p><strong>My Raspberry Pi just got a whole lot *sweeter*.</strong></p>
<p>While attending JavaOne this year, Oracle announced that the Raspberry Pi foundation would soon start shipping the Oracle JDK/JVM (Java) baked into the Raspbian distribution.</p>
<p>Here was the official announcement on raspberrypi.org:<br /><a href="http://www.raspberrypi.org/archives/4920" target="_blank">http://www.raspberrypi.org/archives/4920</a></p>
<p>And a day later new images were posted for download that include Oracle Java SE fully "<em>baked in</em>".<br /><a href="http://www.raspberrypi.org/archives/4959">http://www.raspberrypi.org/archives/4959</a>&nbsp;</p>
<p>You can download the latest Raspian image that includes Oracle Java SE 7 here:<br /><a href="http://www.raspberrypi.org/downloads" target="_blank">http://www.raspberrypi.org/downloads</a>&nbsp;</p>
<p>Here is a slide (photo) from the JavaOne Community Keynote where this was announced.</p>
<p><span class="thumbnail-image-block ssNonEditable"><span><a href="http://instagram.com/p/eux4XDKEoR/" target="_blank"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/oracle-java-pi.jpg?__SQUARESPACE_CACHEVERSION=1380687011051" alt="" /></a></span><span class="thumbnail-caption" style="width: 612px;">Photo by @yarasenger</span></span></p>
<p>Its a real treat to flash and boot up a fresh Raspberry Pi (<em>Raspbian</em>) image and Java be there without requiring additional steps to install it.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/Screen Shot 2013-10-02 at 12.35.08 AM.png?__SQUARESPACE_CACHEVERSION=1380688605971" alt="" /></span></span></p>
<p><strong><br /></strong></p>
<blockquote>
<p><span style="font-size: 12px;"><strong>Java SE 8 - Developer Preview</strong><br /><br />If you prefer to install the JDK8 developer preview/early access version, please see this page:<br /><a href="http://www.savagehomeautomation.com/raspi-jdk8">Install Oracle Java SE8 (Milestone 8) Developer Preview (JDK)</a></span></p>
</blockquote>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/thank-you-javaone.html"><rss:title>Thank You JavaOne!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/thank-you-javaone.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-09-26T05:19:28Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi java javaone pi pi4j raspberry raspi</dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-right ssNonEditable"><img src="http://www.savagehomeautomation.com/storage/images/JavaOne_clr.gif?__SQUARESPACE_CACHEVERSION=1380173605216" alt="" /></span></p>
<h3>Thank You</h3>
<p>Thank You JavaOne attendees for joining my session today on I/O programming with Java using Pi4J on the Raspberry Pi. &nbsp;Thank You Oracle for accepting my talk and providing the opportunity to for me to spead the embedded/IOT message.</p>
<p>I do plan on posting additional in-depth articles to this blog that cover how I built the demo system and the access control solution. &nbsp;In the meantime, &nbsp;I have posted a couple of photos from the session as well as the slides and links to the source code below.</p>
<h3>Photos</h3>
<p><span class="full-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fjavaone-2013-one.jpg%3F__SQUARESPACE_CACHEVERSION%3D1380173141500',864,1296);"><img style="width: 320px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-23581885-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1380176320758" alt="" /></a></span></span><span class="full-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fjavaone-2013-two.jpg%3F__SQUARESPACE_CACHEVERSION%3D1380173215559',864,1296);"><img style="width: 320px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-23581888-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1380176328185" alt="" /></a></span></span></p>
<p><span class="full-image-block ssNonEditable"><span><img style="width: 680px;" src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/javaone-2013-post.png?__SQUARESPACE_CACHEVERSION=1380173282216" alt="" /></span></span></p>
<p><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fjavaone-2013-demo.jpg%3F__SQUARESPACE_CACHEVERSION%3D1380173499636',968,1374);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-23581901-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1380173499638" alt="" /></a></span></span></p>
<h3>Slides / Presentation</h3>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/26565782" width="660" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen> </iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Con7968 let's get physical - io programming using pi4 j" href="https://www.slideshare.net/savageautomate/con7968-lets-get-physical-io-programming-using-pi4-j" target="_blank">Con7968 let's get physical - io programming using pi4 j</a> </strong> from <strong><a href="http://www.slideshare.net/savageautomate" target="_blank">savageautomate</a></strong></div>
<h3>Source Code</h3>
<p>All of the source code examples used in the presentation can be found here on GitHub:<br /><a class="offsite-link-inline" href="https://github.com/savagehomeautomation/pi4j-javaone-demos" target="_blank">https://github.com/savagehomeautomation/pi4j-javaone-demos</a></p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/javaone-interview-with-robert-savage-on-nighthacking-tour.html"><rss:title>JavaOne Interview with Robert Savage on NightHacking Tour</rss:title><rss:link>http://www.savagehomeautomation.com/projects/javaone-interview-with-robert-savage-on-nighthacking-tour.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-09-13T16:23:13Z</dc:date><dc:subject>Java Pi4J Raspberry Pi Raspberry Pi java javaone pi raspberry raspi</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><span><a href="http://www.oracle.com/go/?&amp;Src=7328808&amp;Act=33&amp;pcode=WWMK11054239MPP004" target="_blank"><img src="http://www.savagehomeautomation.com/storage/images/j1_register.jpg?__SQUARESPACE_CACHEVERSION=1379089470082" alt="" /></a></span></span></p>
<p>Here is a recent interview with <a class="offsite-link-inline" href="http://steveonjava.com/" target="_blank">Steven Chin (steveonjava)</a> on the NightHacking Tour for my upcoming JavaOne <a href="http://www.savagehomeautomation.com/projects/javaone-lets-get-physical-io-programming-with-java-on-the-ra.html">session</a>.</p>
<blockquote>
<p><strong><br />Session</strong><span>:&nbsp;</span><a href="http://www.savagehomeautomation.com/projects/javaone-lets-get-physical-io-programming-with-java-on-the-ra.html" target="_blank">CON7968 - Let&rsquo;s Get Physical: I/O Programming with Java on the Raspberry Pi with Pi4J<br /></a><strong>When:&nbsp;</strong><a class="imageAddDisabled sessionScheduling">Wednesday, Sep 25, 11:30 AM - 12:30 PM<br /></a><strong>Where</strong><span>: Hotel Nikko - Monterey I/II</span></p>
</blockquote>
<p style="text-align: center;"><iframe width="660" height="403" src="http://www.ustream.tv/embed/recorded/38347877?ub=ff720a&amp;lc=ff720a&amp;oc=ffffff&amp;uc=ffffff&amp;v=3&amp;wmode=direct" scrolling="no" frameborder="0" style="border: 0px none transparent;">    </iframe> <br /><a style="padding: 2px 0px 4px; width: 400px; background: #ffffff; display: block; color: #000000; font-weight: normal; font-size: 10px; text-decoration: underline; text-align: center;" href="http://www.ustream.tv/" target="_blank">Video streaming by Ustream</a></p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/javaone-lets-get-physical-io-programming-with-java-on-the-ra.html"><rss:title>JavaOne - Let’s Get Physical: I/O Programming with Java on the Raspberry Pi with Pi4J [CON7968]</rss:title><rss:link>http://www.savagehomeautomation.com/projects/javaone-lets-get-physical-io-programming-with-java-on-the-ra.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-09-13T15:42:18Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi java javaone pi4j raspberry raspi</dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><a href="http://www.oracle.com/go/?&amp;Src=7328808&amp;Act=33&amp;pcode=WWMK11054239MPP004" target="_blank"><img src="http://www.savagehomeautomation.com/storage/images/im_speaking.jpg?__SQUARESPACE_CACHEVERSION=1379088853357" alt="" /></a></span></span><span class="full-image-block ssNonEditable"><span><a href="http://www.oracle.com/go/?&amp;Src=7328808&amp;Act=33&amp;pcode=WWMK11054239MPP004" target="_blank"><img src="http://www.savagehomeautomation.com/storage/images/JavaOne_clr.gif?__SQUARESPACE_CACHEVERSION=1379088843221" alt="" /></a></span></span><br />If you are attending <a class="offsite-link-inline" href="http://www.oracle.com/javaone/index.html" target="_blank">JavaOne</a> in San Francisco this year ... make sure to come check out my session on Pi4J and Raspberry Pi.</p>
<p>We will be reviewing into the fundamentals of programming with Pi4J and jumping into some real world demos of how you can use Pi4J and the Raspberry Pi platform to automate things in your life! &nbsp; &nbsp;</p>
<p>&nbsp;</p>
<blockquote>
<p><strong>Session</strong>: <a href="https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=7968" target="_blank">CON7968 - Let&rsquo;s Get Physical: I/O Programming with Java on the Raspberry Pi with Pi4J<br /></a><strong>When: </strong><a class="sessionScheduling imageAddDisabled">Wednesday, Sep 25, 11:30 AM - 12:30 PM<br /></a><strong>Where</strong>: Hotel Nikko - Monterey I/II</p>
</blockquote>
<p><strong>Abstract</strong>:</p>
<fieldset id="abstract" class="special">
<p>Oracle&rsquo;s JVM support on low-cost ARM devices opens a world of new possibilities for powerful Java applications running on this new class of embedded platforms. This affords Java programmers the opportunity to play a significant role in the Internet of Things revolution. However, one gap remains: I/O communication with hardware devices and sensors. The Pi4J project bridges this gap. Pi4J is an open source project that provides a rich set of Java libraries enabling Java programmers to participate in these hardware communication layers (GPIO, I2C, SPI, RS232) on the Raspberry Pi. Attend this session for an hour of fast-paced fun and informative demonstrations that will leave you inspired and motivated to &ldquo;get physical&rdquo; with Java and the Raspberry Pi.</p>
</fieldset>
<p>&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://www.oracle.com/go/?&amp;Src=7328808&amp;Act=33&amp;pcode=WWMK11054239MPP004" target="_blank"><img src="http://www.savagehomeautomation.com/storage/images/j1_register.jpg?__SQUARESPACE_CACHEVERSION=1379088893773" alt="" /></a></span></span></p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-pi4j-version-005-released.html"><rss:title>Raspberry Pi - Pi4J Version 0.0.5 Released!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-pi4j-version-005-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-03-19T14:00:00Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java pi4j</dc:subject><content:encoded><![CDATA[Pi4J Version 0.0.5 is now released and it has been a stable build for quite some time.  Users of previous versions are encouraged to upgrade to this latest build.  This release includes a number of bug fixes (see below), new features, and added support for add-on accessory boards and GPIO expander chips.  This version also introduces a component abstraction layer where interfaces are defined for components such as Relays, Lights, Switches, and LCD displays.]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-programming-pi-face-with-java-pi4j.html"><rss:title>Raspberry Pi - Programming Pi-Face with Java &amp; Pi4J</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-programming-pi-face-with-java-pi4j.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-02-25T13:25:30Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java pi pi-face pi4j piface raspberry raspi</dc:subject><content:encoded><![CDATA[<p>I just got my hands on a Pi-Face expansion board for my Raspberry Pi. &nbsp;I purchased mine direct from Newark and it arrived is less than a week. My first objective was to get this board integrated into the <a href="http://www.pi4j.com" target="_blank">Pi4J</a> project and fully working with Java on my Raspberry Pi. &nbsp;This article covers installing the Pi-Face board, setting up the SPI communication driver, and demonstrates programming the Pi-Face in Java. &nbsp;With the Pi-Face Java API interface now available in the Pi4J libraries (<em>in Pi4J version 0.0.5-SNAPSHOT and later</em>) this makes it a breeze to program and work with in your own Java program.</p>
<img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-22015128-thumbnail.jpg __SQUARESPACE_CACHEVERSION=1361749121306" alt="" />]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-java-gpio-frequency-benchmarks.html"><rss:title>Raspberry Pi - Java GPIO Frequency Benchmarks</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-java-gpio-frequency-benchmarks.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2013-01-09T14:30:00Z</dc:date><dc:subject>Embedded Computing Java JavaFX Pi4J Raspberry Pi Raspberry Pi benchmarks frequency gpio java jdk performance pi pi4j raspberry raspi</dc:subject><content:encoded><![CDATA[In a previous article we covered Java runtime benchmarks using various JVMs.  Typical benchmark testing runs a series of varied task-based tests that attempt a wide array of coverage.  While these benchmark tests are great for generalized comparisons, I was curious how fast Java programs could update/write to the GPIO pins.  So this article is a very coarse-grained comparison on a single data point ... frequency of GPIO state changes.

Click the title to see the full article.]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-stepper-motor-control-breakout-board.html"><rss:title>Raspberry Pi - Stepper Motor Control &amp; Breakout Board</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-stepper-motor-control-breakout-board.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2012-12-31T21:20:56Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi java motor pi pi4j raspberry raspi stepper</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/raspi-banner680.png?__SQUARESPACE_CACHEVERSION=1344867662099" alt="" /></span></p>
<h3>Overview</h3>
<div>
<div>Many of the previous Raspberry Pi projects I had been working on were based on fairly simple GPIO logic to turn things on and off. &nbsp;Today I wanted a little more of a challenge so I started working to control a stepper motor from my Raspberry Pi using Java. &nbsp;Fortunately I had previously obtained one of John Jay's Stepper Motor Breakout Board kits which includes all the necessary components (including the stepper motor) to get started. &nbsp;</div>
<div></div>
<div></div>
<div><br /><span style="font-size: 90%;">The kit includes:</span></div>
<div>
<ul>
<li><span style="font-size: 90%;">1 @ printed circuit board</span></li>
<li><span style="font-size: 90%;">1 @&nbsp;ULN2803 8 Channel Darlington Driver IC (<a class="offsite-link-inline" href="http://www.adafruit.com/blog/2012/08/23/new-product-uln2803-8-channel-darlington-driver-solenoidunipolar-stepper-uln2803a/" target="_blank">Adafruit</a>)</span></li>
<li><span style="font-size: 90%;">1 @ 18 pin DIP socket (<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0079SLPIW/savagehomeaut-20" target="_blank">Amazon</a>)</span></li>
<li><span style="font-size: 90%;">8 @ green LEDs</span></li>
<li><span style="font-size: 90%;">1 @ Jumper and Jumper header</span></li>
<li><span style="font-size: 90%;">1 @ resistor array/network</span></li>
<li><span style="font-size: 90%;">1 @ capacitor</span></li>
<li><span style="font-size: 90%;">1 @ 26 pin PCB mount female header&nbsp;(not pictured)</span></li>
<li><span style="font-size: 90%;">1 @ peel-and-stick on rubber bumper &nbsp;(not pictured)&nbsp;</span></li>
<li><span style="font-size: 90%;">1 @ 28BYJ-48 5 VDC stepper motor&nbsp;(<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B009ZB861K/savagehomeaut-20" target="_blank">Amazon</a> | <a class="offsite-link-inline" href="http://www.adafruit.com/products/858" target="_blank">Adafruit</a>)</span></li>
</ul>
</div>
<div></div>
<div>This kit is very easy to assemble and very reasonably priced. &nbsp;<br />It is available now on eBay. &lt;&lt;&nbsp;<a class="offsite-link-inline" href="http://www.ebay.com/itm/Raspberry-Pi-Stepper-breakout-board-with-stepper-motor-GPIO-/261147900179" target="_blank">Click here to see John Jay's eBay listings</a>&nbsp;&gt;&gt;&nbsp;</div>
<div>&nbsp;</div>
<div></div>
<div>
<h3>Assembly</h3>
</div>
<div></div>
<div>Please visit John's website for further instructions and photos on assembly:<br />&lt;&lt; <a class="offsite-link-inline" href="http://mypishop.com/Stepper.html" target="_blank">http://mypishop.com/Stepper.html</a>&nbsp;&gt;&gt;</div>
<div>&nbsp;</div>
<div></div>
<h3>Shopping List</h3>
<div>
<div>
<ul>
<li>1 @&nbsp;<a class="offsite-link-inline" href="http://www.raspberrypi.org/" target="_blank">Raspberry Pi</a>&nbsp; (<em><a href="http://www.savagehomeautomation.com/projects/raspberry-pi-shopping-list.html">see this page for more Raspberry Pi related supplies</a></em>)</li>
<li>1 @&nbsp;<a class="offsite-link-inline" href="http://www.ebay.com/itm/Raspberry-Pi-Stepper-breakout-board-with-stepper-motor-GPIO-/261147900179" target="_blank">John Jay's Stepper Motor Breakout Board (kit)</a>&nbsp;(<em>includes stepper motor</em>)</li>
</ul>
</div>
<h3>Logic</h3>
</div>
<p><span class="full-image-float-right ssNonEditable"><span><img style="width: 280px;" src="http://www.savagehomeautomation.com/storage/post-images/jj-stepper/figure1-stepper-motor.png?__SQUARESPACE_CACHEVERSION=1356982584656" alt="" /></span></span>The stepper motor is controlled by pulsing the GPIO pins from LOW to HIGH states in a sequence that causes the motor to spin. &nbsp;Each time a GPIO pin state is HIGH an electromagnet is engaged inside the stepper motor to cause a rotational force on the center rotor.&nbsp;With the proper sequence and timing you achieve motor rotation.&nbsp;</p>
<p>Here is a fantastic article with photos and illustrations to help learn more about stepper motors and stepping techniquest:<br /><a class="offsite-link-inline" href="http://www.lirtex.com/robotics/stepper-motor-controller-circuit/" target="_blank">http://www.lirtex.com/robotics/stepper-motor-controller-circuit/</a></p>
<h3>Photos</h3>
<p>Below are photos of the assembled board and attached stepper motor.</p>
<p><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-1.jpg%3F__SQUARESPACE_CACHEVERSION%3D1356936730877',1391,1281);"><img style="width: 166px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396647-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937860957" alt="" /></a></span><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-4.jpg%3F__SQUARESPACE_CACHEVERSION%3D1356937055289',856,1084);"><img style="width: 228px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396659-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937842817" alt="" /></a></span></p>
<p><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-7.jpg%3F__SQUARESPACE_CACHEVERSION%3D1356937770227',1000,1361);"><img style="width: 244px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396682-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937868147" alt="" /></a></span></p>
<p><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-5.jpg%3F__SQUARESPACE_CACHEVERSION%3D1356937241955',845,1030);"><img style="width: 250px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396663-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937491818" alt="" /></a></span></p>
<p><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-6.jpg%3F__SQUARESPACE_CACHEVERSION%3D1356937412801',721,1380);"><img style="width: 392px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396672-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937505191" alt="" /></a></span></p>
<h3>Stepper Motor Ports</h3>
<p>This breakout board includes two ports for controlling two separate stepper motors.</p>
<p style="text-align: left;"><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-3.png%3F__SQUARESPACE_CACHEVERSION%3D1356936123158',909,806);"><img style="width: 280px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396608-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356937983843" alt="" /></a></span></p>
<div></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<blockquote>
<p><em>You can purchase an additional stepper motor to use on the second port here:</em></p>
<p><span>28BYJ-48 5 VDC stepper motor&nbsp;(</span><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B009ZB861K/savagehomeaut-20" target="_blank">Amazon</a><span>&nbsp;|&nbsp;</span><a class="offsite-link-inline" href="http://www.adafruit.com/products/858" target="_blank">Adafruit</a><span>)</span>&nbsp;</p>
</blockquote>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>GPIO Wiring Diagram</h3>
<p>The two stepper motor controllers are mapped to GPIO pins on the Raspberry Pi's&nbsp;P1 header as depicted in the diagram below. &nbsp;The GPIO numbering in the diagrams below is based on the WiringPi &nbsp;/ Pi4J numbering scheme. &nbsp;See below for a mapping chart for other numbering schemes.&nbsp;</p>
<ul>
<li>GPIO Pins 0 to 3 are mapped to the X1 motor controller port (LEFT).</li>
<li>GPIO Pins 4 to 7 are mapped to the X2 motor controller port (RIGHT).</li>
</ul>
<p><span class="full-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2FJJStepperMotorBreakoutBoardPinNumbering.png%3F__SQUARESPACE_CACHEVERSION%3D1356933155577',929,1323);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396381-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356933158095" alt="" /></a></span></p>
<h3>GPIO Pin Cross-Reference Chart</h3>
<p>Below is a cross reference chart to better help define the GPIO pin numbers used under the various pin numbering schemes.</p>
<p style="text-align: center;"><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fjjstepper-pinmap.png%3F__SQUARESPACE_CACHEVERSION%3D1356933791511',243,730);"><img style="width: 550px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396419-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356933994345" alt="" /></a></span></p>
<div></div>
<h3>JP1 Jumper Information</h3>
<p>A jumper is provided on the board to supply 5 VDC to the stepper motors directly from the 5 VDC output from the Raspberry Pi. &nbsp;If you would prefer to provide 5 VDC from an external power supply, please remove the jumper from JP1 and connect your power source to JP1 pins 2 and 3. &nbsp;See the diagrams below.</p>
<p style="text-align: center;"><br /><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fjj-stepper%2Fstepper-board-jp1.png%3F__SQUARESPACE_CACHEVERSION%3D1356935188487',952,1528);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21396529-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1356935188488" alt="" /></a></span></p>
<p style="text-align: left;">Make sure that you place the jumper between&nbsp;pins 1 and 2. &nbsp;</p>
<p style="text-align: center;"><span class="full-image-block ssNonEditable"><img style="width: 400px;" src="http://www.savagehomeautomation.com/storage/post-images/jj-stepper/stepper-board-jp1-correct.png?__SQUARESPACE_CACHEVERSION=1356935575944" alt="" /></span></p>
<blockquote>
<p style="text-align: left;"><strong>ATTENTION !</strong></p>
<p style="text-align: left;">Never attach JP1 pins 1 and 3 together as this will cause a direct short on the 5 VDC power line from the Raspberry Pi. &nbsp;This would likely render the Pi defective. &nbsp;&nbsp;</p>
</blockquote>
<h3>Java Sample Program using Pi4J to Control Stepper Motor</h3>
<p>Below is a sample Java program for controlling the stepper motor. &nbsp;The <a class="offsite-link-inline" href="http://www.pi4j.com" target="_blank">Pi4J</a> project now includes a new stepper motor interface and component implementation for GPIO based stepper motors. &nbsp;This makes it really simple to control a stepper motor from Java. &nbsp;(Note that the stepper motor implementation is available in 0.0.5 and later versions of Pi4J.)</p>
<p>The source for this example is provided with the Pi4J installation package and can also be found on Github:</p>
<ul>
<li>&lt;&lt;&nbsp;<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/blob/develop/pi4j-example/src/main/java/StepperMotorGpioExample.java" target="_blank">Click here to view source on Github</a>&nbsp;&nbsp;&gt;&gt;</li>
</ul>
<p><iframe src="http://pastebin.com/embed_iframe.php?i=LRqWTbPq" style="border:1px solid black;width:660px; height:500px;"></iframe></p>
<h3>Final Thoughts</h3>
<p>This was my first time working with a stepper motor and having this kit certainly made it much easier to understand and get started. &nbsp;For me the timing was the trickiest thing to get right. &nbsp;Fortunately with a little trial and error I was able to get it working. &nbsp;Here is a quick video demonstrating the final working project.</p>
<p><iframe width="640" height="360" src="http://www.youtube-nocookie.com/embed/38w_PcPo8Tk" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Happy New Year!</strong></p>
<p>&nbsp;</p>
</div>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-version-004-released.html"><rss:title>Pi4J - Version 0.0.4 Released!</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-version-004-released.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2012-12-18T01:52:49Z</dc:date><dc:subject>Embedded Computing Pi4J Raspberry Pi Raspberry Pi pi4 raspberry raspi</dc:subject><content:encoded><![CDATA[<p style="text-align: left;"><span class="full-image-inline ssNonEditable"><a href="http://pi4j.com/" target="_blank"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/pi4j-header-small3.png?__SQUARESPACE_CACHEVERSION=1355799443185" alt="" /></a></span></p>
<p><span style="font-size: 110%;"><strong>Announcing the release of&nbsp;</strong><strong>Version 0.0.4 of the&nbsp;<strong><a href="http://pi4j.com/" target="_blank">Pi4J</a></strong>&nbsp;project!</strong></span></p>
<p>Version 0.0.4 is the first "official" release of the <a class="offsite-link-inline" href="http://www.pi4j.com" target="_blank">Pi4J</a> project. &nbsp;Development snapshot builds have been available since September but now an official release is available complete with an installer and a number of sample projects to help you get started. &nbsp; &nbsp;</p>
<blockquote>
<p><strong><span style="font-size: 90%;"><em>Project Summary</em></span></strong></p>
<p><span style="font-size: 90%;">This project is intended to provide a bridge between the native hardware and Java for full access to the Raspberry Pi in with a Java-friendly object-oriented approach. &nbsp;Pi4J provides a set of advanced features that make working with the Raspberry&nbsp;Pi an easy to implement and more convenient&nbsp;experience for Java developers. &nbsp;</span>&nbsp;</p>
<p style="text-align: right;">&gt;&gt;&nbsp;<a class="offsite-link-inline" style="font-size: 90%;" href="http://www.savagehomeautomation.com/projects/pi4j-connecting-java-to-the-raspberry-pi.html" target="_blank">View original project announcement.</a></p>
</blockquote>
<h3><strong>Pi4J Project Website</strong></h3>
<p>The Pi4J website content has been updated with instructions and examples for 0.0.4.</p>
<ul>
<li><a class="offsite-link-inline" href="http://pi4j.com/" target="_blank">http://www.pi4j.com</a></li>
</ul>
<h3><strong>Follow @Pi4J on Twitter</strong></h3>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/images/twitter-logo.jpg?__SQUARESPACE_CACHEVERSION=1355801298763" alt="" /></span></span>The Pi4J project now posts announcements on Twitter. &nbsp;<br />Follow us to get the latest Pi4J release notices and other Pi4J news.</p>
<p><a class="twitter-follow-button" href="https://twitter.com/pi4j">Follow @pi4j</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="http://www.savagehomeautomation.com//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>&nbsp;</p>
<h3><strong>Pi4J Google Groups - Forums</strong></h3>
<p><span class="full-image-float-right ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/images/google-groups-logo.jpg?__SQUARESPACE_CACHEVERSION=1355801672282" alt="" /></span></span>The Pi4J project has started a&nbsp;<a href="https://groups.google.com/forum/#!forum/pi4j" target="_blank">Pi4J Google Groups</a>&nbsp;forum for community discussions on Pi4J project development.</p>
<ul>
<li><a class="offsite-link-inline" href="https://groups.google.com/forum/#!forum/pi4j" target="_blank">https://groups.google.com/forum/#!forum/pi4j</a>&nbsp;&nbsp;</li>
</ul>
<h3>Raspberry Pi Java Forums</h3>
<p>For general questions and support try posting to the Java topic on the Raspberry Pi community forums:</p>
<ul>
<li><a class="offsite-link-inline" href="http://www.raspberrypi.org/phpBB3/viewforum.php?f=81&amp;sid=302db3998ba9402cef0957008683b269" target="_blank">Raspberry Pi &gt; Programming &gt; Java</a>&nbsp;</li>
</ul>
<h3>New Installation Package</h3>
<p>Version 0.0.4 introduces a new installer package that makes it easy to install the Pi4J libraries and examples on a Raspbian / Debian OS distribution. &nbsp;See the link below for instructions on downloading and installing Pi4J.</p>
<ul>
<li><a class="offsite-link-inline" href="http://pi4j.com/install.html" target="_blank">http://pi4j.com/install.html</a></li>
</ul>
<h3>Maven Central</h3>
<p>With the release of 0.0.4, the Pi4J project artifacts are now available on Maven Central:</p>
<ul>
<li><a class="offsite-link-inline" href="http://search.maven.org/#search|ga|1|pi4j" target="_blank">http://search.maven.org/#search|ga|1|pi4j</a></li>
</ul>
<h3>Release Notes - Version 0.0.4</h3>
<p>2012-12-16 :: 0.0.4</p>
<ul>
<li>Added support for building a Pi4J .deb installer package for Debian/Raspian Linux distribution. (BETA)</li>
<li>Modified NetworkInfo static methods to permit empty array return values when a network property cannot be obtained.<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/issues/3" target="_blank">https://github.com/Pi4J/pi4j/issues/3</a></li>
<li>Fixed issue in newer Raspberry Pi 512mb firmware where Pi4J was not compiled against latest wiringPi library and thus not detecting the hardware properly.&nbsp;<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/issues/3" target="_blank">https://github.com/Pi4J/pi4j/issues/3</a></li>
<li>Fixed defect where Pi4J library prevented consuming program from exiting properly.&nbsp;<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/issues/4" target="_blank">https://github.com/Pi4J/pi4j/issues/4</a>&nbsp;|&nbsp;<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/issues/6" target="_blank">https://github.com/Pi4J/pi4j/issues/6</a></li>
<li>Added support for MCP23008 GPIO Provider using I2C bus.</li>
<li>Added support for MCP23017 GPIO Provider using I2C bus.</li>
<li>Modified build script to support concurrent soft-float and hard-float native library builds</li>
<li>Modified build script to include pulling wiringPi sources and compiling when building native library</li>
<li>Added power controller device interface, base impl, and reference impl</li>
<li>Added GpioController.provisionXXXPin methods that allow name to be optional</li>
<li>Relocated project downloads location to google code site; github deprecated downloads.</li>
<li>Added Google Groups discussion forum to project docs.</li>
<li>Added getTag() and setTag() to GpioPin interface and impl.</li>
<li>Added TemperatureConversion utility.</li>
<li>Added optional blocking argument to GpioPin pulse method to support blocking pulse invocations</li>
</ul>
<p>&gt;&gt; Click here to see the full:&nbsp;<a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/blob/d77134c39c1f81df723771544f12dcd5b4e2ff42/README.md" target="_blank">Release Notes</a></p>
<h3><strong>Getting Started</strong><a name="Getting_Started"></a></h3>
<p>To get started using the Pi4J library, please see the&nbsp;<a class="offsite-link-inline" href="http://pi4j.com/usage.html" target="_blank">Usage</a>&nbsp;page and review each of the examples to explore the functionality provided by the Pi4j library.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-sunrise-sunset-timer-for-christmas-lights.html"><rss:title>Raspberry Pi - Sunrise / Sunset Timer for Christmas Lights</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-sunrise-sunset-timer-for-christmas-lights.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2012-12-05T07:00:00Z</dc:date><dc:subject>Christmas Embedded Computing Holiday Home Automation Pi4J Raspberry Pi Raspberry Pi pi power raspberry raspi</dc:subject><content:encoded><![CDATA[<div><span class="full-image-float-right ssNonEditable"><img style="width: 220px;" src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/christmas-lights.png?__SQUARESPACE_CACHEVERSION=1354604480357" alt="" /></span>
<h3>Overview</h3>
Turkey day (<em>Thanksgiving Day for those reading outside the US</em>) is over and according to decades of holiday tradition, it's time to hang the exterior Christmas lights on the house. &nbsp; In the past I have always used simple mechanical timers to automatically turn on and off the lights based on fixed times. &nbsp;This year, armed with my Raspberry Pi, I wanted to create a simple DIY Raspi Christmas Lighting Timer that would control the power to the Christmas lights automatically based on sunrise and sunset times. &nbsp;</div>
<div></div>
<div>Of course you may find other useful applications for this project beyond holiday lighting. &nbsp;This article will demonstrate how simple it can be to use a Raspberry Pi to control 110/240 VAC circuits. &nbsp; Additionally the software (<em>open source</em>) will be provided to control the circuit based on sunrise and sunset times. &nbsp; &nbsp;&nbsp;</div>
<div><br />
<h3>Shopping List</h3>
<div>
<ul>
<li><a class="offsite-link-inline" href="http://www.raspberrypi.org/" target="_blank">Raspberry Pi</a>&nbsp; (<em><a href="http://www.savagehomeautomation.com/projects/raspberry-pi-shopping-list.html">see this page for more Raspberry Pi related supplies</a></em>)          
<ul>
<li><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B005LALOKY/savagehomeaut-20" target="_blank">5VDC 1A Micro USB Power Supply</a></li>
<li><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0058GH0LS/savagehomeaut-20" target="_blank">SD Memory Card (4GB or above)</a></li>
</ul>
</li>
<li><a class="offsite-link-inline" href="http://www.powerswitchtail.com/Pages/default.aspx" target="_blank">PowerSwitch Tail II</a>&nbsp;(US) / <a class="offsite-link-inline" href="http://www.powerswitchtail.com/Pages/PSTKKit.aspx" target="_blank">PowerSwitch Tail 240 Kit</a>&nbsp;(EU)</li>
<li><a href="http://www.amazon.com/exec/obidos/ASIN/B008MRZSH8/savagehomeaut-20">Jumper Wires (Male-to-Female)</a><br /><br /></li>
</ul>
</div>
<h3>Hardware</h3>
<p>The wiring for this project is quite simple. &nbsp;All we need are two wires to connect from the GPIO (P1) header on the Raspberry Pi to the PowerSwitch Tail power controller. &nbsp;Using male-to-female jumper wires make the task truly plug-n-play ... we don't need to solder or stip any wires. &nbsp;</p>
<p>The PowerSwitch Tail power controller works by turning on the high voltage AC circuit when a DC input of 3-12 VDC&nbsp;(3-30ma) is detected on its input terminal. &nbsp;When no input voltage is detected, the high voltage AC circuit turns off. &nbsp;</p>
<p><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fpowerswitch-on.png%3F__SQUARESPACE_CACHEVERSION%3D1354602664570',393,460);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21161727-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354602801469" alt="" /></a></span><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fpowerswitch-off.png%3F__SQUARESPACE_CACHEVERSION%3D1354602697539',393,460);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21161737-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354602773229" alt="" /></a></span></p>
<p>Fortunately the PowerSwitch Tail power controller input can be triggered directly by the&nbsp;Raspberry Pi's TTL 3.3 DC voltage supplied on its GPIO pins. &nbsp;This means that no additional transistors, relays, or other circuitry is needed to perform the switching.&nbsp;</p>
<p>In this project, we will use Raspberry Pi P1 header pin #12 (<em>which is GPIO #1 in the<a class="offsite-link-inline" href="http://pi4j.com/usage.html#Pin_Numbering" target="_blank"> Pi4J/WiringPi pin numbering scheme</a></em>)&nbsp;as the positive control signal and we will use Raspberry Pi P1 header pin #6 for GND (<em>ground</em>). &nbsp;See the wiring diagram below. &nbsp;Insert the female end of the jumper wire on the Raspberry Pi GPIO header pins and then insert the male end of the jumper wire in the PowerSwitch terminal and tighten the captive screw to secure the wire in place. &nbsp;Make sure that your Raspberry Pi is not plugged in while attaching wires to prevent accidental shorts. &nbsp;&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/raspi-powerswitch.png?__SQUARESPACE_CACHEVERSION=1354601592171" alt="" /></span></p>
<p>Below are photos of the completed and assembled project. &nbsp;Click any image to enlarge.</p>
<p><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fraspi-powerswitch-1.jpg%3F__SQUARESPACE_CACHEVERSION%3D1354604834435',1351,1190);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21161864-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354604989833" alt="" /></a></span></p>
<p><span class="full-image-float-left ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fraspi-powerswitch-2.jpg%3F__SQUARESPACE_CACHEVERSION%3D1354604206901',1632,1224);"><img style="width: 174px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21161867-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354604878125" alt="" /></a></span><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fraspi-powerswitch-3.jpg%3F__SQUARESPACE_CACHEVERSION%3D1354604948174',1632,1224);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21161870-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354604948175" alt="" /></a></span></p>
<h3>Software</h3>
<p>The software that determines sunrise and sunset times and controls the GPIO pins is Java based, therefore you must install a Java runtime to use this software.</p>
<p>To install the OpenJDK, simply enter this command via the Raspberry Pi's console:</p>
<pre>&gt; sudo apt-get install openjdk-7-jdk</pre>
<p><em>(If you would prefer to install the Oracle JDK, please <a href="http://www.savagehomeautomation.com/pi-jdk" target="_blank">click here</a> and read this article.)</em></p>
<p>&nbsp;</p>
<p>The source code is provided as open source software and you can download the entire project from Github.</p>
<ul>
<li><a class="offsite-link-inline" href="https://github.com/savagehomeautomation/raspi-sspc" target="_blank">Github - Source Code</a></li>
<li><a class="offsite-link-inline" href="https://github.com/savagehomeautomation/raspi-sspc/downloads" target="_blank">Github - Precompiled JAR Download</a></li>
</ul>
<p>To run the software, a pre-compiled JAR is made available so that you don't have to compile the software on your own. &nbsp;Simply use the following command on the Raspberry Pi console to download the software to the current working directory on your Raspberry Pi.</p>
<pre><span style="font-size: 90%;">&gt; wget https://github.com/downloads/savagehomeautomation/raspi-sspc/raspi-sspc-1.0.0.jar</span></pre>
<p>This software program also uses the Pi4J Project to manipulate the GPIO pin states on the Raspberry Pi; therefore, you must also download this prerequisite library to your working directory.</p>
<pre>&gt; wget https://github.com/downloads/Pi4J/pi4j/pi4j-core-0.0.3-SNAPSHOT.jar</pre>
<p>&nbsp;</p>
<p>To launch the program, use the following command:</p>
<pre>&gt; sudo java -classpath classes:./'*' SSPC</pre>
<p>When the program starts it will prompt you for your longitude and latitude. &nbsp;These coordinates are used to calculate the sunrise and sunset times for your specific geographical location. &nbsp;You can use this web page to determine your specific longitude and latitude: &nbsp;<strong><a href="http://itouchmap.com/latlong.html">http://itouchmap.com/latlong.html</a>&nbsp;</strong>&nbsp;</p>
<p><span class="full-image-block ssNonEditable"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/prompt-coordinates.png?__SQUARESPACE_CACHEVERSION=1354609311335" alt="" /></span></p>
<p>At this point the program will continue to run and it will turn the power controller ON or OFF depending on the current time and it will schedule the next power event on the next available sunrise or sunset time.</p>
<p>&nbsp;</p>
<p>Re-entering the longitude and latitude coordinates every time would be annoying, so you can also use &nbsp;command line arguments to start the program with specified coordinates. &nbsp;You could include this in a shell script to launch the program with the proper command line argument every time.</p>
<pre><span style="font-size: 90%;">&gt; sudo java -classpath classes:./'*' SSPC -longitude=-73.985538 -latitude=40.748362</span></pre>
<p><span class="thumbnail-image-block ssNonEditable"><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fcoordinate-arguments.png%3F__SQUARESPACE_CACHEVERSION%3D1354686194077',19,856);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21162234-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1354686436523" alt="" /></a><span class="thumbnail-caption" style="width: 680px;">(click to enlarge)</span></span></p>
<p>&nbsp;</p>
<p>Also note that while the program is running, you can manually force the power controller power state ON or OFF using the "<em>on</em>" or "<em>off</em>" commands via terminal.</p>
<p>The "<em>help</em>" command will display all the supported command options provided by the software:</p>
<p><span class="full-image-block ssNonEditable">&nbsp;<img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/command-options.png?__SQUARESPACE_CACHEVERSION=1354609745431" alt="" /></span></p>
<p>Just leave the program running and it will automatically turn ON and OFF the power controller at the sunrise and sunset times for your location. &nbsp;</p>
<p>&nbsp;</p>
<h3><span class="thumbnail-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fchristmas-lights-11.jpg%3F__SQUARESPACE_CACHEVERSION%3D1355217905727',236,396);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21234175-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1355217905728" alt="" /></a></span></span>Final Thoughts</h3>
<p>As you can see this is a very simple project to build and the software can be easily modified if you need some unique behavior. &nbsp;You can additionally take steps to include launching this program with a startup script if you want to ensure that it is automatically restarted each time the Raspberry Pi boots up.</p>
<p>This is an excellent example of an embedded Java application running on the Raspberry Pi and making use of the <a class="offsite-link-inline" href="http://pi4j.com/" target="_blank">Pi4J project</a> to control the hardware. &nbsp;&nbsp;This Java project includes a Maven build so you can easily re-build the project directly on the Raspberry Pi or your desktop if needed using Maven commands.</p>
<p>I hope you enjoyed this article and maybe thought of a few creative modifications that you can do in your home. &nbsp;Please add a comment if you find this project helpful or would like to share any modifications that you add to it. &nbsp; &nbsp; &nbsp;</p>
<p><strong>Merry Christmas!</strong></p>
<blockquote>
<p><br /><strong><em>Related Holiday Projects:</em></strong></p>
<p>&gt;&gt; <a href="http://www.savagehomeautomation.com/projects/twine-monitor-christmas-tree-water-level.html" target="_blank">Electronically Monitor Christmas Tree Water Level<br /><br /><span class="full-image-float-left ssNonEditable"><span>&nbsp;</span></span></a><span class="full-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Ftwine%2Ftwine-christmas-water-sensor.png%3F__SQUARESPACE_CACHEVERSION%3D1355217387303',1003,1238);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21048679-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1355217576613" alt="" /></a></span></span><span class="thumbnail-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Ftwine%2Ftwine-xmas-2.jpg%3F__SQUARESPACE_CACHEVERSION%3D1355217465251',1632,1224);"><img style="width: 121px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21048851-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1355217496650" alt="" /></a></span></span><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Ftwine%2Ftwine-xmas-6.jpg%3F__SQUARESPACE_CACHEVERSION%3D1355217566481',1224,1632);"><img style="width: 216px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-21048856-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1355217598707" alt="" /></a></span></span>&nbsp;</p>
</blockquote>
<blockquote>
<p><span class="full-image-float-right ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fpislice.png%3F__SQUARESPACE_CACHEVERSION%3D1355218649104',276,375);"><img style="width: 175px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20017607-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1355218811874" alt="" /></a></span></span><br /><strong>More Raspberry Pi &nbsp;Projects and Articles</strong></p>
<p><a href="http://www.savagehomeautomation.com/pi-slices/" target="_blank">http://www.pislices.com</a></p>
<p><span>This page lists the articles posted on this blog about the Raspberry Pi</span></p>
</blockquote>
</div>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/raspberry-pi-build-a-gpio-testing-board.html"><rss:title>Raspberry Pi - Build a GPIO Testing Board</rss:title><rss:link>http://www.savagehomeautomation.com/projects/raspberry-pi-build-a-gpio-testing-board.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2012-11-15T04:51:23Z</dc:date><dc:subject>Embedded Computing Pi4J Raspberry Pi Raspberry Pi gpio pi pi4j prototype raspberry raspi test</dc:subject><content:encoded><![CDATA[<p><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/raspi-banner680.png?__SQUARESPACE_CACHEVERSION=1347431055301" alt="" /></p>
<p>While working on <a class="offsite-link-inline" href="http://www.pi4j.com/" target="_blank">The Pi4J Project</a>, I found the need to have some type of GPIO prototyping board to quickly visualize the state of GPIO pins and control the state of GPIO pins. &nbsp; I purchased a handful of electronics parts and set out to build my GPIO testing board.</p>
<p>The picture below is the final result of building this test board:</p>
<p style="text-align: center;"><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fgpio-test-1.jpg%3F__SQUARESPACE_CACHEVERSION%3D1352917995351',851,1556);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20971223-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1352917995352" alt="" /></a></span></span></p>
<h3>Design Goals</h3>
<p style="text-align: left;">My design goals included:</p>
<ul>
<li>Support 7 GPIO pins.</li>
<li>Small/compact footprint.</li>
<li>Connect to Raspberry Pi via ribbon cable.</li>
<li>Support for momentary and fix on/off switches.</li>
<li>Display GPIO state using LEDs.</li>
<li>Captive screw terminals for connecting GPIO pins to external devices.</li>
<li>Order the GPIO test IO hardware based on the Pi4J/WiringPi pin numbering scheme.&nbsp;</li>
</ul>
<h3>Supplies / Parts</h3>
<p>I purchased most of the parts used in this project on eBay. &nbsp;</p>
<ul>
<li>1 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B007R2JJUG/savagehomeaut-20" target="_blank">26P ribbon cable</a> (1 meter or less)</li>
<li>2 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B007R2JEMY/savagehomeaut-20" target="_blank">26P female IDC connectors </a>(press-fit)</li>
<li>1 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B006Z8M7KM/savagehomeaut-20" target="_blank">26P box header IDC male sockets</a>&nbsp;(right angle or straight)</li>
<li><span>7 @ 1.5 VDC red LED</span></li>
<li>7 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B008LT4WX8/savagehomeaut-20" target="_blank">220 ohm resistors</a></li>
<li><span>7 @ 0.3A DC 50V <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B007QAJV9S/savagehomeaut-20" target="_blank">Mini Vertical Slide Switch SPDT 3 Pin</a> PCB</span></li>
<li><span><span>7 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B004RXKWI6/savagehomeaut-20" target="_blank">6mm x 5mm Panel PCB Momentary Tactile Tact Push Button Switch DIP</a> (normally open)</span></span></li>
<li><span><span><span>4 @ <a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0079SJNTA/savagehomeaut-20" target="_blank">3pin Block Terminal screw connector</a> 5mm pitch</span></span></span></li>
<li><span><span><span><a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0002KR9F2/savagehomeaut-20" target="_blank">Solder</a> (lead-free)</span></span></span></li>
<li><span><span><span><span>Scrap wire</span></span></span></span></li>
</ul>
<h3>Tools Needed</h3>
<ul>
<li>Wire snips (<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0000WT6FI/savagehomeaut-20" target="_blank">Hakko CHP170 Micro Cutter, 16AWG Clean Cut</a>)</li>
<li>Wire strippers (<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0006BHHDQ/savagehomeaut-20" target="_blank">Paladin Tools 1118 GripP 20 Wire Stripper/Cutter, 30-20 AWG</a>)</li>
<li>Solder Iron (<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B000AS28UC/savagehomeaut-20" target="_blank">Weller WLC100 40-Watt Soldering Station</a>)</li>
<li>Digital Multimeter w/ Continuity Testing (<a class="offsite-link-inline" href="http://www.amazon.com/exec/obidos/ASIN/B0012VWR20/savagehomeaut-20" target="_blank">Extech MN35 Digital Mini MultiMeter</a>)</li>
</ul>
<h3>Logic</h3>
<ul>
<li>When a GPIO pin is configured as an OUTPUT pin and its state is set to HIGH, the corresponding LED should be ON. (+3.3 VDC is delivered to the anode lead of the LED)</li>
<li>When a GPIO pin is configured as an OUTPUT pin and its state is set to LOW, the corresponding LED should be OFF.&nbsp;(0 VDC is delivered to the anode lead of the LED)</li>
<li>When a GPIO pin is configured as an INPUT pin and the correspondingly momentary switch is depressed or the toggle switch is in the ON position, the&nbsp;LED should be ON and +3.3 VDC is delivered to the GPIO pin on the Pi.</li>
<li>When a GPIO pin is configured as an INPUT pin and the correspondingly momentary switch is not depressed and the toggle switch is in the OFF position, the&nbsp;LED should be OFF and 0 VDC is delivered to the GPIO pin on the Pi.</li>
</ul>
<h3>Wiring Diagram</h3>
<p>The following illustration depicts the wiring schematic used to create this GPIO test board.</p>
<p>(<strong>NOTE:</strong> &nbsp;The GPIO pin numbering is based on the <a class="offsite-link-inline" href="http://pi4j.com/usage.html#Pin_Numbering" target="_blank">Pi4J/WiringPi GPIO pin numbering scheme</a>. &nbsp;But of course you can apply whatever GPIO pin numbering scheme to meet your needs.)</p>
<p><em>Click diagram to enlarge.</em></p>
<p><span class="full-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fgpio-test-wiring.png%3F__SQUARESPACE_CACHEVERSION%3D1352929679556',871,1326);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20973623-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1352929688796" alt="" /></a></span>&nbsp;</span></p>
<h3>Photos</h3>
<p><em>Click any photo to enlarge.</em></p>
<p><span class="full-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fgpio-test-3.png%3F__SQUARESPACE_CACHEVERSION%3D1352921509447',1150,949);"><img style="width: 231px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20971955-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1352923556055" alt="" /></a></span></span><span class="full-image-float-left ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fgpio-test-4.png%3F__SQUARESPACE_CACHEVERSION%3D1352921654634',1139,780);"><img style="width: 190px;" src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20971973-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1352923563997" alt="" /></a></span></span><span class="full-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fpost-images%2Fraspberrypi%2Fgpio-test-5.png%3F__SQUARESPACE_CACHEVERSION%3D1352923481706',1632,1224);"><img src="http://www.savagehomeautomation.com/storage/thumbnails/13113340-20972012-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1352923569703" alt="" /></a></span></span></p>
<p><span class="full-image-block ssNonEditable"><span><img style="width: 650px;" src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/gpio-test-2.png?__SQUARESPACE_CACHEVERSION=1352918805900" alt="" /></span></span></p>
<h3>Videos</h3>
<p>This is a simple demonstration video of this GPIO test board in action with a simple Java program cycling states on the 7 GPIO output pins.</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/HBURE4xxPIs" frameborder="0" allowfullscreen></iframe>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://www.savagehomeautomation.com/projects/pi4j-connecting-java-to-the-raspberry-pi.html"><rss:title>Pi4J - Connecting Java to the Raspberry Pi</rss:title><rss:link>http://www.savagehomeautomation.com/projects/pi4j-connecting-java-to-the-raspberry-pi.html</rss:link><dc:creator>Robert Savage</dc:creator><dc:date>2012-09-21T12:39:28Z</dc:date><dc:subject>Embedded Computing Java Pi4J Raspberry Pi Raspberry Pi gpio java pi pi4j raspberry</dc:subject><content:encoded><![CDATA[<p><span class="full-image-block ssNonEditable"><span><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/raspi-banner680.png?__SQUARESPACE_CACHEVERSION=1347431055301" alt="" /></span></span></p>
<p style="text-align: center;"><span class="full-image-block ssNonEditable"><span><a href="http://pi4j.com/" target="_blank"><img src="http://www.savagehomeautomation.com/storage/post-images/raspberrypi/pi4j-header-small3.png?__SQUARESPACE_CACHEVERSION=1348231401785" alt="" /></a></span></span></p>
<p style="text-align: left;"><strong>Announcing the&nbsp;<strong><a class="offsite-link-inline" href="http://pi4j.com/" target="_blank">Pi4J</a></strong>&nbsp;project!</strong></p>
<p>This project is intended to provide a bridge between the native hardware and Java for full access to the Raspberry Pi in with a Java-friendly object-oriented approach. &nbsp;Pi4J is an open source project developed by professional software engineers. &nbsp;In addition to the basic raw hardware access functionality, this project also attempts to provide a set of advanced features that make working with the Raspberry&nbsp;Pi an easy to implement and more convenient&nbsp;experience for Java developers. &nbsp;&nbsp;</p>
<p><strong>Project Website</strong></p>
<ul>
<li><a class="offsite-link-inline" href="http://pi4j.com/" target="_blank">http://www.pi4j.com</a></li>
</ul>
<p><strong>Source Repository</strong></p>
<ul>
<li><a class="offsite-link-inline" href="https://github.com/Pi4J/pi4j/" target="_blank">https://github.com/Pi4J/pi4j/</a></li>
</ul>
<p><strong><br />Basic Features </strong></p>
<ul>
<li>Export &amp; unexport GPIO pins</li>
<li>Configure GPIO pin direction</li>
<li>Configure GPIO pin edge detection</li>
<li>Control/write/set&nbsp;GPIO pin states</li>
<li>Read GPIO pin states</li>
<li>Send &amp; receive data via RS232 serial communication</li>
</ul>
<p><strong><br />Advanced Features</strong></p>
<ul>
<li>Pulse&nbsp;GPIO&nbsp;pin states</li>
<li>Listen for&nbsp;GPIO&nbsp;pin state changes (<strong>interrupt-based events; not polling</strong>)</li>
<li>Automatically set&nbsp;GPIO&nbsp;states on program termination (<strong>GPIO&nbsp;shutdown</strong>)</li>
<li>Triggers for automation based on pin state changes</li>
<li>Access system information and network information from the Raspberry Pi</li>
<li>Wrapper classes for direct access to&nbsp;WiringPi&nbsp;Library from Java</li>
</ul>
<p><strong><br />Getting Started</strong><a name="Getting_Started"></a></p>
<p>To get started using the Pi4J library, please see the&nbsp;<a class="offsite-link-inline" href="http://pi4j.com/usage.html" target="_blank">Usage</a>&nbsp;page and review each of the examples below to explore the functionality provided by the Pi4j library.</p>
<ul>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/control.html" target="_blank">Control GPIO</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/listener.html" target="_blank">Listen for GPIO Events</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/shutdown.html" target="_blank">Shutdown GPIO</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/trigger.html" target="_blank">Trigger GPIO on Events</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/serial.html" target="_blank">Serial Communication</a></li>
<li><a class="offsite-link-inline" href="http://pi4j.com/example/system-info.html" target="_blank">System/Network Information</a></li>
</ul>
<p><strong><br />Simple Usage Example</strong></p>
<p>Below is a simple example demonstrating controlling a single GPIO pin state.<br />(<em>Please visit this page for a more in-depth view of this example: <a class="offsite-link-inline" href="http://pi4j.com/example/control.html" target="_blank">Control GPIO Example</a></em>)&nbsp;</p>
<blockquote>
<div>
<pre class="prettyprint"><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">InterruptedException</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"&lt;--Pi4J--&gt; GPIO Control Example ... started."</span><span class="pun">);</span><span class="pln">
        
    </span><span class="com">// create gpio controller</span><span class="pln">
    </span><span class="typ">Gpio</span><span class="pln"> gpio </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GpioFactory</span><span class="pun">.</span><span class="pln">createInstance</span><span class="pun">();</span><span class="pln">
        
    </span><span class="com">// provision gpio pin #01 as an output pin and turn on</span><span class="pln">
    </span><span class="typ">GpioPin</span><span class="pln"> pin </span><span class="pun">=</span><span class="pln"> gpio</span><span class="pun">.</span><span class="pln">provisionOuputPin</span><span class="pun">(</span><span class="typ">Pin</span><span class="pun">.</span><span class="pln">GPIO_01</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyLED"</span><span class="pun">,</span><span class="pln"> <br /></span><span class="typ">                                                PinState</span><span class="pun">.</span><span class="pln">HIGH</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"--&gt; GPIO state should be: ON"</span><span class="pun">);</span><span class="pln">
        
    </span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">sleep</span><span class="pun">(</span><span class="lit">5000</span><span class="pun">);</span><span class="pln">
        
    </span><span class="com">// turn off gpio pin #01</span><span class="pln">
    pin</span><span class="pun">.</span><span class="pln">low</span><span class="pun">();</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"--&gt; GPIO state should be: OFF"</span><span class="pun">);</span><span class="pln"><br /></span></pre>
<pre class="prettyprint"><span class="pln">    </span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">sleep</span><span class="pun">(</span><span class="lit">5000</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// toggle the current state of gpio pin #01 (should turn on)</span><span class="pln">
    pin</span><span class="pun">.</span><span class="pln">toggle</span><span class="pun">();</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"--&gt; GPIO state should be: ON"</span><span class="pun">);</span><span class="pln">

    </span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">sleep</span><span class="pun">(</span><span class="lit">5000</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// toggle the current state of gpio pin #01  (should turn off)</span><span class="pln">
    pin</span><span class="pun">.</span><span class="pln">toggle</span><span class="pun">();</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"--&gt; GPIO state should be: OFF"</span><span class="pun">);</span><span class="pln">
        
    </span><span class="typ">Thread</span><span class="pun">.</span><span class="pln">sleep</span><span class="pun">(</span><span class="lit">5000</span><span class="pun">);</span><span class="pln">

    </span><span class="com">// turn on gpio pin #01 for 1 second and then off</span><span class="pln">
    </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"--&gt; GPIO state should be: ON for only 1 second"</span><span class="pun">);</span><span class="pln">
    pin</span><span class="pun">.</span><span class="pln">pulse</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>
</div>
</blockquote>
<p><br />Stay tuned ... more articles to come on using the <a class="offsite-link-inline" href="http://pi4j.com/index.html" target="_blank">Pi4J</a> library.</p>
<ul>
</ul>]]></content:encoded></rss:item></rdf:RDF>