Compile SPLAT! RF coverage software on 64-bit Windows

 Author:   Posted on:    No comments

SPLAT! is a cross-platform, open-source software that can be used to analyse a radio link between two locations and to generate coverage maps of RF transmitters. Coverage maps are calculated using Longley-Rice Irregular Terrain Model (ITM) algorithm. SPLAT! can predict RF coverage for any frequencies between 20 MHz and 20 GHz. It is thus useful for ham radio, broadcast radio, terrestrial television and wireless networks. Although it is cross-platform, up-to-date binaries for Windows are hard to find. On the other hand, for Linux users, it is available in the repositories of the major distributions.

I wrote in a previous post about SPLAT! and how to compile it with MinGW. At that time, the compiler package I used was only available for 32-bit architecture. Since most systems are now 64-bit, I had to use a different compiler package to get 64-bit SPLAT! binaries. Here is the good news: you can either follow this tutorial or you can jump to the end of this post and grab the precompiled binaries (SPLAT! is licensed under GPL v2).

Compile SPLAT! RF coverage software on 64-bit Windows

Play audio streams on OpenWrt (Internet Radio)

 Author:   Posted on:    No comments

I own some old ADSL modems that are no longer suitable for modern networks. OpenWrt can be installed on them, but they are limited by hardware to 100 Mbps LAN and 54 Mbps WiFi. Therefore, using these devices as routers, network attached storage or anything else that requires high transfer speeds is no longer wanted. Fortunately, OpenWrt comes with many software packages available to install using its included package manager.

One of the tasks that are suitable for most low-speed OpenWrt routers is audio playing. However, there are some hardware requirements. You need a router on which you can install OpenWrt firmware. It must have at least 8 MB flash storage memory and, the most important: at least one USB port. I haven’t heard of routers with audio output, yet there are plenty with USB ports (for GSM modem or USB storage). With an USB sound card and proper software, you will be able to play audio from any OpenWrt router. In this post I will talk about internet radio streams. However, if you have an extra USB port or you plan to use a hub, you may also play music files from USB drive.

USB audio card plugged in the USB port of the router

USB audio card plugged in the USB port of the router

WiFi Analyzer with ESP8266 and ILI9341 LCD

 Author:   Posted on:    No comments

This WiFi analyzer can help you identify all wireless access points (AP) in your area, providing you with detailed information about each of them. You can identify potentially unused channels and find the best place to install your router. You can use any smartphone for this task since there are a lot of apps that will scan for WiFi networks. However, I did this with NodeMcu, an ESP8266 development board.

ESP8266 has some advantages over my Android phone: it scans faster and it finds more access points. The phone comes with the advantage of 5 GHz band support, yet for the simple task of scanning WiFi, the analyzer app needs permission to access location of the device. Building an analyzer with ESP8266 requires a way of showing the information. I used a 2.8” color LCD display, with 240x320 pixels, based on ILI9341.

WiFi Analyzer with ESP8266 and ILI9341 LCD

USB multimedia keys on Arduino STM32

 Author:   Posted on:    1 comment

I switched from a keyboard with media controls to a new one without such functionality. Then I realized I was missing the volume and play/pause buttons from the old keyboard. But I have some development boards which I could use to control media and PC volume. I've seen some projects using the Bluetooth functionality of ESP32 to emulate a keyboard. But for now, wired USB interface is what I want. The cheapest and most capable board for this purpose is the STM32 "bluepill". Although I'll end up buying another keyboard with multimedia buttons sooner or later, now I'm going to program the STM32.

I thought this would be easy. But there are multiple ways of programming this ARM microcontroller. It can be done with STM32 HAL. But I found it hard to develop the USB HID device. I looked for something easier. With the Arduino IDE, you have access to two development kits, one from STmicroelectronics and another one from Roger Clark (which is based on libmaple). I attempted to use the official package from ST, but their USB library only supports a basic keyboard (same as Arduino Keyboard library). I found that the other package, from Roger Clark, supports USB Consumer HID. Although it is based on old libmaple it still works. I decided to work with the official package though.

USB multimedia keys on Arduino STM32

USB multimedia keys with STM32 on breadboard

Program "blue pill" with STM32 Cores in Arduino IDE

 Author:   Posted on:    No comments

Back when I wrote Set up STM32 "blue pill" for Arduino IDE I found two Arduino Boards packages for STM32. I didn't know at that time what were the differences between them and that post uses the STM32 package developed by Roger Clark. In fact, that one originates from libmaple which was first developed by LeafLabs for their Maple boards. The library was written in 2012 and it is no longer under active development.

I consider STM32duino to be a better alternative now, since it is actively developed by STMicroelectronics and uses as backend recent versions of STM32 libraries (LL, HAL). More than that it has support for multiple cores and boards including, but not limited to, official evaluation boards, 3D printer boards and flight controllers. To be able to use it you need a board and a programmer, Arduino IDE and STM32CubeProgramer. Fortunately the required software is cross-platform so you can code for STM32 on any platform. In this post I'll show you how to install the required software and how to upload sketches to STM32 "blue pill".

Program blue pill with STM32 Cores in Arduino IDE

Install Oracle Java on Linux Ubuntu

 Author:   Posted on:    1 comment

Java is a cross-platform development platform used by many applications. If you want to run Java based applications, you must install a runtime. Java is developed by Oracle. There are two packages: JDK (Java Development Kit) and JRE (Java Runtime Environment). While the first is needed to develop Java applications, for running them you need the runtime.

Due to licensing, on Linux you have the possibility to install only OpenJDK from software repositories. That is an open source GPL licensed JDK edition. Well, I had this one installed (package openjdk-8-jre) on Ubuntu and I was facing some problems. JabRef, a references manager application, wouldn't run. Initially I thought there is something wrong with the current release. Later I installed (the GUI installer worked) STM32CubeProgrammer, a programming utility for STM32 microcontrollers. Neither this one would launch.

Java JRE Download page for Linux

Java Runtime Download page for Linux