-
Book Overview & Buying
-
Table Of Contents
Raspberry Pi and MQTT Essentials
By :
In this section, we will cover how to set up the Raspberry Pi. Although simple, it is crucial to perform each step as this will help us set up our own local MQTT broker on the Raspberry Pi. This will also help you understand how to get started with your new Raspberry Pi by installing an operating system onto it.
First, we will flash the popular Debian-based Raspberry Pi OS on our Raspberry Pi. After that, we will install all the necessary libraries and packages to make our device a local MQTT broker.
The topics we will be covering will be as follows:
First, we will discuss what will be required in terms of hardware to follow this setup process.
To follow the instructions provided in this section, you will need the following hardware:
So, let us proceed to the next step, which is installing the official Raspberry Pi OS image and setting up the SD card.
In this step, the main aim is to get the microSD Card ready for the Raspberry Pi.
Important Note
If you have purchased a Raspberry Pi bundle with a pre-burnt SD card and some optional accessories, you can skip this step, as the SD card you have is already loaded with the required OS. But, if you would like to install a different OS, you can follow this step to do so.
Before installing the OS onto the SD card, we need to format the SD card to make sure nothing corrupts the OS. There are two methods to do so. The first is the easy way, using software to do this task, and this can be done in Windows and macOS systems. The second method is a little more complicated, and it will cover how to do the same for Linux-based systems.
The SD Card Formatter software (managed by the SD Association) helps you wipe the SD card totally so it can be used for the desired purpose, which, in our case, is to burn an OS image onto it.
We need to perform this step when the SD card we are using has been previously used or has some data stored on it already. This can corrupt the OS, and so all the existing data needs to be wiped. Moreover, this is perfect practice and should be done every time we install a new OS.
Let’s look at the following steps:
Figure 1.4 – Download page for SD Card Formatter
Figure 1.5 – The dialog box that appears after successful installation of the software
Figure 1.6 – Common SD card adapters
Figure 1.7 – SD Card Formatter application page
Figure 1.8 – Formatting completion dialog box
We have successfully formatted our SD card! Now, we are all set to burn our Raspberry Pi OS image onto our card.
Important Note
Please keep in mind that if you are using an SD card adapter, make sure it is in unlock mode or you could face formatting issues. Unlocking the adapter means giving the computer access to the SD card. This is done by simply flipping a small switch on the side of the adapter.
We will use GParted to format our SD card on a Linux system. It is an open source disk management software. Just follow these steps:
sudo apt install gparted
Once the app has been installed, it will be available in the Applications menu. Just find and launch the application, as shown in the following figure:
Figure 1.9 – Launching GParted from the Applications menu
Figure 1.10 – GParted application home screen
The user interface is relatively easy to navigate and much more intuitive than the one we get with the preinstalled disk utility software. There are additional features that this software provides, such as creating bootable USB drives and downloading an ISO file, for example.
Figure 1.11 – Selecting the USB drive to format
Figure 1.12 – Unmounting the USB adapter before formatting
Figure 1.13 – Selecting the desired file format (fat32 in most cases)
This won’t start the formatting process. It will just add a new operation to the list of pending operations, as seen here:
Figure 1.14 – List of pending operations
Figure 1.15 – Clicking on Apply All Operations
Figure 1.16 – Clicking Apply to continue formatting
The formatting process will start. You can track the progress using the window that pops up:
Figure 1.17 – Formatting progress dialog box – GParted
You will see the window shown in the following screenshot once the formatting process has been completed:
Figure 1.18 – Formatting process completed dialog box
Your SD card is formatted! Close the application, and your USB adapter will be listed in the file manager. We can now move to the next step.
Now that our SD card is ready for the Raspberry Pi OS, the next step is to install the Raspberry Pi Imager software, which is the easiest way to install the OS onto our SD card.
Important Note
For more advanced users who are looking to install a particular OS, follow this link: https://www.raspberrypi.org/documentation/installation/installing-images/README.md.
In the next section, we’re going to follow the step-by-step process to install the Raspberry Pi OS on your SD card.
The first step is to install the software:
Figure 1.19 – Downloading Raspberry Pi Imager
Figure 1.20 – Raspberry Pi Imager application
Figure 1.21 – All the available OS options
Figure 1.22 – Choosing the SD card you want to burn to OS to
Figure 1.23 – Pressing the Write button
This will start the writing process. The application will first download the image file you chose and then write it onto the SD card. Please note that you will not see the download progress, just a Writing progress bar. So, it is an excellent time to grab a cup of coffee or go for a short walk, as this may take some time:
Figure 1.24 – You can see the writing progress in the application
This completes the SD card preparation for our Raspberry Pi. In the next step, we will boot into our new OS for the first time and update and upgrade some software to the latest version, enabling VNC to wirelessly SSH into our Pi (don’t worry, we will discuss this in detail in a later section).
After the OS has been written to the SD card, we will insert this card into our Raspberry Pi, as seen in the following figure:
Figure 1.25 – Inserting the SD card into the Pi (image from the official Raspberry Pi website)
We will also connect a display using either a display port (if you have a Raspberry Pi 4) or a simple HDMI display, and a USB keyboard and mouse. Finally, after all the peripherals are connected, we will connect our power supply (any USB C or micro-USB charger, depending on the model you are using) to the Pi. Please see the following figure for how to make the connections:
Figure 1.26 – Powering the Raspberry Pi after connecting the peripherals
Once all the setup is complete, connect the power supply to the Pi, and you should see the Pi booting up on the connected HDMI screen. It will take 20-30 seconds for the first boot. Once it is done, a welcome screen will appear saying Welcome to Raspberry Pi Desktop, as seen in Figure 1.27:
Figure 1.27 – Raspberry Pi welcome screen
Just complete the first-time setup by clicking on the Next button. It will first ask you to set the location settings and choose the language and keyboard accordingly:
Figure 1.28 – Setting up the location, language, and timezone
After the required information has been entered, press the Next button. It will take a few seconds for the system to set up the location.
Next, the OS will prompt you to change the default password of your system, which is raspberry. Select a strong password, and after entering all the required information, press the Next button:
Figure 1.29 – Setting up a new password
After this, the system will help you choose the best resolution according to your display type. You can skip this step, as we will only use this monitor or display once. In the next section, we will learn how to set up VNC and SSH on our Pi to access it wirelessly when we are connected to the same network.
Next, we need to connect to a Wi-Fi network, as shown in Figure 1.30. Select your network from the list of available networks, then authenticate by entering your password to connect to your network. If you have connected via Ethernet or would like to do it later, you can skip this step by pressing the Skip button.
Please note that you will require a shared Wi-Fi network to use VNC, and you will need a local network at the very least. If you skip the step, for now, you can always connect to a network through the Wi-Fi symbol on the top-right side of the desktop in the following figure:
Figure 1.30 – Connecting to a Wi-Fi network
Finally, the last step of the setup is to update the software to the latest version. As we have used the newest version of Raspberry Pi OS, no significant updates will be pending. It is still preferable to use this opportunity to update all the preinstalled software to the latest version (Figure 1.31).
Just click Next as given in the instructions, and the process will automatically start:
Figure 1.31 – Updating to the latest software
Important Note
If you fail to update your system through this setup, it is possible to do this later. For this, open the terminal (the black icon on the top-left side of the home screen) and type the following commands:
sudo apt update – This will fetch the list of all available updates.
sudo apt dist-upgrade – This will download and install the updates.
It will take some time to fetch all the updates and install them, so this would be an excellent time to go for a short walk.
After the updates have been successfully downloaded and installed, the system will prompt you to restart the system for all the changes to take effect. You can do so by simply pressing the Restart button, as shown in the following figure:
Figure 1.32 – Restarting the system after the first setup
This completes the first-time setup of our Raspberry Pi! In the next section, we will learn how to set up VNC on our Raspberry Pi to access it wirelessly through our PC. What’s more, we can also use our PC or laptop keyboard and mouse with the Pi.
In this step, we will learn how to set up SSH (Secure Shell) and VNC (Virtual Network Computing) on the Raspberry Pi. Note that the completion of the previous steps of the OS installation and setup on the Raspberry Pi is required to set these up.
Before getting into the practical part, let’s learn a bit more about VNC and SSH:
Figure 1.33 – How does SSH work?
We will be using the RealVNC Server software, which is preinstalled on our Pi. Raspberry Pi will act as a VNC server, and a client software would be needed to access it through the main computer.
Let’s get started on the steps to set up VNC:
Preferences | Raspberry Pi Configuration
Figure 1.34 – Selecting Raspberry Pi Configuration
Figure 1.35 – Raspberry Pi Configuration Interfaces
Figure 1.36 – Enabling SSH and VNC
This will enable both the protocols on your Pi. Now, the Raspberry Pi is remotely accessible. Congratulations! To verify that it is working, check the top-left part of the screen. A white-colored VNC logo should be visible now:
Figure 1.37 – Checking for the VNC logo when enabled
Figure 1.38 – Make a note of the IP address
This is what the Download page looks like:
Figure 1.39 – The VNC Viewer download page
Figure 1.40 – The VNC Viewer application
Figure 1.41 – The Authentication window
Figure 1.42 – Remote access to Raspberry Pi
You now have access to your Raspberry Pi wirelessly with the ability to use your computer mouse and keyboard with your Pi’s OS.
The next step is crucial, as we will install a software library that will allow us to use our Raspberry Pi as an MQTT broker. We will install the following two libraries developed by Mosquitto:
After this setup step and the testing step that follows, you will be able to host a local MQTT broker on your Raspberry Pi device. Moreover, you will also test whether your broker is successfully running by simultaneously running a client code on the Pi itself. Cool, right?
So, let’s get started with the steps to get this done.
Mosquitto is a popular MQTT broker well-supported on Debian-based Linux platforms such as Raspbian. To install this package, just open a new terminal, then type in the following command. It’s easy to install using the apt package installer:
sudo apt install mosquitto mosquitto-clients
This command requires root privileges for which we have used sudo in our command. After that, the installation process will start, and once it is complete, you should see an output as shown in the following screenshot:
Figure 1.43 – Terminal view while installing the packages
The mosquitto-clients package is optional for running the Pi as an MQTT broker, but it will help us test whether the broker is running locally.
This package allows you to use your Raspberry Pi as an MQTT client as well. So, if you want to create a local dashboard to control all the MQTT clients from your Pi, you will be able to do so.
The broker is still not active. To enable it, type in the following command in your terminal window:
sudo systemctl enable mosquitto
systemd is a Linux package manager that will help you monitor and control the different applications installed. Once the command has been executed, the broker should be running on your Pi. To confirm that, just run the following command:
sudo systemctl status mosquitto
This should produce an output on the terminal window similar to what is shown in the following screenshot:
Figure 1.44 – The output of the status command for the broker
The most important thing is that the Active option should show the active (running) status, which will verify that our broker is up and running!
Important Note
If the status command shows an output that says that your process is dead and your MQTT broker stopped, restart the MQTT service by typing the following command:
sudo service mosquitto restart
Now, recheck the status, and it should show the status of your MQTT broker as running!
This marks the conclusion of this section. We successfully set up our Raspberry Pi as a local MQTT broker. Additionally, we installed a package that will let us use the Pi as an MQTT client as well. In the next section, we will test our MQTT broker’s functionality through a short demonstration.
Now that the MQTT broker is running on the Raspberry Pi, we will test the connection using a straightforward project. First, open two terminal windows on your Raspberry Pi. Now, we will do the following:
test/message
To do this, you will require the mosquitto-clients package. Now, type the following command in the terminal:
mosquitto_sub -v -t test/message
This will subscribe to the topic entered after -t.
Just imagine the two terminals as different MQTT clients where one client is a subscriber to the topics which the other client publishes. To publish a test message of 'Hello World!', type the following command:
mosquitto_pub -t test/message -m 'Hello World!'
'Hello World!' on the terminal along with the topic name, as illustrated in the following screenshots:
Figure 1.45 – Raspberry Pi local MQTT test
Congratulations! You have successfully set up your Raspberry Pi. This marks the end of the first chapter of this book. Now, let us summarize what we covered in this chapter.
Change the font size
Change margin width
Change background colour