Close
0%
0%

PhatStats PC Performance TFT Display

Arduino TFT PC Performance Monitor with Client software

Similar projects worth following
PhatStats ili9341 TFT PC Performance Monitor Display

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 Phat-Stats 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

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

Gnat-Stats (OLED) has moved to a new project page here

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

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

GPL v3

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 only was inspired by Psyrax's "SerialSender". Psyrax is given attribution and thanks, by being an honorary member of the project.

WeeStatServer-0.5.2_Libre.0.9.3-pre256_Binary.zip

Alternative to HardwareSerialMonitor but uses LibreHardwareMonitor libraries. Requires .net6

x-zip-compressed - 3.96 MB - 10/06/2023 at 15:16

Download

HardwareSerialMonitor_v1.4.4_9600_OHM.0.9.6.1.PR_NET4.8_Binary.zip

added experimental Intel Jasper Lake Support added experimental Intel Rocket Lake Support added experimental Intel AlderLake support added Alde Lake Mobile support added Intel RaptorLake support Boris Vogel https://github.com/BrsVgl/openhardwaremonitor

x-zip-compressed - 1.46 MB - 09/22/2023 at 11:57

Download

x-zip-compressed - 171.34 kB - 06/20/2023 at 00:27

Download

x-zip-compressed - 272.40 kB - 06/20/2023 at 00:24

Download

TachoStats_V3.1.7.1_SeeedRoundDisplay.zip

https://www.seeedstudio.com/Seeed-Studio-Round-Display-for-XIAO-p-5638.html Seeed Studio Round Display for XIAO - 1.28-inch round touch screen, 240×240 resolution

x-zip-compressed - 180.38 kB - 06/20/2023 at 00:07

Download

View all 11 files

View all 8 project logs

View all instructions

Enjoy this project?

Share

Discussions

Pogz wrote 08/24/2020 at 12:39 point

Hi, im an absolute Arduino beginner (but I have experiences with the Pi and basic electronic knowledge) and I cant seem to make this work. Below is the board that I used and the OLED I used.

Board https://shopee.ph/product/226548939/5019942450
OLED https://shopee.ph/product/226548939/4219824365

I think I wired it correctly (the OLED had the GND on the 1st pin and the VCC on the 2nd thats why I had to use a wire first to test). SCL and SDA seems to be wired correctly. 

https://imgur.com/a/79kfrrT?

On the Arduino side i've done the following: 

1.) Made sure that the Arduino is selected and the correct COM port is selected
2.) Installed the following libraries: Adafruit GFX, Adafruit NeoPixel, Adafruit ST7735
3.) Double clicked on the GnatStats_TFT_ProMicro_STM32_CFG_V1.5.ino and compiled/test. All good. Then uploaded it to the Arduino. No problem.
4.) Ran HardwareSerialMonitor.exe as administrator

But as you see from the photo, I dont get any output. Am I missing something or did I do something wrong? I've also tried directly wiring VCC to the VCC pin of the Arduino and the GND to ground to make sure that its getting enough power but still no dice.

  Are you sure? yes | no

Pogz wrote 08/25/2020 at 10:54 point

ok I was stupid. i was using the TFT version. i though that 1.5 is the latest thus i got that instead. now working with the OLED sketch. 

just a question though, how did you guys power the screen? from the instructions: " D5 High(5v) and D4 Low(to ground) " but its not powering my display. do i need to modify something in the code?

hooking it up to regular vcc and ground line works tho. 

  Are you sure? yes | no

Fizzgig84 wrote 08/31/2020 at 20:42 point

Hey buddy, Im running the exact same everything but still the same issue of nothing showing up. You're running "GnatStats_ProMicro_STM32_OLED_V1.41_CFG.zip" ? I feel like I'm missing something.

  Are you sure? yes | no

Pogz wrote 09/02/2020 at 12:34 point

@Fizzgig84 took some wrangling and re-reading due to my inexperience in working with arduino. 

the versioning seems to add to the confusion as people tend to always get the one with the latest version.. 

if you're using something like mine, you need the OLED version (v1.41). 

If you're using the 4 pin OLED, you need to connect (OLED <- > Pro Micro)

SDA - Pin 2
SCK - Pin 3
VCC - VCC 5V rail 
GND - Ground

I was not able to get pins 4 and 5 to word as described in the instruction. I dont get any display light. 

I was able to get the TFT_ST7735 to work too.. but im having trouble on making TFT_ILI9341 work. 

I would probably write a better documentation for those without prior knowledge on Arduino.

  Are you sure? yes | no

Poiaman wrote 07/23/2020 at 12:33 point

Tnks for sharing, i have made the project and its amazing! Now i´m tryng to customize and i need help to understand how can i get the index list of Monitor Serial. For exemple, i would like to make a % for ram use, so i´ll need more information, how the total of memory. Could you help me to understand this part? 

  Are you sure? yes | no

ImmodderNation wrote 06/14/2020 at 23:01 point

How do I add int and strings to the code for voltage and fan speed?

  Are you sure? yes | no

taitelcoms wrote 06/13/2020 at 07:24 point

hello there! I am using ryzen 2700X  but no data for temp and clock speed. CPU Usage working fine. Could you update? I try lastest dll from OpenHardWareMonitor but not working.

  Are you sure? yes | no

Rupert Hirst wrote 06/15/2020 at 22:06 point

are you running the program as admin? that is the usual reason for no CPU frequency or temp. 

HardwareSerialMonitor has always had issues with Ryzen as has openharwaremonitor in the past

  Are you sure? yes | no

taitelcoms wrote 06/16/2020 at 02:08 point

I tried as admin but nothing has changed. Now I commented out frequency and clock then keep waiting if there is any changed ... Thanks. 

  Are you sure? yes | no

Juanillo62gm wrote 05/06/2020 at 03:22 point

Could you compile the code with new OpenHardWareMonitor.dll ? I can't get data from my i9-9900k and RX5700 XT. I'm running OLED_SSD1306 with GnatStats v1.44

  Are you sure? yes | no

Rupert Hirst wrote 06/15/2020 at 22:02 point

I don't  know why its not reading your 9900K , my 9600k works fine 

  Are you sure? yes | no

Psyrax wrote 12/26/2019 at 19:28 point

OMG didn't knew it was forked!!! I'm blushing.

  Are you sure? yes | no

Lautaro wrote 09/06/2019 at 17:37 point

Hi, does anybody have the same problem as I ?

I try to run the compiler and i always get the same error. The error is called ERROR STATUS 1.

Im tring to run the code with an ARDUINO MEGA 2560

Any help please ?

  Are you sure? yes | no

Rupert Hirst wrote 06/15/2020 at 15:20 point

Don't use a MEGA

  Are you sure? yes | no

deemmkka wrote 08/19/2019 at 06:33 point

Help please, does not display CPU temperature i5-8400, although in the program of all shows. Tell me how to fix it?

  Are you sure? yes | no

Ivan wrote 08/06/2019 at 15:18 point

I'm new to Arduino :( someone can explain to me, if it is enough to move the files I find here

https://github.com/psyrax/SerialMonitor or I have to do something else

Thank you in advance guys

  Are you sure? yes | no

adamnemeth0 wrote 07/23/2019 at 07:44 point

Hi, does anybody have the same problem as I ?

I am running this on a ryzen cpu and I got no temps. When I modified the hwmonitor 1.0 to look for different name for temps it was working.

But the hwmonitor 1.0 using openhardware monitor lib which is not showing correct cpu speeds. So I would like to use the Hwmonitor 1.1 with the librehardware lib. But I have the same issue that I have no temp readings, and the source code is password protected so I can't make the same modification as it was on the hwmonitor 1.0

Could anybody tell me how to make the Hwmonitor 1.0 using librehardware lib. Or send me the source for the Hw 1.1. ?

  Are you sure? yes | no

estebangmn wrote 07/06/2019 at 14:23 point

guys i need help,im trying to make it works the version 1.4 with CFG on arduino uno and one oled 0'96" screen.in this version i have a problem,when turn it on part of the GPU and sysram data appers and disapear for seconds,i dont have the microPro and i tweak part of the code to make it work in a simple arduino uno directly to the oled screen,i tried everything but i dont know what happend,part of the info appear and disapear for seconds,when it run works well and show all the info for 2 seconds and then disappear everything on the display type 1,someone can help me?

FIXED MYSELF,the problem was the amount of Pixels,when you put more than 20 pixels on the arduino sketch the info of the display works very bad or dont even works,if you choose NUMPIXELS 10 all works perfect,the fucking skect is glitched with the number of pixels

  Are you sure? yes | no

Rupert Hirst wrote 07/07/2019 at 21:25 point

The sketch is not glitchy it runs fine on a ProMicro with more than 10 pixels, It clearly states use a 32u4. yet people still fight it and try to use a 328P .

  Are you sure? yes | no

estebangmn wrote 07/07/2019 at 21:35 point

ok thank you rupert and thanks for the proyect,i just made a video on youtube talking about this proyect and my problems during this last days

  Are you sure? yes | no

openmy wrote 06/21/2019 at 13:46 point

HardwareSerialMonitor_v1.1.zip 
gnant.src gplv3 license open source is password protect ??? Do not open this zip file. ??? it is still open source

  Are you sure? yes | no

adamnemeth0 wrote 07/22/2019 at 08:41 point

Hi, did you managed to get the password? I have asked him for it, but no reply yet.

  Are you sure? yes | no

Don wrote 06/16/2019 at 04:43 point

I have built a portable version of Gnat Stats V1.31 for my laptop and a Gnat Stats TFT 1.5 that is mounted in the window of my PC case. On the PC, everything works fine except the GPU shader section which shows 0MHz. My GPU is an RTX 2060 (nvidia driver ver 430.86), Windows 10 Pro, and using Hardware Serial Monitor v1.1.

I'm not sure if this issue has/is been popping up, but I'm guessing that it might be due to the RTX cards config with the Turing gpu.

  Are you sure? yes | no

Rupert Hirst wrote 07/07/2019 at 21:26 point

I'm not sure if Libre hardware monitor supports RTX series yet

  Are you sure? yes | no

Don wrote 07/07/2019 at 23:14 point

Thank you for the reply.

On a separate note, I updated my build of the TFT version with two 8-count WS2812 pixel sticks. They are the same width as the 2.8 TFT, so the CPU meter is on top and the GPU meter is on bottom.

Your code works perfectly with them, I just had to change the NeoPin to P4 on the ProMicro. P5 does work (tested with a different sketch), but the pixels wouldn't light.

If you'd like a photo of the build, let me know.

  Are you sure? yes | no

gitxmax wrote 04/06/2019 at 15:33 point

Hello, received a  blue pill and ILI9341  screen Today and now checking all the connections and pin assignments. I presume, the 3.3v regulator of the blue pill is too weak to supply all the power for the screen? Since the screen itself is 5v tolerant, will it be ok, to supply 5v, from the usb power, directly to the screen's vcc pin, while the logic power will be provided by blue pill's 3.3v regulator? Or better to replace the regulator with a more powerful one ( I have a few 1117 3.3v)

Also, bit confused by your picture, the part where the A12 pin is connected to 3.3v pin, through a resistor. Could not find any information on that...

Thanks!

  Are you sure? yes | no

Rupert Hirst wrote 04/06/2019 at 15:42 point

I powered the screen inc blacklight off the 3.3v on the BluePill. If the VCC on the screen is 5v tolerant then use the 5v on the bluepill its tied to the USB input .

The resistor is for the reason below

https://www.onetransistor.eu/2017/11/stm32-bluepill-arduino-ide.html

I didn't have any issue without out the resistor on my PC

  Are you sure? yes | no

gitxmax wrote 04/06/2019 at 15:50 point

Thanks!

  Are you sure? yes | no

quannhe18 wrote 04/05/2019 at 14:09 point

Can you add the Ram usage in the screen  ??? thanks =) 

  Are you sure? yes | no

Rupert Hirst wrote 04/05/2019 at 14:46 point

Ram usage is  displayed at the bottom

  Are you sure? yes | no

quannhe18 wrote 04/05/2019 at 14:58 point

"Memory usage" ??? what exactly the "Memory usage" in the bottom  i think it is show the percent of memory use???and the CPU load and CPU usage are different ???thanks you for your project, it is very fantastic =)))

  Are you sure? yes | no

Rupert Hirst wrote 04/05/2019 at 22:44 point

I don't understand your question.

"Can you add the Ram usage in the screen  ??? thanks =) "

"Memory usage" is the amount for system ram currently being used

  Are you sure? yes | no

quannhe18 wrote 04/06/2019 at 03:27 point

oh thanks, now i'm understand about the "Memory usage" many thanks =)))))

  Are you sure? yes | no

gitxmax wrote 03/28/2019 at 15:09 point

Could you elaborate, on the voltage subject, of the TFT screen?

Most of them, appear to be 3.3/5v tolerant, yet the logic seems to be 3.3v. So, what's the right way to connect them?

  Are you sure? yes | no

Rupert Hirst wrote 03/28/2019 at 18:02 point

Hi

Yes they do often state they are 5v tolerant but you have to take it with a pinch of salt. The 2.8" ILI9341 in the picture has a voltage regulator (SMD part 662K) but I had to use 1.5k resistors in series on all the logic using a 5v ProMicro .  So in essence they are really not 5v tolerant :)

I'm liking the BluePill more and more. Over half its pins are 5v tolerant and that includes TX/RX, despite it being 3.3v, and they are so cheap

  Are you sure? yes | no

gitxmax wrote 03/29/2019 at 02:16 point

Cheers! So the bluepill requires no extra resistors? Simply attached directly with the wires? Would you mind, posting a simple connection diagram ( for the Stm32 + ILI9341, for example)?

  Are you sure? yes | no

gitxmax wrote 03/22/2019 at 11:23 point

Yet another fantastic update, thanks!

Do both screens work with either STM32 BluePill or ProMicro?

  Are you sure? yes | no

Rupert Hirst wrote 03/22/2019 at 11:51 point

Thanks 😁

Yes both screens work with both micros. Just uncommented  the micro and the screen you are using from the config tab. 

The BluePill has a lot more memory for bitmaps. The only downside is that neopixels on the STM use the MOSI SPi pin. This being the case I left it out for the moment.

 You can use software SPi and get the pin back but it really impacts the refresh of the screen.

  Are you sure? yes | no

Boris wrote 03/21/2019 at 18:19 point

Heya,

Having an odd issue and wondering if I've mucked up somewhere!

I purchased https://www.aliexpress.com/item/0-96-inch-IIC-Serial-Yellow-Blue-OLED-Display-Module-128X64-I2C-SSD1306-12864-LCD-Screen/32896205376.html

When I load the display up, the bottom bit of the screen seems cut off as can be seen in this screenshot:

https://www.dropbox.com/s/68gqtzxcljyv5cr/2019-03-21%2018.10.52.jpg?dl=0

Have I ordered an incorrect display, or is this a configuration setting I can change?

Thanks!

  Are you sure? yes | no

Rupert Hirst wrote 03/21/2019 at 18:44 point

I noticed this issue using the newer adafruit SSD1306 libraries. 

I have never had this issue before in earlier libraries.

Kind of got around it in v1.4 by specifying the pixel height and width

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

Most vendors just call it a SSD1306 but often they are SH1106. The 1.3" screens are always SH1106 it appears, even though they call them SSD1306

Try selecting the SH1106 library 

  Are you sure? yes | no

Boris wrote 03/21/2019 at 19:14 point

Which SH1106 library did you use? I seem to be having compile errors with the choice I have (https://github.com/davidperrenoud/Adafruit_SH1106).

Alternatively, would v1.4 work with my particular setup? I noticed that the power pin option was removed, so didn't want to risk it lest I fried an OLED!

Thanks!

Edit: Ignore - if I RTFM'd, I'd see you already included a link!

  Are you sure? yes | no

Boris wrote 03/21/2019 at 19:36 point

All working perfectly with the 1106 library! Thank you very much!

  Are you sure? yes | no

gitxmax wrote 03/21/2019 at 12:02 point

Having a small issue with the neopixel ring... 

I received a ring whch is marked wcmcu-2812B-16, which seems to be a clone of the original, but of a larger size. It works ok-ish, but has 2 issues..

The leds seem to be reversed. The cpu leds are mapped to the bottom part and the gpu leds are at the top.

There's no startup animation (as seen on one of the youtube videos.)

Mostly concerned with reversing the top and bottom mapping. Could you give me  a hint, what needs to be changed in the code?

Thanks!

  Are you sure? yes | no

Rupert Hirst wrote 03/21/2019 at 12:26 point

if you look in the "NeoPixelGauges" tab and take the following as an example

//---------------------- CPU--------------------

void CPU_loadGauge(int cpuUsage ) {

  refreshNeopixels();

  float CPUloadfactor = cpuUsage ;

  if (CPUloadfactor >= 0 ) {
    pixels.setPixelColor( number of the pixel you want to be lit  round the ring, 229, 193, 0);

..............................

if you have 16 pixels the numbers start at 0 -15 , so the first pixel is address "0"

In your case the PCB is laid out in reverse. You will have to go down the "NeoPixelGauges" tab and change all the numbers.

Example: CPU_loadGauge

  pixels.setPixelColor( 15, 229, 193, 0);

  pixels.setPixelColor( 14, 230, 165, 1);

  pixels.setPixelColor( 13, 232, 137, 2);

Above becomes 

   pixels.setPixelColor( 0, 229, 193, 0);

   pixels.setPixelColor( 1, 230, 165, 1);

   pixels.setPixelColor( 2, 232, 137, 2);

and so on..................

Hope this is as clear as mud :)

  Are you sure? yes | no

gitxmax wrote 03/21/2019 at 12:42 point

Thanks man, will dive into it ;)

  Are you sure? yes | no

gitxmax wrote 02/24/2019 at 20:57 point

Thanks for the fantastic project.

I recreated the project, using an arduini nano instead. V1.2 works somewhat ok, but with the v1.31 the telemetry data is not pulled. Is there anything in the latest code, which possible conflicts with the arduino nano?

  Are you sure? yes | no

gitxmax wrote 03/10/2019 at 06:47 point

Replaced Arduino nano with Arduino ProMicro and all the issues gone.

  Are you sure? yes | no

Rupert Hirst wrote 03/10/2019 at 22:04 point

The code needs hardware USB to function correctly

  Are you sure? yes | no

Belean wrote 03/24/2019 at 10:53 point

I did the same thing and I solved my problems! Nano doesn't have enough memory imho.

  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