BeamAce - Industrial Handheld Measuring Device
This project demonstrates how a customer's request evolved into a working product. This was a challenging and interesting project that involved a variety of different technologies.
The development of the product was started with a small team. Later on I became the sole developer and architect on the development of the product. Both the software and the electronics were designed and developed by first the whole team and then by me from scratch.
We chose STM32F4 MCU as the heart of the system. This selection was done mostly because of the MCU's capability to handle embedded display interface. During the development I became quite familiar with STM32F4 features. Here are some of them:
Setting up and using ADC for battery management and membrane potentiometer input monitoring (using HAL library)
Using hardware timer in encoder mode to interface with a rotary encoder in an efficien way (wrote a CMSIS driver for this)
Setting up RCC, IWDG and other utilites
Writing drivers for- and using different communication protocols such as I2C, SPI and UART (with HAL library)
Interfacing with a small display using the MCUs LTDC interface (with HAL library)
A lot of debugging was done and the methods varied. Here's a list of some of the debugging methods used:
GDB debugging with OpenOCD on the target
Good ol' debug printing over serial connection (UART)
Using oscilloscope (on encoder signals, power/ground plane fluctuations etc.)
Using logic analyzer on communication protocols (I2C, SPI, UART and other bit movement)
Pen and paper 👌
For task management and threading we chose FreeRTOS with all its fancy features.
As mentioned I was also responsible for developing electronics for the product. The schematics, layout and routing was done with PADS So here're a few notes of what I did in the process:
Power management (Li-Ion battery management, linear regulator, step-up converter, etc)
Design for display interfacing (from processors LTDC (RGB) interface to display panel's LVDS interface)
Layout (decal design, placing etc.)
Routing (with ESD considerations etc.)
At the beginning of the project I had an awesome team-mate with me, with whom we pieced everything together from scratch. Later on, when I continued the development alone, I had a great product owner to discuss the big picture with.