Home Blog Page 12

Grafana Weather Dashboard on the reTerminal by Seeed Studio

Today we’re going to be taking a look at the reTerminal, by Seeed Studio. We’ll unbox the device to see what is included and we’ll then set up a weather dashboard on it using Grafana. We’re going to use weather data that is being recorded by an ESP32 microcontroller and is being posted to an InfluxDB database.

The reTerminal is a compact HMI (human-machine interface) device that is powered by a Raspberry Pi compute module 4 (CM4). It has a 5″ capacitive touch display, along with four physical function buttons, some status LEDs, and a host of IO options.

Watch my unboxing and setup video, or read on for the write-up:

Where To Buy Your Own reTerminal

You can pick one up from Seeed studio’s online store or from Amazon;

reTerminal (Seeed Studio) – Buy Here

reTerminal (Amazon) – Buy Here

Other components used for the Grafana dashboard;

Power Supply – Buy Here

ESP32 – Buy Here

Grove Sensor’s From Beginner Kit – Buy Here

Breadboard – Buy Here

Breadboard Jumpers – Buy Here

Unboxing The reTerminal

The reTerminal is shipped in a white box with a sleek matt black sleeve around it. The box is a little smaller than the display area of an iPad and is about 5cm thick.

reTerminal in Box

It comes standard with a 4GB WiFi variant of the Raspberry Pi Compute Module 4, running a quad-core Cortex-A72 CPU, and has 32GB of built-in eMMC storage.

It features dual-band, 2.4GHz/5GHz WiFi and Bluetooth 5.0, Gigabit Ethernet, Dual USB 2.0 ports, and a crypto-auth chip. It also has a built-in accelerometer, light sensor, and real-time clock.

reTerminal Specifications

The reTerminal is packaged in a protective sleeve and is surrounded by dense back foam.

reTerminal unboxing

In the box, you get the reTerminal, a small pack of mounting screws, and a small screwdriver. There isn’t a manual or datasheet in the box, but there is quite a lot of information available on their product page and the reTerminal wiki.

reTerminal Contents of Packaging

First Look at the reTerminal

The reTerminal is a bit smaller than what I was expecting but also feels like a much better quality product than I had anticipated. It is quite dense and feels solidly put together, with good quality materials.

On the bottom, we’ve got a 1/4″ camera mount and a small hole to access the reset button on the left side.

reTerminal Bottom

Along the top is a power button to the left, used to turn the reTerminal on again once it has shut down, a large aluminium heat sink along the back for the CM4 module, and a threaded mounting point on the right.

reTerminal Top

On the left side, we’ve got a USB C port for power, a micro HDMI port, Gigabit Ethernet, two USB 2.0 ports, and two M4 threaded mounting points.

reTerminal Left Side

On the right side, we’ve got a 40 pin GPIO header that has the same pinout as the other Raspberry Pi boards which is great for interfacing with sensors and expansion modules. We’ve also got another two M4 threaded mounting points.

Right Side of reTerminal

On the back of the reTerminal we’ve got the large heatsink, two more threaded mounting points, a slot for the camera connector ribbon cable, and under a dust cover, a high-speed PCIe Gen 2 lane.

Back of reTerminal
reTerminal PCIe Gen 2 Lane

Let’s Take A Look Inside The reTerminal

I’m not sure if the screwdriver is meant to be used for the mounting screws or to open it up, but we’re going to open it up anyway to take a look at what is inside the reTerminal.

First, we need to remove the 4 rubber feet/plugs that cover the screws securing the back plastic cover.

Mounting Points

One thing the reTerminal is not short of is mounting points. There are literally threaded mounting points on almost every side of the device, so you won’t have any issues securely mounting it for a project.

Removing the first cover and heat sink allows you to access the boot switch to re-flash the operating system on the Compute Module’s eMMC storage.

Removing the Back Cover and Heat Sink

Removing the second cover exposes all of the remaining electronics.

reTerminal Internals

The Pi 4 Compute module, can be replaced if you’d like, but I think they’ve chosen a good variant to ship with. You might want to go with the 8GB variant if you’re going to be doing a lot of multitasking or running more resource-intensive applications, but that seems unlikely on a device like this.

Swap CM4 Module Out With Alternate Model

On the board, some of the main features we’ve got are 15-pin and 22-pin camera ports, a 30-pin display port, a microSD card slot, a real-time clock module and a cryptographic co-processor with hardware-based key storage.

All of the electrical schematics are also available in their documentation.

Hardware Overview

This is version 1.6 of the board in my reTerminal.

Let’s close it back up and turn it on.

Booting Up The reTerminal

The reTerminal comes with Raspberry Pi OS Buster pre-installed, so when you power it up the first time, you’ll need to go through the usual first boot setup process.

reTerminal First Boot

It also comes preloaded with a reTerminal demo app, which just shows some of the basic functionality and use cases for the device.

reTerminal Preloaded App

The touch display is really responsive and is quite accurate for its size. As I’ve mentioned in previous reviews, like my review of the RasPad 3, Raspberry Pi OS itself isn’t the greatest for use with a touch display as the icons land up being really small and quite difficult to touch accurately. But if you’ve going to build your own dashboards and interfaces, which is the point of the reTerminal, then you have the opportunity to make the icons a bit bigger and these should work well.

Creating A Grafana Dashboard

I’m going to use an ESP32 to collect temperature, humidity and pressure readings. These will then be posted to a time-series database in InfluxDB. Influxdb can be run locally on a Raspberry Pi or on their cloud server, we’re going to be using their cloud server. We’re then going to be using an analytics and visualisation application called Grafana to display the information that has been stored in the database. Grafana can also be run locally on our Raspberry Pi (or reTerminal in this case) or on their cloud server. We’re going to be installing and running it locally on our reTerminal. You don’t need to use a separate Pi for influxdb and Grafana, you could run both locally on your reTerminal if you’d like to – I just don’t want to have to leave the reTerminal running all the time in order to collect the data.

Data Processing Between ESP32 and Grafana

Collecting The Weather Data Using an ESP32 And Posting To InfluxDB

To collect the weather data, we’re going to be using an ESP32 with a DHT11 sensor connected to pin 4 and a BMP280 pressure sensor connected to the I2C interface (pins 21 and 22). I’m using two Grove sensor modules from the beginner kit as they already have all of the required electronics built into them (additional resistors etc.).

ESP32 Circuit Diagram

I’ve written up an Arduino sketch based on the InfluxDB interface instructions to read in the sensor values and post the data to InfluxDB every 30 seconds.

You can download a copy of the code from my GitHub repository.

If you set up your API token and bucket, the generated code on the Arduino interface page accessed from your InfluxDB dashboard will already contain the correct setup information, so you just need to copy it into your code.

InfluxDB Arduino Interface Instructions

After a while, we can see that the information is now available in our InfluxDB database, so we know that our ESP32 is working correctly.

InfluxDB Data Explorer

So we can now move on to installing Grafana on our reTerminal and setting it up to display the information in our database.

Installing and Setting Up Grafana On The reTerminal

Next, we’re going to install Grafan by following the terminal instructions outlined on their website for an installation on Debian or Ubuntu.

Then we just need to start Grafana and set it to re-start on bootup.

Installing Grafana

We can then access the Grafana web interface by opening up a new tab in our browser, pointing to localhost, port 3000.

Grafana Web Interface Localhost3000

We then need to configure it to read in the data from InfluxDB by entering the sever and authentication information. This can all be found through your InfluxDB web interface and is quite similar to the information your ESP32 is publishing data to.

Grafana InfluxDB Setup

Once that is done we can start building our dashboard by creating panels. Each panel is essentially a graphic, gauge or other graphic which uses a query to pull information from the database. You can then customise the appearance of each panel through a number of settings and optional plugins.

Grafana Creating Panels

Im going to set up a gauge and historic trend for each of the three metrics.

I’ll also set each trend to display the minimum, maximum and mean or average value recorded for the time period.

Grafana Panels For Weather Information

Grafana gives you a lot of options for building dashboards and is a really powerful visualisation tool for your data.

Now it still looks like a web page on our reTerminal, so to get it to fill the complete screen, we set the browser to fullscreen mode by selecting the three dots in the top right and selecting fullscreen mode next to zoom. We then also need to cycle the view mode in Grafana by clicking on the monitor icon in the top right corner.

Grafana Fullscreen Mode

Now lets just resize the panels to fit onto the single fullscreen display.

Resize Panels To Fit Fullscreen

And now we’ve completed our basic dashboard. If you’ve got a lot of data, it would be great to add multiple tabs to your dashboard and use the buttons on the reTerminal to cycle between them.

Grafana Dashboard Running on reTerminal

If you guys would like me to go through the setup of InfluxDB and Grafana step by step, let me know in the comments section.

reTerminal InfluxDB and Grafana Weather Dashboard

Also, let me know what you think of the reTerminal, and be sure to check out their product page.

Seeed Studios sent me this reTerminal to review and share with you, but I was not paid to review or endorse the product.

Turning a Beelink SER 3 into a Custom Ryzen 7 Mini Gaming PC

Today we’re going to be taking a look at the new SER 3 series Mini PC from Beelink which has an AMD Ryzen 7 3750H processor and Radeon RX Vega 10 graphics.

People often ask me if they can run Windows on their Raspberry Pi, and I generally answer this by saying that – yes, there are ways to run windows or windows look-a-like operating systems on a Raspberry Pi, but you’re better off running Windows on a system that was designed to run it. That’s what the SER 3 is, it’s a mini PC that has been specifically built to run Windows, and to run it really well.

Raspberry Pi 4B

I’m obviously not comparing the SER 3 to a Raspberry Pi. This is a way more powerful computer, and it also costs a few times more than even the most powerful Pi. But, this is a compact computer that can easily be used in similar mobile environments.

Here’s my video of the unboxing and new case build, read on for the write-up:

Where To Get The Beelink SER 3

Beelink’s full range of Mini PCs are available through their website and a number of them are also available on Amazon.

Unboxing the SER 3 Mini PC

The SER 3 comes in a black cubic box with prominent red text on the front. It has some information on the specifications on the back, but there isn’t much else printed on the box.

Beelink SER 3 Series Mini PC

Inside the box, we’ve got the SER 3 on the top, which is protected by a layer of foam on the top and bottom. Taking it out of the box, it’s got some weight to it and the full metal enclosure is cold to the touch. It immediately feels like a well-built and good-quality computer.

Beelink SER 3 In Box

Underneath the computer is the user manual and in a compartment below that we’ve got a power adaptor, HDMI cable, short HDMI cable, VESA mount to attach it onto the back of a monitor or onto a wall, and a pack of screws.

Unboxed SER 3 and Components

I like the addition of the mount and short HDMI cable so you don’t need to buy any additional hardware to mount it onto the back of your monitor.

The power adaptor is quite large, being able to supply 3A at 19V, or a total of 51W. It’s pretty similar to a typical laptop charger although the plug is integrated into the adaptor, whereas most laptops have another lead to the plug. It would have been nice to have swappable plug designs to suit different countries, but this isn’t really a big deal.

Power Adaptor

The user manual covers all of the basic functions and how to use the mounting hardware.

User Manual

Exploring The SER 3 Hardware

On the front of the computer, we’ve got two USB 3.0 ports, a USB C port, a 3.5mm audio port, and a power button. This USB C port is able to drive a third monitor (in addition to the two HDMI ports on the back). I like that you have the option to be able to drive an additional monitor with it, but I probably would have preferred it to be on the back if I was going to use a USB C monitor full-time. That said, for my use case, I like having the USB C port on the front.

Ports on Front of the SER 3

There are cooling vents on either of the two sides. On the back, we’ve got the processor fan exhausts along the top and an Ethernet port, two more USB 3.0 ports, two full-size HDMI ports, and the power port underneath them.

Ports on Back of the SER 3

The top of the case is also vented to provide airflow to the CPU fan. I like the fine mesh finish rather than having some sort of fan intake pattern. It gives it a more refined look.

Ventilation on Top

The computer is powered by an AMD Ryzen 7 3750H processor, which is a 4 core, 8 thread processor that runs at 2.3 GHz with a maximum boost up to 4GHz.

Graphics are provided by a Radeon RX Vega 10 GPU which can drive up to 3 external displays, two through HDMI and one through the USB-C port on the front.

Ryzen 7 Processor and Radeon Graphics

Let’s open it up and take a look at the internal components.

Under the all-metal shell, we’ve got a compact motherboard. This particular version has 16GB of DDR4 RAM and a 512GB NVME SSD. These are expandable to 64GB of RAM and a 2TB NVME drive, it also has a bay for up to a 1TB 2.5-inch drive on the right side.

Inside the SER 3 Mini PC

As far as connectivity goes, it’s got gigabit Ethernet, dual-band WiFi, and Bluetooth 4.0.

On the other side of the board is the processor and its cooling fan. The cooling system is a heat pipe and fan assembly as typically used in laptops.

Cooling on the Motherboard

Running The Beelink SER 3

When you first turn it on, it’ll take you through the usual Windows setup process on a fresh install of the operating system. It is shipped out with Windows 10 Pro loaded, so you’ll need to run an upgrade to get it onto Windows 11.

I decided to run a quick Geekbench CPU benchmark on it. With Geekbench opened up, you can see the 16GB of RAM listed as well as the processor clock speeds.

Windows 10 Background

I ran the CPU benchmark and got a single-core score of 906 and a multi-core score of 3024, which for a computer of this size is not all that bad.

Geekbench CPU Benchmark Results for SER 3

Designing and Building A New Case For The Beelink SER 3

Now that we’ve had a look at the specs, I thought it would be a good idea to take it overboard and design a new case for it. The stock case has a really clean and minimalistic look that fits in well on a modern desk, but I’d like it to be a bit more eye-catching.

So let’s open up Inkscape and get to work on a design for a new case.

I want to stand the computer upright, more like a traditional PC and I want to add clear acrylic side panels so that the internals are visible. A bonus is that both sides of the computer are interesting to look at, so I can add clear panels onto both sides of the case.

Design of new case in Inkscape

Take a look at my video on how to design your own Pi cases in Inkscape.

My idea was to build the body of the case out of dark-tinted acrylic so that it is still partially translucent and then add the clear panels on the sides to highlight the internals.

I also plan to add some LED strip lights to the inside to illuminate the components.

Now that we’ve got a design, let’s cut the parts out on my laser cutter.

Laser Cutting The New Case
Laser Cut Case Components

I’m going to use some nylon standoffs to mount the computer between the side panels and I’ll then measure and make up the filler pieces and port cover plate.

Nylon Standoffs

I realised that I didn’t make a cutout for the fan on the one clear side, so I had to revisit the design to add it afterward.

No Ventilation Hole In Side of Mini PC

I then measured up and cut the filler pieces.

Cutting Ports on Front Panel

The sides are just glued into place along one edge using acrylic adhesive. I usually use a Fast Set Acrylic Adhesive.

Fast Set Acrylic Adhesive

Now let’s add some LEDs to the inside of the case to light up the internals. I cut the LED strip into two sections of 6 LEDs each and glued the strips into place around the edge of the case. I had to solder a short jumper between the strips on each side of the case.

LED Light Strip For Gaming PC

And that’s the case complete. Let’s turn it on and see what it looks like.

Using The SER 3 Mini Ryzen 7 Gaming PC

SER 3 Mini Ryzen 7 Gaming PC

So now we’ve got a mini Ryzen 7 gaming PC. Obviously not having a standalone graphics card has its performance limitations, but it works well for light gaming and in a tiny package, so it’s great for taking along when you’re traveling.

Playing Games on SER 3 Mini Ryzen 7 Gaming PC

Beelink have also recently released their Ryzen 9 version of these mini PCs, called the GTR 5, I’d definitely recommend having a look at it if you’re interested in a more powerful mini PC – particularly if you’d like to use it for gaming. They’ve currently got an Indiegogo campaign running for them and they expect to start shipping them out this December.

Beelink GTR 5 PC Specifications

Let me know what you think of the case design in the comments section below. Do you prefer the original modern metal enclosure or the acrylic gaming style case?

Beelink SER3 Into Gaming PC

Add an OLED Stats Display to Raspberry Pi OS Bullseye

Raspberry Pi OS Bullseye has recently been released and with it comes a number of improvements, but most of them are under the hood. There aren’t that many visual differences, the most noticeable is probably the new default desktop background which is now a sunset over a dam or lake.

Raspberry Pi OS Bullseye

With this operating system upgrade, we’ve also got the usual bugs and software incompatibilities. These have caused my previous OLED stats display tutorial, that I used for my Raspberry Pi Desktop Case, to no longer work correctly. If you follow the previous tutorial, you’ll be presented with a host of errors.

Errors Running I2C OLED Stats Display

So in this tutorial, I’ll take you through the installation and setup process to get the same 128×64 I2C OLED display running on Raspberry Pi OS Bullseye.

Here’s the video tutorial, read on for the written steps and commands.

What You Need For This Tutorial

Connecting Your OLED Stats Display To Your Raspberry Pi

To start out, we’re going to go through the same process to connect the OLED stats display to our Raspberry Pi. To do this, you’ll need a 4 wire female to female jumper cable. The colours don’t matter, they’re just there to help you keep track of which wire goes to which terminal.

4 Wire Connector Cable and I2C OLED Display

The OLED display’s terminals are labelled on the front, which seems to confuse a lot of people since the pins extend out the back of the display.

128x64 I2C OLED Display Pinout

This is especially difficult to spot once the display has been installed into the case and the front area of the display is no longer visible. So make sure that you jot them down before installing the display into a case or holder.

Pin Labels Hidden By Case

The pin arrangement is most commonly GND, VCC, SCL and SDA. Don’t just copy this arrangement, make sure you check your own display as there are versions of these displays with the VCC and GND pins switched around. If you connect power to them incorrectly they’ll most likely be damaged and will no longer work, even if you correct the wiring afterwards.

Different VCC and GND Pinout On Display

Plug your ribbon cable into these four pins and then take note of which colour you’ve got connected to which pin. If you’re installing the display into your case before connecting it to your Raspberry Pi then it’s a good idea to write down which colour is connected to which pin so that you don’t forget.

Plug in the Ribbon Cable

Next we can plug the other ends of the jumpers into the Raspberry Pi’s GPIO pins. The Pi’s GPIO pinout diagram can be found quite easily online and is available from the official website.

Raspberry Pi 4 Pinout
Source: RaspberryPi.org

Make sure that your Pi is off and the power is disconnected before plugging or unplugging jumpers from the GPIO pins. You don’t want to short a connection or plug a lead into the incorrect pin by mistake and not have a chance to check your connections before powering it up.

Raspberry Pi GPIO Pins

You’ve got a few options for the GND and VCC jumpers. I usually plug the GND jumper into Pin 9 (you can use any pin labelled GND). And I plug the VCC jumper into Pin 1, which is a 3.3V power pin. These displays can operate on 3.3V or 5V inputs, so any power pins on the Pi’s GPIO header will work.

VCC and GND Connections To Raspberry Pi

Next, we need to connect the communication jumpers SCL and SDA, which just get plugged into the corresponding GPIO pins. Plug SCL into Pin 5 and SDA into Pin 3. Don’t get confused between the GPIO numbers and the Pin numbers, ignore the GPIO numbers on the diagram and just go by the SDA and SCL labels and the corresponding pin numbers.

SDA and SCL Connections To Raspberry Pi

Check all of your connections again and you’re then ready to power your Pi up and get started with programming the display.

Completed I2C OLED Display Connections

Programming The OLED Stats Display

Now that we’ve got the display connected, we can look at programming our Raspberry Pi to display the performance stats. I’m going to be doing this on a fresh install of Raspberry Pi OS Bullseye by using the Raspberry Pi Imager utility to flash the operating system image to a new microSD card.

Put the SD card into your Pi’s SD card slot and plug in your power adaptor. Once you’ve booted up your Pi, you should be on the Raspberry Pi OS desktop. It’s possible to do this installation on a headless Pi as well using the same steps.

Raspberry Pi OS Bullseye

Update Your Pi and Install The CircuitPython Library

Open up a new terminal window and start by making sure that your Pi’s software is all up to date by running the following commands:

sudo apt-get update
sudo apt-get full-upgrade
sudo reboot
sudo apt-get install python3-pip
sudo pip3 install --upgrade setuptools
Updating The Raspberry Pi

Next, we’re going to install the Adafruit CircuitPython library using the following commands:

cd ~
sudo pip3 install --upgrade adafruit-python-shell
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py
sudo python3 raspi-blinka.py

Hit yes to any prompts which may come up and yes (Y) to reboot at the end.

Installing The Adafruit Circuit Python Libraries

Check That Your Display Can Be Seen

This previous installation script should also have enabled I2C communication, which is needed to communicate with the display. You can check that it is enabled and your Pi is able to see the connected display by entering the following command:

sudo i2cdetect -y 1

You should then see a table, similar to the one shown below, which has a single set of characters in it (typically 3c for these displays). This code indicates the I2C address of your display.

Checking The I2C Display Address

If it hasn’t shown up then either I2C communication isn’t turned on, which can be done through the configuration utility, or your wiring is not correct. If you get a table full of characters (all addresses shown) then you’ve probably made a wiring mistake as this happens if SDA is shorted to ground. Go back and re-check your connections to your Pi and display and re-check that you’ve got I2C communication enabled after a reboot.

To enable I2C communication, use the configuration utility by entering:

sudo raspi-config

Don’t proceed with trying to get the script to work if you don’t get the correct response in this step. If your Raspberry Pi isn’t able to see the display that is connected to it then it won’t be able to communicate with it to get anything displayed.

Install The OLED Stats Display Script

Next, we need to install the CircuitPython libraries specific to the display. Start by entering the following commands:

sudo pip3 install adafruit-circuitpython-ssd1306
sudo apt-get install python3-pil

Now we just need to download the actual script. Rather than trying to edit it on the Pi, I’ve made it available on Github in its completed form, so you just need to run the following line to copy it to your Pi:

git clone https://github.com/mklements/OLED_Stats.git
Installing The Stats Display Script

Navigate to the new cloned directly by entering:

cd OLED_Stats

Then run the script by entering:

python3 stats.py
I2C OLED Stats Display Running

Automating The Script To Run On Start-up

Now we’ve got the display running, but it’ll stop as soon as we close the terminal window and we’d like it to run automatically on startup. We’re going to do this using crontab.

Open up crontab by entering the following command:

crontab –e

If this is the first time you’re opening crontab then you’ll be prompted to select an editor, select 1 and hit enter.

Add the following line to the end of the file to run the script:

@reboot python3 /home/pi/stats.py &

Don’t forget the “&” at the end to tell the Pi to continue starting up and to run the script in the background.

Adding The Script To Crontab For Automatic Startup

We’ll also need to copy the stats.py script and font into the home directory. You can also just reference the correct path in the previous step, but I find that this is less reliable.

Make sure that you copy both the stats.py script and the PixelOperator font into the /home/pi directory.

cd OLED_Stats
cp PixelOperator.ttf ~/PixelOperator.ttf
cp stats.py ~/stats.py
cp fontawesome-webfont.ttf ~/fontawesome-webfont.ttf
Copy The Script To The Home Directory

If you do leave them in the downloaded directory, you’ll need to amend the crontab command to read:

@reboot cd /home/pi/OLED_Stats && python3 stats.py &

Save the crontab file when you exit and then try rebooting your Pi to see if it is working correctly.

If you’ve followed the process correctly, you should now have a working OLED stats display that starts up automatically each time your Pi boots up. You can now go ahead and install it into your case if you haven’t done so already.

I2C Stats Display Running On Raspberry Pi OS Bullseye

Finish Off Your Pi Desktop Case Build

If you’re using an Ice Tower with your OLED stats display, plug the fan’s power cables into the 5V and GND GPIO pins next to the display’s connections as I’ve done.

Connecting The Ice Tower Fan To The GPIO Pins

Close up your case and your Raspberry Pi Desktop Case build is now complete.

Let me know how you find this tutorial in the comments section below. I’d love to hear your feedback and suggestions.

Stats Displays Running One Raspberry Pis

ClonerAlliance UHD Pro Video Capture Box Unboxing & Review

Today, we’re going to be taking a look at the ClonerAlliance UHD Pro video capture box which was sent to me by the team at ClonerAlliance to review and share with you.

I often get asked on my Raspberry Pi tutorial videos why I’ve used the full desktop version of Raspberry Pi OS when the project is intended to be run without a monitor or external display connected once it has been set up. There’s actually quite a simple answer. I use a screen recording utility, typically SimpleScreenRecorder, running in the background to capture the screen contents for the tutorial.

Simple Screen Recorder Raspberry Pi

Although it looks a bit odd to immediately open up a terminal window and do the whole setup from there, it works pretty well for a tutorial because you can then follow along in either version of the operating system.

It does however have one pretty significant drawback, and that is that it uses a bit of the Pi’s processing power in the background to capture the screen contents. It also slows down the read and write speed to the SD card or SSD in the process as the Pi is continually writing to it.

SSD Case CPU Usage

This goes unnoticed for general command line inputs, but if you’re running any speed tests or benchmarks then they land up being affected by the screen recording, which Is obviously not ideal.

Screen Recording Affects Benchmarks

Another issue is that I can only start recording once the desktop is reached, so I can’t include any initial setup or boot-up footage or prompts and I can’t record the screen contents of builds that do not have a traditional desktop interface.

So when ClonerAlliance asked me if I’d be interested in reviewing their new UHD Pro video capture box, it definitely caught my attention.

Have a look at my unboxing and review video, otherwise, read on for the write-up.

I’ve also tried using a video capture card in the past, but these become messy because you need a second computer to record the video output and there is usually a significant amount of latency involved. This means that the inputs made on the Pi only show up on the video output on the secondary computer’s monitor after a second or two, which makes it almost impossible to work with.

ClonerAlliance UHD Pro Functions

The ClonerAlliance UHD Pro addresses all of these issues in the form of a standalone device that sits between the video source and the monitor and allows you to capture 4K video with very low latency directly to a USB attached drive. So it’s ideal for gamers on consoles, and even computers, as you don’t have to try to run any capture software in the background. Your computer’s processor and graphics card are fully dedicated to the game you’re playing.

The CLonerAlliance UHD Pro also has provision for audio and microphone inputs and has a USB interface for live streaming.

With all that said, let’s get it unboxed and have a look at how it works.

Unboxing The ClonerAlliance UHD Pro

The ClonerAlliance UHD Pro comes in a box that is similar in size to an iPad’s.

ClonerAlliance UHD Pro Unboxing

The device is in a protective sleeve within a cardboard insert that divides the box into three sections, the other two of which contain the cables and accessories.

ClonerAlliance UHD Pro Unboxing - Inside

Included in the box you’ve got the Cloner Alliance UHD Pro capture box;

ClonerAlliance UHD Pro Recorder

A remote control, which is pretty basic, but has all of the functions you’ll need including arrows and buttons for navigating through menus, a set of buttons to control video capture and playback and some audio controls;

Remote Control

You’ve also got an HDMI and micro-USB cable. You’ll need two HDMI cables to use the box as a passthrough device, so they’re relying on you having the first as part of your current setup;

HDMI and MicroUSB Cable

A 5V, 2A power adapter, which is customised to suite your country of order’s outlets (it looks like US, UK, EU and AU options are available). I’m not sure why they didn’t just make this a USB C power adaptor given that it’s running at 5V anyway, that would make it a lot easier to power as part of a mobile setup.

Power Supply

And a quick start guide. The quick start guide is a summary of the basic setup and operating instructions. It’s pretty well written, is in full colour and has images to support the text.

Quickstart Guide

The ClonerAlliance UHD Pro Ports & Interfaces

Taking a closer look at the capture box, on the front you’ve got 3.5mm audio ports for line in, line out and a microphone input as well as three buttons, one for the compression mode, one to capture still frames and the last to start and stop recording.

There is also a tinted window in the middle for the IR receiver for the remote control.

UHD Pro Front

On the right side, we’ve got a USB type-A port to plug in a storage device and a micro-USB port to plug into a computer if you’d like to capture video directly to your computer or use the box for live streaming.

They don’t really mention anywhere what speeds are required for the external drive, they just say that it should be a high-speed drive. I’d imagine that you would want to use a USB 3.0 flash drive or SSD if you’re recording 4K video, you’ll likely run into bandwidth issues on USB 2.0 drives.

UHD Pro Side

On the back, you’ve got your full-size HDMI in and out ports as well as the power supply input and a power button.

UHD Pro Back

The bottom of the case is raised with large rubber feet and is vented to provide some cooling.

UHD Pro Bottom

Setting Up The ClonerAlliance UHD Pro

Setup is really straightforward, you just need to plug a fast storage device into the USB port on the side. As mentioned earlier, you’ll probably need to use a USB 3.0 flash drive or SSD for 4K recording.

Plug Drive Into Side of ClonerAlliance UHD Pro

Then hook up your source and monitor to the HDMI ports and plug in your power supply.

Connect Up Ports and Power

When you switch it on, you’ll notice a green or blue LED band around the rim which is used to indicate the compression mode being used – blue for H.264 and green for H.265. This can be changed using the leftmost button on the front or from the remote control.

It’s a nice addition to support H.265 video compression. This more modern compression standard dramatically reduces the file size of the video files without any reduction in quality, which is particularly useful when you’re recording 4K video or when you’re streaming on a subscription plan where your data usage matters.

LED Band For Recording

The Cloner logo on the top also lights up in green or blue to indicate 1080P or 4K output and recording resolutions respectively. It also flashes between green and blue when there is no input or the input is unsupported.

LED Logo For Resolution

Once your computer, console or set-top box is running, your display will look exactly the same as it does without the UHD Pro. You’ll now be able to hit record on the remote control and a side panel will show up temporarily, to display the recording settings, and the contents of your screen are then being recorded. This is indicated by a small red “REC” icon on the top left, which can be turned off if you’d like.

Overlay While Recording

You can also access a range of overlaid settings menus with the remote control. These settings allow you to make changes to the recording output, set the system date and time, modify the display settings (like the “REC” icon) etc..

This is also where you can schedule recordings so that you don’t miss any live TV or sporting events. If you leave your ClonerAlliance UHD Pro connected, you can set it to start recording automatically on a particular date and time.

Settings Menus

Test Footage From The ClonerAlliance UHD Pro

I tested the ClonerAlliance UHD Pro on a number of devices, including obviously one of my Raspberry Pis, my Apple TV and Xbox and it worked really well with each of them.

Recording Options

The capture box also records any sound being provided over HDMI as well.

Video capture from the Apple TV and Xbox worked immediately. I had to change the display output settings through raspi-config on the Raspberry Pi to get the input to be seen by the ClonerAlliance UHD Pro, but it then worked without any further issues.

I’m not really sure what the issue was, the output resolutions are all listed as compatible with the Cloner Alliance UHD Pro, so it seemed to be an issue with the encoding, although this only seems to affect some output resolutions on the Pi and not others.

Screen Recording Affects Benchmarks

There is one limitation to its 4K recording ability and that is that it can only record 4K video at 30 frames per second. It’ll allow inputs of 4K 60 frames per second and it supports passthrough of the full 4K 60 fps, so it won’t interfere with your framerate for gaming, but it will only capture up to 30 fps in 4K. Alternately you can also configure it to record at 60 fps, but at a reduced 1080p resolution.

Recording Gameplay

Because it just requires an HDMI input, it also works on older platforms. So the ClonerAlliance UHD Pro video capture box is also ideal for capturing retro games, as well as for creating digital copies of old VHS tapes or DVDs. If your media player has an HDMI output and can be seen by your TV then it’ll likely work with the recorder box.

Recording Old Style Games

When you’re done recording, you can also playback your footage directly from the device. So you don’t have to wait to get it onto a computer first.

This interface could be a bit more user friendly, but it has all of the information you need and it is relatively easy to find the video that you’re looking for.

Video Playback Directly From ClonerAlliance UHD Pro

Final Thoughts

The ClonerAlliance UHD Pro is a powerful and compact standalone video recorder that is particularly useful for gamers on consoles and PC’s that don’t want to have to run screen recording utilities in the background. Its’ simple and easy-to-use interface makes it a breeze to get set up and running and I’ve been impressed with the quality of the screen recordings that I’ve taken over the past week.

If I had to nitpick, I’d say that it would have been more functional to replace the barrel jack power supply with a USB C power supply so that it could be used as part of a mobile setup and I would have liked to see an SD or microSD card slot for the footage to be saved to in addition to the USB drive.

I’m definitely looking forward to using it on my upcoming tutorials and project videos!

Let me know what you think of the ClonerAlliance UHD Pro in the comments section below.

ClonerAlliance UHD Pro 4K Video Recorder

3D Printed IoT Weather Station Dashboard

This is my dashboard for my 3D Printed IoT Weather Station project, you can build your own by following my build guide.

You can also view the data on my public Thingspeak Channel.

Temperature

Humidity

Barometric Pressure

Wind Speed

Light Level

I Upgraded My 3D Printed Weather Station Using Your Suggestions

Today we’re going to be making some upgrades to my previously built IoT weather station using suggestions that you guys made in the comments section. We’ll see how well the weather station performs after the upgrades and I’ve included a link to the public Thingspeak channel, so you can have a look at the most recently recorded data.

Here’s my video of the upgrades I’ve made, read on for the written guide:

Upgrade Components Needed

In addition to the components that we’re going to re-use from the last project, you’ll need the following:

I also use the following tools and equipment in this build:

What Hardware Are We Going To Be Replacing?

Let’s start off by taking a look at what hardware we’re going to be replacing within the original weather station.

3D Printed Weather Station Internals

The original build used a DHT11 temperature and humidity sensor. Quite a few people mentioned that this sensor isn’t particularly accurate and is quite slow.

DHT11 Temperature and Humidity Sensor

Most suggested replacing it with a BME280 sensor, so that’s what we’re going to do. This sensor measures temperature, humidity and pressure, so I can also remove the separate pressure sensor from my original build. I’ll leave the light sensor at the top in place.

BME280 Temperature, Pressure and Humidity Sensor

The next change that was suggested was again made by a number of people, and that was to replace the reed switch on the anemometer, or wind speed sensor, with a Hall Effect sensor. The reed switch, being a mechanical device, has a limited number of operating cycles before it wears out. Given that it could be switching up to 150,000 times a day, it probably won’t take too long to wear out either.

Anemometer Reed Switch

I haven’t used a Hall Effect sensor on a project before, and there are quite a few different options available, so the one I choose was an Allegro A3213. This sensor is polarity independent and has a latched digital output, so it’s quite a good fit as a replacement for a reed switch.

Allegro A3213 Hall Effect Sensor

The final hardware change that I’m going to make is to replace the original 1850 lithium-ion cell with a higher capacity 3000mAh lithium polymer cell. This cell will give the station about 30-50% more energy storage capacity, so it’ll be able to run longer between charges. It also has built-in overcharge and over-discharge protection.

Replace 18650 Cell With 3000mAh Lipo

While we’re on the topic of powering the weather station, I’m going to be adding a solar panel and solar power management board nearby to re-charge the battery. This isn’t a modification to the actual weather station as such but is another useful addition.

5V Solar Panel To Charge Station

Replacing The Weather Station’s Sensors & Battery

I’m going to install the BME280 module with the sensor facing towards the stand. This allows me to re-use the original sensor’s mounting holes and I won’t have to modify the sensor pints. This also shields it from any direct sunlight that manages to get into the housing and gives it a bit more protection from moisture. The sensor is still spaced slightly away from the stand, so there aren’t any pockets of air trapped around it.

Mounting BME280 Sensor

Replacing the reed switch with the Hall Effect sensor is a bit more involved. I have to first remove the reed switch, which I moulded in place with resin because I didn’t intend to ever remove it. I also didn’t want to have to print a whole new housing just for the new sensor.

After a couple of failed attempts, a drill eventually worked to crack the switch’s glass tube and I could then pull out all of the pieces. I also cracked the top of the housing in the process, but fortunately, resin prints repair quite well with additional resin, so that’ll be an easy fix.

Removing The Reed Switch

I soldered some wiring to the sensor before installing it in the housing so that I can again pour some resin around it to hold it in place and seal off the top of the sensor housing. It’s important to make a note of the wire colours connected to each leg of the sensor as you’ll need this when connecting them to your Firebeetle board.

Soldering Wiring To The Hall Effect Sensor

I bent the legs of the Hall Effect sensor at 90 degrees about 3mm from the sensor so that they could be directed through the hole in the housing and the face of the sensor would then be facing towards the bottom of the anemometer.

I shouldn’t need to do anything with the magnets in the anemometer, if they worked for the reed switch then they should easily work with the Hall Effect sensor as well, as they’re typically a bit more sensitive.

Hall Effect Sensor In Place

I then filled the void and area around the sensor with some resin to hold it in place. I then left this outside in the sun for a few hours to cure before lighting sanding it with my Dremel for an even finish.

Hall Effect Sensor Moulded Into Place

Now that the sensors are in place, we can make up a new wiring harness to connect them to the Firebeetle board. I also made some changes to the wiring to power the sensors. Rather than connect them directly to power and have the sensors stay on the whole time, a suggestion was made to turn the sensors on and off using the IO pins, as they don’t draw much current.

So I’ve got the BME280 sensor’s power pin (VIN) connected to digital pin 16 and the light and Hall Effect sensor’s power pins connected to digital pin 17. This means I can now turn the sensors on only when measurements are taken, so this should further extend the battery life.

The other connections remain as per the original design. The BME280 sensor is connected to the I2C pins, the light sensor to pin 36 and the Hall Effect sensor to pin 0 on the Firebeetle board.

New Wiring Harness For Firebeetle Board

Improvements Made To The Code

Now that we’ve got the sensors connected up to the board, we obviously need to make some changes to the code so that they can be used.

Here is my revised version of the code:

The first and probably most significant is a look-up table for the wind speed. Ian Finnimore had a number of ideas to improve this part of the code, pointing out that the relationship between the wind speed and the rotation time is not linear. He also included a formula to use as a starting point. I used this along with some measured data to eventually calibrate the sensor, and the code now uses this lookup table to find the actual wind speed based on the rotation time. This also allows calibration adjustments to be made to select individual speeds or the complete range.

Wind Speed Calibration Map

I also reduced the cycle time to about 8 seconds, as this is all that is needed by the wind speed sensors. Even at the lowest measurable wind speed, the anemometer would rotate at least three times during this period, which is enough for the calculation.

Next I made the changes to the digital pins to turn the sensor on and off as they’re needed, rather than staying on all of the time. This just involved setting each sensor’s digital pin high a little before taking the reading from them and then turning them off again.

Lastly, I moved the WiFi connection right to the end of the cycle so that the WiFi connection isn’t active for the full cycle time, which saves power. I also added a timeout to the WiFi connection attempt routine. In my previous code, the board would stay on and keep attempting to connect to the WiFi network even if it was temporarily unavailable or there was an error. Getting stuck in this loop obviously dramatically drained the battery and resulted in the station dying in a day or two if it occurred. It’ll now try for only 10 seconds and if there is no connection available it’ll timeout and go to sleep anyway.

Testing The Weather Station’s New Power Consumption

We’ve made a few improvements to the hardware and software, which should result in lower power consumption, especially during the sleep period, so let’s test it.

I connected my multimeter to the supply and turned the board on.

The current draw spikes to a little over 100mA when starting up and then quickly settles around 45-55mA while it is taking readings, which is for the majority of the “on” period.

Current Draw When Running

The most significant improvement was during the sleep period. It now goes down to just 0.01mA or 11µA, which is a large improvement over the last version. This is using almost 100 times less power during sleep mode than the previous version.

Note that the multimeter below is now in µA rather than mA shown above. So this is 11.3 thousandths of a mA.

Current Draw During Sleep Mode

So if we calculate the expected battery life using a 10 minutes cycle time, with 10 seconds of “on” time and 590 seconds of “sleep” time in each cycle, and an average draw of 60mA while on, with the new battery we should get a little under 3000 hours or 124 days of run time. So that’s around four months off a single charge, which is also a great improvement.

Run Time Calculation

Mounting And Adding Solar Power

I previously mounted the weather station directly onto a flat surface using the three feet on the base. This time, I want to rather mount it onto a pole so that there are no flat surfaces around it to affect the wind speed and I want to add a solar panel mount onto the same pole.

So I designed and 3D printed a bracket to mount the weather station onto a 25mm pole, which is easy to then mount onto a railing or fence post.

Now I know that improving the battery life means that it hardly ever needs to be charged, but to make it a truly plug-in and forget weather station, I wanted to add a solar panel so that the battery is kept charged without me having to remember to charge it.

I’m using this 5V panel which I have from a previous project. It claims to be a 1A panel, but that seems a bit optimistic for its size. In any case, it’s way more than what we need to replace the 25 or so milliamp hours used each day. It’ll work well to provide some additional capacity for longer periods of overcast days and allow for a drop in efficiency over time.

5V Solar Panel To Charge Station

I’m going to use a DF Robot solar power management board to control the charging of the battery. This board basically takes the power provided by the solar panel and uses it to charge the battery and provide a regulated supply to the Firebeetle board.

DF Robot Solar Charge Controller

I’ve also made a 3D printed bracket and housing to hold the panel and the solar power management board and these will be installed on the same pole underneath the weather station.

The bracket for the solar panel and the holder for the solar power management board are glued onto the solar panel using some epoxy. I used four nylon standoffs to hold the board in place and provide supports for the cover.

Glued Into Place On Holder

The cover can then be held in place using four screws that came with the solar power management board.

Solar Power Management Cover

I drilled an 8mm hole in the bottom of the weather station base to run the wiring to the battery and to the Firebeetle board. Be careful drilling through resin prints as they’re quite brittle. It doesn’t take much force to crack them entirely (like I did with the sensor housing).

Drill Hole In Bottom Of Weather Station Housing

The solar panel bracket is then mounted onto the pole and the weather station is mounted onto the 3D printed bracket on the end of the pole. An M3 screw and nut are used to hold each in place, the nut sits on the inside of each bracket and helps press the screw against the pole to secure them. The wiring is fed through the base and then plugged into the battery and the Firebeetle board.

Assembled Components On Pole

Using The Modified Weather Station

I mounted the weather station’s pole outside and it has been running for about three weeks at the time of writing this post.

This is a sample of the temperature graph, you can view my full weather station dashboard here, or visit my public Thingspeak channel.

Since the weather station’s power consumption has gone down quite substantially, I’ve been thinking of trying to power it using some sort of supercapacitor arrangement rather than a battery.

Let me know if you’ve done this or if you’ve got any suggestions for this in the comments section.

Raspberry Pi 4 SSD Case With Stats Display

In this project, we’re going to be taking my previous Raspberry Pi Desktop Case design and adapting it to accommodate an SSD underneath the Pi.

The case uses the same Raspberry Pi and Ice Tower combination that I used on the last version, but this time I’m going to add a Geekworm mSata SSD shield and a 128gb SSD. I’ve chosen an mSata shield and drive as these are typically quite a bit cheaper than NVME drives, and you don’t get that much benefit from using an NVME drive as you’re limited by the maximum speed of the USB 3 port in any case. You only really benefit from an NVME drive if it is connected through a PCIe port.

This case design is also compatible with the Geekworm M.2 NGFF SSD shield.

You can buy a premade kit to assemble your own Pi SSD Case from my Etsy store.

Watch my video of the build below or read on for the full project details:

What You Need For This Project

or

Equipment Used

Components Required

Preparing Your Components

I’m using an 8GB Raspberry Pi 4B, but you can use the 2GB or 4GB version as well as they’re identical in their layout. Unfortunately, this case won’t be compatible with the Pi 3 or 3b+ as their port layouts are different to the Pi 4.

