Case study #2: a medium complexity hardware / software project

The client wanted a prototype handheld device with some similarities to cell phones—such as a touchscreen, Wi‑Fi, battery, USB‑C charging, and audio recording. He even considered building a prototype using a cell phone at first, but it turned out that fully custom, tailored hardware would be much better for meetings with potential investors.

Even though using a cell phone or tablet computer might seem like a quick and easy way to build a prototype device, there are many downsides. A tangle of loose wires, duct tape, and a phone is sometimes not professional enough to show around. Moreover, it is not easy to make a phone behave differently—for example, to keep its display constantly on when needed, to avoid showing irrelevant content such as other app icons or unnecessary menus, software update prompts, notifications, or to avoid long boot times. A smartphone also consumes a lot of energy, since it uses powerful hardware with large amounts of memory that we most likely do not need.

See the first prototype PCB version below: an STM32 microcontroller with 100 MHz SDRAM in the top left, an ESP32 Wi‑Fi module in the top right, an LCD connector at the bottom, and many electronic components in between. It required 70 hours of fully manual work in 2021, well before AI kicked in. Today, it would be significantly faster thanks to better schematic reviews, electronic component research, and, to some extent, improved autorouting.

I had just started using a Chinese manufacturer called JLCPCB. They offered to fabricate the PCB, supply the electronic components, and assemble everything. Using a local European manufacturer out of patriotism would have cost two to three times more—and that hasn’t changed. At that time, they didn’t offer some key components, as you can see in the picture below, so I had those hand‑soldered.

The next step was to design a plastic enclosure to hold the PCB, LCD, and battery together as a handheld device. I didn’t have much 3D design experience at the time, so I first tried FreeCAD. Building a complex shape by clicking a few hundred times wasn’t really my thing—especially when a major modification meant redoing everything from scratch. That’s how I moved to OpenSCAD, a simple but mind-blowing 3D design tool where you describe the 3D shape with plain text, similar to a programming language. For example: define a cube with 2 cm sides at coordinates X, Y, Z, and a sphere with a 3 cm radius at coordinates X2, Y2, Z2. At first it feels strange, but after a while it becomes more powerful than you’d expect. Describing the touchscreen enclosure using parameters—for instance, LCD_diagonal = 5 inches—lets you later create a similar enclosure for a 4‑inch LCD by changing a single parameter instead of doing hundreds of clicks.

Eventually, that is exactly what happened: as soon as my client tested the first prototype, his initial feedback was that the 5" device felt a bit too big and he wanted a 4" version. Because of other feedback, I was going to design a second prototype anyway. It turned out we didn’t need the wireless charger or the SD‑card slot. After removing a handful of components and reorganizing the board for the 4" display and the mechanical requirements of a relatively large battery, I came up with the second prototype.

In general, a first prototype works quite well most of the time, but to obtain more test results and valuable client feedback quickly, it’s important to start somewhere, knowing that the first version definitely won’t be perfect. Once all the major components are working (CPU and memory, Wi‑Fi, LCD display, and touch sensor), reorganizing the PCB is far less painful than starting from scratch. Building a usable enclosure is also an iterative task: it cannot be perfect the first time.

There is an interesting story about Steve Jobs. When he rejected the first iPod prototype because he wanted it to be smaller, the engineers claimed it was impossible. He then dropped the device into water, and they all watched air bubbles rise to the surface. He said again, “Make it smaller.” As you can see, there is quite a bit of free space here—and that’s fine. A prototype does not have to be perfect, because that would be far too expensive. Engineers must find the right balance between perfection and being too unfinished. The device has to convince investors to move forward, but at the same time it cannot be so expensive that it makes starting the project too risky.

This device would definitely release a lot of bubbles if it were dropped into water. On the other hand, creating it from scratch was quite a quick process: just a few months for one engineer who handled all the electronics, firmware, and 3D enclosure design alone.

Besides the PCB and the enclosure, another major task is developing the firmware. I did all of that during the three‑week turnaround while the Chinese manufacturer fabricated the PCB, assembled it, and shipped it to Europe. I could have chosen embedded Linux to simplify things by using a popular UI framework. Instead, I chose LVGL (Light and Versatile Graphics Library), which doesn’t require an operating system and is extremely simple. It’s not as fancy as an iOS or Android UI, but it boots extremely fast: you press the physical button, and by the time you release it, the main screen is up and the device is ready to use.

The client was happy with the second prototype and requested only minor changes. Unfortunately, he was not able to convince the investors, mainly because he had focused on a single, specific investor—always a risky strategy when you don’t have alternatives.

What is the budget range for a prototype device like this? The fully manual process in 2021 cost around 10,000 EUR. Today it would be less than that—roughly half. Creating the schematic would be faster, and writing the firmware would require only a fraction of the manual effort. AI is delivering major breakthroughs more and more frequently. If we see a significant improvement in PCB design tools (turning schematics into real copper traces), the required effort will drop even further.