Modern STM32 Project Template with CMake
As you may seen throughout my previous posts, I have embarked on a journey to
modernize embedded software development tools. I’m committed to breaking the
status quo and proving that those working in the embedded field don’t have to
resort to decades-old, outdated ecosystems and tools.
You might ask why change something that has worked for years and has become the
“standard” across the industry. Well, true - but to be honest, they have never
worked well at the first place. You could either opt for a (usually) free
vendor tool which is (usually) a bloatware and it (usually) comes with outdated
toolchains. On the top, integrating a non-vendor-issued debug probe that has
proper debugging capabilities requires some considerate amount of hair-pulling
(or it’s straight out impossible). On the other hand, you could shell out
thousands of $$$ (per year) for an IAR or Keil license, which at least work
nicely out of the box and they provide good debugging capabilities. On the
flipside, you are stuck with an editor that was already considered outdated in
the ’80s.
There are so many great and modern tools out there available. Many of them have
become de facto standards in software engineering. Some of these tools are
open-source and are being actively developed, plus they have great community
support. However, they haven’t become popular in the embedded software world
(yet). I’m fully committed to change that.
Check out my newest project that serves as an STM32-based firmware project
template containing modern CMake-based build system, documentation generation
with Doxygen, source code formatting with clang-format, linting & enforcing
style and naming conventions with clang-tidy, devcontainer support and more.
Read more
Docker GCC ARM: containers for firmware development
Similarly to my previous project post, this project has already been published
on my GitHub since ages. Time
to publish it here as well.
A few years ago I started using docker containers for firmware development. At
first, the containers were only used to execute jobs on CI/CD pipeline runners.
Today, the containers provide a full-blown development environment, equipped
with all the modern tools. The best part? You can use the containers straight
away as devcontainers: the development of a firmware project can be started
with a single click, regardless of the machine and host environment.
Check it out:
Read more
Docker Python
This project has already been public on GitHub for a while, but I’ve come to the realization that this has not been published here on my website.
Most of my projects require python for either testing or for small scripting tasks. However, installing a specific version of python is not always trivial, especially on Linux. Since most my projects are developed within a docker container, I created this project titled docker-python containing docker images that come with a specific version of python installed.
Check it out:
Read more
Simple LAMP Stack with Docker Compose
In an embedded development environment, containerization and containers are
still somewhat unfamiliar and not (yet) widely adopted, especially when it comes
to smaller projects, or when you are not dealing with DevOps and CI/CD.
Fortunately, this trend seems to be slowly (but surely) changing.
Docker uses OS-level virtualization to deliver applications and software in
so-called containers. At first glance, this might seem less useful for firmware
engineers writing small bare-metal code for microcontrollers - or hardware
engineers designing schematics and PCBs. However, it is an extremely powerful
and versatile tool and I strongly encourage you to read about it.
Since I’ve learned about containers in details, I’ve started using Docker for my
side-projects as well. For instance, I stopped using XAMPP to develop my website
(and other sites). Instead, I created a lightweight LAMP (Linux, Apache, MySQL,
PHP/Perl/Python) stack using Docker. This allows me to quickly fire up the
containers in a matter of seconds whenever I want to work on my website,
regardless of operating system, environment or whether I’m using my desktop PC
at home or my MacBook on the road.
Check it out here:
Read more
Projects and Website Update
It’s been a while since I have posted something new on my website (I know, I
know…). So with this post I would like to give a quick update about what
happened recently and what is currently in the pipeline regarding my projects.
A lot has changed since my last post. I left Sensirion in 2022 to pursue new
opportunities at Landis+Gyr. It was an amazing 3.5 years at Sensirion. I
broadened my skills in both software and hardware engineering. I’m very grateful
and at the same time proud to have engineered some of the new generation of
sensor modules ranging from consumer to automotive sectors, which sell over 1M+
units per year. As I’m always keen to learn new stuff, I took a deep dive into
the field of infrastructure: I learned a lot about CI/CD, build systems,
virtualization and automation. I also got to know some fantastic and
highly-skilled people at Sensirion, from whom I have learned a lot, not only
professionally but also on a personal level.
I joined Landis+Gyr in the summer of 2022 as a Senior Firmware Engineer.
Landis+Gyr is the market leader in electricity meters. I’m currently working on
the firmware for the new smart meters. A few weeks ago I received a flyer from
the electricity supplier company where I live. They are going to install the new
smart electricity meters from Landis+Gyr in my area! That was the moment when I
realizd that this is exactly why I’m in this field: it’s an amazing feeling to
see something I’ve worked on come to life, be deployed and serve the people.
As I’m currently working full-time, it’s difficult to devote time to my
projects. I actually have quite a few ideas in the pipeline, some of which I
have already implemented. Some of them have already have an MVP (Minimum Viable
Product), but I still have to document them properly before putting them online.
These projects target some firmware, software and infrastructure-related ideas.
I’ve been also toying with the idea of diving into the latest front-end and
back-end technologies - just for fun!
In the meantime, I did some maintenance on my website. I merged the Snippets
into the Projects page - so that there is only one streamlined page
for all of my projects, added a new Skills section to the About Me
page, and updated some outdated information on my website. I also added some new
styling to the navigation bar, fixed some formatting issues and made some
under-the-hood changes.
So stay tuned, and get ready for some new projects in the coming weeks!
STM32 RTC Scheduler
I’ve managed to find some time to finalize my latest project and its
documentation: the STM32 RTC Scheduler project! This is an RTC-based scheduler
implementation that allows applications with real-time operating systems (RTOS)
to schedule and execute recurring, periodic tasks while minimizing power
consumption to maximize battery lifetime.
The RTC Scheduler is demonstrated on the STM32L496-Discovery board. The example
project can be compiled straight out-of-the-box with IAR EWARM, Keil uVision and
GCC for Arm toolchains.
Check it out and read the documentation here:
Read more
1-year anniversary at Sensirion
After finishing my master studies at ETH Zürich, I started working as a Hardware
& Firmware Engineer at Sensirion. I’m responsible for
designing hardware and developing firmware for the upcoming sensor devices and
modules for consumer, industrial, medical and automotive applications, as well
as custom, state-of-the-art hardware platforms used internally in R&D, testing
and production.
Since I’m employed with 100% workload, this unfortunately means that I have
limited amount of time to work on my personal projects. Ironically, I have
nowadays more project ideas than in the past years… Nevertheless, I will
definitely keep developing new ideas and side-projects, so stay tuned for
upcoming updates!
IPSN 2019
The state-of-the-art geophone platform I have developed as
my master thesis at ETH Zürich served as the basis hardware of a research paper
which got accepted and published in the Proceedings of the 18th ACM/IEEE
International Conference on Information Processing in Sensor Networks (IPSN)
journal. The event was organized between April 16-18, 2019 in Montreal, Canada.
|
|
Article: |
Event-triggered natural hazard monitoring with convolutional neural networks on the edge |
Authors: |
Matthias Meyer, Timo Farei-Campagna, Akos Pasztor, Reto Da Forno, Tonio Gsell, Jérome Faillettaz, Andreas Vieli, Samuel Weber, Jan Beutel and Lothar Thiele |
Publication: |
18th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN), April 16-18, 2019, Pages 73–84 |
DOI: |
10.1145/3302506.3310390 |
Successfully graduated from ETH Zürich!
I received my master’s degree in Electrical Engineering and Information
Technology from ETH Zürich in 2018.
The past years were filled with lots of events and hard work. Beside my studies,
I was working part-time for the Computer Engineering Group at ETH Zürich for
almost two years, continuously. Then I started my master project, a
state-of-the-art geophone platform, which had remarkably
great results. The developed system was even featured on SRF Einstein (Swiss TV
show).
I would like to thank everyone who supported me during this challenging and
exciting journey.
The Geophone Platform is featured on SRF!
I am happy to announce that the geophone platform I designed and engineered as
my master thesis at ETH Zürich was featured on SRF Einstein (Swiss TV show). The
part of the episode, titled “Forschung extrem: Datensammeln im Permafrost”
introduces the geophone platform alongside with the wireless sensor network
deployed and operated in the Swiss mountains.
Watch the video
Geophone Platform
The Geophone Platform
I started my master thesis titled “Event-based Geophone Platform with
Co-detection” in November 2017 at the Computer Engineering Group of ETH Zürich.
My work is about developing a new, state-of-the-art networked sensor platform
focusing on detecting and recording micro-seismic activities to provide early
warnings for natural hazard mitigation. It features ultra-low power consumption;
always-on, dual-side, multi-stage triggering; co-detection and more.
I have already finalized the hardware design, and the software is currently
receiving its final touches. The hardware already went into production state,
and currently 50 pieces are being manufactured. They are going to be deployed
and used this summer in the Swiss mountains.
Check it out:
Read more
STM32 Bootloader
I developed a customizable, easy to use bootloader for STM32 microcontrollers.
This example demonstrates how to perform in-application-programming of a
firmware located on an external SD card with FAT32 file system.
The bootloader features:
- Configurable application space
- Checksum verification
- Flash protection check, write protection enable/disable
- Extended error handling, fail-safe design
- Bootloader firmware update and the ability to perform full chip
re-programming: enter ST’s built-in bootloader from software (without
triggering the BOOT pin)
- SWO tracing for easier debugging and development
- Easy to customize and port to other microcontrollers
- .. and more!
Check it out:
Read more
STM32 Circular DMA with Timeout
As a result of one of my ongoing projects, I created an efficient DMA timeout
mechanism for peripheral DMA configured in circular mode. The concept is
demonstrated on a STM32 microcontroller. This example presents how to implement
performance-efficient DMA timeout mechanism for peripheral DMA configured in
circular mode.
Check it out:
Read more
WuLoRa: Energy-Efficient IoT Sensor Node
As my second semester thesis at ETH Zürich, I participated in the development of
an energy-efficient IoT sensor node called WuLoRa. My tasks were to debug and
evaluate the preliminary prototype, completely redesign the hardware, develop
testing firmware and perform extensive analysis, including power measurements
for numerous scenarios.
Read more
Working at ETH TIK
As of May 2016, I’m working part-time (beside my master studies) in the
engineering team of the Computer Engineering Group
(ETH TEC) within ETH TIK.
Currently my main task is to redesign the Wireless GPS device within the
Permasense project. My work involves complete
hardware development, including PCB design and embedded software development.
Check out the Wireless GPS 2.0 here:
Read more
Towards Low-Power, Timing-Predictable Medical Monitoring
In my first semester at ETH Zürich, I developed a Medical Monitoring Device as
my first semester project. The device can measure human vital signs, including
heart rate and blood oxygen saturation. This semester project focused on timing
predictability for bounded response times and low-power system design.
Check out the project and the full report:
Read more
Continuing my Master Studies at ETH Zürich
After a lot of hard work, preparation and persistence, I got admitted to ETH
Zürich which is among the top technical universities around the world. Therefore
I’m continuing my studies as an MSc student in the field of Electrical
Engineering in Zürich, Switzerland.
I am truly grateful to the people - especially to my parents and my friends -
who helped me achieve this amazing result.
Introducing the Smart RC-Car project
Today I have completely finished the myPhone v2.0 project!
I have started a new exciting project! I am designing and building an ECU
(Engine Control Unit) from the ground for a 1:8 scale RC racing car.
Features:
- ECU, including: ABS, ASR, ESP
- Regenerative braking
- Object detection
- Automatic object avoidance and object following features
- Controllable from smartphone
- … and more!
Read more
Home Automation System
At the end of last year I finished the hardware & software of the Home
Automation System. I needed to perform some afterwork, prepare the essay and
finish the documentation. I can gladly announce that the project is now
completely finished.
The system consists of a Central Unit, which features:
- Two PCB-s designed to fit perfectly into an aluminum enclosure
- ARM Cortex-M4 core microcontroller
- 5" LCD touch screen
- microSD with FAT32 file system
- USB, Bluetooth, Ethernet, 2.4 GHz radio, RS-485, KNX
- LEDs, piezo
- self-designed 230V AC power supply
… and three External Units, which feature:
- ARM Cortex-M3 core microcontroller
- Modular temperature, humidity and various gas sensors
- 2.4GHz radio, RS-485, KNX
- Relays, LEDs
Watch the video introducing the main features of the system, and read the
documentation here:
Read more
Successfully graduated from BME!
Today I have finished my Bachelor degree with the qualification of “Excellent
with Highest Honors”! It was a long and exciting journey with a lot of
challenges. I would like to thank everyone who helped and supported me during my
bachelor studies to achieve these great results.
Scientific Students Association Conference
I’m really glad to announce that we achieved Third Prize at the Scientific
Students Association Conference for presenting our paper about “Developing a
Modular Home Automation System”. Moreover we won the Rubin YOUNG TALENT
Sustainability in Engineering Special Prize for our outstanding engineering
work.
The paper was published at the
BME-TDK
website but also can be viewed under the About Me menu.
I would like to thank everyone who supported us during our work to achieve these
results.
Introducing the Home Automation project
I started this work last semester as my Laboratory project and this will be my
BSc. degree thesis as I graduate at the end of this term. Currently I’m in the
final stage, I need to finish the software which is almost done and I’ve already
started writing the documentation and essay. I’m updating the website and info
about this project ASAP.
Home Automation System
The myPhone v2.0 documentation in Hungarian
Now you can view the documentation of the myPhone v2.0 project in Hungarian!
http://akospasztor.com/projects/myphone-v2/files/myphone-v2-hu.pdf
Read more about the myPhone-v2 project here:
myPhone-v2
The myPhone v2.0 is finished!
Today I have completely finished the myPhone v2.0 project!
I had to replace some components (eg. resistors) to everything be perfect and
I have finished the software too. I’m sure there are a few minor bugs in the
code but I have limited time and the device is made in order to learn a lot
during the making and not for commercial use. Moreover, I have new ideas how to
continue and improve the device and myself. Maybe equip it with new components
like LCD touch-screen, bluetooth module, WI-FI module? Then I’m sure I need a
new, more powerful processor like an ARM…
Read more
Building the myPhone v2.0
I got the PCB-s to manufacture here at the university (BME), at the ETT
department. They were fast, so I could start the soldering shortly after I
placed my order. I’m soldering all components by hand. Here are some photos about the progress:
myPhone-v2
I have finished the myPhone v1.0!
Today I have completely finished the myPhone v1.0 project! You can read about
the whole process here: The myPhone v1.0 project
Now I can continue my work on the myPhone v2.0 project. This myPhone will really
deserve the name “mobile” phone as it will have two rechargeable batteries for
power supply. I will put the PCB in an enclosure with a small loud-speaker and a
microphone. I have plans for the keypad too: a custom designed foil keyboard
with cutouts on the top of the enclosure!
Read more
Site is ready!
I decided to build a website, so you can follow my projects and academic work
here. If you have any questions, feel free to contact me. You can find my
contact information under the Contact menu.