Category Archives: Microcontrollers

LoRa driver for Raspberry Pi with Python wrapper

Here you will find my recent contribution to LoRa drivers. This post describes the LoRa driver for a Raspberry Pi SBC (Single Board Computer). Additionally, a wrapper written in Python is available making it very easy to use and prototype. Raspberry Pi gets more and more attention. Adding LoRa communication enables it to communicate with IoT devices such as remote thermometers, soil moisture sensors and many more others. You can find HAT boards thatoffer a LoRa module. Here, I describe how to connect and how to use a low-cost LoRa RFM95W module. This particular module comes with different frequency options. However, this post describes the one which uses 868 MHz frequency.

Continue reading

ADC initialization order bug in CubeMX

An another bug in STM32CubeMX software. This is a perfect example where the order of called initialization functions really matters. In discussed case I will give an example where ADC was configured to go through regular conversion triggered by an event from timer and the data was transferred automatically using DMA.

Continue reading

Serious clock bug in CubeMX

Recently I have discovered a serious bug in the new version of STM32CubeMX. It considers the clock configuration but does not always appears and is hard to debug.

Continue reading

Pan Tilt Camera for Raspberry Pi with STM32 and UV4L

I would like to present a simple project which involves Raspberry Pi with a camera. Sounds boring, right! But the camera can be tilted in two axis using two servos which are directly controlled via STM32 microcontroller which in turn communicates with Raspberry Pi. Furthermore, the RPi is hosting a web server with interface to control position and speed of the camera and of course the video is streamed so you can see what is going on i.e. in your room. If you are even a bit intrigued then keep reading.

Continue reading

Design of embedded system

Today, I would like to ponder on a subject of creating some measurement systems, or in more general, embedded systems. There are multiple approaches to make such a system. Let’s consider a few of them — the most popular approaches.

Embedded systems are gaining popularity by the day. Those systems are used in Internet of Things (IoT) but also in more advanced control systems. However, sometimes a need of more sophisticated system is emerging which requires more computational power. I would like to present some architectures of such systems and highlight some features of those approaches.

Continue reading

STM32 HAL driver for LoRa SX1278 wireless module

Long range wireless communication is getting more and more attention. Today, I would like to share with you my experience with a LoRa module — SX1278 and also the drive for this device.

Continue reading

Automatic router reboot device with Arduino

For quite some time I was experiencing a problem with my router. When the temperature rises behind the window it just starts to freak out. Every once two weeks or so it drops the Internet connection. Local network is still running but the incoming or outcoming connections are terminated. The only solution to this problem is to reset the router or just take out the plug and insert it after a few seconds. However, it requires me to do this every few days to make sure that the connection is good and running. I have decided to automatize the process with Arduino since it was laying around.

Continue reading

Spot welder with Arduino

Some time ago I have decided to make myself a electric bike — e-bike as they are called now. However, buying a stock solution, I mean a stock e-bike, was not an option because mainly of two reasons. The stock e-bikes are quite expensive stuff, this is one. The second one is about the actual parameters of the electrical bicycle. Manufactures sell e-bikes which have limited power output to 250 Watts and are only meant to support you and not drive themselves. But wait a minute … This should be about a spot welder not the e-bike ;). Well, each electric devices ought to have a power source and this is how the idea about making my own spot welder was born.

Continue reading

ST-Link-V1 — Obsoleted but not depreciated

Yes, I am still using the practically obsoleted ST-Link-V1 on a STM32F1 disco board. It still gets the job done but regretfully it is not supported out of the box by IDE I happen to use from time to time.

When I gave a try to the AC6 (SW4STM32) I found out that, to not much of a surprise, the ST-Link-V1 is not supported. Only V2 and V2.1 are supported. Well, I decided to change that unfortunate situation because I have two of the disco boards with this debugger laying around.

Continue reading

GSM GPS Tracker


I would like to present one of my latest projects which is the GSM GPS tracker. Basically, it is a device which allows to send its current position using GPS via SMS. Also it is able to log the position on a microSD card.

Continue reading

SPL vs HAL: which one should you use (and Low Layer Library) — part 2


Some time ago I have written SPL vs HAL: which one should you use where I have focused on differences between two main frameworks for STM32 — Standard Peripheral Library (SPL) and Hardware Abstraction Layer commonly known as HAL. Since the recent post only focuses on those two sets of libraries I have decided to write some examples which can tip the scale. What is more, at the end of previous article I have asked an important question for a developer — does the STM is going to introduce us to a brand new library. Answer to this and other questions are further in this post.

Continue reading

Mechanical filter for UAV — damping IMU vibrations


Good quality estimation of tilt angles such as roll and pitch is desired when it comes to an UAV control. Without good quality signal a proper work of flight controller is nearly impossible. However, the task of filtering is not an easy task, especially when it comes to DSP (digital signal processing). It is even harder when digital filter is inadequate. In this post a mechanical filter is presented that allows to significantly improve attitude estimation in terms of roll, pitch and yaw.

Continue reading

Code size optimization for ARM based MCUs


There is a time in every developer’s life when the program memory is running out. If you have already experienced this problem or you are about to this article is for you!
Continue reading

STM32 HAL driver for I2C OLED display with U8glib


Recently, I have come to a conclusion that it would be good to print the state of my quadrocopter on a display. The question was what kind of display should I use. I decided to give a try to a small 0.96″ OLED display with I2C interface. It is based on SSD1603 driver. You can see this display on the image above. However, there was an issue regarding the screen controller. But it was soon solved. I have come across the U8glib which is a graphic library, quite popular among Arduino users. As soon as I started to read about the library I realized that it does not support STM32, not mentioning the HAL library.

Well, I have solved that 😉

Continue reading

Using FatFS with HAL

Recently I have written a short post about the HAL library created by STM32. The HAL is gaining popularity among hobbyists and is more and more frequently used. However, when you would like to use it for something else than just basic stuff like generating PWM on digital output you have to write it by yourself. Not so long ago I had to use SD card in one of my projects. It turned out that there is no driver for FatFS based on HAL – at least there was not. I decided to write the driver and here you can read about it…

Continue reading