Tartalomjegyzék:

Raspberry Pi CPU terhelésjelző: 13 lépés
Raspberry Pi CPU terhelésjelző: 13 lépés

Videó: Raspberry Pi CPU terhelésjelző: 13 lépés

Videó: Raspberry Pi CPU terhelésjelző: 13 lépés
Videó: Raspberry Pi demolished by monster 128-core ARM CPU! 2024, Július
Anonim
Raspberry Pi CPU terhelésjelző
Raspberry Pi CPU terhelésjelző

Ha a Raspberry Pi -t (RPI) fej nélkül futtatja konzolmonitor nélkül, nincsenek speciális vizuális jelzések, amelyek felismerik, hogy az RPI ténylegesen csinál valamit.

Annak ellenére, hogy a távoli terminált SSH -val használják, időnként szükség van a Linux parancs végrehajtására annak ellenőrzéséhez, hogy a rendszerterhelés mekkora terhet ró a CPU -ra

Tehát ez az áramkör arra szolgál, hogy azonnal felismerje a CPU valós tevékenységét (lehet, hogy félig valós vagy közel valós módon) a jelenleg alkalmazott rendszerbetöltések végrehajtásához.

Bár csak a python programozás és a sokkal egyszerűbb áramkör támogatja ugyanazt a funkciót, egy kicsit bonyolult python kódokra lesz szükség az áramkör által igényelt kifinomult LED vezérlő logika szimulálásához.

A paradox módon megnövekedett python -kód bonyolultabbá teszi a CPU -t a rendszer terhelésének növelésével.

Ezért indokolt, ha bármilyen jelzőfunkciót a külső hardveráramkörre a lehető legteljesebb mértékben ki kell tölteni, mivel ennek a szolgáltatásnak folyamatosan és gyakran, például 5 másodpercenként kell futnia.

És ez az áramkör hozzáad egy kicsit vicces funkciót a fej nélküli futó RPI -hez.

1. lépés: CPU terhelés ellenőrzése Linux parancs

CPU terhelés ellenőrzése Linux parancs
CPU terhelés ellenőrzése Linux parancs

Különféle CPU -terhelés -ellenőrző Linux parancsok érhetők el, mint például a top, az iostat, a sysstat és az uptime.

Minden parancsnak különleges előnyös tulajdonságai vannak az információ sokfélesége és az adatok egyszerűségének megjelenítése szempontjából.

A felső parancs a legtöbb információban gazdag és nagyon részletes adat áll rendelkezésre a rendszer terhelésének azonnali felismeréséhez.

De iterációs módként működik (az adatokat folyamatosan jeleníti meg a képernyőn) és az információformátum meglehetősen bonyolult, hogy egyszerűen csak a szükséges CPU terhelési adatokat nyerje ki.

Az iostat parancs mélyreható rendszerbetöltési információkat szolgáltat, elkülönítve a felhasználói és a rendszert futtató várólista-feladatokat, amelyek jelenleg terhelik a CPU-t.

De szükségtelenül bonyolult az aktuális CPU -terhelés gyors és intuitív módon történő lekérése is.

Üzemidő esetén nagyon egyszerű rendszerterhelési adatok állnak rendelkezésre 1 perces átlagban, 5 perces átlagban és 15 perces összesített átlagban.

Amint fentebb említettük, a python kód egyszerűsítése szükséges, mert azt gyakran kell végrehajtani, például 5 másodpercenként vagy 10 másodpercenként.

Amikor a python kód összetett lesz, nagy terhet ró a CPU -ra.

Ez egyfajta paradoxon, hogy az RPI -t terheli a rendszer terhelésének megfigyelése érdekében.

Ezért az uptime parancsot választom a CPU terhelésének összegyűjtésére és az indikátor áramkörrel való együttműködésre, mert ez a legegyszerűbb.

De mivel az üzemidő 1 perces átlagos rendszerterhelést mutat, az indikátor áramkört nem szigorúan valós idejű üzemmódban kell működtetni.

Ennek ellenére ez az áramkör hasznos vizuális tippeket nyújthat, amelyek megmutatják, hogyan teljesít az RPI most.

2. lépés: Vázlatok

Vázlatok
Vázlatok

Ez az áramkör két különböző optocsatoló bemeneten keresztül fogadja az RPI 4 különböző szintjét (pl. 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH).

A 74LS139 (2-4 dekóder és de-multiplexer) két bites bemenetet dekódol egyetlen kimenet egyikébe a 4 lehetséges mód közül, például 00 (LOW)-> B0, 01 (LIGHT)-> B1, 10 (MEDIUM)-> B2, 11 (MAGAS)-> B3.

Mivel a 74LS139 kimenet fordított szintű (00 bemenet -> B0 LOW lesz, a többi 3 kimenet pedig MAGAS), a 74HC04 invertert a kimenet ismételt fordítására használják.

Ha a 74LS139 kimenete normál MAGAS, a 74HC04 nem szükséges.

De valahogy a 74LS139 így készül. (Kérjük, ellenőrizze a 74LS139 igazságtáblázatát)

Ha a 74LS139 kimenet bármelyikét kiválasztja, akkor aktivál egy bizonyos analóg kapcsolót a CD4066 IC -ben található 4 kapcsoló között.

A CD4066 4 analóg kapcsolót támogat, és mindegyik kapcsoló 1 vezérlőbemenettel és 2 analóg kimenettel rendelkezik.

Amikor a vezérlőbemenet MAGAS lesz, két kimeneti csatlakozás alacsony impedanciájú lesz (az ellenállás 0 lesz), a másik pedig NAGY impedanciájú (két kimeneti út közötti ellenállás több száz megaohmos szintre emelkedik).

Egyszerűen a CD4066 1. vezérlője (13. tű) lesz MAGAS, az 1 -es kimenet (1 -es tű) és a 2 -es kimenet (2 -es érintkező) közötti útvonal csatlakoztatva, míg a többi kimenet nincs csatlakoztatva (nagy impedanciájú állapotban).

Hasonlóképpen a 2 -es vezérlő HIGH bemenete (5 -ös tű) csatlakoztatja az 1 -es kimenetet (4 -es érintkező) és a 2 -es kimenetet (3 -as érintkező), miközben a többi kimenet le van választva.

Ekkor az LM555 két LED -et villog különböző villogási sebességgel.

Amint az a fenti vázlatban látható, az NE555 ellenállási értékkel fog működni a 4 (12k, 24k, 51k, 100k) lehetséges ellenállási szint között.

3. lépés: NE555 különböző óra generálás

NE555 Különböző óra generáció
NE555 Különböző óra generáció

Amint az a sematikus ábrán látható, az NE555 a lehetséges ellenállási értékek egyikét fogja működtetni, például 12k, 24l, 51k és 100k.

Valójában az NE555 időzítő áramkör része az áramkör fő vizuális jelzése.

Az áramkör működési sémája a következő.

- Ha nincs jelentős CPU terhelés, az RPI -be telepített python program 00 kimenetet küld az indikátor áramkörnek. Ekkor a CD4066 két kimeneti útvonala aktiválódik, és az NE555 12 k ellenállásértékkel működik. Ezért a LED -ek másodpercenként 1,5 -szer villognak (elég gyorsan villognak)

- A CPU enyhén meg van terhelve (Ekkor az üzemidő sorának hossza 0,1 ~ 0,9 szintre emelkedik), a python 01 -t küld az áramkörnek. Ezután a CD4066 aktiválódik 24 k ellenállással csatlakoztatott kimenetekkel. Ennek eredményeképpen a LED -ek villogása másodpercenként 1,2 -szer csökkent (a LED -ek villogása enyhén csökkent, de még mindig egy kicsit)

- Amikor a CPU terhelése jelentősen megnőtt (ekkor az üzemidő futási sor hossza 1,0 ~ 1,9 szintre emelkedik), a python 10-et ad ki az áramkörnek. Ezután megnyílik az 51 k ellenállású csatlakozási útvonal, és az NE555 másodpercenként 0,8 -szor működik. Most a villogási arány jelentősen csökken.

- A CPU-t terhelő nagy terhelés és az üzemidő futási sor hossza meghosszabbodik (több mint 2 feladat várja a CPU végrehajtását, és az üzemidő több mint 2,0-t jelent). A 100 k ellenállású csatlakozás kiválasztásakor az NE555 másodpercenként 0,5 -ször villog a LED -el (a villogási sebesség nagyon lassú lesz)

***

A rendszer megnövekedett terhelésével együtt a LED villogási sebessége ennek megfelelően csökken.

Ha a LED elég lassan villog, akkor az RPI biztosan jelentősen túlterhelődött.

Így a terhelésjelző áramkör jelentése az RPI aktuális terhelési szintjéről.

4. lépés: Alkatrészek

Ennek az áramkörnek az elkészítéséhez különféle IC chipeket használnak.

Bár megemlítem a 74LSxx, CD40xx típusú régi IC chipeket, a legújabb típusú TTL és CMOS chipeket is használhatja, mint például a 74HC4066 és a 74ASxx, ha a kiválasztott IC chip DIP típusú.

Felületre szerelhető apró IC -csomag is használható, ha a kicsiket megfelelően forraszthatja az univerzális NYÁK -ra.

Mások olyan gyakori alkatrészek, amelyeket könnyedén megvásárolhat az internetes e-boltokból.

- 74LS139 (2-4 dekóder, multiplexermentesítő) x 1

- 74HC04 (6 inverter) x 1

- CD4066 (4 analóg kapcsoló IC) x 1

- NE555 időzítő IC x 1

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

-PC817 optocsatoló x 2 (bármilyen közös 4 tűs optocsatoló használható)

- Ellenállások: 220ohm x 4 (LED áramkorlátozó), 4,7K (optocsatoló interfész) x 2, 12K,/24K/51K/100K (órajel vezérlés) x 1

- LED x 2 (bármilyen szín, például sárga, zöld vagy piros, zöld)

- Univerzális tábla 30 (W) 20 (H) lyuk mérete (Bármilyen méretű univerzális táblát vághat, hogy illeszkedjen ehhez az áramkörhöz)

- Ónhuzal (huzalozási minták készítéséhez az univerzális NYÁK -on)

- csapfej (3 csap) x 3

- IC tűfej (4 tű) x 4

- piros/kék színű kábelek

***

5. lépés: PCB rajz készítése

PCB rajz készítése
PCB rajz készítése

Bár minden projektben PCB rajzot mutatok, a huzalozás csak referencia, amely útmutatást nyújt az egyes részek helyes forrasztásához az univerzális NYÁK -ra.

De nem feltétlenül ragaszkodik ehhez a bekötési tervhez.

Amint láthatja a fenti kapcsolási rajzot, meglehetősen bonyolult és jelentősen nagy PCB -t igényel.

Az ónhuzal helyett közös kábelt használhat az alkatrészek csatlakoztatásához, hogy csökkentse a forrasztott NYÁK méretét.

Csak a NYÁK rajzot használja az alkatrészek közötti helyes forrasztás ellenőrzésére és megerősítésére.

Ha növeli a TTL vagy CMOS IC -k számát, általában a PCB -rajzolás meglehetősen bonyolultá válik a PCB egyetlen oldalán történő megfelelő integráción túl.

Ezért a többrétegű NYÁK-t általában ipari minőségű digitális áramkörökhöz használják, amelyek sok TTL-t, CMOS-t és mikroprocesszort tartalmaznak.

6. lépés: Forrasztás

Forrasztás
Forrasztás

Ónhuzalt és közös kábeleket használok együtt, hogy a lehető legkisebbre csökkentsük a NYÁK -méretet.

A PCB rajzzal való összehasonlításkor minden alkatrész helye teljesen megváltozik.

De még mindig a NYÁK -rajzot használják az alkatrészek közötti helyes kapcsolat ellenőrzésére forrasztás közben.

Láthatja, hogy 12k/24k/51k/100k ellenállások vannak behelyezve az IC tűfejre forrasztás nélkül.

Ezért az ellenállásokat más értékekre cserélheti, hogy később kényelmesen megváltoztassa az áramkör működési sémáját.

7. lépés: Összeszerelés

Összeszerelés
Összeszerelés

A befejezett terhelésjelző áramkör (a továbbiakban INDICATOR) a zenelejátszó RPI dobozába van telepítve, a fenti képen látható módon.

Ez a zenelejátszó DAC -val van telepítve, és ezt a közelmúltban használom zenei videó lejátszásához.

Erről az RPI dobozról később elmagyarázom, és most koncentráljunk az INDICATOR -ra, mivel az áramkör a projekt fő témája.

Nemrég vettem Raspberry Pi 4 Model B 2GB (a továbbiakban RPI 4B) videolejátszó alkalmazás támogatására.

Mivel az RPI 4B 4 magos CPU teljesítményét növelte, a rendszerterhelések kezelése jelentősen javult az RPI 3B+-hoz képest.

Ezért az üzemidős futási sor hosszúságú kimenetét az RPI 3B+-tól eltérően kell kezelni.

- A nagyon hagyományos rendszerterhelésnél, például videó lejátszásnál, a futási sor hossza általában kevesebb, mint 0,5 (Tehát a LOW rendszer terhelése 0,0 ~ 0,5 szint lesz)

- Ha enyhe további rendszerterhelést adunk hozzá, például videó lejátszását és fájlok másolását a helyi könyvtárból és a helyi könyvtárba, az ilyen típusú munkák enyhe terhet rónak a CPU -ra. (Tehát a LIGHT terhelési szint 0,5 ~ 1,0 lesz)

- Ha jelentős terheléseket alkalmazunk, mint például a videó lejátszása a Youtube webhelyének böngészőjében és a webböngészés egy másik böngészőben, az RPI 4 futási sebessége kissé lassú lesz (tehát a KÖZEPES terhelési szint 1,0–2,0)

- Végül az RPI 4 rendszer terhelése NAGY lesz, ha több webböngészőt futtat, és nagy mennyiségű fájlt másol egy másik RPI szerverre a hálózaton keresztül (ekkor a futási sor hossza meghaladja a 2,0-t)

***

Ezeket a terhelési szint adatokat fogja használni a következő lépésben kifejlesztett python kód.

8. lépés: Az eredeti áramkör felülvizsgálata

Az eredeti áramkör felülvizsgálata
Az eredeti áramkör felülvizsgálata

Az eredeti áramkör kialakításának számos hibája miatt módosítom az áramkört a fenti képen látható módon.

A változás okai a következők.

- Az NE555 óraimpulzus HIGH és LOW hullámformából áll. De általában a HIGH és LOW jel időtartama (t = 1/f) nem azonos (például HIGH 70% és LOW 30% az eredeti áramkörben). Ezért két LED (eredeti/zöld/sárga LED) villogási sebessége nem azonos (az egyik LED hosszabb ideig világít, mint a másik). Emiatt a LED villogással történő vizuális jelzése nem könnyen felismerhető."

- Ezért további LED -eket adok hozzá, és körkörös iterációs mintát készítek a CD4017 -gyel az üzemállapot könnyű felismerésének biztosítása érdekében

- A LED villogási sémájának fordított megváltoztatása, például lassú villogás alacsony terhelésnél és gyorsabb villogás HIGH terheléssel. (Az eredeti áramkört arra tervezték, hogy alacsonyabb terhelésnél gyorsabban villogjon, és magas villogás esetén lassan villogjon). HIGH terhelési helyzetben minden RPI művelet lassúvá válik. És a lassú LED villogás nem tesz boldoggá. (Pszichológiai szempontból a pozitív megjelenítési sémát választom)

***

Bár a LED kijelző része jelentősen módosult, az eredeti áramkörrel kapcsolatos általános változási szint nem sok, mint a következő lépésben láthatja.

9. lépés: Az eredeti sematikus módosítás

Eredeti sematikus változás
Eredeti sematikus változás

A CD4017 és 8 LED hozzáadása jelentős módosítás.

Az NE555 órajel -frekvencia és a fordított LED -es villogási séma megváltoztatásához az ellenállások értékeit a fenti vázlatok szerint módosítják.

Mivel a hozzáadott áramkör része egyszerű CD4017 alapú üldöző áramkör, kihagyom a módosított áramkör egyéb részletes magyarázatát.

Minden megváltozott áramköri rész leány PCB kártyaként készülhet, amelyhez a CD4017 és 8 LED van forrasztva.

A leánytáblát az alaplaphoz (alaplaphoz) lehet csatlakoztatni, amint az a 8. lépésben látható.

10. lépés: Tesztelés

Az összes működési szakasz (LOW, LIGHT, MEDIUM és HIGH terhelési állapot) tesztvideója az alábbi Google Drive -ban tárolt fájlban látható.

***

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

***

A jelenlegi rendszerterhelésnek megfelelően a villogás gyakorisága megváltozik a videóban látható 4 állapot közül.

11. lépés: Python -kód

Python kód
Python kód

Mivel a legtöbb vezérlő logika külső hardver áramkörbe tartozik, a python kód működési logikája viszonylag egyszerű, beleértve a következő lépéseket.

- CPU hőmérséklet adatok beszerzése a rendszer terhelésének és a hőmérséklet emelkedésének relativitásához

- 1 perces átlagos rendszerterhelés összegyűjtése az üzemidő kimenetéből

-Időbélyegző készítése, mint yy-mm-dd hh: mm: ss formátum

- Íráshőmérséklet, rendszerterhelés és időbélyegző

- Az aktuális rendszer terhelési kimeneti adatai szerint (00, 01, 10, 11) az INDICATOR áramkörre

- Aludjon 5 másodpercet, mielőtt elkezdené a fent említett lépéseket

Mivel a python programnak szigorú behúzásra van szüksége a forráskódon belül, kérjük, töltse le a forrásfájlt a Google meghajtóról az alábbi linkre kattintva.

***

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

***

Mivel nem RPI -t használok asztali számítógépként, a Libre irodai alkalmazások vagy webböngészők futtatása nagyon ritka.

Általában zenei videót, fájlmásolást/mozgatást vagy python programozást játszok az újonnan vásárolt RPI 4B 2GB -val.

Ezért az átlagos terhelés általában kisebb, mint 1,0 az én esetemben, és ennek megfelelően módosítom a LOW/LIGHT/MEDIUM/HIGH szintet a kódomban. (A tesztfeltételeket egyébként módosíthatja)

Ha azonban általában YouTube -videókat néz RPI -vel, akkor rendszerint több mint 2,0 rendszerbetöltés történik.

12. lépés: Relativitás a rendszer terhelése és a CPU hőmérséklete között

Relativitás a rendszer terhelése és a CPU hőmérséklete között
Relativitás a rendszer terhelése és a CPU hőmérséklete között

Általában sejtem és biztos vagyok benne, hogy a növekvő rendszerterhelés emeli a CPU hőmérsékletét.

De eddig nem volt világos képem a köztük lévő kölcsönös együttműködésről.

Amint az a fenti grafikonon látható, nagyon erős egymáshoz való viszonyuk az alábbiak szerint.

- Az egyszerű összehasonlítás érdekében megszorozom a 10 -et az átlagos rendszerterheléssel. Ellenkező esetben a rendszer terhelésének mértéke nagyon kicsi (0,0 ~ 2,0), a közvetlen összehasonlítás megnehezül.

- Mivel a hűtőventilátor áramkör a zenelejátszó Pi dobozba van szerelve, a CPU hőmérséklete soha nem haladja meg az 50 ° C -ot

- Ha a rendszer terhelése 0,0 ~ 1,0 tartományon belül van, a hőmérséklet 45-48 ° C között van (a CPU fém burkolata enyhén felmelegszik)

- De nagy terhelést alkalmaznak (általában webböngésző és Youtube -videók lejátszása), a terhelés szárnyalása és így a hőmérséklet

***

Mivel az RPI 4B 4 magos CPU -val van felszerelve, elméletileg a teljesítmény nem sokat csökken a terhelés szintjéig (üzemidő futási sor) 4.

De még mindig kevesebb, mint az átlagos terhelési szint 4, megfelelő hőmérséklet -szabályozás szükséges.

13. lépés: Véglegesítés

Véglegesítés
Véglegesítés

Azzal fejezem be ezt a projektet, hogy az INDICATOR -t a Pi dobozba telepítem, mint a fenti képen.

A Pi doboz alkalmi használata során az INDICATOR ritkán mutat MAGAS szintet és dinamikus LED villogást.

Általában lassan villogó LED állapotokban maradt (tehát LOW vagy LIGHT szint).

Egyébként a hozzáadott vizuális jelző kissé viccessé teszi, legalábbis azt mutatja, hogy az RPI most csinál valamit.

Köszönöm, hogy elolvastad ezt a történetet ….

Ajánlott: