DFRobot is well-regarded in the Maker community for its hardware products for DIY projects, robotics, and IoT applications. DFRobot offers a variety of sensors, boards, and kits that are often praised for their ease of use and versatility. DFRobot also has an active Maker community, as evidenced by their community forums, where users share project reviews, tutorials, and other insights. This suggests that the brand is a product provider and a platform for Makers to collaborate and share knowledge.
One of their most impressive products is the Unihiker single-board computer. When I first came across it in the interwebs, it immediately drew my attention, and I asked DFRobot to send me one so I could try it out and write this article.
Why did I find the Unihiker difficult to resist?
Well, because of a combination of reasons. Let me explain why after I first explain what is the Unihiker.
What is the Unihiker?
The UNIHIKER is a single-board computer developed by DFRobot. It features a 2.8-inch touchscreen and supports Wi-Fi and Bluetooth connectivity. The device has various sensors, such as a light sensor, accelerometer, gyroscope, and microphone. It also has a built-in co-processor for interfacing with analog, digital, I2C, UART, and SPI sensors and actuators.
The device comes with pre-installed software, including a built-in Jupyter Notebook (an editor for writing Python programs, among many other things) and a browser-based programming environment. This allows for quick and easy programming using Python. It supports popular coding software like VS Code, VIM, and Thonny. The integrated PinPong control library controls the device’s built-in sensors and other connected sensors and actuators.
UNIHIKER has a built-in IoT service that uses the MQTT protocol for data storage and provides real-time web data access. All data is stored within the device itself.
As you can see, Unihiker is built for Internet of Things applications.
Why am I impressed with the Unihiker?
I am a prolific user of the Raspberry Pi. I use it in my courses and to run services in my lab, such as a Node-RED instance and MQTT broker to go with it. I also use it to manage my workbench and log lab environment data, among other things. Except for my Raspberry Pi Bench Automation Computer, all of my Raspberry Pi’s operate in a headless configuration (meaning, no screen and keyboard).
Naturally, I tend to compare new single-board computers with the Raspberry Pi.
One thing that the Raspberry Pi can’t do out of the box is to show its status. Aside from the power and activity LEDs, there is no way to know what the Raspberry Pi is doing just by looking at it. I always seem to be searching for device IP addresses.
Another issue is interaction. To do anything with the Raspberry Pi, you need either to connect a keyboard and display or use a remote desktop.
In addition, when you get a new Raspberry Pi, you can’t start using it immediately. First, you have to set it up, which usually means downloading and installing a full operating system, setting up networking, remote desktop, SSH etc. Plus, you also need to purchase an approved power supply
The Unihiker drew my attention because it has solved all the Raspberry Pi issues mentioned above.
The Unihiker has a 2.8-inch, 240×320 pixel colour display that is also touch-capable. This solves the user interface issue.
It has an operating system (Debian) pre-installed in its flash memory, with all the tools needed to get to work immediately (such as a Jupyter Notebook and an MQTT broker). This solves the time-consuming setup issue.
It is powered by connecting it to any USB computer port or power supply thanks to its UCB-C plug. Nothing fancy or expensive is needed.
In addition to the above, the Unihiker, like the Raspberry Pi, offers digital input and output pins and the ability to connect standard microcontroller components such as LEDs, switches, buttons, sensors and motor drivers. Unlike the Raspberry Pi, instead of a traditional pin header, the Unihiker uses an edge connector similar to what you’ll find on a Micro:bit (it is possible to use Micro:bit expansion boards with the Unihiker), plus three Gravity connectors. There is also a USB-A connector (in addition to the USB-C connector) that works with a keyboard.
And, again, unlike the Raspberry Pi, the Unihiker has a gyroscope, an accelerometer, a microphone, a light sensor, and a buzzer. All of those are programmatically accessible with the PinPong Python library.
For almost everything I use my Raspberry Pi’s for, the Unihiker provides a viable, and in many cases better, alternative.
I wanted to try the Unihiker out first in one specific use case. Over the last few months, I have been working on a new book on Node-RED and Raspberry Pi Pico W. I used one of my Raspberry Pi’s to run the instance of the Node-RED server I use for the book. I wondered: how well could Unihiker host Node-RED? I’ll explain my testing in a moment.
First, I want to show a few things people have done with the Unihiker.
To get a feel of what a device can do (or what you can use it for), it helps to look at what others have done. So I did a quick search and found a few very interesting projects. Some of them look like magic to me. Here is a short list:
- Azure Speech Recognition and Synthesis: Utilizes UNIHIKER’s speech recognition and synthesis capabilities and Wi-Fi to create an intelligent conversation assistant using Azure.
- Pet Pot – Smart Planter: A smart planter that uses high-tech sensors to monitor environmental conditions like temperature, humidity, soil moisture, air quality, UV index, and light intensity. It communicates its status through emojis.
- Desktop Geiger Counter: Uses UNIHIKER to create a Geiger counter for real-time monitoring of ionizing radiation levels.
- Wireless Face Tracking Mecanum Wheeled Platform: A project that remotely controls a Mecanum wheeled platform for facial recognition, all controlled wirelessly through the network.
You can find many more amazing projects on DFRobot’s community website.
Now, let’s look at my first Unihiker project.
Running Node-RED on Unihiker
Earlier in this post, I mentioned that Unihiker ships ready for use. The operating system, the services, an editor and Python interpreter, and many sample programs are already on the device. You can plug it into USB power to turn it on and start one of the sample programs.
When you power up the Unihiker, Debian will take a few seconds to boot.
You’ll see the “welcome” screen when the boot process is complete.
Then, use the “home” button (on the left side of the device) to enter the menu and the touchscreen to navigate the options. Of course, the first thing I did was play Snake:
This is an addictive game, and I struggled to stop playing to get some work done.
My objective was to install Node-RED. For this, I needed to figure out how to access the OS command line and start the (included) MQTT broker. As I browsed the menus, I noticed that under the “Service Toggle” menu, it is possible to start Jupyter (which gives access to the command line) and the SIoT service (which implements the MQTT broker).
So, without even having to do any network configuration, I was already more than halfway through achieving my goal.
Next up, I set up networking. This allowed me to access the command line using Jupyter and my browser and then install Node-RED. The process to set up networking on the Unihiker is simple. The device runs a local web page service with a fixed IP address (10.1.2.3).
This interface is accessible via the USB-C port. Connect the Unihiker to the computer via USB-C, type “HTTP://10.1.2.3” in the browser, and “boom” you’re there. In the browser, navigate to the Network Settings page, select the network you want to use for the Unihiker, provide the password, click on Connect, and that’s it.
The Unihiker is now ready to use remotely. I disconnected it from the computer (there is no shutdown option, so I just pulled the plug) and connected it to a regular USB power supply. After a few seconds, the Unihiker was ready to use again.
Now, I wanted to install Node-RED. To do this, I would use the command line interface that is available in Jupyter (I am following the standard Node-RED installation process). To start Jupyter, go to the Service Toggle page, and click “open page” in the Jupyter box.
In Jupyter, get a new terminal window.
In the terminal, copy the standard command line instruction to install Node-RED for the Raspberry Pi. In the question about installing the Raspberry Pi-specific nodes, I answered “No”.
During the installation, I kept an eye on the Unihiker system information page, where I could see that CPU usage was around 15%.
A few minutes later, Node-RED was installed. To start it, I used the “node-red-start” command:
In the command line output (above), you can see that Node-RED is now running on port 1880 and connected to the MQTT broker on port 1883. The SIoT service is protected by a username and password, which I needed when I created my first Node-RED flow using the MQTT service.
The MQTT username and password are “siot” and “dfrobot”.
To access Nod-RED, open a new browser tab and go to the address http://192.168.111.64:1880. I created a simple flow that publishes a timestamp to an MQTT topic and reads the same timestamp back:
There was one thing I struggled with in the Node-RED setup, and that was the security in the SIoT MQTT service. The service has password protection, requiring a lot of Googling to find the credentials (see above). You must use these credentials when you set up the MQTT broker in the Node-RED MQTT broker node.
During the installation and start of the Node-RED service, the peak CPU usage was 45%. During use, it hovers around 1.5%. On the other hand, memory usage is around 48% at idle. I will do some stress testing of the Unihiker, but based on the numbers I have at this point, I expect the device to comfortably handle most of the Node-RED tasks I give it (which are modest, at best).
For simple home automation projects, there is a lot of spare capacity in the Unihiker to get the job done. When I see what other makers have created around this device, for example, projects that use the OpenCV for computer vision library to implement face and object recognition, or a fruit classifier, I am inclined to expect that with efficient programming and clever use of cloud services, the Unihiker will be an invaluable tool in my kit.
Price-wise, the Unihiker retails at US$79, against $65 for the base Raspberry Pi 4 Model B. This Raspberry Pi has more RAM (4GB against 512MB) and a better CPU (Quad-core Cortex-A72 64-bit @1.5 GHz against Quad-Core ARM Cortex-A35 @ 1.2 GHz), but no touchscreen, no power supply, and no built-in flash memory. The Unihiker also runs cooler and does not need a heatsink.
The Unihiker seems to be a better match for my personal project profile. I use mostly low-CPU demand services, which leaves the CPU idle most of the time. I dislike dealing with operating systems and communication interface setups as I always rush to try some new code or component. I always have trouble with device IP addresses and power supplies, and I keep losing SD Cards! The Unihiker seems to be the cure for all of this!
My more general thoughts about the Unihiker, as it comes out of the box, is that it can be the basis for any project or final product requiring an embedded computer with a touchscreen, wireless connectivity, and a mobility sensor array, where you add the software, the box, and a battery. The Unihiker is an excellent platform for various applications, from education and experimentation to full-on product prototyping and development.
Have you used or are you planning to get a Unihiker? What do you think of it? What project might you try on if you had one right now? Let me know in the comments below!