Recently I’ve been trying to develop a library for a NRF24l01+ radio using a STM32F0 MCU. The radio uses 8-bit SPI transfers to communicate with the processor.
8-bit SPI transfers on STM32F0
Unexpected errors when sending UDP datagrams in Rust
Recently I’ve been developing a some control programs for robots using Rust. For networking such programs usually use UDP to reduce protocol overhead, since UDP doesn’t resend packet on delivery failure. However I’ve stumbled upon some unexpected behaviour of Rust’s
send_towhen the target host was down.
Apple HomeKit devices using ESP8266
In the past I built my custom home automation system and while it certainly was a good project for a high-schooler it lacked important features such as easy device management and also contributed to the sad state of IoT - too many isolated systems, no standardized connection between them.
Header synchronization in CLion 2019.2
Yesterday I spent some time figuring out why after installing some shared libraries on a Raspberry Pi, the remote development functionality in CLion couldn’t find their headers even though they were correctly present and even after trying out many cmake reloads.
Remote development of ROS nodes using Clion
I need to start developing with ROS at work, so I wanted to try it at home first. I compiled it on a Raspberry Pi using the following tutorial here but I used
desktopdistribution as compiling of RViz takes a lot of the time and it isn’t needed on a headless Raspberry Pi.
Compiling Qt natively on Raspberry Pi
I want to be able to build user interfaces for programs running on Raspberry Pis with touch screen displays attached and since I’ve been doing some Qt development at work I wanted to use it. However the repositories-provided Qt doesn’t support EGLFS which is used for rendering using the original drivers. And when I switched to VC4 there was no output on the display. So I needed to compile my own Qt binaries.
Sharing enums between QML and C++
Recently I stumbled upon the need to use common enum in both C++ and QML to allow for typesafe control of the C++ backend. After some Googling I found out this solution: