Run out the Connected Environments Lab at The Centre for Advanced Spatial Analysis, University College London, the Open Gauges Project was initiated as part of the Module on Sensor Data Visualisation, part of the MSc in Connected Environments.
The project aims to allow open source data gauges to be built, modified, and viewed as both physical (3d printed) and digital gauges. Depending on the user’s preference the models can be made to run from any online data source with a data feed - from Weather Data with Air Pressure, Temperature, Wind Speed etc though to Air Quality Gauges, Noise Meters, Energy etc. At the current time files to create the physical gauges are provided with versions to work in Augmented Reality, via Unity, incoming. The project was created by Professor Andrew Hudson-Smith and Dr Valerio Signorelli.
It is requested that new Guages created - either via additions to the Arduino Code or via new Graphics file are added as new branches, creating a repository of both physical and digital gauges. Notable new additions will be featured in this main thread.
A total of 5 Dial Graphics were provided in the initial release - sized to fit into the 3D printed cases. The collection now (11th November 2021) includes an additional Noise Gauge, Energy Gauge, Neopixel Barometer and a Voltmeter Gauge.
The 5 Dial Graphics are - Temperature (-10 to 40 oC), Wind Speed (0-60 mph), Wind Dir (0 - 360), Air Pressure (950 - 1050 mb) and Co2 (400 - 1400 ppm).In addition to reading the MQTT data and using the Servo Easing Library for the servo, the code also includes a time function, allowing the gauge to turn the LED lights/Servo on and off at set times. This is used to turn off at night and on again in the morning.
The code can be used to create any gauge with a range from 180 to 360 degrees using a standard SG90 servo. A gear train is used to extend the servo range with the ability to calibrate in the code. On load, the servo performs a sweep function, to aid the calibration process.
See comments in the .ino file for set up and calibration details - in the above image we are using a 270 degree range and an MQTT feed of wind speed on one guage and Air Quality (from a Davis Air Quality unit) on the other.
The gauges are made to be as simple as possible to make but allow enough flexibilty to allow them to be used to display a wide range of data types.
The main parts are:
-
Node MCU Arduino Board - we have been using the (MakerHawk boards). However, any Arduino compatiable board will suffice, the ease of using the above boards is the code will work without and changes to the pins.
-
SG90 Servo - any SG90 style servo will work, we would however recommend the MG90S Micro Servo as it provides a smoother travel to the gauage pointer.
-
Lights - Pimorini White LED Backlight Module – 38.7mm x 11.9mm x 2mm, although any low power led will also suffice
-
PLA for 3D Printing - Any PLA for the main parts, the dials graphics are printed on paper and laid flat on a disc (see 3D Printer Files) printed in transparent PLA. This can be left out but it allows the dial to lay flat and provides a nice diffused light. eSun Transparent PLA works well.
As per below on a NodeMCU, also commented in the Arduino code - pins can be changed according to your own board.
Note - The ServoEasing Library requires version 2.3.4
Newly added (Oct 2022) Micropython version uses a Raspberry Pi Pico W with a Neopixel strip and SG90 servo:
Note this section is a work in progress, a Unity project file is incoming.
The Fusion 360 file can be exported into a variety of formats for import into systems such as Sketchfab, Blender and Unity - via the Unity engine it can be developed into an Augmented Reality version.
See the twitter feed for the full clip or to view and interact with the 3D model, it is available on Sketchfab.