Home IoT & Hardware Raspberry Pi 3 Projects for Java Programmers

Raspberry Pi 3 Projects for Java Programmers

By Rajdeep Chandra , John Sirach , Pradeeka Seneviratne
books-svg-icon Book
eBook $35.99 $24.99
Print $43.99
Subscription $15.99 $10 p/m for three months
$10 p/m for first 3 months. $15.99 p/m after that. Cancel Anytime!
What do you get with a Packt Subscription?
This book & 7000+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with a Packt Subscription?
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with eBook + Subscription?
Download this book in EPUB and PDF formats, plus a monthly download credit
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with a Packt Subscription?
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with eBook?
Download this book in EPUB and PDF formats
Access this title in our online reader
DRM FREE - Read whenever, wherever and however you want
Online reader with customised display settings for better reading experience
What do you get with video?
Download this video in MP4 format
Access this title in our online reader
DRM FREE - Watch whenever, wherever and however you want
Online reader with customised display settings for better learning experience
What do you get with video?
Stream this video
Access this title in our online reader
DRM FREE - Watch whenever, wherever and however you want
Online reader with customised display settings for better learning experience
What do you get with Audiobook?
Download a zip folder consisting of audio files (in MP3 Format) along with supplementary PDF
What do you get with Exam Trainer?
Flashcards, Mock exams, Exam Tips, Practice Questions
Access these resources with our interactive certification platform
Mobile compatible-Practice whenever, wherever, however you want
BUY NOW $10 p/m for first 3 months. $15.99 p/m after that. Cancel Anytime!
eBook $35.99 $24.99
Print $43.99
Subscription $15.99 $10 p/m for three months
What do you get with a Packt Subscription?
This book & 7000+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with a Packt Subscription?
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with eBook + Subscription?
Download this book in EPUB and PDF formats, plus a monthly download credit
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with a Packt Subscription?
This book & 6500+ ebooks & video courses on 1000+ technologies
60+ curated reading lists for various learning paths
50+ new titles added every month on new and emerging tech
Early Access to eBooks as they are being written
Personalised content suggestions
Customised display settings for better reading experience
50+ new titles added every month on new and emerging tech
Playlists, Notes and Bookmarks to easily manage your learning
Mobile App with offline access
What do you get with eBook?
Download this book in EPUB and PDF formats
Access this title in our online reader
DRM FREE - Read whenever, wherever and however you want
Online reader with customised display settings for better reading experience
What do you get with video?
Download this video in MP4 format
Access this title in our online reader
DRM FREE - Watch whenever, wherever and however you want
Online reader with customised display settings for better learning experience
What do you get with video?
Stream this video
Access this title in our online reader
DRM FREE - Watch whenever, wherever and however you want
Online reader with customised display settings for better learning experience
What do you get with Audiobook?
Download a zip folder consisting of audio files (in MP3 Format) along with supplementary PDF
What do you get with Exam Trainer?
Flashcards, Mock exams, Exam Tips, Practice Questions
Access these resources with our interactive certification platform
Mobile compatible-Practice whenever, wherever, however you want
  1. Free Chapter
    Setting up Your Raspberry Pi
About this book
Raspberry Pi is a small, low cost and yet very powerful development platform. It is used to interact with attached electronics by the use of it's GPIO pins for multiple use cases, mainly Home Automation and Robotics. Our book is a project-based guide that will show you how to utilize the Raspberry Pi's GPIO with Java and how you can leverage this utilization with your knowledge of Java. You will start with installing and setting up the necessary hardware to create a seamless development platform. You will then straightaway start by building a project that will utilize light for presence detection. Next, you will program the application, capable of handling real time data using MQTT and utilize RPC to publish data to adafruit.io. Further, you will build a wireless robot on top of the zuma chassis with the Raspberry Pi as the main controller. Lastly, you will end the book with advanced projects that will help you to create a multi-purpose IoT controller along with building a security camera that will perform image capture and recognize faces with the help of notifications. By the end of the book, you will be able to build your own real world usable projects not limited to Home Automation, IoT and/or Robotics utilizing logic, user and web interfaces.
Publication date:
May 2017
Publisher
Packt
Pages
286
ISBN
9781786462121

 

Setting up Your Raspberry Pi

In the first part of this chapter, we will be setting up a Raspberry Pi 3 with the installation of the official, by the Raspberry Pi foundation, released Raspbian Linux distribution with the help of the NOOBS installer. This will be followed up with any preparations needed to be able to use the onboard hardware and the installation of Java. The second part will cover preparing NetBeans as the editor of choice to write, compile, and deploy our Java applications with a simple Hello World application at the end of the chapter to confirm that our setup works.

 

