Obsah:

Indikátor zaťaženia procesora Raspberry Pi: 13 krokov
Indikátor zaťaženia procesora Raspberry Pi: 13 krokov

Video: Indikátor zaťaženia procesora Raspberry Pi: 13 krokov

Video: Indikátor zaťaženia procesora Raspberry Pi: 13 krokov
Video: 39. Системный монитор для Умного дома. OpenHAB systeminfo binding. 2024, Júl
Anonim
Indikátor zaťaženia procesora Raspberry Pi
Indikátor zaťaženia procesora Raspberry Pi

Keď bežíte Raspberry Pi (RPI) ako bezhlavý bez konzolového monitora, nie sú k dispozícii žiadne konkrétne vizuálne indikácie, ktoré by rozpoznali, že RPI skutočne niečo robí.

Aj keď sa s SSH používa vzdialený terminál, čas od času je potrebné vykonať príkaz Linuxu, aby sa skontrolovalo, ako veľmi zaťaženie systému teraz zaťažuje procesor

Tento obvod je teda vytvorený tak, aby pomohol okamžite rozpoznať skutočnú aktivitu CPU (možno poloreálneho alebo takmer reálneho) pri vykonávaní aktuálne použitých zaťažení systému.

Napriek tomu, že rovnakú funkcionalitu môže podporovať iba programovanie v pythone a oveľa jednoduchší obvod, na simuláciu sofistikovanej logiky riadenia LED požadovanej týmto obvodom budú potrebné trochu zložitejšie kódy pythonu.

Tiež paradoxne zvýšená zložitosť kódu pythonu viac zaťaží procesor so zvýšeným zaťažením systému.

Preto bude rozumné čo najviac vyložiť akékoľvek indikačné funkcie z externého hardvérového okruhu, pretože táto služba by mala byť spustená neustále a často každých 5 sekúnd.

A tento okruh pridá trochu zábavnú funkciu k bezhlavému behu RPI.

Krok 1: Kontrola zaťaženia CPU Príkaz Linux

Kontrola zaťaženia CPU Príkaz Linux
Kontrola zaťaženia CPU Príkaz Linux

Existujú rôzne kontroly zaťaženia procesora, sú k dispozícii príkazy Linuxu, ako napríklad top, iostat, sysstat a uptime.

Každý príkaz má špecifické výhodné vlastnosti z hľadiska informačnej rozmanitosti a jednoduchosti zobrazovania údajov.

Vrchný príkaz je najbohatší na informácie a sú k dispozícii veľmi podrobné údaje na okamžité rozpoznanie zaťaženia systému.

Ale funguje to ako režim iterácie (nepretržité zobrazovanie údajov na obrazovke) a formát informácií je dosť zložitý na to, aby ste mohli jednoducho extrahovať iba požadované údaje o zaťažení procesora.

Príkaz iostat poskytuje podrobné informácie o zaťažení systému oddelením úloh frontov spustených používateľom a systémom, ktoré v súčasnosti zaťažujú procesor.

Ale je tiež zbytočne zložité získať aktuálne zaťaženie procesora tak rýchlo a intuitívne.

V prípade prevádzkyschopnosti sú k dispozícii veľmi jednoduché údaje o zaťažení systému v priemere 1 minúta, priemer 5 minút a súhrnný priemer 15 minút.

Ako bolo uvedené vyššie, zjednodušenie kódu pythonu je nevyhnutné, pretože by sa mal vykonávať pomerne často, každých 5 sekúnd alebo 10 sekúnd.

Keď sa kód pythonu stane komplexným, veľmi to zaťaží procesor.

Je akýmsi paradoxom, že zaťažujete RPI, aby ste monitorovali zaťaženie systému.

Preto volím príkaz uptime na zhromažďovanie zaťaženia CPU a spoluprácu s obvodom indikátora, pretože je to najjednoduchšie.

Pretože však prevádzková doba ukazuje priemernú záťaž systému 1 minútu, indikačný obvod nesmie byť prevádzkovaný v striktne reálnom čase.

Napriek tomu môže tento obvod poskytnúť užitočný vizuálny tip, ktorý ukazuje, ako sa RPI teraz darí.

Krok 2: Schémy

Schémy
Schémy

Tento obvod bude dostávať 4 rôzne úrovne (napr. 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) aktuálneho zaťaženia procesora od RPI cez dva vstupy optočlenu.

