I studied Automation and Robotics at the Faculty of Automatic Control, Electronics and Computer Science at the Silesian University of Technology. It is a field that focuses heavily on control theory, but also covers the basics of electronics and computer science.
After the first year of studies, I knew that I wanted to professionally work with software, and I focused on developing in this direction during my studies. My beginnings were related to programming microcontrollers. I still remember the printed datasheet for the ATmega microcontroller, with register maps. I started with programming in C, in bare metal, and then moved on to larger systems and operating systems.
At that time, the popularity of using Linux in embedded systems was growing. It was around when the Raspberry Pi became really popular. I started using this platform and quickly became interested in Linux itself.
I did a lot of experimenting back then, trying to understand every detail of how Linux works. I compiled programs, wrote my own Makefiles. In college, I had great classes on kernel modules, after which I quickly started rebuilding the kernel on my own.
Most of the projects I did during my studies were educational and didn’t have many practical applications. I was looking for something more.
High Flyers
My university was a home for the High Flyers Academic Students Association. This was where I gained my first practical engineering experience.
We worked with drones, and I participated in software, firmware, and electronics development. There are two aspects that were particularly important to me:
Droniada 2017
The task here was to find Bluetooth LE beacons located in a field. The area was quite large, as it covered the entire area of an airfield in Pobiednik Wielki. I helped develop a computer system responsible for detecting beacons and visualizing data. It included the following components:
- Embedded Linux platform for Bluetooth LE beacon detection (RaspberryPi).
- PC software for 2D data visualization (Qt, C++).
Then, in the field I took the role of team leader and commanded drone operators during the mission.
This event was a success for us, and we managed to finish in the first place.
You can read more here:
- Złoto dla koła naukowego „High Flyers” w zawodach Droniada 2017
- Drony studentów szukały ofiar huraganu. Konstruktorzy nagrodzeni
- https://radio.katowice.pl/zobacz,30022,Zloto-dla-studentow-Politechniki-Slaskiej-.html
UAV Challenge Medical Express 2018
This was the largest event that we participated in, the last one for me, before the graduation.
This time I took a role of an architect for the entire software solution, from companion computer on the aircraft, to ground control station.
We needed to coordinate multiple subsystems and various technologies, including:
- Open-source autopilot,
- Embedded Linux device, running Robot Operating System,
- Custom Flight Safety board running own firmware, communicating over CAN,
- Open-source ground station, with modifications to expose control interface, and
- Custom flight planning module.
We did not get such a good score as in Droniada, but it was a great experience for me. I could prove my engineering skills, as well as project management skills.
Bachelor’s thesis
My bachelor’s thesis was related to the problem of air pollution. The project involved reading data from sensors and processing it on a device. The whole system was managed by Linux, and I focused mainly on integrating various open source technologies for data collection and presentation. I worked with an SQL database, a web server, JavaScript, and other full-stack techniques.
Looking back from today’s perspective, it was a very simple project that I could now complete in two days. This shows how easy it has become to develop projects, but also how much I have developed my skills.
Master thesis
The master’s thesis also focused on Linux, but this time more on the kernel part. I was developing a driver for an ADC device compatible with Linux IIO. I tested it on Raspberry Pi, which led to investigating the performance of interrupt handling and the impact of CPU cache on interrupt handling time.
The driver was functional and could be used with the IIO library, as I demonstrated by writing a program resembling an oscilloscope.
Unfortunately, the driver was never published.