The latest upload to the Open Gauges Github is a Linear Gauge, using a timing belt to provide

Linear Stepper Motor Gauge
a full 1 metre range for the data visualisation. It uses a stepper motor for precise needle movement, and a limit switch for calibration, it can be adapted to any MQTT data feed and any base mount. The example shown uses a 5cm by 10cm peice of wood, cut to 1 metre length and indicates wind speed from 0 to 60 mph.
The design uses a stepper motor (like the 28BYJ-48) which offers high-precision, 360-degree movement without the jitter or limited range of a standard servo. The limit switch allows the gauge to “home” itself on startup, ensuring the pointer always starts at a known zero position.
The main code – WindStepperTimerBeltwithLimitSwitch.ino in the Github has a distance calibration number, adjust for your range.
Hardware Components
- Arduino-compatible Board: Any board like an Arduino Uno, Nano, or a NodeMCU.
- Stepper Motor: 28BYJ-48 5V stepper motor.
- Stepper Driver: ULN2003 driver board (which often comes with the 28BYJ-48).
- Limit Switch: A small microswitch to detect the pointers zero position.
- Power Supply: USB.
- Timer Belt GT2 Timer Belt
It is made to be as simple to build/power as possible but also adatable for a number of senarios.
The github provides the mount for the stepper motor, the pointer (which also joins together the timing belt) the limit switch and the end mount for the pulley. These allow the gauge to be adapted to any size required.
At the moment the gauge is sitting on the wall in our lounge and it has become one of our most used guages. The data updates every minute to show the maximum wind gust and due to the nature of the stepper motor, it provides a smooth movement, almost replicating the gust of wind.