Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Raspberry Pi 3 Projects for Java Programmers
Raspberry Pi 3 Projects for Java Programmers

Raspberry Pi 3 Projects for Java Programmers: Get the most out of your Raspberry Pi 3 with Java

Arrow left icon
Profile Icon John Sirach Profile Icon Chandra Profile Icon Seneviratne
Arrow right icon
€32.99
Paperback May 2017 286 pages 1st Edition
eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m
Arrow left icon
Profile Icon John Sirach Profile Icon Chandra Profile Icon Seneviratne
Arrow right icon
€32.99
Paperback May 2017 286 pages 1st Edition
eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Table of content icon View table of contents Preview book icon Preview Book

Raspberry Pi 3 Projects for Java Programmers

Automatic Light Switch Using Presence Detection

Now that we have our Raspberry Pi 3 up and running we can start with our first project that uses it. In this chapter, we will be doing presence detection using the integrated Bluetooth chip and show it on a HD44780 16x2 display. As only showing presence will not fill the whole display, we will be adding light intensity detection and environmental temperature. We would also like to add a home automation factor to this setup by adding a relay that can turn on a light. This little project could possibly be placed at a strategic location such as an entry hallway on which we will focus.

We would like to turn on a light switch when we're nearly home when the light in the hallway is quite dim and show the current temperature. This chapter will then cover the basics of using libraries in other projects in the book.

To be able to build this, we will be covering the following...

Introduction to and installing Fritzing

If you already know about Fritzing, you can skip this section and continue to the Bill of Materials section.

Fritzing is one of the most popular and most commonly used free and open source electronic schematics designers used by electronics hobbyists. This application also makes it very easy for beginners, as schematics are built using drawings from actual devices.

The community surrounding this application is very large, resulting in a lot of schematics made available for download and electronic parts being added at a large rate. I advise that after reading the book, you take a closer look at the community part as you will be able to build a lot of applications with the knowledge gained.

To install Fritzing, all we need to do is go to the Fritzing website at http://fritzing.org and click the Download link on the top of the website. The installation is explained in full detail...

Billing of materials

To be able to realize our build, we need the following components:

  • A breadboard
  • A Raspberry Pi, of course
  • A Raspberry Pi 3 T-Cobbler or male to female jumper wires
  • Breadboard wires
  • Three 10 Kohm resistors
  • A Hitachi HD44780 16x2 character display
  • One 10 Kohm potentiometer
  • One 4.7 Kohm resistor
  • A 1 µF capacitor
  • A LDR a.k.a. LDR
  • One BC546B NPN transistor
  • One 5V switchable mechanical relay, such as a Keyes 5V relay module or similar
  • One 1N4148 diode
  • A device capable of being detected by Bluetooth, such as a mobile phone

How to emulate reading analog values on digital pins

Let us start with some theory. The Raspberry Pi only has digital pins. This results in being unable to read analog values. But with some devices, we are able to read analog values, or rather, create an RC Circuit to cheat a little bit. An RC circuit is a circuitry setup where we place a resistor and a capacitor in series with each other. When a voltage is applied on the circuit, the voltage across the capacitor will rise. The higher the resistor value is, the longer it will take for the voltage to rise across the capacitor.

With a fixed resistor, the time to equalize the voltage before and after the resistor around the capacitor will be the same. When we introduce an LDR, where the resistor value depends on the light intensity, the more light that hits the sensor, the lower the resistance is. With this in mind, we take a look at a feature on the digital pins on...

Starting our project and installing the necessary libraries

This project is available for download and can be opened within NetBeans. The only thing we need to do is change the project's properties so it is able to be run on the Raspberry Pi. When the project is opened, go to the project's Properties and by selecting the Run node on the left side, we can change the Runtime Platform to the Raspberry Pi platform. This is explained in detail in Chapter 1, Setting up Your Raspberry Pi, in the Our First Remote Java Application section.

For our project, we need a couple of libraries. We will be using the libraries from the Pi4J project that enable us to interact with the Raspberry Pi pins and use BlueCove libraries to be able to interact with the Bluetooth chip.

Although the libraries are available in the project, it will be useful to know how these are added to the project if you start afresh. This will be...

The Pi4J libraries

The Pi4J library is developed by Robert Savage and is used to interact with the GPIO pins. Communication with the GPIO pins is not done by pure Java but uses a native library developed by Gordon Henderson. This library is bundled within the Pi4J library and is used automatically. The Pi4J project consists of multiple libraries which are as follows:

  • pi4j-core.jar: Always needed, and includes the pi4j native library
  • pi4j-device: Wrappers used for interactions with different kind of peripheral and different Raspberry Pi expansion boards
  • pi4j-gpio-extension.jar: Used by pi4j-device.jar or for custom extension implementations
  • Pi4j-service.jar: Provides listeners for GPIO pins

We will always include all libraries so we are sure to have all the dependencies and will make it easier for you to extend the projects without the need to search for the corresponding libraries of the same version being used...

Adding the HD44780-compatible 16x2 character display

Let's start our project by connecting the 16x2 character display to the Raspberry Pi and show some text on it using Java. When looking around on the Internet for a 16x2 character display, this will often be a HD44780-compatible one. These displays are quite affordable and are used in a lot of projects. Before we attach this display to the Raspberry Pi, we need to check what kind of backlight is being used as there are both LED and EL types. In our schematic and connections, we will be connecting a LCD with an LED backlight.

The character display has a parallel interface, which means we will need a lot of pins to connect the display. We will be communicating in 4-bit mode with the display so we do not need to use all the pins that are available. The pin setup of this kind of display is mostly as follows, ordered by pin number:

  • Ground
  • 5V VCC, (not 3.3V)
  • Contrast...

Showing data on the HD44780-compatible display

Now that we have connected the LCD to the Raspberry Pi, it is time to actually start with the code and display some data. With the project loaded in NetBeans, open the Chapter2.java class, which lives in the, chapter2 package. Let's take a look at the main(String args[]) method.

We see all the methods are commented out. We will be uncommenting these methods throughout the book, so each step will get more obvious, and we will be able to follow and explain all the interactions between the components and the software.

Uncomment the runLcdExample(); method and press the Run (with the green arrow) button in the IDE. NetBeans will start to compile the application; upload it to the Raspberry Pi and run it. If we have set up the wiring correctly, we will see the following screenshot, but of course, with your local time. If you are not able to see the text, we need to adjust...

Adding the light-dependent resistor to the setup

As mentioned earlier, the Raspberry Pi is unable to read analog values. We are going to add the resistor using a RC circuit, as explained earlier. Here, we need the LDR, capacitor, and a 4.7 Kohm fixed resistor. The fixed resistor is used to make sure that when the LDR is completely saturated, which means that there is no resistance anymore, we won't fry our Raspberry Pi. An extra thing we need to keep in mind is that the Raspberry Pi is a 3.3V device. This means that in this schema, we will be using the 3.3V output because we will be reading the input on the Raspberry Pi pin, which cannot be higher than 3.3V.

Here is an image that shows how to attach this RC circuit to the Raspberry Pi:

Shut down the Raspberry Pi and disconnect the power. Let's first take a quick look at the capacitor. The one we are using is an electrolytic capacitor, which has a positive...

Reading and displaying the values from the LDR

Doing this needs some experimentation on the values we want to have, especially because everyone's definition of It is dark is different. Remember, the longer it takes for the pin to detect the high state, the darker it is.

Close all the tabs except the Main class, where we will be uncommenting the next example to run. Scroll to the main function where we will be commenting the runLcdExample(); and uncomment the runLdrExample(); method. This next method runs the example of how to measure light intensity. When the LDR is connected like in the previous directions, you are able to run the application again by pressing the Run button in the button bar. Take a look at the LCD display where we see different text appearing depending on the light intensity surrounding the LDR.

When there is a lot of light, the display could show information as shown in the following screenshot...

Using digital out to switch and display a relay status

For switching a relay, we only need to use one pin on the Raspberry Pi and have its mode set to OUTPUT and turn this high or low to open or close a relay. Most relays need 5V to be able to switch, so we will be using a 2N3904 NPN transistor. With this transistor, we are able to switch a 5V lane with 3.3V so we can switch a relay.

A word of caution: Switching with mains voltages can be very dangerous. Only do this when you are absolutely sure what you are doing. Also, when beginning with relays, make sure you use a mechanical relay as these are able to switch any load up to the maximum rated on the relay.

In our schematic, we will only be switching the relay. This is done for safety reasons (please read A word of caution). When you are more experienced, loads can be added to the relay or a solid-state relay, which suits AC loads better. I would advise that you...

Automatic switch based on environment lighting

In this section, we will be combining the built hardware components to automate the switching of the relay based on the environment lighting, including printing states to the LCD. Let's close all the code tabs in the editor and leave only the Main class open. If not already done, comment the relayExample(); method and uncomment the lightDependentSwitching() method. This last method will instantiate the LdrHandler class and pass on a RelaySwitch object. If you already have been playing with the darkThreshold member value in the LdrHandler class, you can press the Run application button and the application should start switching automatically and update the LCD statuses. When we play a little bit with the environment lighting by putting our hand over the LDR, the relay should close, and when light is reaching the LDR again, the relay should open.

We now have this...

Using the Bluetooth chip on the Raspberry Pi

Since the Raspberry Pi 3, a Bluetooth chip that supports BLE 4.1 has been present on the board. Using Bluetooth from Java can be a challenging thing to do. The latest specification of Bluetooth integration is from the JSR (Java Specification Request)-82 from 2010, which is version 4, and is implemented in J2ME (Java 2 Micro Edition). Although this specification is implemented in J2ME, there are libraries available that provide this specification, although not completely, for J2SE. One of these libraries is called BlueCove.

BlueCove tries to comply with the JSR-82 specification published in 2010. Initial support from BlueCove is for non-ARM based devices. To be able to use Bluetooth on ARM-based devices such as the Raspberry Pi, we will need to create the necessary libraries ourselves or we can use pre-built libraries. The download already contains the libraries we need...

Bluetooth device discovery

We will be only using the device discovery feature as this is the most stable part in the libraries on the Raspberry Pi. Also, there is only one mode available, which I will explain later. Let's close all tabs except for the Main class.

In the main method, have all the methods commented except for the runBluetoothDetectionExample(); method. Follow this method, which causes us to scroll down to the contents of this method:

    /** 
* Runs the Bluetooth device discovery example.
*/
private static void runBluetoothDetectionExample(){
BluetoothDevices example = new BluetoothDevices();
example.init();
try {
System.out.println("Starting device search,
please wait.");
example.runExample();
System.out.println("Search done");
} catch (DiscoveryFailedException ex) {
System...

Putting it all together, our first automation project

It is time to put it all together. As we explained, we want to switch based on presence detection and only when the ambient light reaches a certain level. This is a code-only section. We will be walking through the code and will code some lines ourselves.

If you haven't already, write down or copy the device's Bluetooth address by running the runBluetoothDetectionExample(); one more time as we will be using this address to get a positive detection. When we have the address, we will be writing a couple of lines of code that run all the components we have looked at as a single application. Let's close all open tabs and only open the Main class. Comment the runBluetoothDetectionExample(); method and scroll to the bottom of the class, where we will be adding the following code:

    /** 
* Runs the application.
* @throws LcdSetupException When...

Summary

In this chapter, we have interfaced with a 16x2 character display directly connected to the Raspberry Pi and covered the code used to change the content. We have covered how we are able to read analog data with digital pins by implementing an RC circuit. By attaching a relay with a transistor we have seen how we can switch a 5 V device with a 3 V signal pin that in turn is able to turn on a high-power device. And last but not least, we have taken the first steps with the Raspberry Pi integrated Bluetooth chip to detect nearby Bluetooth devices. This has all led us to our very first home automation project, allowing us to detect presence based on ambient lighting to switch a relay.

As you may have noticed, we looked quite deeply into each step of the code. This is meant as the introduction into the foundations of the Pi4J libraries and how these are used. We have not covered every part yet, only the basics...

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Explore the small yet powerful mini computer in order to run java applications
  • Leverage Java libraries to build exciting projects on home automation, IoT, and Robotics by leveraging Java libraries
  • Get acquainted with connecting electronic sensors to your Raspberry Pi 3 using Java APIs.

Description

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.

Who is this book for?

The book is aimed at Java programmers who are eager to get their hands-on Raspberry Pi and build interesting projects using java. They have a very basic knowledge of Raspberry Pi.

What you will learn

  • Use presence detection using the integrated bluetooth chip
  • Automatic light switch using presence detection
  • Use a centralized IoT service to publish data using RPC
  • Control a robot by driving motors using PWM
  • Create a small web service capable of performing actions on the Raspberry Pi and supply readings
  • Image capture using Java together with the OpenCV framework
Estimated delivery fee Deliver to Latvia

Premium delivery 7 - 10 business days

€25.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : May 31, 2017
Length: 286 pages
Edition : 1st
Language : English
ISBN-13 : 9781786462121
Category :
Languages :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Estimated delivery fee Deliver to Latvia

Premium delivery 7 - 10 business days

€25.95
(Includes tracking information)

Product Details

Publication date : May 31, 2017
Length: 286 pages
Edition : 1st
Language : English
ISBN-13 : 9781786462121
Category :
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 119.97
Full Stack Web Development with Raspberry Pi 3
€29.99
Raspberry Pi 3 Projects for Java Programmers
€32.99
Raspberry Pi: Amazing Projects from Scratch
€56.99
Total 119.97 Stars icon

Table of Contents

7 Chapters
Setting up Your Raspberry Pi Chevron down icon Chevron up icon
Automatic Light Switch Using Presence Detection Chevron down icon Chevron up icon
A Social and Personal Digital Photo Frame Chevron down icon Chevron up icon
Integrating a Real-Time IoT Dashboard Chevron down icon Chevron up icon
Wireless Controlled Robot Chevron down icon Chevron up icon
Building a Multipurpose IoT Controller Chevron down icon Chevron up icon
Security Camera with Face Recognition Chevron down icon Chevron up icon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela