Obsah:

Indikátor zatížení procesoru Raspberry Pi: 13 kroků
Indikátor zatížení procesoru Raspberry Pi: 13 kroků

Video: Indikátor zatížení procesoru Raspberry Pi: 13 kroků

Video: Indikátor zatížení procesoru Raspberry Pi: 13 kroků
Video: 📦 Мини бесперебойник на 12V 2A - UPS для Wi-Fi роутера, 4G модема, IP камеры, mini PC, Raspberry Pi 2024, Červenec
Anonim
Indikátor zatížení procesoru Raspberry Pi
Indikátor zatížení procesoru Raspberry Pi

Při spuštění Raspberry Pi (RPI) jako bezhlavého bez monitoru konzoly nejsou k dispozici žádné konkrétní vizuální indikace, které by rozpoznaly, že RPI ve skutečnosti něco dělá.

I když je s SSH používán vzdálený terminál, je nutné čas od času provést příkaz Linux, aby se zkontrolovalo, jak velké zatížení systému nyní zatěžuje CPU

Tento obvod je tedy vytvořen tak, aby pomohl okamžitě rozpoznat skutečnou aktivitu CPU (možná poloreálnou nebo téměř skutečnou) k provádění aktuálně použitých zatížení systému.

Ačkoli stejnou funkcionalitu může podporovat pouze programování v pythonu a mnohem jednodušší obvod, budou k simulaci sofistikované logiky ovládání LED vyžadované tímto obvodem zapotřebí trochu složitější kódy pythonu.

Také paradoxně zvýšená složitost kódu pythonu více zatíží CPU zvýšeným zatížením systému.

Proto bude rozumné co nejvíce vyřadit jakoukoli indikační funkci do externího hardwarového okruhu, protože tato služba by měla být spuštěna po celou dobu a často každých 5 sekund.

A tento okruh přidá trochu bezstarostnou funkci bezhlavému běhu RPI.

Krok 1: Kontrola zatížení procesoru Příkaz Linux

Kontrola zatížení CPU Příkaz Linux
Kontrola zatížení CPU Příkaz Linux

Existují různé kontroly zatížení procesoru K dispozici jsou příkazy Linux, jako top, iostat, sysstat a uptime.

Každý příkaz má specifické výhodné vlastnosti, pokud jde o různorodost informací a jednoduchost zobrazení dat.

Nejlepší příkaz je nejbohatší na informace a jsou k dispozici velmi podrobné údaje pro okamžité rozpoznání zatížení systému.

Ale funguje to jako režim iterace (nepřetržité zobrazování dat na obrazovce) a formát informací je poměrně složitý na to, aby se jednoduše extrahovaly pouze požadované údaje o zatížení procesoru.

Příkaz iostat poskytuje podrobné informace o zatížení systému oddělením úloh front uživatelů a systému, které aktuálně zatěžují CPU.

Ale také je zbytečně složité získat aktuální zatížení procesoru rychle a intuitivně.

V případě uptime jsou k dispozici velmi jednoduchá data o zatížení systému v průměru 1 minuta, 5 minut průměr a 15 minut souhrnný průměr.

Jak bylo uvedeno výše, zjednodušení kódu pythonu je nezbytné, protože by mělo být prováděno poměrně často, například každých 5 sekund nebo 10 sekund.

Když se kód pythonu stane složitým, zatíží hodně CPU.

Je to trochu paradox, že zatěžujete RPI, abyste sledovali jeho zatížení systému.

Proto volím příkaz uptime pro shromažďování zátěže CPU a spolupráci s obvodem indikátoru, protože je to nejjednodušší.

Protože však doba provozuschopnosti ukazuje průměrnou zátěž systému v délce 1 minuty, indikační obvod nesmí být provozován v striktně reálném čase.

Přesto tento obvod může poskytnout užitečný vizuální nápovědu, která ukazuje, jak si nyní RPI vede.

Krok 2: Schémata

Schémata
Schémata

Tento obvod bude přijímat 4 různé úrovně (např. 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) aktuálního zatížení CPU z RPI prostřednictvím dvou vstupů optočlenu.

74LS139 (2 až 4 dekodér a de-multiplexer) dekóduje dva bitové vstupy do jednoho z jednoho výstupu ze 4 možných způsobů, jako je 00 (LOW)-> B0, 01 (LIGHT)-> B1, 10 (MEDIUM)-> B2, 11 (VYSOKÝ)-> B3.

Protože výstup 74LS139 je reverzní úroveň (vstup 00 -> B0 se změní na LOW a další 3 výstup na HIGH), použije se měnič 74HC04 k tomu, aby se výstup obrátil ještě jednou.

Když je výstup 74LS139 normální VYSOKÝ, 74HC04 nebude nutný.

Ale nějakým způsobem je 74LS139 vyroben tímto způsobem. (Zkontrolujte prosím pravdivostní tabulku 74LS139)

Když je vybrán některý z výstupů 74LS139, aktivuje jeden určitý analogový přepínač mezi 4 přepínači obsaženými v CD4066 IC.

CD4066 může podporovat 4 analogové přepínače a každý přepínač se skládá z 1 řídicího vstupu a 2 analogových výstupů.

Když se řídicí vstup stane VYSOKÝ, připojení dvou výstupů bude mít nízkou impedanci (odpor bude 0) a ostatní budou mít VYSOKOU impedanci (odpor mezi dvěma výstupními cestami bude několik stovek mega ohmů).

Jednoduše ovládejte 1 (pin 13) CD4066 na HIGH, cesta mezi výstupem 1 (pin 1) a výstupem 2 (pin 2) je připojena, zatímco ostatní výstupy nejsou připojeny (ve stavu vysoké impedance).

Podobně VYSOKÝ vstup ovládání 2 (pin 5) spojí výstup 1 (pin 4) a výstup 2 (pin 3), zatímco ostatní výstupy jsou odpojeny.

Poté LM555 bliká dvěma LED diodami s různou rychlostí blikání.

Jak vidíte na schématu výše, NE555 bude pracovat s jednou z hodnot odporu mezi 4 (12k, 24k, 51k, 100k) možnými úrovněmi odporu.

Krok 3: NE555 Generování různých hodin

NE555 Generování různých hodin
NE555 Generování různých hodin

Jak ukazuje schéma, NE555 bude pracovat s jednou z možných hodnot odporu, jako je 12k, 24l, 51k a 100k.

Ve skutečnosti je část časovacího obvodu NE555 hlavní vizuální indikací podporující částí obvodu.

Schéma provozu obvodu je následující.

- Pokud nedochází k významnému zatížení CPU, program python nainstalovaný v RPI odešle 00 výstupů do obvodu indikátoru. Poté se aktivuje cesta dvou výstupů CD4066 a NE555 pracuje s hodnotou odporu 12k. LED diody proto blikají 1,5krát za sekundu (blikají poměrně rychle)

- CPU je lehce načteno (Poté se délka fronty uptime stane na úrovni 0,1 ~ 0,9), python odešle 01 do obvodu. Poté se aktivovalo CD4066 s výstupy spojenými s odporem 24k. Výsledkem je, že blikání LED se snížilo 1,2krát za sekundu (blikání LED se mírně snížilo, ale stále trochu rychle)

- Když se zatížení CPU výrazně zvýší (Poté se doba běhu fronty uptime stane na úrovni 1,0 ~ 1,9), python vyvede 10 do obvodu. Poté se otevře 51k cesta připojení odporu a NE555 pracuje 0,8krát za sekundu. Rychlost blikání se nyní výrazně sníží.

- Těžké zatížení zatěžující CPU a doba běhu fronty provozuschopnosti se prodlužují (více než 2 úlohy budou čekat na provedení CPU a doba uptime bude hlásit více než 2,0). Když je vybráno připojení odporu 100k, NE555 bude blikat LED 0,5krát za sekundu (rychlost blikání je velmi pomalá)

***

Spolu se zvýšeným zatížením systému bude odpovídajícím způsobem snížena rychlost blikání LED.

Když LED bliká poměrně pomalu, pak je RPI určitě výrazně přetíženo.

Tímto způsobem obvod indikace zátěže hlásí aktuální úroveň zátěže RPI.

Krok 4: Díly

K výrobě tohoto obvodu se používají různé IC čipy.

Přestože zmiňuji typ 74LSxx, typ CD40xx starých IC čipů, můžete použít nejnovější typy čipů TTL a CMOS, jako jsou 74HC4066 a 74ASxx, když je vybraný čip IC typu DIP.

Malý povrchový držák typu IC pro povrchovou montáž lze také použít, když můžete malé správně pájet na univerzální desku plošných spojů.

Jiné jsou běžnou součástí, kterou můžete snadno zakoupit v internetových e-shopech.

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

- 74HC04 (6 střídačů) x 1

- CD4066 (4 analogové přepínače IC) x 1

- Časovač IC NE555 x 1

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

-PC817 optočlen 2 x (lze použít jakýkoli běžný 4pinový optočlen)

- Rezistory: 220 ohmů x 4 (omezení proudu LED), 4,7K (rozhraní optočlenu) x 2, 12K,/24K/51K/100K (ovládání časování hodin) x 1

- LED x 2 (jakékoli jiné barvy, jako je žlutá, zelená nebo červená, zelená)

- Univerzální deska o velikosti 30 (Š) x 20 (V) otvorů (Univerzální desku můžete oříznout libovolnou velikostí, aby se vešla do tohoto obvodu)

- Cínový drát (pro vytváření vzorů kabelů na univerzální desce plošných spojů)

- čepová hlava (3 piny) x 3

- IC pinová hlava (4 piny) x 4

- červeno/modrá barva kabelů

***

Krok 5: Kreslení DPS

Vytváření kresby DPS
Vytváření kresby DPS

Ačkoli v každém projektu zobrazuji kresbu DPS, návrh zapojení je pouze referenční, což vás provede správným pájením každé části na univerzální DPS.

Ale nemusíte se nutně držet tohoto schématu zapojení.

Jak vidíte výše schéma zapojení, je poměrně složité a vyžaduje výrazně velké PCB.

Pro zmenšení velikosti pájení hotových desek plošných spojů můžete použít místo cínového drátu běžný kabel.

Výkres DPS používejte pouze ke kontrole a potvrzení správného pájení mezi díly.

Když se zvýší počet integrovaných obvodů TTL nebo CMOS, kreslení desek plošných spojů se obvykle stává mnohem složitějším, než je správná integrace na jedné straně desky plošných spojů.

Vícevrstvé desky plošných spojů se proto běžně používají pro průmyslové obvody digitálních obvodů, které obsahují mnoho TTL, CMOS a mikroprocesorů.

Krok 6: Pájení

Pájení
Pájení

Používám cínový drát a běžný kabel společně, abych co nejvíce minimalizoval velikost DPS.

Při srovnání s kresbou DPS se úplně změní umístění každé součásti.

Ale přesto se výkres PCB používá k ověření správného spojení mezi součástmi při pájení.

Vidíte, že rezistory 12k/24k/51k/100k jsou vloženy na IC pinovou hlavu bez pájení.

Proto můžete rezistory vyměnit za jiné hodnoty, abyste mohli později pohodlně měnit operační schéma obvodu.

Krok 7: Sestavení

Sestavování
Sestavování

Do pole RPI hudebního přehrávače je nainstalován obvod indikátoru dokončeného zatížení (dále jen INDIKÁTOR), jak je znázorněno na obrázku výše.

Tento hudební přehrávač je nainstalován s DAC a tento nedávno používám pro přehrávání hudebního videa.

O tomto poli RPI vysvětlím později a nyní se zaměříme na INDIKÁTOR, protože obvod je hlavním předmětem tohoto projektu.

Nedávno jsem si koupil Raspberry Pi 4 Model B 2GB (dále jen RPI 4B) na podporu aplikace pro přehrávání videa.

Vzhledem k tomu, že RPI 4B zvýšil výkon 4jádrového procesoru, manipulace se zátěží systému se výrazně zlepšila z RPI 3B+.

Proto by mělo být s délkou fronty uptime run-queue nakládáno odlišně od RPI 3B+.

- U velmi konvenčního zatížení systému, jako je přehrávání videa, je délka fronty obvykle menší než 0,5 (Takže NÍZKÉ zatížení systému bude 0,0 ~ 0,5 úrovně)

- Když se přidá mírné dodatečné zatížení systému, jako je přehrávání videa a kopírování souborů z místního adresáře, bude to mít za následek mírné zatížení CPU. (Úroveň zatížení SVĚTLA bude 0,5 ~ 1,0)

- Když je aplikováno značné zatížení, jako je přehrávání videa v prohlížeči na webu Youtube a procházení webu v jiném prohlížeči, rychlost běhu RPI 4 se mírně zpomalí (Úroveň STŘEDNÍho zatížení by tedy měla být 1,0 ~ 2,0)

- Nakonec se zatížení systému RPI 4 stane VYSOKÝM při spouštění více webových prohlížečů a kopírování velkého objemu souborů na jiný server RPI prostřednictvím sítě (délka fronty run se poté zvýší na 2,0)

***

Tyto údaje o úrovni zatížení budou použity v dalším kroku vyvinutým kódem pythonu.

Krok 8: Revize původního obvodu

Revize původního obvodu
Revize původního obvodu

Kvůli několika vadám původního návrhu obvodu upravuji obvod, jak je znázorněno na obrázku výše.

Důvody změny jsou následující.

- NE555 hodinový impuls se skládá z VYSOKÉHO a NÍZKÉHO průběhu. Obvykle však trvání signálu HIGH a LOW (t = 1/f) není stejné (například HIGH je 70% a LOW je 30% v původním obvodu). Rychlost blikání dvou LED diod (zelená/žlutá LED v původním provedení) proto není stejná (jedna LED svítí déle než ostatní). Z tohoto důvodu není vizuální indikace blikáním LED příliš snadno rozpoznatelná. “

- Proto přidávám více LED a vytvářím kruhový iterační vzor s CD4017 pro zajištění snadného rozpoznání provozního stavu

- Také změna schématu blikání LED opačně, jako je pomalé blikání při NÍZKÉ zátěži a rychlejší blikání při VYSOKÉ zátěži. (Původní obvod je vyroben tak, aby blikal rychleji při NÍZKÉ zátěži a pomalu blikal při VYSOKÉ zátěži). V situaci VYSOKÉHO zatížení jsou všechny akce RPI pomalé. A ukazovat pomalé blikání LED vám neudělá radost. (Z psychologického hlediska volím pozitivnější schéma zobrazení)

***

Přestože je část displeje LED výrazně upravena, celková úroveň změny s původním obvodem není tak velká, jak můžete vidět v dalším kroku.

Krok 9: Původní změna schématu

Původní schematická změna
Původní schematická změna

Významnou změnou je přidání LED diod CD4017 a 8.

Také pro změnu taktovací frekvence NE555 a schématu reverzního LED blikání se změní hodnoty rezistorů, jak je znázorněno na schématech výše.

Protože část přidaného obvodu je jednoduchý obvod chaseru na bázi CD4017, přeskočím další podrobná vysvětlení upraveného obvodu.

Všechny části se změněným obvodem lze vyrobit jako dceřinou desku plošných spojů, ke které jsou připájeny LED diody CD4017 a 8.

Dceřinou desku lze připojit k základní desce (základní desce) podle obrázku v kroku 8.

Krok 10: Testování

Testovací video všech provozních fází (LOW, LIGHT, MEDIUM a HIGH load state) ukazuje soubor uložený na disku Google níže.

***

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

***

Podle aktuálního zatížení systému se rychlost blikání změní mezi jedním ze 4 stavů zobrazených na videu.

Krok 11: Kód Pythonu

Python kód
Python kód

Protože většina ovládacích logik je zahrnuta do externího hardwarového obvodu, provozní logika kódu pythonu je poměrně jednoduchá včetně následujících kroků.

- Získání údajů o teplotě CPU ke srovnání relativity mezi zátěží systému a zvýšením teploty

- Shromažďování průměrného zatížení systému 1 minutu z výstupu uptime

-Vytváření časového razítka ve formátu rr-mm-dd hh: mm: ss

- Teplota zápisu, zatížení systému spolu s časovým razítkem

- Podle aktuálních výstupních dat zatížení systému (00, 01, 10, 11) do obvodu INDIKÁTOR

- Spánek 5 sekund před zahájením výše uvedených kroků

Protože program python potřebuje přísné odsazení ve zdrojovém kódu, stáhněte si zdrojový soubor z jednotky Google pomocí níže uvedeného odkazu.

***

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

***

Protože nepoužívám RPI jako stolní počítač, spouštění kancelářských aplikací Libre nebo webového prohlížeče je velmi vzácné.

Obvykle hraji hudební video, kopírování/přesouvání souborů nebo programování v pythonu s nově zakoupeným RPI 4B 2GB.

Průměrné zatížení je proto v mém případě obvykle menší než 1,0, a proto v mém kódu měním úrovně LOW/LIGHT/MEDIUM/HIGH. (Podmínky testu můžete změnit jinak)

Když ale běžně sledujete videa z YouTube s RPI, běžně dojde k více než 2,0 zatížení systému.

Krok 12: Relativita mezi zátěží systému a teplotou CPU

Relativita mezi zátěží systému a teplotou CPU
Relativita mezi zátěží systému a teplotou CPU

Obvykle hádám a jsem si jist, že zvýšení zatížení systému zvýší teplotu CPU.

Ale až dosud nemám jasný obraz vzájemné spolupráce mezi nimi.

Jak můžete vidět na grafu výše, jedná se o velmi silné vzájemné vztahy následovně.

- Pro snadné srovnání vynásobím 10 průměrným zatížením systému. Jinak je rozsah zatížení systému velmi malý (0,0 ~ 2,0), přímé srovnání je obtížné.

- Vzhledem k tomu, že do boxu Pi pro přehrávání hudby je nainstalován chladicí obvod FAN, teplota procesoru nikdy nepřesáhne 50 ° C

- Pokud je zatížení systému v rozmezí 0,0 ~ 1,0, teplota v rozmezí 45 ~ 48 ° C (kovový kryt CPU se mírně zahřívá)

- Ale je aplikováno velké zatížení (obvykle webový prohlížeč a přehrávání videí z YouTube), načítání stoupá a tak teplota

***

Jelikož je RPI 4B nainstalován se čtyřjádrovým procesorem, teoreticky se výkon příliš nezhorší až do úrovně zatížení (fronta běhu uptime) 4.

Ale stále méně než průměrná úroveň zatížení 4, bude nutná vhodná regulace teploty.

Krok 13: Dokončení

Finalizace
Finalizace

Dokončuji tento projekt instalací INDIKÁTORU do Pi boxu jako na obrázku výše.

Během příležitostného používání tohoto boxu Pi INDIKÁTOR zřídka ukazuje VYSOKOU úroveň a dynamické blikání LED.

Obvykle to zůstalo ve stavech pomalu blikajících LED diod (tedy NÍZKÁ nebo SVĚTELNÁ úroveň).

Každopádně přidaný vizuální indikátor je trochu zábavný, alespoň ukazuje, že RPI dělá něco právě teď.

Děkuji za přečtení tohoto příběhu ….

Doporučuje: