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.
Jupyter Notebook server on Raspberry Pi
Recently, when I wanted to install IPython notebook server I discovered that for quite some time the project had changed its name to Jupyter. You may recall one of my posts about the IPython where I presented how to install it on Raspberry Pi. Now, I would like to present the Jupyter project to you which comes with some neat new features.
Face detection with OpenCV and Python on RaspberryPi
Many articles here and there describe how to use OpenCV on Raspberry Pi. However, most of them are about setting up the environment by hand — meaning compiling OpenCV from sources. There are two main disadvantages to this approach. Firstly, you have to spend some time to compile it. On Raspberry Pi 3 it takes quite some time, and not mentioning the earlier versions of this mini PC. Secondly, maintaining up–to–date version requires additional time. Still, you can go for middle ground — cross–compilation that requires less time but you have to set up the environment properly. Having above in mind I will introduce you to the OpenCV with Python interface installed from pre–compiled packages. If I have your attention keep 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.
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.
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.
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.
Large screen for Raspberry Pi with no compromises
There are plenty of screens for Raspberry Pi on the market. However, most of them is quite small varying from 3 to 10 inches most.
Some of those screens are dedicated ones some have HDMI interface through which you can connect it to RPi. Well, you can even use analog output to display the content of RPi’s desktop on a TV.
Making a PCB using the UV light method
This is a step towards PCB prototyping. Some time ago a similar post was published but it concerned making a PCB using a thermo transfer method. If you need to prepare a PCB fast this method is probably the best choice.
What is different about the UV light method? Why is it worth your attention. The answer is simple — quality. Then how to make it? Keep 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!
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 😉
IPython Notebook server on Raspberry Pi
IPython Notebook is a great Matlab-like/Mathematica-like thing. You can write and run scripts written in python by using a web browser only. This post describes how to set up IPython Notebook server.
Using serial port on Raspberry Pi
Raspberry Pi is a small factor fully-featured computer. It can be used for multiple purposes such as a controller.
In most of applications it is necessary to use some kind of communication interface. Raspberry Pi delivers, among others, UART, SPI and I2c. However, UART (serial port) is most commonly used if you just want to send some data between RPi and other devices. While using SPI or I2c in i.e. python script is rather straightforward, using serial port, or making it to work, isn’t so easy as it might seem.
Xenomai Linux drivers and OROCOS components on GitHub
Some time ago I have written a few real-time Linux drivers for Xenomai and complementary OROCOS components. But first thing first! What the heck is Xenomai and OROCOS? To keep it as short as possible; Xenomai is an open-source project which aim is to bring real-time API to Linux based system. It is an extension to the Linux kernel which makes it a hard real-time operating system. On the other hand, OROCOS is a robotic framework that brings a vast number of libraries and a toolchain to create components. What is more, Xenomai and OROCOS do play along which means you can facilitate features of both i.e. to create a hard real-time components.
If you are interested you can find the code for each driver and for each OROCOS component on my GitHub repository. Feel free to fork!
Below are direct links to the repositories:
Driver for Sensoray 626 multi analog/digital I/O board
Driver for JR3 6 DoF force/torque sensor
Driver for Mecovis multi I/O card
OROCOS component for Sensoray 626
Set up KiCAD for offline work
Some time ago I decided to give KiCAD a shoot, actually it was a second attempt. For a long time I have been using Eagle CadSoft but now the disadvantages tip the scale. Also now, KiCAD has a crazy new feature which is called interactive routing. However, KiCAD is not quite straightforward and it requires some getting use to. One thing that struck me was the necessity of Internet connection. When you want to connect components with appropriate footprints using CvPcb it scans the library paths. And it is here where the problem starts…