Getting started with the Raspberry Pi

With the release of the Raspberry Pi 3, the Raspberry Pi foundation has made a very big step in the history of the Raspberry Pi. The current hardware architecture is now based on a 1.2 GHz 64 bit ARMv7. This latest release of the Raspberry Pi also includes support for wireless networking and has an onboard Bluetooth 4.1 chip available.

Even though the Raspberry Pi 3 has 64-bit ARMv8, the operating system of the Raspberry Pi which is Raspbian confusingly report it is an 32-bit ARMv7. This is because of the Raspbian OS is currently only available in 32-bit.

To get started with the Raspberry Pi you will need the following components:

  • Keyboard and mouse: Having both a keyboard and mouse present will greatly help with the installation of the Raspbian distribution. Almost any keyboard or mouse will work.
  • Display: You can attach any compatible HDMI display, which can be a computer display or a television. The Raspberry Pi also has composite output shared with the audio connector. You will need an A/V cable if you want to use this output.
  • Power adapter: Because of all the enhancements made, the Raspberry Pi foundation recommends a 5V adapter capable of delivering 2.5 A. You would be able to use a lower-rated one, but I strongly advise against this if you are planning to use all the available USB ports. The connector for powering the device uses a micro USB cable.
  • MicroSD card: The Raspberry Pi 3 uses a MicroSD card. I would advise using at least an 8-GB class 10 version. This will allow us to use the additional space to install applications, and as our projects will log data, you won't be running out of space soon.
  • The Raspberry Pi 3: Last but not least, a Raspberry Pi 3. Some of our projects will be using the on-board Bluetooth chip, and this version will also be focused on in this book.

Our first step will be preparing a SD card for use with the Raspberry Pi. You will need a MicroSD card as the Raspberry Pi 3 only supports this format. The preparation of the SD card is being done on a normal PC, so it is wise to purchase one with an adapter fitting a full-size SD card slot. There are webshops selling preformatted SD cards with the NOOBS installer already present on the card. If you have bought one of these preformatted cards you can skip to the Installing Raspbian section.

Getting a compatible SD card

There is a large number of SD cards available. The Raspberry Pi foundation advises an 8-GB card, which leaves space to install different kinds of application and supplies enough space for us to write log data. When you buy an SD card, it is wise to keep your eyes open for the quality of these cards. Well-known and established manufacturers often supply better quality than the counterfeit ones. SD cards are sold with different class definitions. These classes explain the minimal combined read and write speeds. Class 6 should provide at least 6 MB/s, and class 10 cards should provide at least 10 MB/s. There is a good online resource available that provides tested results of using SD cards with the Raspberry Pi. If you need a resource to check for compatible SD cards, I advise you to go to the embedded Linux page at http://elinux.org/RPi_SD_cards.

Preparing and formatting the SD card

To be able to use the SD card, it first needs to be formatted. Most cards are already formatted with the FAT32 filesystem, which the Raspberry Pi NOOBS installer requires, unless you have bought a large SD card it is possible it is formatted with the exFAT filesystem. These then should also be formatted as FAT32. To format the SD card, we will be using the SD association's SDFormatter utility, which you can download from http://elinux.org/RPi_SD_cards, as default OS supplied formatters do not always provide optimal results.

In the following screenshot, the SDFormatter for the Mac is shown. This utility is also available for Windows and has the same options. If you are using Linux, you can use GParted. Make sure when using GParted you use FAT32 as the formatting option. As shown in the screenshot, select the Overwrite format option and give the SD card a label. The example shows RPI3JAVA, but this can be the label of your choice so you can quickly recognize the card when it's inserted:

Press the Format button to start formatting the SD card. Depending on the size of the SD card, this could take some time, enabling you to get a cup of coffee. The utility will show a done message in the form of Card Format complete when the formatting is done. You will now have a usable SD card.

To be able to use the NOOBS installer, you will need to follow the following steps:

  1. Download the NOOBS installer from https://www.raspberrypi.org/downloads/.
  2. Unzip the file with your favorite unzip utility. Most OSes already have one installed.
  3. Copy the contents of the unzipped file into the SD card's root directory so that the copy result is as shown in the following screenshot:
When selecting the NOOBS for download, only select the lite version if you do not mind installing Raspbian using the Raspberry Pi's network connection.

After we have copied the required files into the SD card, we can start installing the Raspbian OS.

 

Installing Raspbian

To install Raspbian, we need to get the Raspberry Pi ready for use. As the Raspberry Pi has no power on and off button, the powering of the Raspberry Pi will be done as the last step:

  1. At the bottom of the Raspberry Pi on the side you will see a slot to insert your MicroSD card. Insert the SD card with the connectors pointing to the board.
  2. Next, connect the HDMI or the composite connector and your keyboard and mouse. You won't need a network cable as we will be using the wireless functionality built into the Raspberry Pi.
  3. We will now connect the Raspberry Pi with the micro USB power supply.
  4. When the Raspberry Pi boots up, you will be presented with the OSes available to be installed. Depending on the download of NOOBS you have done, you will be able to see if the Raspbian OS is already available on the SD card or if it will be installed by downloading it. This is visualized by showing an SD card image or a network image behind the OS name. In the following screenshot, you see the NOOBS installer with the Raspbian image available on the SD card.
  5. At the bottom of the installation screen you will find the Language and Keyboard drop-down menus. Make sure you select the appropriate language and keyboard selection; otherwise, it will be difficult to enter the right characters on the command line and in other tools requiring text input.
  1. Select the Raspbian [RECOMMENDED] option and click the Install (i) button to start installing the OS:
  1. You will be prompted with a popup confirming the installation as it will overwrite any existing installed OSes. As we are using a clean SD card, we will not be overwriting any.
It is safe to press Yes to start the installation. This installation will take a couple of minutes, so it is a good time to go for a second cup of coffee.
  1. When the installation is done you can press Ok in the popup that appears and the Raspberry Pi will reboot. Because Raspbian is a Linux OS, you will see text scrolling by that relates to services that are being started by the OS.
  2. When all services are started, the Raspberry Pi will start the default graphical environment, called LXDE, which is one of the Linux window managers.

Configuring Raspbian

Now that we have installed Raspbian and have it booting into the graphical environment we can start configuring the Raspberry Pi for our purposes. To be able to configure the Raspberry Pi, the graphical environment has a utility tool installed, which eases up the configuration called Raspberry Pi Configuration:

  1. To open this tool, use the mouse and click on the Menu button on the top left, navigate to Preferences, and press the Raspberry Pi Configuration menu option, as shown in the following screenshot:
  1. When you click on the Raspberry Pi Configuration tool Menu option a popup will appear with the graphical version of the raspi-config command-line tool. In the graphical popup we see four tabs explaining different parts of possible configuration options. We first focus on the System tab, which allows us to:
    • Change the Password
    • Change the Hostname, which helps to identify the Raspberry Pi in the network
    • Change the Boot method to To Desktop or the CLI
    • Set the Network at Boot option
  1. With the system newly installed, the default username is pi and the password is set to raspberry. Because these are the default settings, it is recommended that we change the password.
  2. Press the Change Password button and enter a newly chosen password twice, Once to set the password and the second time to make sure we have entered the new password correctly.
  3. Press Ok when the password has been entered twice.
Try to come up with a password that contains capital letters, numbers, and some strange characters, as this will make it more difficult to guess.
  1. Now after we have set a new password, we are going to change the hostname of the Raspberry Pi. With the hostname we are able to identify the device on the network. I have changed the hostname into RASPI3JAVA, which helps me to identify the Raspberry Pi to be used for the book.
The hostname is used on the CLI, so you will immediately identify this Raspberry Pi when you log in.
  1. By default, the Raspberry Pi boots into the graphical user interface, which you are looking at right now. Because a future project will require us to make use of a display with our application, we will be choosing to boot into CLI mode.
  2. Click on the radio button that says To CLI. The next time we reboot, we will be shown the CLI.
  3. Because we will be using the integrated Wi-Fi connection on this Raspberry Pi, we are going to change the Network at Boot option to have it waiting for the network. Later on in the book we will be creating network-based services and we will be logging in from remote locations. Having the network ready before any service requiring a network connection is a good practice.
  4. Tick the box that says Wait for network.

We have set some default settings, which sets some primary options to help us identify the Raspberry Pi and change the boot mode. We will now be changing some advanced settings that enable us to make use of the hardware provided by the Raspberry Pi:

  1. Click on the Interface tab, which will give us a list of the available hardware provided. This list is as follows:
    • Camera: The Official Raspberry Pi camera interface
    • SSH: To be able to log in from remote locations
    • SPI: Serial peripheral interface bus for communicating with hardware
    • I2C: Serial communication bus mostly used between chips
    • Serial: The serial communication interface
    • 1-Wire: Low data power supplying bus interface conceptual based on I2C
    • Remote GPIO
  1. A future project that we will be working on will require some kind of camera interface. This project will be able to use both the local attached official Raspberry Pi Camera module as well as a USB connected webcam.
  2. If you have the camera module, tick the Enabled radio box behind Camera. We will be deploying our applications immediately from the editor. This means we need to enable the SSH option. By default this already is, so we leave the setting as it is. If the SSH option is not enabled, tick the Enabled radio button behind the SSH option. For now, you can leave the other interfaces disabled as we will only enable them when we need them.
  3. As we now have enabled the default interfaces that we will need, we are going to do some performance tweaking. Click on the Performance tab to open the performance options.
  4. We will not need to overclock the Raspberry Pi, so you can leave this option as it is. Later on in the book we will be interfacing with the Raspberry Pi's display and doing neat tricks with it. For this, we need some memory for the Graphical Processor Unit (GPU). By default this is set to 64 MB. We will ask for the largest amount of memory possible to be assigned to the GPU, which is 512 MB. Put 512 behind the GPU Memory option; there is no need to enter the text MB. The memory on the Raspberry Pi is shared between the system and the GPU. Having this option set to 512 MB results in 512 MB available for the system. I can assure you that this is more than sufficient.
  1. Now that we are done with the system configuration, we are making sure we can work with the Raspberry Pi. Click on the Localisation tab to show the options applicable to the location the Raspberry Pi resides in. We have the following options:
    • Set Locale: Where you set your locale settings
    • Timezone: The time zone you are currently in
    • Keyboard: The layout of the keyboard
    • WiFi Country: The country you will be making the Wi-Fi connection in
  1. This book uses the US-English language with a broad character set. Unless you prefer to continue with your own personal preferences, change the following by pressing the Set Locale button:
    • Language to en (English)
    • Country to US (USA)
    • Character Set to UTF-8
  1. Press the OK button to continue.

As this needs to build up the Locale settings this can take up to about 20 seconds to set up. You will be notified with a small window when this process is finished.

  1. The next step is to set the timezone. This is needed as we want to have time and dates shown correctly.
  2. Click on the Set Timezone button and select your appropriate Area and Location from the drop-down menus. When done, press the OK button.
  3. To make sure that the text we enter in any input field is correct, we are going to set the layout of our keyboard. There are a lot of layouts available, so you need to check yours. The Raspberry Pi is quite helpful and provides many keyboard options.
  4. Press the Set Keyboard button to open up a popup showing the keyboard options. Here, you are able to select your country and the keyboard layout available for this country. In my case, I have to select United States as the Country and the Variant as English (US, with euro on 5).
  5. After you have made the selection, you can test your keyboard setup in the input field below the Country and Variant selection lists. Press the OK button when you are satisfied with your selection.
  1. Unless you are connecting your Raspberry Pi to a wired network connection, we are going to set up the country we are going to make the Wi-Fi connection in so that we are able to connect remotely to the Raspberry Pi. Press the Set WiFi Country button to have the Wifi Country Code shown, which provides us the list of available countries for the Wi-Fi connection. Press the OK button after you have made the selection. We are now done with the minimal Raspberry Pi system configuration.
  2. Press OK in the settings window to have all our settings stored and press No in the popup that follows that says a reboot is needed to have the settings applied as, we are not completely done yet.
  3. Our final step is to set up the local Wi-Fi chip on the Raspberry Pi.

We will now set up the Wi-Fi on the Raspberry Pi. If you want your Raspberry Pi connected with a network cable, you can skip this section and head over to the Set fixed IP section:

  1. To set up the Wi-Fi, click on the Network icon, which is at the top of the screen between the Bluetooth and Speaker Volume icons.
  2. When you click this button, the Raspberry Pi will start to scan for available wireless networks. Give it a couple of seconds if your network does not appear immediately. When you see your network appear, click on it, and if your network is secured you will be asked to supply the credentials required to be able to connect to your wireless network.
If you have any trouble connecting to your wireless network without any messages, log in to your router and change the Wi-Fi channel to a channel lower than channel 11.
  1. When you have entered your credentials and pressed the OK button you will see the icon changing from the two network computers to the wireless icon, as it it trying to connect to the wireless network.
  2. Now that the Raspberry Pi has rebooted, we have configured the wireless network to make sure the wireless network will keep its connection. As the Raspberry Pi is an embedded device targeting low power consumption, the Wi-Fi connection is possible set to sleep mode if after a specific time there is no network usage.
  3. To make sure the Wi-Fi does not go into power sleep mode we will be changing a setting through the command line that will make sure that this won't happen. To open a CLI we need to open a terminal. A terminal is a window that will show the command prompt where we are able to provide commands.
  1. When you look at the graphical interface you will notice a small computer screen icon at the top in the menu bar. When we hover over this icon it shows the text terminal. Press this icon to open up a terminal.
  2. A popup will open with a large black screen showing the command prompt, as shown in the following screenshot:
Do you notice the hostname we set earlier? This is the same prompt as we will see when we log in remotely.
  1. Now that we have a command line open we need to enter a command to make sure the wireless network will not go to sleep after a period of no network activity. Enter the following in the terminal:
           sudo iw dev wlan0 set power_save off
  1. Press Enter. This command sets the power save mode to off so the wlan0 (wireless device) won't enter power save mode and will stay connected to the network.

We are almost done with setting up the Raspberry Pi. To be able to connect to the Raspberry Pi from a remote location we need to know the IP address of the Raspberry Pi. This final configuration step involves setting a fixed IP address into the Raspberry Pi settings:

  1. To open the settings for a fixed IP configuration, we are going to open up the settings by pressing the wireless network icon with the right mouse button and press the WiFi Networks (dhcpcdui) Settings option.
  2. A popup will appear with the settings we can change. As we will only change the settings of the Wi-Fi connection, we select Interface next to the Configure option. When interface is selected, we select the wlan0 option in the drop-down menu next to the interface selection.
If you have chosen to use a wired connection instead of the wireless connection you can select the eth0 option next to the interface option.
  1. We now have a couple of options available to enter IP address-related information. Please refer to the documentation of your router to find out which IP address is available to you which you can use. My advice is to only enter the IP address in the available fields, which leaves the other options automatically configured, like in the following screenshot. Notice that the entered IP address is the correct one; this only applies to my configuration, which could differ from yours:
  1. After you have entered the IP address you can click Apply and Close.
  2. It is now time to restart our Raspberry Pi and have it boot to the Command Line Interface (CLI).
  3. While it is rebooting, you will see a lot of text scrolling, which shows the services starting and at the end, instead of starting, the graphical interface, we are now shown the text-based CLI, as shown in the following screenshot:
  1. If you want to return to the graphical interface just type in the following command:
      startx
  1. Press Enter and wait a couple of seconds for the graphical user interface to appear again. We are now ready to install the Oracle JDK, which we will be using to run our Java applications.
 

Installing Java

In this section, we will be installing a file transfer application, installing Java, and preparing the NetBeans editor.

We will be using the Oracle JDK to run our Java applications. At the time of writing, the latest version is JDK 1.8, which all our projects will be using as a minimal version:

  1. To get the Oracle JDK, go to http://www.oracle.com/technetwork/java/javase/downloads/index.html and select the Download JDK button.
  2. On the following page you need to select the ARM version to be downloaded. Although the version you will be seeing now may differ from the version mentioned in the book, the naming scheme for the download is the same in all these versions. Even though the Raspberry Pi is now based on a 64-bit architecture the OS is still 32-bit at the time of writing. This also means the version you will need to download is: jdk-8u[buildnumber]-linux-arm32-vfp-hflt.tar.gz, which is the 32-bit version. The [buildnumber] indicates the release build of the JDK. All projects are targeted to work on JDK8, so any build number that is at least 91 or higher should be working. At the time of writing, the JDK version used is jdk-8u91-linux-arm32-vfp-hflt.tar.gz.
  3. To be able to use this Java version we will be using an application to upload the downloaded version to the Raspberry Pi. The application we will be using is called FileZilla and it is available for Windows, Linux, and Mac. To download this application go to https://filezilla-project.org/ and by clicking the Download FileZilla Client link, the application will be downloaded.
  1. To install FileZilla open the downloaded installer and follow the instructions on the screen. We will now upload this Java version to the Raspberry Pi. Open FileZilla, and you will be presented with the window shown in the following screenshot:
  1. To connect we need to enter the credentials that we have set during the installation of the Raspberry Pi. In the most upper part below the icons we will enter the credentials, which are as follows:
  • Only the IP address in the Host field
  • The username pi in the Username field
  • The password we have changed during preparation in the Password field
  • We enter port number 22 in the Port field, which is the secured connection
  1. Press the Quickconnect button, and when all the credentials are entered correctly we are logged in to the Raspberry Pi. On the left side in FileZilla we see the structure of our local computer, and on the right side we see the directory structure of the Raspberry Pi.
  2. Browse to the downloaded Java version on the left side of the application. When you see the Java version that we downloaded click and move this file from the left to the right side. The file will now be uploaded to the Raspberry Pi.
  3. In the most bottom part of FileZilla we see the upload progressing. When the upload is finished, the progress is removed from this list and the upload is done.

