Sunday, 9 October 2016

Gnat-Stats, Tiny OLED PC Performance Monitor

Wet Autumn afternoon fun...

After a recent purchase of a Nvidia GTX1080 graphics card, 4k monitor plus Doom(2016), I thought it would be great to see some external telemetry... from my expensive purchase.
UPDATED: 17/12/2016  Code Release

Then, I Stumbled upon on Psyrax's "SerialSender" GitHub repository! Armed with an Arduino ProMicro plus a 128x64 pixel OLED display,  I compiled the source code. After compiling Psyrax's windows application in Visual Studio, I got to work.

Tiny 0.96" OLED display (hence "Gnat-Stats)

The SerialSender application uses the open source OpenHardwareMonitorLib.dll to sniff the sensors of most modern "dedicated" PC graphic Cards, CPU and motherboards whilst, also pooling windows hardware stats.

Part of  Psyrax's original arduino sketch, is a "anti screen burn" feature. This feature, inverts the screen background (black - white), after a preset time, to give even wear to the OLED display.

No other programs are required once the application is compiled, which i like a lot! Based off the statistics collected by the OpenHardwareMonitorLib.dll the SerialSender relays the chosen strings to the arduino.

With a small arduino sketch the information is sent to the 0.96" OLED display.

I wanted to keep the overall footprint as small as possible. The i2C pins on the ProMicro reside on D2(SDA) and D3(SCL). The displays i2c pins lined up but, obviously the power pins would be a problem.

After measuring a current of 18.6mA on a fully lit OLED display, I decided to pull pin D5 High(5v) and D4 Low(to ground) on the ProMicro to providing the necessary  VCC / GND for the display.


OLED     Pins:      VCC             GND              SCL     SDA

ProMicro Pins:     D5(HIGH)    D4(LOW)      D3        D2


18mA is within the Atmel 32u4 maximum pin current limit of 20mA. This allowed the display to be simply soldered straight to the header of the ProMicro.

There are a few draw backs to the current stock "SerialSender" application,

such as...

The Arduino COM port has to be selected manually
Only basic CPU and GPU stats are implemented along with currently used system RAM. 

The application appears to be stable over long periods.

GnatStats tray app ...

Psyrax's "SerialSender" Application.

Heavily modified by Colin Conway... cheers for all your work Colin!   (Auto Reconnect, CPU/GPU Hardware Name ID's, Frequencies, Serial activity display timeout)

The Arduino GnatStats sketch and Hardware Serial Monitor application including source code is available here


Waiting for com port serial data...

Screen1:  CPU/GPU Hardware ID's, Temps & Loads inc. System RAM usage

Screen2: CPU/GPU Hardware ID's,  Temps & Frequencies.
Useful for monitoring "GPU Boost" speeds and throttling!

 Very Experimental!!!

Big thanks! to Psyrax for sharing the source code.