Wartość wyrażona w cyfrach zawsze ma element abstrakcyjny, który może prowadzić do błędów w interpretacji. Jednak patrzenie na wskazówkę przesuwającą się z jednego końca na drugi jest czymś znacznie bardziej naturalnym. Mając to na uwadze, Lex z kanału „Computing: The Details” postanowił zakupić kilka amperomierzy 5 mA i połączyć je z odpowiednią dawką Arduino, aby stworzyć monitor CPU, który raportuje użycie każdego dostępnego rdzenia, pamięć RAM i swap.

Jak zbudować monitor CPU z analogowymi miernikami
monitor CPU z analogowymi miernikami

W przeszłości dzieliliśmy się różnymi monitorami sprzętu. Niedawno pisaliśmy o CPU Temp, który pilnuje temperatury, ale warto też przyjrzeć się rozwiązaniom takim jak Core Temp i HWiNFO.

To są rozwiązania programowe, stos cyfr i wykresów na ekranie. Pomysł wykorzystania fizycznych mierników nie jest nowy (niektórzy producenci obudów umieszczali je w starszych konstrukcjach, pamiętam też akcesoria Cooler Mastera), ale Lex z kanału „Computing: The Details” postanowił do tego wrócić z miernikiem DIY specjalnie skonfigurowanym dla swojego obecnego sprzętu.

Pomiar aktywności CPU i użycia pamięci za pomocą amperomierzy

Niezwykłym szczegółem (a może należałoby powiedzieć niespodziewanym) jest to, że Lex nie opublikował kodu swojego miernika. Ma to swoją logikę: Lex uważa, że jego narzędzie jest bardzo specyficzne i obejmuje tylko jego potrzeby. To mogłoby wywołać lawinę zgłoszeń na GitHubie, a on prawdopodobnie nie chce bólu głowy. Mimo to ogólny opis projektu jest bardzo przydatny i kieruje nas we właściwą stronę.

Mierniki to proste, niedrogie amperomierze o maksymalnym zakresie 5 mA, podłączone do pinów PWM Arduino Mega przez rezystor 1 kOhm. Amperomierze otrzymały niestandardowe skale wykonane w Inkscape, a pasek LED (również podłączony do Arduino) odpowiada za kolor całej konfiguracji.

Jak zbudować monitor CPU z analogowymi miernikami

Po stronie oprogramowania Lex potwierdził użycie Rust do napisania małego programu, który pobiera dane z systemstat w Linuksie, przetwarza je i wysyła do Arduino przez USB-serial. Jak się wydaje, kod ma kilka błędów (rejestr swap zawsze jest na maksimum, a wszystkie mierniki zablokowały się w Blenderze), ale to drobne usterki. Osobiście mam nadzieję, że Lex zmieni zdanie i udostępni kod dla prostszej wersji z trzema amperomierzami mierzącymi ogólnie CPU, GPU i RAM.