Close
0%
0%

Gnat-Stats & Phat-Stats PC Performance Display

Arduino OLED/TFT PC Performance Monitor with Client software

Similar projects worth following
Gnat-Stats Tiny OLED & Phat-Stats TFT PC Performance Monitor Display

GnatStats (OLED) & PhatStats (TFT) form an Arduino serial display. HardwareSerialMonitor is a PC serial client, both are written by Rupert Hirst and Colin Conway.

HardwareSerialMonitor Windows client reads the hardware statistics from the PC.

This data is forwarded over the hosts’ serial  port to an Arduino compatible micro processor. It is then, displayed using the GnatStats(OLED) or PhatStats(TFT) sketch.

This project, assumes you have a above average experience with Arduino, the IDE and the compatible boards available.

The HardwareSerialMonitor was designed for dedicated GPU's . Your mileage may vary with Integrated Graphics

To help with construction there are hook up guides, links below:

Phat-Stats ILI9341 TFT Display Hook up Guide

Gnat-Stats SSD1306 OLED Display Hook up Guide

Going Forward:

The project needs to be ported over to LibreHardwareMonitor , a fork of OpenHardwareMonitor  for future support, as this gets a lot more updates for new PC hardware. If anyone can help please get in touch, thanks.

http://tallmanlabs.com

http://runawaybrainz.blogspot.com/

https://github.com/koogar/HardwareSerialMonitor

https://github.com/koogar/Gnat-Stats

The above software/code is licensed under the following terms: 

--------------------------------------------------------------------------------------------

GPL v2

Gnat-Stats, Phat-Stats & Hardware Serial Monitor Copyright (C) 2016 Colin Conway, Rupert Hirst and contributors

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; If not, see http://www.gnu.org/licenses/.

HardwareSerialMonitor was inspired by Psyrax's "SerialSender". Psyrax is given attribution and thanks, by being an honorary member of the project.

x-zip-compressed - 1.38 MB - 04/30/2021 at 15:39

Download

x-zip-compressed - 1.38 MB - 04/30/2021 at 15:39

Download

PhatStats_TFT_ATSAMD_QT-PY_V2.0.7.zip

V2.0.7 Fix CPU & GPU Overclock gains "-+" bug

x-zip-compressed - 232.08 kB - 07/21/2021 at 13:50

Download

PhatStats_TFT_ESP32_BT_V2.0.7.zip

V2.0.7 Fix: CPU & GPU Overclock gains "-+" bug Still to Fix : Dual Event (USB and BT) needs fixing

x-zip-compressed - 154.66 kB - 07/21/2021 at 13:50

Download

PhatStats_TFT_STM32F1_V1.6.5.9.2.zip

Fix CPU & GPU Overclock gains "-+" bug

x-zip-compressed - 795.31 kB - 07/21/2021 at 13:50

Download

View all 9 files

  • 1 × Arduino Leonardo/ ProMicro / STM32F1 / ATSAMD21 / ESP32
  • 1 × SSD1306 0.96" i2C OLED or ILI9341 2.2, 2.4, 2.8, 3.2" TFT SPi Display
  • 5 × Arduino Experience

  • Phat-Tacho ILI9341 2.8" TFT Enclosure Prototype

    Rupert Hirst15 hours ago 0 comments

    Phat-Tacho Gauge Style Clip on Facia

    Additional Facias:

  • Gnat-Stats SSD1306 0.96" OLED Enclosure Prototype

    Rupert Hirsta day ago 0 comments

  • Phat-Stats ILI9341 2.8" TFT Enclosure Prototype

    Rupert Hirst3 days ago 0 comments

    Phat-Stats  ILI9341 2.8" TFT Enclosure Prototype

    Rear view  MCU "sight glass"

     Bottom USB C input, so the cable can lay in any position.

  • Gnat-Stats Concept SSD1306 OLED Enclosure

    Rupert Hirst07/03/2021 at 22:35 0 comments

  • Phat-Stats Slim USB Concept Case

    Rupert Hirst06/16/2021 at 15:02 0 comments

  • Phat-Tacho Bluetooth Concept Case with new DisplayStyle

    Rupert Hirst05/27/2021 at 23:04 1 comment

    Phat-Tacho Bluetooth Concept Case with new DisplayStyle

  • Gnat-Stats (OLED) & Phat-Stats (TFT) Hook Up Guides

    Rupert Hirst03/11/2021 at 23:32 0 comments

    *Hook up guides for Gnat-Stats(SSD1306 OLED) and Phat-Stats(ILI9341 TFT) 

    *for supported Micro Controllers.

    Phat-Stats Hook Up Guide
    Phat-Stats Hook Up Guide
    Gnat-Stats Hook Up Guide
    Gnat-Stats Hook Up Guide

  • Phat-Stats ​TFT V1.6.3 ATSAMD21

    Rupert Hirst01/06/2021 at 17:23 1 comment

    Phat-Stats TFT V1.6.3 ATSAMD21

    (requires HardwareSerialMonitor 1.3 Upwards)

    Minimize blinking on screen data value changes and screen refresh.

     CPU Turbo or GPU Boost Mode frequency gains. (eg: +895MHz) or gain %

    Show when CPU or GPU is Throttling (Hit Thermal Junction Max temp)

    Show when CPU or GPU Turbo or Boost Mode is active.

    Add rotary encoder for PWM screen brightness.

  • Gnat-Stats HardwareSerialMonitor V1.3 update preview

    Rupert Hirst12/07/2020 at 18:42 0 comments

    Gnat-Stats HardwareSerialMonitor V1.3 update preview

    Additional GPU Features:

    Fan Speed Load%, Fan Speed RPM, Total Memory, Used Memory, Current Power Consumption in Watts (Nvidia)

    Additional system RAM features: 

    Total Memory, Available Memory, Memory Load.

    Picture showing the old and new GPU features.

    Currently Gnat-Stats HardwareSerialMonitor is still using the OpenHardwareMonitor source code, which is unfortunately outdated.

    New hardware support can only be leveraged using the LibreHardwareMonitor Source Code going forward.

    My time is limited, If anyone can help the transition please get in touch.

    Thanks

    Koogar

  • Run on Startup Win10

    Rupert Hirst06/15/2020 at 22:21 0 comments

    Due to the Windows 10 not allowing programs to run on startup as admin, here is a workaround script.
    -----------------------------------------------------------------------------------------------------------------------

    1)  Right-click on the HardwareSerialMonitor.exe , go to properties, then compatibility and check "Run as Administrator"

    2)  Create the VBScript using a text editor (I used Notepad)

      Set WshShell = CreateObject("WScript.Shell" ) 
      WshShell.Run chr(34) & "C:\Program Files (x86)\HardwareSerialMonitor\HardwareSerialMonitor.exe" & Chr(34), 0 
      Set WshShell = Nothing
       

    (The above path is an example, edit this to where your HardwareSerialMonitor.exe path is located)

    Save the script as "HardwareSerialMonitor.vbs" (no quotes)

    Note: Make sure to save it as a .vbs not .txt
          

    3)  Now place the HardwareSerialMonitor.vbs in the HardwareSerialMonitor folder:

    4)  Goto the Windows startup folder

    %AppData%\Microsoft\Windows\Start Menu\Programs\Startup, alternatively access it by Win+R ⇒ shell:startup ⇒ Enter

    Create a shortcut to the .vbs script above by right clicking then "New" ⇒ "Shortcut" ⇒ "Browse" for the "HardwareSerialMonitor.vbs" Script and select it.

    HardwareSerialMonitor Should now run on startup
    -----------------------------------------------------------------------------------------------------------------------

View all 11 project logs

  • 1
    Step 1
    • Gnatstats Tiny OLED PC performance monitor  &  HardwareSerialMonitor  Windows Client  

    by Rupert Hirst and Colin Conway

    This project, assumes you have above average experience with Arduino, the IDE, compatible boards available and other related hardware.

    ___________________________

    Project principles:

    The HardwareSerialMonitor application  detects the sensors of most modern PC graphics, CPU and motherboards whilst, also pooling windows hardware stats.

    This data is then sent over a serial com port to an Arduino Microcontroller running the GnatStats Sketch and displayed on the OLED/TFT display.

    ___________________________

    Compatible boards:

    •    ProMicro   (Atmel ATMega 32u4) (Gnat-Stats)   Note: supports Neopixels
    •    QT-PY / XIAO Atmel ATSAMD21  (Phat-Stats)    Note: supports Neopixels
    •     BluePill   Ti STM32F103C8   (Phat-Stats)   Note: Does not support Neopixels!!!
    •     ESP32 LoLin32 / Lite / D32  (Phat-Stats)   Note: supports Neopixels

           ATMega 32u4 boards are more suited to (OLED) GnatStats .  They do not have the required memory for (TFT) PhatStats.

    ___________________________

    Compatible Screens:

    • OLED :  SSD1306 (i2c) or SH1106 (i2c)  128x64 Pixels  (SH1106 is not supported on the ATSAMD21 due to library restrictions)

    Note: SH1106 are usually  screens over 0.96" but not limited to. The (GND/ VCC) pin out order is different, although, more recent versions have the same pin order as the SSD1306 (VCC/GND), buyer beware!!!

    •  TFT    :  Red PCB ILI9341 (SPi) 320x240 Pixels 

    Library and MCU core links are included within the Arduino sketch.

    ___________________________

    Notes:

    •               Plug the Arduino into a dedicated USB Port, try avoid using a USB hub. Timings can be critical to avoid garbled or corrupted screen info
    •               HardwareSerialMonitor was designed for dedicated GPU's . Your mileage will vary with Integrated Graphics

    ___________________________

    Guides:

    technopat.net: Making an External Temperature Gauge

    technopat.net: Additional Tiny Performance Monitor for a Computer

    Technopat YouTube (Turkish)

    TallmanLabs: Phat-Stats ILI9341 TFT Display Hook up Guide

    TallmanLabs: Gnat-Stats SSD1306 OLED Display Hook up Guide

    ___________________________

    Limitations:

                         My coding ability...     eg: There is no CPU fan support, the CPU fan is a motherboard fan. It requires a motherboard chip to be detected, and the correct fan sensor.

    I can only test the hardware I own. Overall it has worked with everything I have tried.

    HardwareSerialMonitor and the way some things have to be detected.  See (4) as it relies on the "OpenHardwareMonitorLib.dll"

    OpenHardwareMonitor updates are few and far between. 

    Going forward:

                               Some PC hardware support for certain CPU / GPU's is lacking, particularly certain Ryzen CPU's.

    HardwareSerialMonitor needs to be ported from the OpenHardwareMonitorLib.dll to the LibreHardwareMonitorLib.dll (open source) as this has more features such as network /ethernet and receives updates on a more frequent basis.

    My time is limited, if you can help with this please get in touch, thanks.

View all instructions

Enjoy this project?

Share

Discussions

tahaguven wrote 03/30/2021 at 16:11 point

Seeeduino XIAO I hooked up with. white screen appears. what would be the reason ?

  Are you sure? yes | no

minidaveo wrote 03/31/2021 at 14:59 point

same for me, tried connecting the rotary to 5v and still nothing


perhaps there is a resistor , a high/low output command or external power that’s needed to get it to work??

  Are you sure? yes | no

tahaguven wrote 03/31/2021 at 18:29 point

I applied exactly what the project wanted.

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 19:31 point

Same for me? Tried connecting the rotary encoder?

5v what are you using? the only Arduino boards that Phat Stats use a rotary encoder on are 3.3v MCU's unless you want to blow a pin

  Are you sure? yes | no

minidaveo wrote 03/31/2021 at 19:51 point

I’m using the seeed xiao


I used the 5v from pin 13 as per shown on the pin out picture you have on your website


tried the 3.3v pin 11 first but nothing and looking on the internet the rotary can take 5v vcc anyway

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 20:01 point

I don't use the 5v pin.

The rotary encoder can take 5v sure but the XIAO can not its a 3.3v micro

find this line in the Config settings

#define enableQTPYneopixel      // uncomment to disable QT-PY built in Neopixel if you have a XIAO

and change it to

//#define enableQTPYneopixel      // uncomment to disable QT-PY built in Neopixel if you have a XIAO

Maybe the it is interfering with a pin number on the XIAO

  Are you sure? yes | no

minidaveo wrote 03/31/2021 at 20:12 point

will try that tomorrow, my setup is currently at work


appreciate the help


just to confirm you are running the screen, rotary and xiao off the usb cable power and no other external power source??

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 21:05 point

It powers from USB only, the rotary encoder does not even have to be connected

the board files in the code are for the QT-PY

Maybe you should get familiar read this beforehand.

https://wiki.seeedstudio.com/Seeeduino-XIAO/

https://www.thingiverse.com/thing:4812311 dalgibbard is using the XIAO

  Are you sure? yes | no

Rupert Hirst wrote 04/01/2021 at 00:22 point

I tried a XIAO it works Perfectly

check your pins and select the correct board before you upload

https://drive.google.com/file/d/1RjsJJhGxfFMJ0PMAkJE1SlpBRTMX9KGM/view?usp=sharing

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 19:27 point

 I have never tried a XIAO but it is pin compatible and the same ATSAMD as a QT-PY.  They are made to be compatible with each other

Did you install the board core in Arduino  correctly according to Seeed?

  Are you sure? yes | no

minidaveo wrote 03/31/2021 at 19:54 point

yes libraries and board manager as per your instructions from your code were installed

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 21:05 point

Maybe you should get familiar read this beforehand.

https://wiki.seeedstudio.com/Seeeduino-XIAO/

  Are you sure? yes | no

Rupert Hirst wrote 04/01/2021 at 00:20 point

I tried a XIAO it works Perfectly

check your pins and select the correct board before you upload

https://drive.google.com/file/d/1RjsJJhGxfFMJ0PMAkJE1SlpBRTMX9KGM/view?usp=sharing

  Are you sure? yes | no

minidaveo wrote 04/01/2021 at 07:42 point

it works! Updated the board manager to seeeduino that’s where I went wrong, perhaps you could update your files to include the https://files.seeeduino.com/arduino/package_ seeeduino_boards_index.json path so others can use that for the XIAO instead of the QT-PY 

many thanks again

  Are you sure? yes | no

Rupert Hirst wrote 04/02/2021 at 01:04 point

Working?

  Are you sure? yes | no

yusuf bayram wrote 04/03/2021 at 09:09 point

I have the same issue with BluePill. I succesfully compiled and uploaded the code to the micro controller and the hooked up everything correct. I don't see anything but the white screen.

  Are you sure? yes | no

Rupert Hirst wrote 04/03/2021 at 13:24 point

Upload to this standard example graphic test.

https://github.com/koogar/Gnat-Stats/blob/master/TFT_PhatStats/TFT_STM32/BluePill_ILI9341_graphicstest.zip

  Are you sure? yes | no

yusuf bayram wrote 04/03/2021 at 16:15 point

Thanks for answer. I uploaded the example and it was the same white screen and I realized one or two solders that I made on BluePill pins wasn't good. Now it's working properly.

https://imgur.com/9yfa4jE

  Are you sure? yes | no

Don wrote 03/27/2021 at 00:28 point

Got an oddity on PhatStats 1.6.2. I used an Adafruit Feather M0 Express,  2.8" HiLetgo ILI9341 display from Amazon (same display I used with GnatStats 1.5 TFT), with the rotary encoder option. When my CPU and GPU clock down to idle (800MHz for CPU, 300MHz for GPU) I still have a trailing digit wth the MHz overlaid on it (numerically 800 looks like 8000 for the CPU, 300 looks like 3005 for the GPU for example). Any ideas on how to fix this?

Edit: created a workaround in the code (for now, unless there is no other fix).

Changed the cpu clock ctring to use text size 3 instead of 4, coded in a trailing space. Did the same for the MHz.

    tft.setTextSize(3);
    //tft.setTextSize(4);
    tft.setCursor(105, 55);
    tft.print(cpuClockString); //CPU Freq
    tft.print(" ");
    tft.setTextSize(1);
    tft.print("MHz   ");

I also did the same for the gpu string setup. I have made some other edits that fit my build better. If my edited version can be helpful, I can upload it somewhere.

  Are you sure? yes | no

Rupert Hirst wrote 03/27/2021 at 18:15 point

PM'd

  Are you sure? yes | no

cagancelik88 wrote 03/26/2021 at 18:46 point

Unfortunately the last update broke the NeoPixel for me. It used to work in previous version. Although I'm not sure if it was working the way it's supposed to be because I got it working just today. The LEDs were responding to GPU and CPU utilization somehow but colors seemed a bit off or random.

I was checking this page then I realized that there's a new version. As I said uploading it to my Pro Micro made the LEDs go completely dark now. My screen is SH1106 and I'm using 220 Ohm resistor between ProMicro's "D10" pin and NeoPixel's "DI" pin.


Here are some images:

https://ibb.co/tPgztg0

https://ibb.co/kcRzgdt


nvm figured it out: I had to uncomment #define enableNeopixelGauges

  Are you sure? yes | no

cagancelik88 wrote 03/24/2021 at 20:55 point

Hey there,
Can I get some info on how to print or cut the overlay for gnat-stats? How was it made? And where can I find that glass/plastic top piece? Thanks!

  Are you sure? yes | no

Rupert Hirst wrote 03/25/2021 at 22:08 point

The glass and chrome bezel were from a car voltage meter.

The overlay was cut out with a Cricut

  Are you sure? yes | no

cagancelik88 wrote 03/26/2021 at 18:41 point

Thank you very much!

  Are you sure? yes | no

tahaguven wrote 03/23/2021 at 10:41 point

Hello there. I am using bluepill and an ILI9341 display. but the articles do not appear properly. what is the reason of this ? thanks.

  Are you sure? yes | no

ragook wrote 03/23/2021 at 23:11 point

so little information

  Are you sure? yes | no

ragook wrote 03/24/2021 at 19:39 point

What Arduino STM32 core are you using?

you need to use this

https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation

Not the official STM32 core it is slow.

  Are you sure? yes | no

tahaguven wrote 03/24/2021 at 21:49 point

STM32F103C8T6 

I use

  Are you sure? yes | no

ragook wrote 03/24/2021 at 22:30 point

The chip it is what is used in the arduino ide the core is not.  Hmmmmmm.

See... we shall

  Are you sure? yes | no

Rupert Hirst wrote 03/25/2021 at 23:10 point

STM32F103C8T6  is not the core.

The core is what the Arduino Software uses for each different boards

For the BluePill you must use 

https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Installation

  Are you sure? yes | no

tahaguven wrote 03/25/2021 at 23:15 point

ok i did everything here. the result has not changed. 

my screen is 240x320 does it matter? ILI9341 2.8 "240x320

  Are you sure? yes | no

Rupert Hirst wrote 03/26/2021 at 00:38 point

you are using the same screen as i am using.

Did you upload the code again using the new core?

You should see this exactly this when selecting the board in the Arduiino IDE

https://drive.google.com/file/d/1UrBxE95TJuFvXjs56rZ852UwmJLu61g1/view

Have you tried it on another PC? do you get the same result?

  Are you sure? yes | no

tahaguven wrote 03/26/2021 at 11:03 point

https://resimyukle.xyz/i/zPOOMT

I did everything from there

  Are you sure? yes | no

tahaguven wrote 03/26/2021 at 11:04 point

I will try it on another computer.

  Are you sure? yes | no

tahaguven wrote 03/26/2021 at 20:16 point

https://resimyukle.xyz/i/OTJNIG

another computer is the same. It works on first boot and is corrupted afterwards.

https://resimyukle.tc/image/f22e1ecb-76aa-4951-9d73-e3aa79e0fda0.oySA

  Are you sure? yes | no

Rupert Hirst wrote 03/26/2021 at 22:18 point

try this 

https://drive.google.com/file/d/1sUiX74_KPjE0kLxWbxqtoWFmubcnedoQ/view?usp=sharing

  Are you sure? yes | no

tahaguven wrote 03/27/2021 at 11:13 point

https://resimyukle.xyz/i/A95TBB

has not changed. the result is the same

  Are you sure? yes | no

Rupert Hirst wrote 03/27/2021 at 20:30 point

Try this version 

https://github.com/koogar/Gnat-Stats/blob/master/TFT_PhatStats/TFT_STM32/DEPRECIATED/PhatStats_TFT_STM32F1_V1.6.2.zip

Change the pins for the encoder according to the pins.txt

  Are you sure? yes | no

tahaguven wrote 03/27/2021 at 21:08 point

the result has not changed the same :(

  Are you sure? yes | no

Rupert Hirst wrote 03/28/2021 at 02:53 point

I really don't know then. 

I know what is happening just not why on yours

What does it say on the Chip

https://hackaday.com/2020/10/22/stm32-clones-the-good-the-bad-and-the-ugly/

  Are you sure? yes | no

tahaguven wrote 03/28/2021 at 11:13 point

https://resimyukle.xyz/i/QTJN5a

  Are you sure? yes | no

tahaguven wrote 03/28/2021 at 11:16 point

https://resimyukle.xyz/i/34TSCJ

let me show the screen. which might be the problem?

  Are you sure? yes | no

tahaguven wrote 03/28/2021 at 21:34 point

ATSAMD21

I ordered. Do you think the problem is related to the card?

  Are you sure? yes | no

Rupert Hirst wrote 03/31/2021 at 09:57 point

Your ILI9341 TFT is good, I do not know if it is your BluePill, my works great.

You could try changing the below value in the PhatStats Config settings 

--------------------------------------------------------------------------------------------------------------

/* Delay screen event, to stop screen data corruption ESP8622 use 25, most others 5 or 0 will do*/
int Serial_eventDelay = 0; //

---------------------------------------------------------------------------------------------------------------

Try values from  5 to 25

it should not need anything for a STM32 but its worth trying

Which ATSAMD did you buy?

  Are you sure? yes | no

tahaguven wrote 04/04/2021 at 12:48 point

problem solved. The USB driver needs to be plugged directly into the motherboard. When I plug a USB in the safe, the writings are corrupted. thank you.

  Are you sure? yes | no

TheRandomGuy wrote 03/19/2021 at 15:44 point

Hello! I am very interested in this project and I want to try it myself! I wanted a twist in order to learn to code. So, I bought 3.5-inch TFT LCD screen for Arduino Uno and I'm trying to modify the coding to fit on this screen. Any tips, suggestions? where should I start? I already downloaded all the libraries for the screen and tested it and it works fine, although the touch screen is funky( i don't want to use it anyway).

  Are you sure? yes | no

Rupert Hirst wrote 03/19/2021 at 17:35 point

What is the controller for the 3.5" screen? 

The UNO is not compatible with Phat-Stats 

  Are you sure? yes | no

TheRandomGuy wrote 03/19/2021 at 19:37 point

I dont know what controller you are talking about...

https://www.amazon.ca/480x320-Screen-Module-Arduino-Without/dp/B07NWH47PV/ref=sr_1_7?dchild=1&keywords=3.5+inch+screen+arduino&qid=1616182604&sr=8-7

this is the one that I bought

  Are you sure? yes | no

Don wrote 03/27/2021 at 06:27 point

I tried to rewire a 2.4" UNO shield screen when testing the older Gnat Stats 1.5TFT. I never found a wiring setup that got it working on the Arduino Micro for Gnat Stats. I went with a 2.8" ILI9341 display (the one I got for $17.00USD is over $70 on Amazon Canada). But the following one *should* work with any of the PhatStats compatable microcontrollers.

https://www.amazon.ca/WayinTop-ILI9341-Display-240X320-Resistor/dp/B087C3PP9G/ref=sr_1_5?dchild=1&keywords=ili9341&qid=1616826075&sr=8-5

You can also look for ILI9341 3.5" 240x320 if you want that screen size.

  Are you sure? yes | no

EVilm1 wrote 02/12/2021 at 18:56 point

Hello ! I'm new and I discovered this project.

It's incredible and I would love to do the same at home.
I have never tested this kind of project before and after several hours of research on your project,
I still have some questions before buying the components.
I think my message can help a lot of people in the same situation as me. The project displayed here is not very intuitive for a beginner. But doable!

I would like a mini oled screen displaying my pc information in real time.
If I have understood everything correctly, for that I must :

If I want to use a mini oled screen, I can take a "SSD1306 (i2c)" such as this one :
https://www.amazon.fr/AZDelivery-pouces-Arduino-Raspberry-microcontr%C3%B4leur/dp/B01L9GC470/

As a controller, I can take the Arduino ProMicro like this one :
https://www.amazon.fr/ARCELI-Atmega32U4-Bootloadered-d%C3%A9veloppement-Microcontr%C3%B4leur/dp/B07J2Q3ZD5/

Then I need to connect the SSD1306 display to the ProMicro, is there a mounting shema?
From what you can see on the 2nd picture of the project, the display is directly installed on the ProMicro if I'm not mistaken.
I imagine that the GND must be aligned but the others don't match... I don't know.

Edit : I did download the files and found the connections I think. SDA on pin2, SCL on pin3 and I guess GND on pin4 and VCC on pin 5?

If I want to use a mini OLED display I have to take the GnatStats (OLED) file and not the PhatStats (TFT) file because it is only for TFT displays. (Is this correct?)
So I can take this file : "GnatStats_ProMicro_OLED_V1.33.zip".

Then you have to flash the code on the ProMicro, in the folder there are several ".ino" files and a "bitmap.h" file.
I guess I have to flash them on the ProMicro, but I have to flash them all? From what I've seen I have to compile the files. Is that right?
I've done Arduino before but it was just on an Arduino UNO.


Suppose I manage to flash the ProMicro, I connect it via USB to the PC. I connect it in internal USB 2.0.

We can quickly get lost between OpenHardwareMonitor, HardwareSerialMonitor, LibreHardwareMonitor...
If I understood correctly, for the ProMicro to capture the information, HardwareSerialMonitor must be running (and there are solutions that exist to launch it at startup automatically).
When running it sends information about the COM port, the ProMicro receives, and displays.

Finally, I use very recent components such as a Ryzen 9 and an RTX 2060. I guess if OpenHardwareMonitor manages to read my information, it must work with this project?

Here is what I understood, I would like you to please confirm all what I said, or to complete some points.
If everything is ok I'll go ahead and order the components!

Thank you for your help ;-)

  Are you sure? yes | no

Rupert Hirst wrote 02/13/2021 at 16:26 point

Hi,

Answer to some of your questions.

Running on Startup: https://hackaday.io/project/19018-gnat-stats-tiny-oled-pc-performance-monitor/log/179299-run-on-startup-win10

All the tabs get compiled together as one in the Arduino IDE  just like any other sketch. The tabs are there to break the code down into modules, it would be very long and hard to work with other wise.

https://hackaday.io/project/19018-gnat-stats-tiny-oled-pc-performance-monitor

HardwareSerialMonitor the companion to  Gnat-stats(OLED)  or Phat-stats(TFT) work together and are  developed by me.

LibreHardwareMonitor is a fork of OpenHardwareMonitor both are open source. One is better than the other.

HardwareSerialMonitor relies on one file "OpenHardwareMonitorLib.dll" from OpenHardwareMonitor to detect the hardware and send it to the Arduino sketch.

 OpenHardwareMonitor application does not need to be run or present on the host PC.

You could connect the USB internally to the motherboard with the appropriate adaptor "internal usb header adapter" which is easily found on Google.

This project has evolved a lot since its inception and thus it has been hard to do a guide for beginners.

The ProMicro while being a very capable micro is very limiting due to its small memory especially in  HardwareSerialMonitor v1.3.

As I try  new platforms eg: 32u4/ ESP8266 / STM32 /ATSAMD etc. I have updated the code. Having so many options and pitfalls it has been impossible to cater for beginners yet it makes it easier for advanced users with those micro's

I have been experimenting with the Adafruit QT-PY & Seeeduino XIAO a cheap powerful solution which will limit the project to one specific board.

Going forward, the only code with be for that platform. At which point I could do a guide for beginners for the OLED and the TFT versions with hook up diagrams etc. for select hardware.

As for compatibility with your Ryzen, I could not tell you.  I have seen many images with Ryzen's that work and many questions about it doesn't, some is user error, some is not.

In theory if it works in the OpenHardwareMonitor application it should work in HardwareSerialMonitor and Gnat-Stats. 

The Ryzen platform has been problematic for OpenHardwareMonitor especially as it gets few updates.

Yet!!! if it works in OpenHardwareMonitor  and not in HardwareSerialMonitor / Gnat-Stats they could be detecting certain Ryzen CPU's in a different manner to which I am not aware of.

Hope this clears up a few things

Rupert

  Are you sure? yes | no

EVilm1 wrote 02/14/2021 at 02:11 point

Hi !

Thank you for your complete and detailed answer.
I downloaded the file and managed to compile it, I understood by myself that it was enough to open only one file for all the other files to follow in the compilation.
So I managed to compile the whole thing, (Gnat-stats for OLED)
However, there are still some mistakes that I don't really understand.
These are warnings and not errors, I guess it doesn't matter because I don't want to use NeoPixel (leds).

Here are the warnings: 
GnatStats_ProMicro_OLED_V1.33.ino:180:0:  /Adafruit_SSD1306.h:63:0: warning: "BLACK" redefined #define BLACK SSD1306_BLACK  ///< Draw 'off' pixels
GnatStats_ProMicro_OLED_V1.33.ino:165:0: note: this is the location of the previous definition #define BLACK 0x000000 // OFF
The same for white...

As you say QT-PY would be more suitable for OLED screens. Does the code work with QT-PY today? I need to buy QT-PY more than ProMicro?
Nothing is specified about QTPY in Gnat-Stats 1.33. Would it still be SDA on pin2, SCL on pin3, GND on pin4 and VCC on pin 5?
Or just connect the pins with the same name? (GND -> GND, VCC -> 3.3V, SDA -> SDA, SLC -> SCL) a bit laborious sorry xd

I looked at your code a little bit, very interesting! There are even 3 possible displays!
Thank you for your project and your help :D

  Are you sure? yes | no

Rupert Hirst wrote 02/15/2021 at 18:21 point

The warnings you are getting look like library conflict errors probably because you have more than one library with the same header file(.h) name.

The QT-PY is more suitable for TFT screens but will work with OLED as long as it is a SSD1306 not the SH1106 as there is no library for the QT-PY that I can find. 

I have OLED  working on the QT-PY I just have not released it yet

All the OLED screens which are 0.96" tend to be SSD1306 while screen sizes above that will be SH1106 but the seller will still call it a SSD1306!!!.

you can  tell by the pin order  

SSD1306 = VCC/GND/SCL/SDA

SH1106    = GND/VCC/SCL/SDA

The pin connections are VCC to VCC GND to GND,  SDA and SCL  are different depending on the Microprocessor.  

SDA and SCL are not mentioned in the code, you only have to connect them to the correct  pins.

  Are you sure? yes | no

EVilm1 wrote 02/16/2021 at 23:07 point

Thank you for your response,

What do you mean by "I have OLED working on the QT-PY" ?
Does GnatStats_ProMicro_OLED_V1.33 already work with QT-PY and OLED SSD1306 ?
For the pins I think I understood, it's just logic...
Thanks

  Are you sure? yes | no

Alvaro rubio wrote 02/03/2021 at 19:44 point

hola de nuevo alguien me puede decir como tengo que conectar  LOS PINES de un lcd ILI9341 a la placa STM32 ? LO AGRADECERIA MUCHO

  Are you sure? yes | no

Alvaro rubio wrote 02/03/2021 at 18:25 point

como tengo que conectar el arduino en el lcd de 320x240

me refiero al esquema electrico

  Are you sure? yes | no

Alvaro rubio wrote 02/02/2021 at 15:21 point

Hola buen dia tengo varias preguntas 

puede conectar un lcd 240x320  a arduino pro micro , si es así como tengo que conectar los pines y en que lugar 

  Are you sure? yes | no

Rupert Hirst wrote 02/02/2021 at 18:14 point

GnatStats_TFTonly_ProMicro_STM32_V1.5b

TFT Version 1.5 : STM32 BluePill & ProMicro Suppport
: 128x160 ST7735 & 240x320 ILI9341 TFT Support

  Are you sure? yes | no

Alvaro rubio wrote 02/03/2021 at 12:02 point

vale y solo con instalar esa version en arduino y conectarla deberia encender??

  Are you sure? yes | no

Chris wrote 01/31/2021 at 03:22 point

I read this a few times and I still can't find the answer to this. What hardware did he use for the Green/red circle around the display? I can't find info on that.

  Are you sure? yes | no

Rupert Hirst wrote 01/31/2021 at 17:58 point

Adafruit NeoPixel Ring - 16 x 5050 RGB LED  

It was never mentioned as it was an example of what you could make.

It could just as easily be a strip rather than a ring "There is no spoon" :)

The code for the NeoPixel Gauge is in the relevant sketches. (NeopixelRingGauges.ino)

The file for the graphic is in the files section but you will need a vinyl cutter, I used a Cricut Explore.

------------------------------------------------------------------------

Gnat-Stats circular tachometer dial overlay graphic

Gnat-Tacho Overlay 47.75mm v2.zip 

-------------------------------------------------------------------------

Supported Arduinos for the  NeoPixel Tachometer  Gauges

Atmel 32u4 based 

Atmel ATSAMD21 Based

  Are you sure? yes | no

evl wrote 01/25/2021 at 15:57 point

Hi guys, please help a noob. I got this error and I have no clue what to do.

'DisplayStyle1' was not declared in this scope

  Are you sure? yes | no

Rubbernail wrote 01/28/2021 at 15:57 point

I think we need more details about that.

What board, screen, file

  Are you sure? yes | no

Rupert Hirst wrote 01/30/2021 at 00:33 point

more details pls

  Are you sure? yes | no

estebangmn wrote 01/03/2021 at 21:01 point

Hello Guys¡, i have the SMT32 and the clone of promicro board but, do you know some more powerful boards that also support this proyect?, in the promicro there is limitation with the strip leds, i need some board that is more powerful than the blue pill or the clone of the promicro and also compatible to use with this project, THX¡

  Are you sure? yes | no

Rupert Hirst wrote 01/03/2021 at 23:37 point

What do you mean by more powerful?

All of the chips are more than powerful.

The Limitation of the ProMicro is memory 

On the  STM32 the Neopixel needs to share the SPi bus and it affects the TFT.

The ATSAMD21 would be the best option as it is fully supported by Adafruit libraries.

  Are you sure? yes | no

estebangmn wrote 01/04/2021 at 09:13 point

thank you rupert, i am the fan number one of your project, i would like to build a led indicator of two strips with 144 leds each one but the promicro only alows like 30 leds, will be like a large bar indicator using the strips but i need a board that support much leds for that, about the screen do you know some screen more expensive and with more qualityt to show the data and supported?

  Are you sure? yes | no

estebangmn wrote 01/07/2021 at 12:28 point

rupert, when i connect leds to the pin PA7 of the STM32 i got my leds blinking only, there is no response at all, why is that?

  Are you sure? yes | no

estebangmn wrote 02/01/2021 at 23:30 point

Rupert, im very curious about write or edit my own software in windows, i where thinkin about edit or build a new hardware serial monitor, i choose this ine bs i feel very familiar with it already, maybe just watch the line codes and learn how communicate with the gnatstats monitor, the thing is that i dont know even from where start, i mean, in wich language is wroten, what is the platform i must use to build or just edit the hardware serial monitor?, sorry by the question Rupert but im trying to write my own first software in windows and i would like to see the code of the hardware serial monitor to end of understand how the whole project works and learn how a software in windows is wroten, very very interesting for me this part, thx in advantage

  Are you sure? yes | no

Rupert Hirst wrote 02/03/2021 at 16:22 point

"Rupert, im very curious about write or edit my own software in windows, i where thinkin about edit or build a new hardware serial monitor"

HardwareSerialMonitor is a MS Visual Studio project mostly in C#

You can download the community edition of  VS for free.

The HardwareSerialMonitor Source code is in a Zip file in the download.

Open the HardwareSerialMonitor.csproj in VS. 

On the right hand side in the "solutions explorer" find "Form1.cs" right click and "View Code"

All of the code for reading the OpenHardwareMonitorLib.dll and  sending the serial string to the arduino are in the "Form1.cs"  file 

You could just open "Form1.cs" in "Programmers Notepad" or "Notepad++"

if you just want to look.

reference stuff: https://github.com/openhardwaremonitor/openhardwaremonitor

         https://github.com/LibreHardwareMonitor/LibreHardwareMonitor

  Are you sure? yes | no

Rupert Hirst wrote 01/09/2021 at 23:05 point

"rupert, when i connect leds to the pin PA7 of the STM32 i got my leds blinking only, there is no response at all, why is that?"

PA7 is an SPi MOSI pin.

You can not effectively run a SPi TFT and Neopixels on the STM32 due to the DMA restrictions of the STM32 Neopixel library. 

That's why I didn't include it.

Works fine on the ATSAMD21 using the Neopixel Zero DMA Library.

https://learn.adafruit.com/dma-driven-neopixels

 "i would like to build a led indicator of two strips with 144 leds each one but the promicro only alows like 30 leds,"

May i ask why you need so many pixels? :)

I think i read the ATSAM21D can drive 8000 pixels.

  Are you sure? yes | no

estebangmn wrote 01/10/2021 at 10:22 point

"May i ask why you need so many pixels? :)" i wanted to build 4 large bars of 144leds each one with the project, they are cheap and looks amazing but the promicro dont allow more than 40 pixels i think in total, this is a technical question Rupert, im also electronics technician but not engineer, i would like to know what is the spec in the microprocessor who tell you that will allows 8000 pixels like you said, thanks in adavance

  Are you sure? yes | no

Rupert Hirst wrote 01/10/2021 at 16:12 point

"what is the spec in the microprocessor who tell you that will allows 8000 pixels"

As long as the MCU is fast enough, the limitation is the amount of memory it can allocate.

The Teensy4 can run 30,000 pixels

ARM Cortex-M7 at 600 MHz
Float point math unit, 64 & 32 bits
1984K Flash, 1024K RAM (512K tightly coupled)

  Are you sure? yes | no

estebangmn wrote 01/12/2021 at 19:08 point

but this is compatible with the project?, is even better than ATSAMD21?

  Are you sure? yes | no

Rupert Hirst wrote 01/12/2021 at 19:38 point

"but this is compatible with the project?, is even better than ATSAMD21?"

I do not know, I do not have a Teensy. 

I have it running on my desk with neopixels  on a  ATSAMD21 Feather M0   

  Are you sure? yes | no

Rupert Hirst wrote 01/12/2021 at 22:43 point

Yes it should work

  Are you sure? yes | no

estebangmn wrote 01/12/2021 at 22:48 point

THX rupert you're the man

  Are you sure? yes | no

estebangmn wrote 01/12/2021 at 23:10 point

https://www.youtube.com/watch?v=8Dy6VMruoY0

the most i like personally is the oled version but also the new version of the LCD looks great, one of the two screens looks much brighter than the other i have "the smaller one", they come from different distributors i think, size is also diferent

  Are you sure? yes | no

Rupert Hirst wrote 01/12/2021 at 23:24 point

I like the OLED version also but it needs more resolution

You should try the "Non Blinking" version of the sketch it was a lot of work! :)

https://youtu.be/-b1WhIz9ZzI

  Are you sure? yes | no

estebangmn wrote 01/02/2021 at 16:23 point

hello, someone know the setup to flash a STM32 board with arduino IDE already showing mapple mini in the usb?. last version 1.58b

 i tried to compile and flash selecting like board STM32F103C8T6, i get error trying to compile for any SMT32 boards"

exit status 1
Error compilando para la tarjeta Generic STM32F103C series."

and if i try some arduino boards i get this error 

"'PB11' was not declared in this scope"

 my SMT32 board is ready and recognized like mapple mini in the usb IDE ports

can someone help me?

  Are you sure? yes | no

ragook wrote 01/02/2021 at 18:10 point

Does the Blink sketch work?

What Core are you using?

"'PB11' was not declared in this scope"  is usually the result of the wrong core or board selected , it does not recognize the pin numbering.

  Link Below for the STM32 Bootloader and Arduino Core (you may have to install the Arduino Due core also for the compiler.

https://github.com/rogerclarkmelbourne/Arduino_STM32

https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries

BluePill_generic_boot20_pc13.bin  (pc13 refers to the LED pin)

Adafruit_GFX Version 1.8.0 and higher doesn't compile for STM32 Boards- Downgrade to Adafruit_GFX Version 1.7.5 in the library manager.

Hope this helps :)

  Are you sure? yes | no

estebangmn wrote 01/02/2021 at 18:15 point

thank you very much, yes the blink sketch works and now i can even programm without the adapter, i can programm directly by usb, so i must add this links to the arduino files folder?, and wich board i must select?

https://es.aliexpress.com/item/32495902134.html?spm=a2g0s.9042311.0.0.274263c0zCZn1Q

  Are you sure? yes | no

estebangmn wrote 01/02/2021 at 18:47 point

it's working already, the problem was the version of Adafruit_GFX Version, down to 1.7.5 and works at the first try, love at the first sight, cool¡

  Are you sure? yes | no

R▲ wrote 12/22/2020 at 15:07 point

Folks, I need some help. 

1. My hardware:
- MICRO LEONARDO ATmega32U4 
- SSD1306 BLUE Arduino SPI I2C
2. Installed Open Hardware Monitor
3. Flashed Arduino with GnatStats_ProMicro_OLED_V1.32b. 
- Included all the necessary libraries
- Uncommented these items:
#define OLED_SSD1306
#define enablepowerPins
#define powerPins  //(VCC, GND, SCL, SDA) 
- Picked "Ardunio Leonardo" board and "COM4" port it Tools
- Veryfied sketch, uploaded successfully
4. Installed Hardware Serial Monitor v.1, running as Admin

My screen is black. What am I missing here? 

  Are you sure? yes | no

R▲ wrote 12/22/2020 at 20:07 point

Okay so I've tested D4 and D5 pins with multimeter, and it turned out that they weren't giving 5V. So I've wired VCC and GND pins of the OLED display directly to Arduino's VCC and GND. It did the trick!

  Are you sure? yes | no

git-toor wrote 12/18/2020 at 10:30 point

Hi Guys,

openserialmonitor doesnt give cpu temp reading for some reason, I wrote a simple python script to print all sensor names and values and it doesnt show the cpu temps. Any idea what might be wrong there. I tried other applications like HWinfo and HWmonitor and they all show cpu temps just fine.

  Are you sure? yes | no

Rupert Hirst wrote 12/18/2020 at 14:38 point

on what PC hardware?  which Arduino?

  Are you sure? yes | no

Tomas wrote 12/20/2020 at 18:25 point

I have the same problem, ryzen 3600, temperature not reported, and clock speed on screen 2 shows percentage use. Using arduino pro micro and oled screen

  Are you sure? yes | no

Lucas wrote 12/27/2020 at 15:34 point

tries to run HardwareSerialMonitor as an administrator. I had the same problem but when I run as an administrator the program works normally

  Are you sure? yes | no

Benjamin wrote 12/04/2020 at 18:11 point

Hi everyone. :)

I currently try to recreate this project and am stuck at the point where I need to flash the firmware on the arduino. I have an Arduino Micro and the SSD1306 128x64 OLED screen.

With a test-firmware from a tutorial I get the screen working, but the GnatStat V1.41 firmware doesn't show me anything on the screen after flashing. I already double checked the SDATA and SCLK Pinout, included an Reset-Pin and went over all the needed definitions in the firmware-script.

Any ideas what I could have made wrong? 
https://imgur.com/a/gLAI1iH


  Are you sure? yes | no

Rupert Hirst wrote 12/07/2020 at 18:53 point

Hi Benjamin

Looks like your using the SPI version of the screen not the i2C

BTW although the code shows "OLED_RESET" it does not get connected physically

If the screen is also i2C compatible try using Gnat-Stats sketch 1.32b

it is specifically for the 32u4 based Arduino's only

  Are you sure? yes | no

archieve.minimadrid wrote 12/01/2020 at 22:53 point

Hello everyone. First i would like to thank the developers for this nice project. I would love this to keep evolving as its a very nice monitoring setup.

I managed to run the TFT 1.5 version with an Arduino Pro Micro 5V and a 2.8 ILI9341 screen. After properly setting up the pro micro in the Arduino IDE, and flashing the software (prior commenting and uncommenting my hardware in the Configuration.h file) it works as it should. I had to add 2.2K resistors (what i had around) between all pins of screen and Arduino (except VCC, GND and LED pins) because as others commented, the screen does not properly manage 5V signals even if it says so. 

So after wiring the resistors my setup is working nicely! Two things im doubtful:

HardwareSerialMonitor V1.1a its supposed to use Librehardwaremonitor dll library (as it says in the Arduino code) but i think it does not. The DLL incluided is from OpenHardwareMonitor dll, version 0.82. I've manually changed it for the 0.95 version, but for my hardware it does not detect all parameters as it should. Im running a Ryzen 5800X and a RTX3080, so not all data is displayed, for example, cpu temp, and cpu frequency. OpenHardwareMonitor software is not able to fetch this info as its outdated. I would please ask the developers to move the support to the latest LibreHardwareMonitor library, as this one does properly detect the stats and gets updated frequently (OpenHardwareMonitor was forked, and its a dead project now)

- The second thing i would love to be able is to have more screen layouts with better graphics, or at least some documentation to be able to redesign myself, or even better, have different layouts made by the community. That would be awesome. I would love to know how could i add different parameters fetched from the Open/Libre library.

So thanks again, i hope that at least LibreHardwareMonitor library is properly supported soon. Please tell me if you need any help that i can provide. Thanks!

  Are you sure? yes | no

Rupert Hirst wrote 12/07/2020 at 19:01 point

At the moment we are stuck on OpenHardwareMonitor till it can be switched over to LibreHardwareMonitor, which for me will not be easy.

Older LibreHardwareMonitor was still compatible with a name change of the DLL, now it is not.

Originally, I was hoping people would modify the HSM source code and share. While a few people have taken the code as their own, other have added great features but do not share.

  Are you sure? yes | no

Edgaras wrote 11/27/2020 at 14:41 point

Hello peeps. Wanted to ask for help. I have succesfully managed to get it test-working with arduino uno (tested with this because I had faulty arduino micro pro), oled shows data with temps model number (ryzen 3600 and rtx 2060) interlaced with blanking lines. Upon some investigation (im not coder, my girl is) we faund out that original adafruit ssd1306 library has default setting for 128x32, so We changed the H file so it would be for 128x64, literally changed just one line of code. It started showing proper screen, correct resolution, but with no data anymore. Any ideas?

  Are you sure? yes | no

dehavok1 wrote 11/09/2020 at 15:50 point

Hi I am not getting any temperature values on a Ryzen 3700X and 5700XT. Any suggestions? Thanks

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates