Decisions, we all make them. You may make a decision based on specifications, performance, time to value supportability and so on. There are many dimensions, and we all have choice.
In the last 15-20 years I have been an avid user of both SBC’s (Single Board Computers), PLC’s (Programable Logic Controllers) and MCU’s (Micro Controller Units) and in this post I wanted to distill my thoughts on the pros and cons of buying the original (market leader) versus clones/alternatives and explain why today I only use genuine Arduino and Raspberry Pi devices.
Why author this post? You may have seen in October of 2023, the Raspberry Pi Foundation announced the release of the Raspberry Pi 5, whilst a step change in terms of performance it doesn’t hold a candle compares with the RockPi 5 Model B / Orange Pi 5 Plus. The Raspberry Pi 5 isn’t the best, nor are my Arduino’s on paper compared to the various Arduino compliant devices that exist today with their multi-core ARM based processors, and yes, I own many Arduino clones and non-Raspberry PI SBC’s.
Are these non-genuine/standard devices worth it? I am going to say after struggling at times, the challenges, let’s call them compromises in many cases are not worth it. Look past the price tag and think about the time you ‘may’ spend in debugging problems, the eco-system and short life span.
The cost of buying a polished product, which can be often multiple times more, can almost always be amortised the time you will save in either setting up a solution and or the general reliability.
In this post I will distill my journey, because there have been ups and downs and if one person who reads this can avoid a rough edge it will be worth it. Before you go any further, how much do you get paid per hour? Don’t tell me but think about it. How much is your time worth?
On to the rough edges.
If you read the manuals of many reputable devices (not clones) you will see a message about EMI (Electromagnetic Interference). It will look something like this from the FCC.
“This device complies with part 15 of the FCC Rules means that the device has been tested and found to meet the standards for a certain class of digital device. The device is allowed to operate under two conditions: it may not cause harmful interference to other devices, and it must accept any interference that it receives. The FCC Rules are regulations issued by the Federal Communications Commission to regulate radio, television, wire, satellite, and cable communications.”FCC Part 15 – https://www.ecfr.gov/current/title-47/chapter-I/subchapter-A/part-15
EMI is a disruption that affects an electrical circuit due to either electromagnetic induction or externally emitted electromagnetic radiation. Quality devices will accept any interference received, including interference that may cause undesired operation. This is known as EMC Immunity. On the other hand, the device must not emit any interference that would disrupt the operation of other electronic devices. This is known as EMC Emission
In other words, the device should be able to operate correctly even in a “noisy” electromagnetic environment, and it should not contribute significantly to electromagnetic noise. This balance is crucial for the proper functioning of all electronic devices in a shared environment.
In the past I created a series of blog posts (the most relevant one). All of this was centered around a Wemos D1 clone. It started off as a set of LED’s which would change colour based on a MQTT stream. It evolved to a 1602 LCD screen and finally included my next meeting. It was great, but then one day it wasn’t. This Wemos D1 clone is device is powered off my Microsoft Surface Dock 2 (USB Mini 5v) and connects as a UART. Today if my Surface Laptop 4 has its WIFI network enabled, the device becomes almost un-responsive and then comes back to life, periodically and randomly. Less than ideal.
The MQTT updates are 1hz, so a regular drum beat. I have attempted to debug and debug. I have simplified my code and the summary is, something on my Surface Laptop 4 is causing an issue. Turning off radios on the laptop fixes the problem. I have tried various Intel Wifi Drivers and nothing.
After a lot of pulling my hair out, I switched to a Genuine Arduino Nano ESP32 and instantly the problem vanished.
I had probably spent close to 5 hours debugging this problem. The cost of a Wemos D1 is approx $8AUD, 1/5 of the cost of a Genuine Arduino Nano ESP32 is $40AUD (shipping included).
There is something just special about a device that just works. I am not an Apple fanboy; I have an Apple TV 4K for Zwift and it just works. It replaced having a PC and I think this illustrates my point quite well.
Moving back to SBC and MCU’s , during Covid there was supply chain shortages, it was very hard to get a Raspberry Pi. SBC’s such as the RockPi blossomed, you couldn’t get a Raspberry Pi (at a palatable price). In almost every metric, most modern SBC’s are superior.
But what the Raspberry Pi has is a very mature eco-system. Software just works, it almost really does. The Raspberry Pi I credit for the advancement and drive to aarch64. Almost every package is compatible with the Raspberry Pi. Raspbian is brilliant and with the release of the Raspberry Pi 5 you can now run Ubuntu on the Pi. It just works.
Retro gaming has been great to reconnect with my child hood on a Raspberry Pi with 8bitdo, it doesnt get much easier
So, when I decided I had enough of running Home Assistant in a Docker container, the Raspberry Pi was my one and only choice. Why because running in Docker was just so hard and if was to move to another platform, I would be the one Home Assistant recommends with the largest install base. Short of their own hardware they recommend the Raspberry Pi 4 (at the time of publication of this post)
The first step is to install Home Assistant. We recommend a dedicated system to run Home Assistant. If you are unsure of what to choose, follow the Raspberry Pi guide to install Home Assistant Operating System.https://www.home-assistant.io/installation/
Home Assistant is one example but from emulators through to software packages and even operating systems such as Canonicals Ubuntu are fully supported.
MCU’s is another story. C++ is ubiquitous and a standard with Micro Python becoming popular. A lot of these MCU’s are designed around support for the ATMega328P. The Arduino IDE is where I code if I am not working with a PLC. The Arduino IDE is great, it obviously knows about genuine Arduino based devices and you can add boards in via the Board Manager, but the problem with clones is, I spend what appears to be eons looking for undocumented connection details, baud rates, serial settings and so on.
It’s time, compatibility and reliability (we will get to that soon).
As a builder and tinker, this is what sets genuine devices apart. The eco-system makes genuine and normal form factor equipment the path to choose. If you are needing to add peripherals from POE (Power Over Ethernet), through to driver boards and want to do this without janky connecting wires or bread boards then choose a clone at your peril.
MCU’s come in many shapes and form factors, but because clones can, and are made for different shapes and sizes, generally speaking hats/shields are not made for these devices. Genuine ones may work but your mileage may vary. I bought in the early days a non-genuine Ethernet Shield for an Arduino Mega 2560 clone. The legs were so long, though whilst long, were uneven and I ended up having to trim the legs to make contact. If this is your first time on the platform, what a horrible experience.
In the Arduino eco-systems officially, there are more than 60 shields, unofficially I would guess that number would be close to 1000. It’s a standard in terms of electrical connections, pinouts and form factor. The Arduino Uno is incredibly under powered, yet it has enabled a generation of builders diving intoo the world of electronics. The reason why this underpowered device with its 32kb of Flash and 2kb or SRAM came to be the raging success is partly because of the eco-system.
Want to get a PoE hat for your SBC, good luck if it is not a Raspberry Pi. What about a DAC (Digital Analogue Convertor) or perhaps a Tv Tuner. The official Raspberry Pi D-TV hat is one of my most important devices. With the kids stealing the TV, I am often relegated to a PC / Phone in order to watch sporting events. This hat is awesome.
When you buy genuine, you are supporting the community of developers, educators, and makers. Both Arduino and Raspberry Pi rely on the contributions and feedback of its users to improve its software and hardware.
A large amount of what I use these devices for is for I/O. That could be reading inputs (both analogue and digital), UART‘s, SPI etc. 10 years ago when I decided that the PLC path was not cost feasible, I decided to get started with Arduino’s.
Any builder / developer will realise that if you can’t trust your tools, it makes it really hard to code. I was pretty new and green to C++ and bought a $10 Arduino Mega 2560 Clone. I thought it was awesome. Today, I leverage a pattern for 4 roller / panel doors in my house. I won’t get into the details, but I detect position (open / close) via a magnetic proximity sensor which acts as dry contact digital input.
I noticed I had a lot of false positives with these input bouncing, I played with pullups (in code) but it didn’t help. As part of my debugging process, I then ended up moving physical input ports (remember the Mega 2560 has 54 bits of I/O) and it became reliable. I then moved it back and I had issues. It wasn’t just one pin, but multiple pins. It becomes about trust, and I struggle to trust clone devices. From my Arduino Mega 2560 clone through to my Wemos D1 clone, I can’t rely on these.
Poor quality boards can be especially problematic for those just starting out. When I was inexperienced I assumed that my issues were due to my own mistakes, rather than an issue that’s inherent to the board itself.
I purchased eventually a Genuine Arduino Mega 2560, today I leverage 28 outputs (8 roller shutters, 4 roller doors, evaporative cooler control) and 4 inputs (Magnetic Proximity) all exposed via MQTT, and it’s been brilliant.
None of my genuine Arduino or Raspberry Pi devices have failed, and not only do I depend on them, but my family who can be my biggest critics depend on them.
Look past the sticker price and look at the total cost of a system. Money saved up-front will quickly be eroded by the time it takes to implement or worse dealing with reliability issues.
Clones can be good, more so in the world of SBC’s but there is probably a reason why the Raspberry Pi 5 took almost 4 years to develop or why that MCU is only $5 on eBay with free shipping. A lot of these devices can and will end up as e-waste due to various reasons listed above.
Performance is nothing if you have horrible software support. A low up-front price means nothing if the device is unreliable and has horrible software support and equally without an eco-system of hardware and a forum of support you can often be on your own.
Choose wisely, but for me, I will quite happily support the folk at the Raspberry Pi Foundation and Arduino because they just work and my time these days is becoming ever more valuable.