74LS139 (2 až 4 dekodér a de-multiplexor) dekóduje dva bitové vstupy do jedného z jedného výstupu 4 možnými spôsobmi, ako napríklad 00 (LOW)-> B0, 01 (LIGHT)-> B1, 10 (MEDIUM)-> B2, 11 (VYSOKÝ)-> B3.

Pretože výstup 74LS139 je v reverznej úrovni (vstup 00 -> B0 sa zmení na LOW a ďalšie 3 výstupy budú VYSOKÉ), invertor 74HC04 sa použije na reverzáciu výstupu ešte raz.

Keď je výstup 74LS139 normálny HIGH, 74HC04 nebude potrebný.

Ale nejako je 74LS139 vyrobený týmto spôsobom. (Pozrite si tabuľku pravdy 74LS139)

Keď je zvolený ktorýkoľvek z výstupov 74LS139, aktivuje jeden konkrétny analógový prepínač zo 4 prepínačov zahrnutých v IC CD4066.

CD4066 môže podporovať 4 analógové prepínače a každý prepínač pozostáva z 1 riadiaceho vstupu a 2 analógových výstupov.

Keď sa riadiaci vstup stane VYSOKÝ, pripojenie dvoch výstupov bude mať nízku impedanciu (odpor bude 0) a ostatné bude mať VYSOKÚ impedanciu (odpor medzi dvoma výstupnými dráhami bude niekoľko stoviek mega ohmov).

Jednoducho ovládajte 1 (pin 13) CD4066 na HIGH, cesta medzi výstupom 1 (pin 1) a výstupom 2 (pin 2) je zapojená, zatiaľ čo ostatné výstupy nie sú pripojené (v stave s vysokou impedanciou).

Podobne VYSOKÝ vstup ovládania 2 (kolík 5) prepája výstup 1 (kolík 4) a výstup 2 (kolík 3), zatiaľ čo ostatné výstupy sú odpojené.

Potom LM555 bliká dvoma diódami LED s rôznym blikaním.

Ako vidíte na schéme vyššie, NE555 bude pracovať s jednou z hodnôt odporu medzi 4 (12k, 24k, 51k, 100k) možnými úrovňami odporu.

Krok 3: NE555 Generovanie rôznych hodín

NE555 Generovanie rôznych hodín
NE555 Generovanie rôznych hodín

Ako je znázornené na schéme, NE555 bude pracovať s jednou z možných hodnôt odporu, ako je 12k, 24l, 51k a 100k.

V skutočnosti je časť časovacieho obvodu NE555 hlavnou vizuálnou indikáciou podpornou časťou obvodu.

Schéma prevádzky obvodu je nasledovná.

- Keď nedochádza k významnému zaťaženiu procesora, program python nainštalovaný v RPI odošle 00 výstupov do obvodu indikátora. Potom sa aktivuje cesta dvoch výstupov CD4066 a NE555 pracuje s hodnotou odporu 12k. LED diódy preto blikajú 1,5 -krát za sekundu (blikajú pomerne rýchlo)

- CPU je slabo zaťažený (Potom sa dĺžka fronty uptime stane na úrovni 0,1 ~ 0,9), python pošle 01 do obvodu. Potom sa aktivoval CD4066 s výstupmi spojenými s 24k odporom. Výsledkom je, že blikanie LED diódy kleslo 1,2 krát za sekundu (blikanie LED diódy sa mierne znížilo, ale stále trochu rýchlo)

- Keď sa zaťaženie CPU výrazne zvýši (Potom sa dĺžka fronty prevádzkyschopnosti stane úrovňou 1,0 ~ 1,9), python vyvedie 10 do obvodu. Potom sa otvorí 51k cesta pripojenia odporu a NE555 pracuje 0,8 krát za sekundu. Teraz sa rýchlosť žmurkania výrazne zníži.

- Ťažké záťaže zaťažujúce procesor a dĺžka prevádzkyschopnosti frontu sa predlžujú (viac ako 2 úlohy budú čakať na vykonanie procesorom a doba prevádzky bude hlásiť viac ako 2,0). Keď je zvolené pripojenie rezistora 100 k, NE555 bude blikať LED 0,5 krát za sekundu (rýchlosť blikania sa veľmi spomalí)

***

Spolu so zvýšeným zaťažením systému sa primerane zníži aj rýchlosť blikania diód LED.

Keď LED bliká pomerne pomaly, potom je RPI určite výrazne preťažené.

Týmto spôsobom obvod indikácie zaťaženia hlási vašu aktuálnu úroveň záťaže RPI.

Krok 4: Diely

Na výrobu tohto obvodu sa používajú rôzne IC čipy.

Aj keď spomínam 74LSxx, typ CD40xx starých IC čipov, môžete použiť najnovšie typy čipov TTL a CMOS, ako napríklad 74HC4066 a 74ASxx, ak je vybraný IC čip typu DIP.

Povrchový držiak malého balíka IC je možné použiť aj vtedy, keď môžete malé správne spájkovať na univerzálnej doske plošných spojov.

Ostatné sú bežnou súčasťou, ktorú môžete ľahko kúpiť v internetových e-shopoch.

- 74LS139 (2 až 4 dekodér, de-multiplexor) x 1

- 74HC04 (6 invertorov) x 1

- CD4066 (4 analógové prepínače IC) x 1

- Časovač IC NE555 x 1

- Kondenzátory: 10uF x 1, 0,1uF x 1

-Optická spojka PC817 x 2 (je možné použiť ľubovoľnú bežnú 4-kolíkovú optickú spojku)

- Rezistory: 220 ohmov x 4 (obmedzenie prúdu LED), 4,7K (rozhranie optočlenu) x 2, 12K,/24K/51K/100K (ovládanie časovania hodín) x 1

- LED x 2 (rôzne farby, ako napríklad žltá, zelená alebo červená, zelená)

- Univerzálna doska s rozmermi 30 (Š) x 20 (V) otvorov (Univerzálnu dosku môžete rezať ľubovoľnou veľkosťou, aby zodpovedala tomuto obvodu)

- Cínový drôt (na vytváranie vzorov káblov na univerzálnej doske plošných spojov)

- kolíková hlava (3 kolíky) x 3

- Pinová hlava IC (4 piny) x 4

- červeno/modré káble

***

Krok 5: Kreslenie DPS

Výroba kresby DPS
Výroba kresby DPS

Aj keď v každom projekte uvádzam kresbu DPS, návrh zapojenia je len referenčným dokumentom, ktorý vás prevedie správnym spájkovaním každej časti na univerzálnej DPS.

Ale nemusíte sa nevyhnutne držať tejto schémy zapojenia.

Ako vidíte vyššie uvedenú schému zapojenia, je pomerne zložitá a vyžaduje výrazne veľkú dosku plošných spojov.

Na zníženie rozmerov spájkovania hotových dosiek plošných spojov môžete namiesto cínového drôtu použiť bežný kábel.

Výkres DPS používajte iba na kontrolu a potvrdenie správneho spájkovania medzi časťami.

Keď sa zvýši počet integrovaných obvodov TTL alebo CMOS, kresba PCB sa zvyčajne stáva dosť zložitou nad rámec správnej integrácie na jednej strane PCB.

Preto sa viacvrstvová PCB bežne používa pre priemyselné digitálne obvody, ktoré obsahujú veľa TTL, CMOS a mikroprocesorov.

Krok 6: Spájkovanie

Spájkovanie
Spájkovanie

Používam cínový drôt a bežný kábel dohromady, aby som čo najviac minimalizoval veľkosť DPS.

Pri porovnaní s kresbou DPS sa úplne zmení umiestnenie každej časti.

Napriek tomu sa výkres PCB používa na overenie správneho spojenia medzi časťami pri spájkovaní.

Vidíte, že rezistory 12k/24k/51k/100k sú vložené na kolíkovú hlavu IC bez spájkovania.

Preto môžete rezistory vymeniť za iné hodnoty, aby ste neskôr mohli pohodlne meniť schému prevádzky obvodu.

Krok 7: Zostavenie

Montáž
Montáž

Dokončený obvod indikátora záťaže (ďalej len INDIKÁTOR) je nainštalovaný do poľa RPI hudobného prehrávača, ako je znázornené na obrázku vyššie.

Tento hudobný prehrávač je nainštalovaný s DAC a tento nedávno používam na prehrávanie hudobného videa.

O tomto poli RPI vysvetlím neskôr a teraz sa zameriame na INDIKÁTOR, pretože obvod je hlavným predmetom tohto projektu.

Nedávno som si kúpil Raspberry Pi 4 Model B 2 GB (ďalej len RPI 4B) na podporu aplikácie na prehrávanie videa.

Pretože RPI 4B má zvýšený výkon 4 -jadrového CPU, manipulácia so systémovým zaťažením sa od RPI 3B+výrazne zlepšila.

Z tohto dôvodu by sa s výstupom dĺžky fronty na spustenie malo zaobchádzať odlišne od RPI 3B+.

- V prípade veľmi konvenčného zaťaženia systému, akým je napríklad prehrávanie videa, je dĺžka fronty run obvykle menšia ako 0,5 (Takže NÍZKE zaťaženie systému bude na úrovni 0,0 ~ 0,5)

- Keď sa pridá malé dodatočné zaťaženie systému, ako je prehrávanie videa a kopírovanie súborov z miestneho adresára, druh práce má za následok mierne zaťaženie CPU. (Takže úroveň zaťaženia LIGHT bude 0,5 ~ 1,0)

- Keď sa aplikuje značné zaťaženie, ako je prehrávanie videa v prehliadači na webe Youtube a surfovanie po webe v inom prehliadači, rýchlosť RPI 4 sa mierne spomalí (Stredná úroveň zaťaženia by preto mala byť 1,0 ~ 2,0)

- Nakoniec sa zaťaženie systému RPI 4 stane VYSOKÝM pri spustení viacerých webových prehliadačov a kopírovaní veľkého objemu súborov na iný server RPI prostredníctvom siete (Potom sa dĺžka fronty na spustenie stane viac ako 2,0)

***

Tieto údaje o úrovni zaťaženia budú použité v ďalšom kroku vyvinutom kódu pythonu.

Krok 8: Revízia pôvodného obvodu

Revízia pôvodného obvodu
Revízia pôvodného obvodu

Vzhľadom na niekoľko chýb pôvodného návrhu obvodu upravujem obvod tak, ako je to znázornené na obrázku vyššie.

Dôvody zmeny sú nasledujúce.

- Hodinový impulz NE555 pozostáva z tvaru vlny HIGH a LOW. Obvykle však trvanie signálu VYSOKÝ a NÍZKY (t = 1/f) nie je rovnaké (napríklad HIGH je 70% a LOW je 30% v pôvodnom obvode). Preto miera blikania dvoch LED diód (zelená/žltá LED v pôvodnom prevedení) nie je rovnaká (jedna dióda LED svieti dlhšie ako ostatné). Z tohto dôvodu nie je vizuálna indikácia blikaním diódy LED veľmi ľahko rozpoznateľná. “

- Preto pridávam ďalšie LED diódy a vytváram kruhový iteračný vzor s CD4017, aby som zaistil ľahké rozpoznanie prevádzkového stavu

- Tiež opačná zmena schémy LED blikania, ako napríklad pomalé blikanie pri NÍZKOM zaťažení a rýchlejšie blikanie pri VYSOKOM zaťažení. (Pôvodný obvod je navrhnutý tak, aby rýchlejšie blikal pri NÍZKOM zaťažení a pomaly blikal pri VYSOKOM zaťažení). V situácii VYSOKÉHO zaťaženia sa všetky činnosti RPI spomaľujú. A ukazovanie pomalého blikania diódy LED vás neurobí šťastným. (Z psychologického hľadiska volím pozitívnejšiu schému zobrazovania)

***

Aj keď je časť displeja LED výrazne upravená, celková úroveň zmeny pôvodného obvodu nie je taká, ako môžete vidieť v nasledujúcom kroku.

Krok 9: Pôvodná schematická zmena

Pôvodná schematická zmena
Pôvodná schematická zmena

Pridanie LED diód CD4017 a 8 je zásadnou modifikáciou.

Aby sa zmenila taktovacia frekvencia NE555 a schéma reverzného LED blikania, hodnoty rezistorov sa zmenia tak, ako je to znázornené na schémach vyššie.

Keďže časť pridaného obvodu je jednoduchý obvod chaser založený na disku CD4017, preskočím ďalšie podrobné vysvetlenia upraveného obvodu.

Všetky časti zmeneného obvodu je možné vyrobiť ako dcérsku dosku plošných spojov, na ktorú sú spájkované LED diódy CD4017 a 8.

Dcérsku dosku je možné pripevniť k základnej doske (základnej doske) podľa obrázku v kroku 8.

Krok 10: Testovanie

Testovacie video všetkých prevádzkových fáz (LOW, LIGHT, MEDIUM a HIGH load status) zobrazuje súbor uložený na disku Google nižšie.

***

drive.google.com/file/d/1CNScV2nlqtuH_CYSW…

***

Podľa aktuálneho zaťaženia systému sa rýchlosť blikania zmení medzi jedným zo 4 stavov zobrazených na videu.

Krok 11: Python kód

Python kód
Python kód

Pretože väčšina ovládacích logík je zahrnutá do externého hardvérového obvodu, operačná logika kódu pythonu je pomerne jednoduchá vrátane nasledujúcich krokov.

- Získanie údajov o teplote CPU na porovnanie relativity medzi zaťažením systému a zvýšením teploty

- Zhromažďovanie priemerného zaťaženia systému 1 minútu z výstupu prevádzkyschopnosti

-Vytvorenie časovej pečiatky vo formáte yy-mm-dd hh: mm: ss

- Teplota zápisu, zaťaženie systému spolu s časovou pečiatkou

- Podľa aktuálnych výstupných údajov o zaťažení systému (00, 01, 10, 11) do obvodu INDIKÁTOR

- Spite 5 sekúnd pred začatím vyššie uvedených krokov

Pretože program python potrebuje v zdrojovom kóde prísne odsadenie, stiahnite si zdrojový súbor z disku Google pomocou nižšie uvedeného odkazu.

***

drive.google.com/file/d/1BdaRVXyFmQrRHkxY8…

***

Pretože nepoužívam RPI ako stolný počítač, je spustenie kancelárskych aplikácií Libre alebo webového prehliadača veľmi zriedkavé.

Obvykle hrám hudobné video, kopírovanie/presúvanie súborov alebo programovanie v pythone s novo zakúpeným RPI 4B 2 GB.

Priemerné zaťaženie je preto v mojom prípade zvyčajne menšie ako 1,0, a preto v kóde mením úrovne NÍZKE/SVETLE/STREDNÉ/VYSOKÉ. (Podmienky testu môžete zmeniť inak)

Keď však bežne sledujete videá z Youtube s RPI, bežne sa vyskytne viac ako 2,0 zaťaženia systému.

Krok 12: Relativita medzi zaťažením systému a teplotou CPU

Relativita medzi zaťažením systému a teplotou CPU
Relativita medzi zaťažením systému a teplotou CPU

Obvykle hádam a som si istý, že zvýšenie zaťaženia systému zvýši teplotu CPU.

Ale doteraz nemám jasný obraz o vzájomnej spolupráci medzi nimi.

Ako vidíte na grafe vyššie, sú to veľmi silné vzájomné vzťahy, ako je uvedené nižšie.

- Pre ľahké porovnanie vynásobím 10 priemerným zaťažením systému. V opačnom prípade je rozsah zaťaženia systému veľmi malý (0,0 ~ 2,0), priame porovnanie je ťažké.

- Pretože je do boxu Pi na prehrávanie hudby nainštalovaný chladiaci obvod FAN, teplota procesora nikdy nepresahuje 50 ° C

- Keď je zaťaženie systému v rozsahu 0,0 ~ 1,0, teplota v rozmedzí 45 ~ 48 ° C (kovový kryt CPU sa mierne zahrieva)

- Ale je aplikované veľké zaťaženie (zvyčajne webový prehliadač a prehrávanie videí z YouTube), načítanie stúpa a tak teplota

***

Pretože je RPI 4B nainštalovaný so 4 -jadrovým procesorom, teoreticky sa výkon až do úrovne zaťaženia (front prevádzky) 4 veľmi nezhorší.

Ale stále je to menej ako priemerná úroveň zaťaženia 4, bude potrebná vhodná regulácia teploty.

Krok 13: Dokončenie

Finalizácia
Finalizácia

Dokončujem tento projekt inštaláciou INDIKÁTORA do poľa Pi ako na obrázku vyššie.

Počas príležitostného používania tohto boxu Pi INDIKÁTOR málokedy ukazuje VYSOKÚ úroveň a dynamické blikanie diód LED.

Obvykle to zostalo v pomaly blikajúcich stavoch LED (úroveň LOW alebo LIGHT).

Každopádne pridaný vizuálny indikátor je trochu zábavný, aspoň ukazuje, že RPI robí niečo práve teraz.

Ďakujem za prečítanie tohto príbehu ….

Odporúča: