Mark Wilson's WeatherRenderRound Shaves the Edges Off for a Smoother Weather Dashboard
Analog-style dashboard is built around an Arduino Leonardo-compatible board, a circular display, and a Bosch BME280.
Physicist, software engineer, and maker Mark Wilson has built a weather station that shows its readings on a simulated analog gauge, courtesy of a circular LCD display.
"I got a little experience playing with barometric sensors working on my Chrondrian project," Wilson explains, referring to an earlier effort to build a segment-LCD-style rectangular weather dashboard. "I had a small circular LCD in a drawer and though I'd combine them. [It] displays the weather on a circular dial — the current pressure, the pressure three hours ago, the temperature, and the humidity."
The 240x×240 1.28" IPS display, based on a GC9A01 driver, communicates with an Arduino Leonardo-compatible microcontroller board based on the Microchip ATmega32U4 — but in a considerably shrunken footprint compared to Arduino's original design. Both are housed in a custom laser-cut chassis built up from nine layers of acrylic, along with a Bosch Sensortec BME280 temperature, humidity, and barometric pressure sensor.
Both the chassis and the simulated dial that displays the weather station's readings were created using Inksnek, a Python Inkscape extension Wilson developed specifically for the task. Both metric and imperial versions of the dial were generated, and can be chosen at compile time to be run-length encoded and inserted into the finished firmware.
"The needle lines are drawn with a fixed-point anti-aliased algorithm," Wilson adds. "There's some support for line width — the pressure trend needle (pressure three hours ago) is thicker and with a 'copper/brass' look. All the graphics are done from scratch and are not pixel-perfect!"
The project is documented on Hackaday.io, with source code published to GitHub under the permissive MIT license.