Raspberry Pi 4B 8GB

I’m designing this case around the Geekworm mSATA SSD shield. This is version 2 of this shield, so it is powered directly through the USB port and is slightly lower profile than the earlier versions. It supports UASP and up to a 2TB mSATA SSD.

Geekworm mSATA SSD Shield

Cooling will be provided by an Ice Tower, which is a large heatsink that sits on top of the CPU. We’re going to move the fan off of this heat sink and onto the side of the case. It’ll be positioned so that it pulls air in from outside the case and blows it across the heat sink and out vents on the opposite side.

Ice Tower Cooling Fan

Assembling The Pi & SSD Stack

Let’s start off by assembling the Pi stack so that we can take measurements from it so that we know what we need to modify on the case.

First, we need to mount the legs onto our Ice Tower. These are just installed as per the instructions supplied with the Ice Tower and screw in underneath the heat sink.

Legs Installed on Ice Tower

Next, let’s remove the fan from the Ice Tower so that we can mount it on the side of our case later on. Set the screws aside as well as we’re going to re-use them.

Fan Removed From Ice Tower

The Ice Tower and the SSD shield both come with some screws and standoffs to mount them onto the Raspberry Pi.

For this case, we’re going to use the 4 female-to-female standoffs and 4 black screws from the SSD shield, leaving the longer screws and male-to-female standoffs unused. We’re also going to use 8 brass standoffs from the Ice Tower and four silver screws to secure it. We won’t be using the four nuts or the spare screw and standoff.

Although the male-to-female brass standoffs that come with the SSD shield might look similar to the Ice Tower ones, they’re actually a bit longer, so don’t muddle them up.

Screws Required For The Build

Screw the female-to-female standoffs to the SSD shield using a male-to-female standoff on the opposite side. The female-to-female standoffs go on the USB port side of the shield.

Standoffs Installed On Shield

The Pi is then held on top of the standoffs with the second set of standoffs from the Ice Tower.

We can then add the Ice Tower to the Pi, remembering to first add the thermal pad on top of the CPU. The four silver screws hold the Ice Tower in place.

Our stack is now complete and ready to install in our case, so let’s modify the case design.

Ice Tower Installed On Pi

Designing and 3D Printing The Pi SSD Case

Now that we know what we’re going to be mounting in the case, we can start modifying the previous design to fit the SSD shield in underneath the Pi.

I took some measurements from the stack and adapted the design by moving the ports higher up on the front, slotting the middle USB port cutout to accommodate the jumper, and modifying the holes in the base to allow the screws to screw into the brass standoffs from underneath.

Case Design Modifications Complete

If you’d like to 3D print your own case, you can download a copy of the 3D print files, including a version with the ports on the back of the case, from the following link.

With the case design done, let’s print it out in Black PLA with a 15% infill. We’ll need to print it on its side and add some supports to the front for the ports.

3D Printing The Case

We then need to clean up the case and remove the supports before putting our Pi into it. Also, remember to remove the supports from the bottom holes in the case if you added them there as well.

Removing The 3D Print Supports

Installing The Stats Display

Last time, I put the Pi in before the display, but it’s actually a lot easier to put the display in first so that you’ve still got space to screw the bracket’s retaining screw in.

I’m using a small I2C oled display that is perfect to be driven straight from the GPIO pins. Make a note of your pin labels on the front of the pins before installing the display as they’ll be hidden once it is in place.

Installing The OLED Display

There are also two different versions of these displays online, and they have the VCC and GND pins swapped around, so don’t just copy my wiring because you might damage your display. They don’t have reverse polarity protection.

OLED Display Differences

Slide the top edge of the display in underneath the top clips in the case and use the 3D printed bracket and black M3x8mm screw to hold it in place. Don’t screw it down too tightly or you might crack the display. This bracket just needs to gently hold it in place.

OLED Display Installed

Push the ribbon cable connectors onto the pins on the back of the display. It doesn’t matter which colour goes onto which pin, just make a note of which way around yours are connected for now.

Ribbon Cable Connected To Display

Installing The Raspberry Pi Stack Into Our SSD Case

Before putting our Pi stack into the case, we need to install the SSD. I’m using a 128GB drive as this is just a secondary computer for me. You can use up to a 2TB drive if you’re going to be using yours as a NAS or media centre.

Installing The SSD

You’ll also want to configure your Pi to boot from the SSD and flash the operating system image to your SSD before putting it into your case, as you can’t get to the SD card to remove it after the Pi is installed. The Pi also often isn’t able to supply enough power to power two SSDs simultaneously. So if you intend on copying the operating system image from another SSD, you’ll need to use a powered hub or self-powered drive.

Put the Pi stack into the case and secure it with the small black screws which go through the holes in the base and into the brass standoffs.

Securing The Pi Within The Case

Making Up The Acrylic Side Panels

Now we just need to close up the sides of the case with our acrylic side panels. I’m going to laser cut these from some 2mm clear acrylic. If you don’t have access to a laser cutter, you can either buy them as part of my kit or cut your own by hand using a fine-tooth saw to cut the profile and an electric drill to make the screw and vent holes.

Laser Cutting The Side Panels

The template and laser cutting file for these side panels is available in the same download as the 3D print files for the case. I’ve also included a 3D printable version of the panels. They won’t be clear if they’re 3D printed but give you another option if you can’t get the side panels made up.

Laser Cut Side Panels

To mount the fan onto the side panels, we need to push four M3 nuts into the pockets on the fan. These enable us to use the existing screws that come with the Ice Tower to hold the fan in place.

This is easiest done by putting the nuts down on a flat surface and gently pressing the fan pocket down onto each one.

Adding M3 Nuts To Fan Pockets

The nuts sit on the acrylic side of the fan, so the fan is held using the press-fit on the nuts, the screws don’t go all the way through the fan.

Securing Fan To Side Panel

The side panels are then each held in place with four M3x8mm button head screws, one in each corner. Don’t overtighten these screws as it is very easy to strip the 3D printed plastic and they’ll then be a bit loose.

Before putting the opposite side panel on, you’ll need to connect your display and fan to the GPIO pins. I connected my display to power and the I2C pins and the fan to 5Vs. If you need help with this and programming the display, follow my guide on connecting and programming the OLED stats display.

Connecting Display and Fan To GPIO Pins

We can now close up the second side with the next four M3x8mm screws.

Lastly, let’s plug our USB jumper into the shield and Pi. I 3D printed a small cap to cover the jumper and make it blend in with the case a bit better.

Pi SSD Case Complete

The Completed Pi SSD Case

Our Pi SSD Case is now complete, so let’s turn it on and try it out. Mine will work right away as I’ve cloned my SD card from the previous project which already has the stats display programmed to run on startup using crontab.

Pi SSD Desktop Case Complete

The display shows your local IP address, which is useful for network-related projects, as well as the CPU load, CPU temperature, memory and disk usage. The python script is fully customisable, so you can add or remove stats as you’d like and even integrate stats from other utilities like Pi-hole or Openmediavault.

Stats Display Running On Pi

Let me know what you think of the case in the comments section below. Are you going to try to build your own?

Pi Desktop Case With SSD
Fan Side of Pi Desktop SSD Case
Vent Side Of Pi SSD Desktop Case

How To Boot A Raspberry Pi 4 From An SSD

In this tutorial, we’ll work through setting up a Raspberry Pi 4 to boot from a USB connected SSD or other USB storage media. There is quite a bit of information on this online already, but I’ve had a lot of questions recently about how to do this, so I thought I’d share my method.

I’m going to be doing this on my latest plywood Pi case build with an M.2 NVME drive, but the process is the same for any USB attached solid-state, flash or disk drive. It also doesn’t matter what type of SSD you’ve got, as long as you’ve got an adaptor to convert the SSD interface to a USB interface, then you should be able to get your Raspberry Pi 4 to boot off of it.

Here’s my video tutorial if you’d prefer:

What You Need For This Tutorial

Preparing Your SD Card

To make it easier for beginners to follow, I’m going to assume that we’re starting from scratch. If you’ve already got your Pi running on a microSD card then skip past this first section.

I’m using a 32GB SanDisk Extreme microSD card, but you can use a smaller 16GB card if that’s what you have available.

32GB Sandisk Extreme SD Card

We’re going to start out by using Raspberry Pi Imager to flash the Raspberry Pi OS image to our SD card. This is done by selecting the operating system, which in our case is going to be the 32bit version of Raspberry Pi OS. We’ll then choose our target, which is our SD card, and then click on write. This will then download the operating image and flash it to your SD card. So, depending on your internet speed, this may take around 5 to 20 minutes to complete.

Raspberry Pi Imager

When it is complete, plug the SD card into your Pi. Don’t close up any covers on your case yet as you’ll want to remove it again once your Pi is booting from the SSD.

Format Your SSD

The next step may or may not be required, depending on what filesystem your SSD has been formatted in. If you’re unsure, try plugging the drive into your Pi when it has booted up and see if the drive icon appears on your desktop.

SSD Appearing on Raspberry Pi OS Desktop

If it doesn’t appear, you’ll need to reformat the drive to use the FAT32 file system. This is easily done in windows by right-clicking on the drive and selecting format, or on a Mac by using the disk utility and selecting MS-DOS (FAT) and the default scheme.

Formatting Drive Mac OSX

Once this is done, you can plug in your SSD and boot up your Pi if you haven’t done so already. Remember to plug the SSD into one of your USB 3.0 ports, which are the blue ones in the middle.

Your SSD should then appear on your desktop after a few seconds. If it doesn’t appear then it is likely using an incompatible filesystem and should be reformatted to FAT32. If you have done this and it still isn’t showing up then check your USB adaptor and ensure that the drive is properly inserted into the holder/plug.

Configuring Your Pi To Boot From The SSD

Now that you’ve got your Pi booting off your SD card and your SSD is being seen by your Pi, we can move on to configuring the Pi to rather boot from the SSD.

First, open up a new terminal window and, as usual, it is best to start out by making sure that your Pi’s software is up to date. Do this by entering the following commands:

sudo apt update
sudo apt full-upgrade

Once this is done, run the following command to update your Pi’s firmware.

sudo rpi-update

Enter y when prompted.

Updating Firmware

Once the firmware update has been completed, you’ll need to reboot your Pi.

sudo reboot now

When you’re back on your desktop, go to your menu, then accessories and then SD Card Copier. This will open a simple window with a from and a to dropdown list. Select your SD card as the “from” target and your SSD as your “to” target. Then click on Start and Yes to continue.

SD Card Copier Raspberry Pi OS

This will partition your SSD and copy the contents of your SD card to each partition.

Now we just have to tell the Pi to boot from the SSD instead of the SD card.

Open up a new terminal window and enter the following command to make sure that you’ve got the latest boot loader.

sudo rpi-eeprom-update -d -a
Checking Firmware Versions

Mine looks like it is already up to date.

Next, open up the configuration tool by entering the following command:

sudo raspi-config

Then go to 6 Advanced Options and then A7 Bootloader Version. Select the first option E1 Latest Use the latest version boot ROM software to use the latest software, then select Ok and then No so that it doesn’t revert to defaults.

Raspberry Pi Configuration Tool

Next, go back to 6 Advanced Options and select A6 Boot Order. Select the second option B2 USB Boot Boot from USB if available, otherwise boot from SD card.

You can then Finish and then select No when asked if you would like to reboot. Then rather shutdown your Pi.

Once your Pi has shut down. Remove the power cable and then the SD card.

Remove SD Card From Pi

Our Pi should now boot up from the SSD, so let’s power it up and see.

SSD Running In Raspberry Pi Case

You’ll notice right at the top when booting that it says that the boot mode is now USB-MSD and that no SD card is detected.

Raspberry Pi Booting Off SSD

When your desktop loads, you’ll also notice that you no longer have the SSD mounted as an external drive, so you won’t have an icon for it on the desktop anymore.

Running A Quick Speed Test On Our SSD

We can do a quick and basic write test by opening up our terminal and entering the following command to write a 100mb file:

dd if=/dev/zero of=./speedTestFile bs=20M count=5 oflag=direct

Our file took just over half a second to write at a speed of 190 megabytes per second

Next we’ll try reading the same file with the following command:

dd if=./speedTestFile of=/dev/zero bs=20M count=5 oflag=dsync

This takes a little under half a second, with a read speed of 215 megabytes per second.

Raspberry Pi SSD Speed Test

This is a very basic indication of the speed increase you get from an SSD. There is a lot more to the speed of a drive than simply writing or reading a single large file. Here are two good drive speed comparisons, one by Jeff Geerling and one by leepspvideo

Raspberry Pi Ice Tower

Let me know in the comments section below if you’ve got your Pi booting from an SSD and if there is anything you do differently when setting it up.

If you’re interested in putting together your own plywood Pi case like mine, you can buy a kit from my Etsy store.

Mecanum Omnidirectional Robot Car using the Quantum Integration System

In this project, we’re going to be building a wireless robot car that uses mecanum wheels to enable omnidirectional movement. If you haven’t heard of mecanum wheels before, they’re tireless wheels with a series of rubberized rollers around the circumference.

Mecanum Wheels LH and RH

These rollers are typically at an angle of 45 degrees to the wheel’s axle line and opposing wheels are of the opposite hand. This enables the usual forward, backward and turning movements of standard wheels, but also allow unique translational movements horizontally and diagonally depending on which direction the wheels are turned.

We’re going to be using the Quantum Integration system to take inputs from a joystick controller and drive the motors. We’ll be using two Builder bases, one as a transmitter on the controller and one as a receiver on the robot car, so the starter bundle is perfect for this project.

We’re also going to use three of their DIY PCB kits – the power supply, the four motor driver and the joystick controller.

Quantum Integration DIY PCB Kit

Here is my project video, read on for the full written instructions:

What You Need For This Project

You’ll also need some basic soldering tools to assemble your PCBs, these are the tools that I use:

Assembling The Robot Car

I’m going to use the same car that I’ve used for my previous obstacle avoiding robot and object tracking robot projects, but this time I’ll replace the Arduino with a Quantum Integration Builder Base.

If you’d like to 3D print the same chassis that I’ve used, use the below link to download the files. I printed them in black PLA with a 15% infill.

Let’s start out by assembling the power supply module. This module just takes a DC input of 7-12V provided through a 2.1mm barrel jack and converts it to 3.3V or 5V to be used by the Builder Base and Motor Driver.

Power Supply Module Kit

I’m going to be using a 3 cell LiPo battery to supply power to the car, but you can use three 18650 lithium-ion cells or 4 AA cells to power yours. It’s worth mentioning that 9V block batteries typically can’t produce enough current to drive four motors, so you’ll need something more substantial.

Power Supply Module Assembled

Next we’re going to assemble the Four Motor Driver kit. This kit features two L293D motor drivers along with a PWM expander and the supporting components required to independently drive up to four small DC motors, so it’s perfect for four-wheel drive robots.

4 Motor Driver Kit PCB

Once the motor driver is complete, we’re going to connect the motors to the driver and the driver to the builder base. This is done as per the project notes on the Quantum Integrate wiki, so it’s easy to follow.

If you’ve 3D printed your own robot chassis parts from my previous project, you’ll need to assemble your chassis and install the motors before you add the driver.

Original Robot Car Chassis

Connect the two wires from each motor to each of the motor terminal blocks as follows:

  • Front Left – M1
  • Front Right – M2
  • Back Left – M3
  • Back Right – M4
Installing the 4 Motor Driver Board

Then connect the motor driver to your builder base using the following pins:

  • XLAT – GP1
  • GSCLK – GP0
  • BLANK – GP2
  • SIN – GP3
  • SCLK – GP4
  • GND – GND
  • 5V – 5V
Quantum Integration Builder Base

I’m going to put the original wheels back on for the first part of the project and we’ll then look at expanding the functionality for the mecanum wheel movements.

Adding Original Wheels To The Robot Car

Assembling The Joystick Controller

We’ve got our robot car built, now let’s assemble the joystick controller to control it with.

The joystick controller is the last PCB kit to assemble, and it features two two-axis joysticks with pushbuttons as well as a third pushbutton in the centre. It’s also got an onboard voltage regulator, so it can be powered directly using a 9V battery.

Joystick Kit Assembled

To add our builder base, we need to remove it from the plastic housing and screw it onto the brass standoffs provided on the joystick PCB.

Removing The Builder Base PCB

One thing to be aware of is that the battery holder is right up against the terminals on the builder base, and so is the joystick cover on the other side. So you need to use some flexible or 90-degree terminals to fit in alongside them.

Installing The Builder Base On The Joystick PCB

Quantum provide a 3D printable housing for the joystick as well. I’ve printed that out in white PLA to put the PCB, builder base and battery into. The screws for this housing are also included with the joystick PCB kit.

Installing The Joystick PCB In The Housing

The back cover is then held in place with two more screws. The controller can be switched on and off using the slide switch at the bottom and the green LED is illuminated when the controller is on.

Joystick Controller Complete

Programming The Robot Car

Our robot car and joystick are now complete, so we can move on to programming them.

I’m going to start by testing that the system is receiving all of the inputs from the Joystick controller correctly. To do this I created a basic app that takes the three hardware objects, the two joysticks and the centre pushbutton, and displays their outputs on our app dashboard.

I also created the controller’s firmware and mapped the hardware objects to the pins that they are connected to on our controller’s builder base.

Quantum Integration have a similar project where they map the outputs to some analogue sliders if you’d like to try this as well.

With the app running, it looks like all of the axis are working correctly. We’re also able to see when each of the three buttons are pushed.

Joystick Output Testing

So now we can add our robot car to the app so that the joystick controller’s outputs drive the car.

I’m going to use Quantum Integrations base app for their robot car as a starting point, you can download the app and the firmware from their project page and this can then be imported into your server.

Importing The Mecanum Car App

You should then see the following app.

Robot Car App, Forward and Backward

This app takes the Y-axis of each of the two joysticks and maps the output to drive the left and right sets of wheels in pairs. So the left joystick drives the left two wheels and the right joystick drives the right two wheels.

There are also three dashboard buttons, drive left, drive right and drive forward which enable the car to be controlled from the dashboard.

We’ll also need to upload the firmware to our robot car’s builder base, again this can be downloaded from the Quantum Integration project page.

We don’t need to worry about the joystick as we did this for the test we ran previously. We can then run the app and try out our robot car.

Lastly, we’ll need to assign the hardware objects that our app is going to use.

Assign The Hardware

Controlling The Robot Car

Now that our app is running, we can switch on the controller and the car’s power supply and try it out.

Pushing forward or backward on the left joystick drives the left wheels forward or backward and similarly for the right joystick and the right wheels.

To drive forward in a straight line, push both joysticks forward. To turn slightly push one forward at a time, and to turn on the spot push one forward and one backward.

Mecanum Wheel Car

We can also use the buttons on the dashboard, which we can access through our phone, to control the car rather than the joystick. These buttons don’t give you as much control as the joysticks do as they’re just on and off signals, not analogue signals, but you get the idea.

Using The Mobile App To Drive The Car

Adding The Mecanum Wheels & Omnidirectional Movements

Now that we’ve got the basic robot car working, we’re going to look at adding the mecanum wheels. I’m going to replace the wheels on the robot car each with a mecanum wheel.

There are two different wheels, they are a mirror image of each other. They’re usually labelled with an LH or an RH on the inside of one of the hubs. You need to make sure that the wheels on the front and back are opposite hands so that they create a sideways reaction force when the rotate in opposite directions.

This is how I’ve installed them into my car.

Mecanum Car Top View

You might need to use an adaptor to connect your wheels to your motor shafts. I used a 3D printable one by Pro Know.

Next we need to add some logic to the app to drive the wheels on one side in opposite directions when we want the car to move sideways. We could use the x-axis on one of our joysticks but I thought that it would be easier to use the joystick pushbuttons. So you push the left joystick to move left and the right joystick to move right.

I wrote a custom function block to produce a forward and backward signal when a button input is triggered. I connected the input to the left joystick button output and the forward and reverse outputs to our four motors. I then duplicated the function block for the right side as well.

Adding The Mecanum Wheel Controls

Let’s save and run the app and see if it works. We don’t need to worry about the firmware as we’re using the same hardware that we used previously. Just make sure that the functions are mapped correctly and then run the app.

Driving The Robot Car

Our car is now able to move forward and backward, turn in either direction and move sideways without turning.

Mecanum Wheel Car Running

Let me know what you think of the mecanum wheels and this mecanum car in the comments section. Are you going to try to build your own mecanum car?

Laser Cut Plywood Raspberry Pi Case

I recently reviewed the Ortur Laser Master 2 Pro, but rather than just engrave and cut a range of test pieces, I thought I could use the laser to make something useful. I decided to make up a Plywood Raspberry Pi Case, which is loosely based on my 3D printable Raspberry Pi Desktop Case.

Here is my video of the unboxing and setup of the laser along with the build of the case. Read on for the full written instructions.

What You Need To Make Your Own Plywood Raspberry Pi Case

How To Assemble Your Case

I started out by drawing up an interlocking case, similar to my other desktop cases in Inkscape. This one is designed to hold my Raspberry Pi with an Argon case port adaptor to direct the ports to the rear of the case and hold two 40mm fans on the front.

Take a look at my video on how to design your own Pi cases in Inkscape.

Inkscape Case Design

If you’ve got your own laser cutter, you can download the files to cut your own case, or you can buy a pre-cut kit that includes the plywood sides and screws as well as the acrylic cover panel.

I loaded the files into LaserGRBL and tried cutting them with the recommended settings for 3mm plywood.

Laser GRBL Pi Case Layout

Cutting on the Laser Master 2 Pro took a bit of experimenting to get right. I had to play around with speeds and the number of passes until I found something that worked well with my 3mm plywood. In the end, I found that two passes at 250mm/minute seemed to work the best.

Laser Master 2 Pro Cutting 3mm Plywood

Once the parts were cut, we need to glue them together with some PVA wood glue. You could also use epoxy adhesive, but wood glue works best and leaves the best finish.

All Components Have Been Cut

I’ve tried to make the design as easy as possible to assemble, so the top and bottom are interchangeable and these two, along with the front panel can also be installed with either side facing inside or outside.

To start, lay the large side with the 5 holes in it down on a flat surface. Glue the four side panels into place as shown below, remembering to glue the edges to the large section and to the adjacent sections as well.

Assembly Process
Gluing The Pi Case Together

Once the four sides are in place, glue the second large section into place on top of the four sides.

Plywood Pi Case Complete

If you’ve got some large clamps handy then clamp the sides to keep them in place while the glue dries. Don’t clamp them too tightly or the wood will bend/distort and may dry this way.

Clamping The Case

Once the glue has dried, glue in the two small pieces to close up the gaps along the top and bottom front edges.

Glue The Corner Pieces Into Place

Allow the last bit of glue to dry and we can then start installing the components. I’m using a 2GB Raspberry Pi 4B with a low-profile Ice Tower for cooling.

If you’d like to protect the plywood and not leave it bare, now is a good time to give it a coat of clear lacquer or varnish. You could also paint or stain it in a colour of your choice if you’d prefer that to the bare wood look.

I’ve also added a 1TB M.2 NVME drive with a USB adaptor, two 40mm fans for the front to pull air into the case, and an adaptor from an Argon case to move the ports to the back of the case. If you don’t have an Argon case adaptor, try looking on eBay for someone selling a spare or use a 90-degree micro HDMI cable for your display.

Components To Be Installed In Pi Case

Start off by pushing five standoffs through the case and hold them in place with a nut on the back of each. The standoffs and the nuts are all included in the Ice Tower kit.

Nuts on Back Of Standoffs

We then need to add our USB power cable while the port cutouts are still open. I trimmed one side of a USB C cable down to fit into the Pi alongside the Argon adaptor as the adaptor comes very close to the USB C port. Push it through the HDMI port cutout before installing the Pi.

Installing The USB Cable

We can push the Argon adaptor onto the ports on the Pi and then position the Pi on the standoffs. The Pi is then held in place with a second brass standoff on each. Tighten these gently using needle-nose pliers.

If you haven’t remembered to install your SD card (if you haven’t already set up your Pi to boot from your SSD), the SD card can be inserted through the fan hole. We won’t need to remove or replace the SD card afterward as we’re going to be booting off the SSD once it is set up.

Tightening The Brass Standoffs

I then installed the Ice Tower and held it in place with the 4 included screws. A fifth screw holds the Argon adaptor in place using the 5th standoff. This is not critical, but provides a bit of extra support when plugging in and removing the HDMI cables.

Installing The Ice Tower Onto The Pi

We can then plug in the USB power cable.

Back Of The Pi Case

Once that is done, we can install the fans. I pushed M3 nuts into each of the pockets in the fans to screw into. This is easiest done by placing a nut on a hard surface and then pushing the fan pocket down onto the nut. The nuts go on the wood side of the fan, so the screws do not extend all the way through the fan and each fan is supported by the press-fit of the four nuts.

Fans With M3 Nuts In Pockets

When you install the fans, pay attention to which side the cable is on. Make sure that you have got enough length to reach your Pi’s GPIO pins. The fans are then secured with eight M3x8mm screws.

Screwing Fans Onto The Front Of The Case

We can then plug the fans into the power pins on the Pi. I used 5V pins for the front two fans and a 3.3V pin for the Ice Tower fan.

Raspberry Pi 4 Pinout
Source: RaspberryPi.org

Next, we’ll install the NVME drive into the USB adaptor and then into our case. Your USB adaptor may vary, this is one that I found on eBay, but they are generally similarly sized though.

I used a strip of thick double-sided tape to hold it in place on the underside.

Adding The NVME SSD

Now we can install the clear side panel. It’s worth mentioning that I had to cut this on my CO2 laser cutter as diode lasers can’t cut clear acrylic. Acrylic can also just be cut by hand using a fine tooth saw or jigsaw.

The cover is held in place with some M3x8mm screws.

Installing The Clear Acrylic Side Panel

With that done, the case finished. So let’s power it on and try it out.

Desktop Computer Running

With three fans, the case is quite noisy, but it looks pretty cool as a mini desktop computer. I also noticed that one of the LEDs on my bottom front fan is faulty, which is a bit disappointing. But I don’t have another one spare at the moment.

Raspberry Pi Desktop Computer

I really like the RGB legs in the fans and the clear side panel to see the internals. Let me know what you think of it in the comments section below.

My Plywod Pi Case