We can now close FileZilla and do the final steps required to install this Java version.

  1. For this, we will use the CLI on the Raspberry Pi. There are different ways to get to this command line. On Windows, we can use PuTTY. This is a small application that allows us to log in from the Windows PC onto the Raspberry Pi. On a Mac we can use the terminal application to log in. When we have our keyboard and display connected to the Raspberry Pi we are already logged in. As we will be using the Raspberry Pi as a remote device, we will be using PuTTY on Windows and the terminal on Mac. When you use Mac, you can skip the paragraph where we will be using the terminal.
  2. On Windows, we use PuTTY to connect to the Raspberry Pi. To use PuTTY we need to download it from http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
  3. On the second half of this page, we see a list of files ready to be downloaded below the Binaries header.
  1. Click the putty.exe file to download. This file does not need to be installed, so we can save this file in any location that we can easily reach. When PuTTY is downloaded, double-click it to open it so that you see something similar to the following screenshot:
  1. With this window open we can enter the IP address of the Raspberry Pi in the Host Name field.
  2. We would like to save this IP address with a recognizable name, so we enter RASPI3JAVA without the quotes in the Saved Sessions field and press Save.
  3. We now have saved this session for future usage. When we now press Open we are prompted with Login as, where we enter the username pi and press Enter.
  4. The next step is to enter the password we have set during the preparation. When the credentials are entered correctly we are logged in.
  1. To log in on the Mac we use the terminal application, which is preinstalled on the Mac. We open this application by pressing command + space bar at the same time. This will open Spotlight Search, where we can type terminal without quotes and press return or Enter on the keyboard to open the terminal. Hold the option button while clicking on the green circle in the top-left corner to maximize the terminal window.
  2. We are now in the CLI on the Mac. To log in on the Raspberry Pi we need to enter the following command:
       ssh pi@192.168.1.20

The connection we make is done with ssh, which is a small terminal application that creates a secure connection with the Raspberry Pi. We use pi as the username where the @ character literally means at because we log in as this user at the specified IP address. In the preceding command-line example, I have used the 192.168.1.20 IP address of my Raspberry Pi. You should replace this with the IP address you have set for yours. We are now asked to enter the password; enter the password that has been set for the user pi during the preparation.

From this point on it does not matter how we are logged in on the Raspberry Pi as the following steps are the same via Windows with PuTTY, Mac with terminal, or using the keyboard with a display attached to the Raspberry Pi. We are now presented with the CLI on the Raspberry Pi, which gives us the opportunity to unpack and install the Java package we have uploaded to the Raspberry Pi. We will place this installation in the /opt/ directory. To make this possible we first create the java directory inside the /opt/ directory by entering the following command:

    sudo mkdir /opt/java

We use the sudo command because this directory is owned by the root user, which is the administrator on the Raspberry Pi. The sudo command temporarily leverages our privileges to be an administrator for the duration of the command. With mkdir /opt/java we created the java directory inside the /opt/ directory. Now that we have the /opt/java directory we are going to unpack the downloaded Java archive file. We do this by entering the following command:

       sudo tar -C /opt/java -xf jdk-8u91-linux-
arm32-vfp-
hflt.tar.gz

Again we have used the sudo command to leverage our permissions. With the tar utility we unpack the Java archive into the /opt/java directory with the help of the -C parameter line switch. The command line parameters -xf tells the tar utility that we want to unpack the jdk-8u91-linux-arm32-vfp-hflt.tar.gz file. The filename in the preceding example is the version downloaded at the time of writing. Replace 91 with the version you have downloaded.

The Linux command line has a nice way to help you enter commands, directories, and filenames. When you have entered a part of the filename pressing the Tab key will auto-complete the filename.

We can now check if the files have been extracted correctly from the downloaded Java archive. By entering the following command we should see the directory extracted from the archive:

    ls -la /opt/java/

If you see the jdk1.8.0_91 directory, as shown the following screenshot, we have successfully unpacked Java. If you have a different version of the JDK, you will see a different number than 91 at the end:

 

Installing and preparing the NetBeans Java editor

At this point we have installed and prepared the Raspbian Linux OS and downloaded and installed Java JDK 1.8 on the Raspberry Pi. Our final step is to install and prepare NetBeans with Java as our editor, which is also used to upload and run the applications on our Raspberry Pi. We will be using NetBeans 8.1 as a reference for installing and preparing.

If you are not used to using NetBeans; no problem, we will go step-by-step with downloading and installing and preparing the application. To install NetBeans on your computer we first need to download the correct version onto our PC or Mac. As NetBeans runs on Java, it is also available for Linux-based OSes. To get NetBeans, go to http://www.netbeans.org and press the Download link on the top right of the page. You will be redirected to the download page, where you will see three download options. As we are focused on Java SE, the first and smallest download will suffice for our projects. Press the download button for the left-most download to download the smallest version. After download is completed, we need to install it. The installation procedure is almost identical for all platforms. All platforms have their dedicated installer, and the installation instructions are linked to on the download page below the show download bundles.

When you open NetBeans for the very first time you will be presented with a welcome screen. You can set a mark in the top-right corner of this welcome screen that says Do not show this again. Otherwise it will show up every time we start up the editor. We will now configure NetBeans in such a way that we are able to write our application on our local computer, and when we want to run our code, let NetBeans upload the application to the Raspberry Pi and run it. We will be able to see all the output we normally would see when we log in on the Raspberry Pi and run the Java application in the output window of the NetBeans editor! This will speed up our projects a lot as we do not need to do any manual actions such as uploading and logging in. To make use of this very handy feature we need to configure a Remote platform. To configure the remote platform with the Raspberry Pi, we will adding it to NetBeans.

First, we will be defining the platform itself. In NetBeans, click Tools | Java Platforms. The Java platforms settings dialog will show up:

On the left bottom, click on the Add Platform button. We are now presented with a selection if we want to add a local or a Remote Java Standard Edition. We select the Remote Java Standard Edition and press Next:

We are now presented with a follow up popup were we can enter the details of the remote platform, which is installed on the Raspberry Pi. In the following screenshot, examples are filled in, which we can use for the remote platform:

We just replace the Host IP address with the address that the Raspberry Pi is reachable on. We keep the Username pi and enter the Password we set during the preparation. We set the path to the JDK installation according to the version we have installed. In the example, it is JDK1.8 build 91. Change the 91 to the build you have installed. We do not press the Create button as the directory is already there. As the working directory, we keep the /home/pi/RASPI3JAVA/, so that we know where all our projects will be placed.

Press the Finish button to have NetBeans verify the remote platform and have it download properties from the remotely installed Java version. This action will take a couple of seconds. When you see the following screen, the remote platform has been confirmed by NetBeans:

We press Close to close the dialog so we can begin with our projects.

 

Our first remote Java application

Now that we have added a remote platform, we will be writing a very simple little Java application to check that it works and have the output from the application executed on the Raspberry Pi and output its information in the editor. We start with a simple Hello World Java application and run it on the Raspberry Pi. The following steps will be needed every time we start a new project.

Click File in the menu bar and click New Project. You will be presented with the New Project wizard, as shown in the following screenshot:

On the left side are the project categories. Here we click on Java, and on the right side we select the Java Application option and press Next to create a Java application. To be able to start with a Java application we need to enter some details so we can begin with our development. The following screenshot shows the details we need to enter to begin:

In this screen we give the project the name, HelloRaspberryPi, and browse to the local directory where we will be putting our project. Make sure you put no spaces in the name of the project! We supply a base path where this project is being placed. In my case, I will place my project in my home directory with the subdirector Raspi3JavaProjects. Other projects that we will be creating later on will also be placed in this directory. NetBeans will automatically create a directory based on the project name in this base directory. Click Finish and the project will be created.

On the left side we have our project structure tree where all our Java packages are, and on the left side we have the editor. This window will be our main projects screen throughout the book, as shown in the following screenshot. This window is the same on all platforms, such as Windows, Linux, and Mac:

Now that we have a new project, we will configure it to run on the remote Raspberry Pi platform. To do this we open the project properties by clicking on the project name in the left side of the window. This opens up a context menu where the bottom option is Properties. When clicked, it opens the Properties window, as shown in the following screenshot:

We click on the Run configuration in the left option tree. We now see the possible run options. We want to run our Java application on the Raspberry Pi, so we change the Runtime Platform to RASPI3JAVA remote or the name you have set in the remote platform configuration. We are asked to save this as a configuration, and we enter a name such as remote Raspberry Pi configuration. Press OK to save our run configuration.

Running our application on the Raspberry Pi

Now we are ready to write a line of code and have it run on a fully prepared Raspberry Pi with Java and a fully prepared NetBeans Java editor. We will change the main run function of our Java application to have it print out Hello from the Raspberry Pi!. Change the code in the main function so that we have what is shown in the following snippet:

    /** 
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Hello from the Raspberry
Pi!");
}

For now, this is enough. This will print out the line stated previously. To run this on the Raspberry Pi we have three options. One is to click on the Run button in the button bar below the Menu bar; the second is to right-click on the project name and select Run from the context menu; and the third is to press F6. Pick the one easiest for you.

Now the application is compiling and will be executed on the Raspberry Pi. The output should look same as following screenshot:

This is one of the many reasons why NetBeans is my personal favorite editor. When we look at the output we can see NetBeans building the application and logging in to the remote platform, which in our case is the Raspberry Pi. When logged in it creates a directory called /home/pi/RASPI3JAVA/HelloRaspberryPi/dist. This is the directory the jar file is placed, so it can be executed on the Raspberry Pi. We can see this application being executed by the CLI command: cd '/home/pi/RASPI3JAVA//HelloRaspberryPi'; '/opt/java/jdk1.8.0_91//bin/java' -Dfile.encoding=UTF-8 -jar /home/pi/RASPI3JAVA//HelloRaspberryPi/dist/HelloRaspberryPi.jar

What this does is cd '/home/pi/RASPI3JAVA//HelloRaspberryPi', which makes sure the directory is the correct one. This is followed by the '/opt/java/jdk1.8.0_91//bin/java' -Dfile.encoding=UTF-8 -jar /home/pi/RASPI3JAVA//HelloRaspberryPi/dist/HelloRaspberryPi.jar command, which runs the Java executable with our jar file as input. All the directories we have created and the installed java version is used. Our result is shown with: Hello from the Raspberry Pi!. We can now start with our projects, well done!

 

Summary

In this chapter you learned essential techniques on how to prepare the Raspberry Pi 3 ready to use with projects will be discussing through out this book. Then you installed Raspbian on the Raspberry Pi 3 followed by Java, installed NetBeans IDE on your computer and connected the Raspberry Pi with the local computer through SSH using PuTTY. Finally, you wrote a simple Java application, deployed it to the Raspberry Pi and run.

In Chapter 2, Automatic Light Switch Using Presence Detection, you will use this basic Raspberry Pi setup to build a automatic light switch which uses presence detection. So you will learn how to expand this basic Raspberry Pi setup by adding some hardware and software components.

About the Authors
  • Rajdeep Chandra
  • John Sirach

    John Sirach works as a Product Owner at Greenhouse Innovation. He has more than 10 years of experience with Internet-related disciplines from connectivity to hosting and Internet Of Things. Currently, he is involved in the open source "PiDome Home Automation platform" project as a passionate Java and JavaFX software developer and project maintainer. In the past 10 years, he has gained experience with large-scale web applications committed to online services with the most experience gained in frontend web development and application middleware.

    Browse publications by this author
  • Pradeeka Seneviratne

    Pradeeka Seneviratne is a software engineer with over 10 years' experience in computer programming and systems design. He is an expert in the development of Arduino- and Raspberry Pi-based embedded systems. Pradeeka is currently a full-time embedded software engineer who works with embedded systems and highly scalable technologies. Previously, he worked as a software engineer for several IT infrastructure and technology servicing companies. He collaborated with the Outernet project as a volunteer hardware and software tester for Lighthouse- and Raspberry Pi-based DIY Outernet receivers based on Ku band satellite frequencies. He is also the author of five books: Internet of Things with Arduino Blueprints [Packt Publishing] IoT: Building Arduino-Based Projects [Packt Publishing] Building Arduino PLCs [Apress] Raspberry Pi 3 Projects for Java Programmers [Packt Publishing] Beginning BBC micro:bit [Apress]

    Browse publications by this author
Latest Reviews (2 reviews total)
Haven't really read enough to rate it.
Good book, but it not for the beginner.
Raspberry Pi 3 Projects for Java Programmers
Unlock this book and the full library FREE for 7 days
Start now