Cuprins:

Indicator de încărcare CPU Raspberry Pi: 13 pași
Indicator de încărcare CPU Raspberry Pi: 13 pași

Video: Indicator de încărcare CPU Raspberry Pi: 13 pași

Video: Indicator de încărcare CPU Raspberry Pi: 13 pași
Video: doubling the drop every time the PC survives #shorts 2024, Iulie
Anonim
Indicator de încărcare CPU Raspberry Pi
Indicator de încărcare CPU Raspberry Pi

Când rulați Raspberry Pi (RPI) ca fără cap, fără monitor de consolă, nu sunt disponibile indicații vizuale specifice pentru a recunoaște că RPI face ceva.

Chiar dacă terminalul de la distanță este utilizat cu SSH, este necesară executarea din timp a comenzii Linux pentru a verifica cât de mult încărcarea sistemului împovără CPU acum

Deci, acest circuit este făcut pentru a ajuta la recunoașterea imediată a activității reale a procesorului (poate semi-real sau aproape real) pentru a executa sarcini de sistem aplicate în prezent.

Deși numai programarea Python și circuitul mult mai simplu pot suporta aceeași funcționalitate, vor fi necesare coduri Python puțin complexe pentru a simula logica sofisticată de control LED cerută de acest circuit.

De asemenea, complexitatea crescută paradoxal a codului python va încărca CPU mai mult cu încărcarea crescută a sistemului.

Prin urmare, descărcarea oricăror funcționalități de indicație pe cât posibil pe circuitul hardware extern va fi rezonabilă, deoarece acest serviciu ar trebui să ruleze tot timpul și frecvent, cum ar fi la fiecare 5 secunde.

Și acest circuit va adăuga o caracteristică puțin amuzantă la RPI care rulează fără cap.

Pasul 1: Verificarea încărcării CPU Comanda Linux

CPU Load Verificarea comenzii Linux
CPU Load Verificarea comenzii Linux

Există diverse verificări ale încărcării procesorului Sunt disponibile comenzi Linux, cum ar fi top, iostat, sysstat și uptime.

Fiecare comandă are caracteristici avantajoase specifice în ceea ce privește diversitatea informațiilor și afișarea simplității datelor.

Comanda de sus este cea mai bogată informație și sunt disponibile date foarte detaliate pentru recunoașterea imediată a încărcării sistemului.

Dar funcționează ca mod de iterație (afișarea continuă a datelor pe ecran) și formatul informațiilor este destul de complex pentru a extrage doar datele necesare de încărcare a procesorului.

Comanda iostat furnizează informații detaliate de încărcare a sistemului prin separarea utilizatorului și a sistemului care rulează lucrări în coadă care împovără în prezent CPU.

Dar, de asemenea, este inutil de complex să obțineți încărcarea curentă a procesorului în mod prompt și intuitiv.

În caz de timp de funcționare, datele de încărcare a sistemului foarte simple sunt disponibile în medie de 1 minut, medie de 5 minute și medie rezumată de 15 minute.

Așa cum s-a menționat mai sus, simplificarea codului python este necesară, deoarece ar trebui executată destul de des, de exemplu, la fiecare 5 secunde sau 10 secunde.

Când codul python devine complex, acesta va încărca CPU mult.

Este un fel de paradox că împovărați RPI pentru a-i monitoriza încărcarea sistemului.

Prin urmare, aleg comanda de timp de funcționare pentru a colecta încărcarea procesorului și interoperarea cu circuitul indicator, deoarece este cea mai simplă.

Dar, deoarece timpul de funcționare arată media de 1 minut a încărcării sistemului, circuitul indicator trebuie să funcționeze nu ca un mod strict în timp real.

Totuși, acest circuit poate oferi indicii vizuale utile care arată cum merge RPI acum.

Pasul 2: Scheme

Scheme
Scheme

Acest circuit va primi 4 niveluri diferite (de ex. 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) de încărcare curentă a procesorului de la RPI prin intermediul a două intrări opto-cuplatoare.

74LS139 (2 până la 4 decodificator și de-multiplexor) decodifică două intrări de biți într-o singură ieșire dintre 4 moduri posibile, cum ar fi 00 (LOW) -> B0, 01 (LIGHT) -> B1, 10 (MEDIUM) -> B2, 11 (HIGH) -> B3.

Deoarece ieșirea 74LS139 este de nivel invers (intrarea 00 -> B0 devine LOW și alte 3 ieșiri HIGH), invertorul 74HC04 este utilizat pentru a face ieșirea inversă încă o dată.

Când ieșirea 74LS139 este normală HIGH, 74HC04 nu va fi necesară.

Dar cumva 74LS139 este făcut așa. (Vă rugăm să verificați tabelul de adevăr al 74LS139)

Când este selectată oricare dintre ieșirile 74LS139, acesta va activa un anumit comutator analogic între 4 comutatoare incluse în CD4066 IC.

CD4066 poate suporta 4 comutatoare analogice și fiecare comutator constă cu 1 intrare de control și 2 ieșiri analogice.

Când intrarea de control devine HIGH, conexiunea la două ieșiri devine impedanță scăzută (Rezistența devine 0), iar altele devin impedanță HIGH (Rezistența dintre două căi de ieșire devine de câteva sute de mega ohmi).

Pur și simplu controlați 1 (pinul 13) al CD4066 pentru a deveni HIGH, calea dintre ieșirea 1 (pinul 1) și ieșirea 2 (pinul 2) conectate în timp ce alte ieșiri nu sunt conectate (în stare de impedanță ridicată).

De asemenea, intrarea HIGH a controlului 2 (pinul 5) face ca ieșirea 1 (pinul 4) și ieșirea 2 (pinul 3) să fie conectate în timp ce alte ieșiri sunt deconectate.

Apoi LM555 clipește două LED-uri la o rată de clipire diferită.

După cum puteți vedea în schema de mai sus, NE555 va funcționa cu unul cu valoare de rezistență între 4 (12k, 24k, 51k, 100k) niveluri de rezistență posibile.

Pasul 3: NE555 Generare de ceas diferit

NE555 Generație diferită de ceas
NE555 Generație diferită de ceas

Așa cum se arată în schemă, NE555 va opera una dintre valorile de rezistență posibile, cum ar fi 12k, 24l, 51k și 100k.

De fapt, porțiunea de circuit de sincronizare NE555 este o indicație vizuală majoră care susține o parte a circuitului.

Schema de funcționare a circuitului este următoarea.

- Când nu există o încărcare semnificativă a procesorului, programul python instalat în RPI va trimite 00 de ieșiri către circuitul indicator. Apoi se activează două căi de ieșire ale CD4066 și NE555 funcționează cu o rezistență de 12k. Prin urmare, LED-urile clipesc de 1,5 ori pe secundă (clipesc destul de rapid)

- CPU este ușor încărcat (apoi lungimea cozii de timp de funcționare devine de 0,1 ~ 0,9 nivel), python va trimite 01 la circuit. Apoi CD4066 activat cu ieșiri conectate cu rezistor de 24 k. Ca urmare, LED-ul intermitent a scăzut de 1,2 ori pe secundă (LED-ul intermitent a scăzut ușor, dar totuși puțin rapid)

- Când încărcarea procesorului a crescut semnificativ (apoi durata de funcționare a cozii de funcționare devine de 1,0 ~ 1,9 nivel), python va emite 10 la circuit. Apoi, calea de conectare a rezistorului de 51k este deschisă și NE555 funcționează de 0,8 ori pe secundă. Acum rata de clipire devine semnificativ redusă.

- Sarcinile grele care împovărează CPU și durata de funcționare a cozii de rulare devin mai lungi (mai mult de 2 joburi vor aștepta să fie executate de CPU și timpul de funcționare va raporta mai mult de 2.0). Pe măsură ce este selectată conexiunea de rezistență de 100 k, NE555 va clipi LED de 0,5 ori pe secundă (viteza de clipire devine foarte lentă)

***

Împreună cu încărcările crescute ale sistemului, viteza intermitentă a LED-ului va fi redusă în consecință.

Când LED-ul luminează intermitent destul de lent, atunci RPI este suprasolicitat în mod semnificativ.

În acest fel, circuitul de indicare a sarcinii vă raportează nivelul de încărcare actual al RPI.

Pasul 4: Piese

Pentru realizarea acestui circuit, sunt utilizate diverse cipuri IC.

Deși menționez 74LSxx, tip CD40xx de cipuri IC vechi, puteți utiliza tipuri recente de cipuri TTL și CMOS, cum ar fi 74HC4066 și 74ASxx, atunci când cipul IC selectat este de tip DIP.

Tipul de montare pe suprafață a micului pachet IC poate fi, de asemenea, utilizat atunci când le puteți lipi în mod corespunzător pe cele mici pe PCB-ul universal.

Altele sunt părți comune pe care le puteți cumpăra cu ușurință din magazinele electronice de pe internet.

- 74LS139 (2-4 decodor, de-multiplexor) x 1

- 74HC04 (6 invertoare) x 1

- CD4066 (4 comutatoare analogice IC) x 1

- NE555 Timer IC x 1

- Condensatoare: 10uF x 1, 0.1uF x 1

- PC817 opto-cuplare x 2 (se poate utiliza orice opto-cuplare comună cu 4 pini)

- Rezistențe: 220ohm x 4 (limitarea curentului LED), 4,7K (interfață opto-cuplare) x 2, 12K, / 24K / 51K / 100K (control al temporizării ceasului) x 1

- LED x 2 (orice culori diferite, cum ar fi galben, verde sau roșu, verde)

- Placă universală 30 (W) cu 20 (H) dimensiune găuri (Puteți tăia orice dimensiune a plăcii universale pentru a se potrivi acestui circuit)

- Sârmă de tablă (Pentru realizarea modelelor de cablare pe PCB-ul universal)

- cap pin (3 pini) x 3

- Cap pin IC (4 pini) x 4

- cabluri de cabluri de culoare roșu / albastru

***

Pasul 5: Realizarea desenului PCB

Realizarea desenului PCB
Realizarea desenului PCB

Deși afișez desenele PCB în fiecare proiect, proiectarea cablajului este doar o referință care vă va ghida să lipiți corect fiecare parte pe PCB universal.

Dar nu sunteți neapărat respectați această schemă de cablare.

După cum puteți vedea schema de cabluri de mai sus, este destul de complexă și necesită un PCB semnificativ mare.

Puteți utiliza un cablu comun pentru a conecta piese în loc de sârmă de tablă pentru a reduce dimensiunea PCB lipit complet.

Utilizați desenul PCB doar pentru verificarea și confirmarea lipirii corecte între piese.

Când numărul de circuite integrate TTL sau CMOS este crescut, de obicei desenul PCB devine destul de complex dincolo de integrarea adecvată pe o singură parte a PCB.

Prin urmare, multi-strat de PCB este utilizat în mod obișnuit pentru circuite digitale de calitate industrială, care includ o mulțime de TTL, CMOS și microprocesor.

Pasul 6: lipire

Lipire
Lipire

Folosesc împreună sârmă de tablă și cabluri comune pentru a minimiza cât mai mult dimensiunea PCB-ului.

Când se compară cu desenul PCB, locația fiecărei piese este complet schimbată.

Dar totuși desenul PCB este utilizat pentru a verifica conexiunea corectă între piese în timpul lipirii.

Puteți vedea că rezistențele de 12k / 24k / 51k / 100k sunt introduse pe capul pinului IC fără lipire.

Prin urmare, puteți înlocui rezistențele cu alte valori pentru schimbarea convenabilă a schemei operaționale a circuitului ulterior.

Pasul 7: Asamblarea

Asamblare
Asamblare

Circuitul indicatorului de încărcare finalizat (în continuare INDICATOR) este instalat pe caseta RPI a playerului de muzică, așa cum se arată în imaginea de mai sus.

Acest player de muzică este instalat cu DAC și îl folosesc recent pentru redarea videoclipului muzical.

Despre această casetă RPI, vă voi explica mai târziu și acum să ne concentrăm pe INDICATOR, deoarece circuitul este subiectul principal al acestui proiect.

Am cumpărat Raspberry Pi 4 Model B 2GB (în continuare RPI 4B) recent pentru a sprijini aplicația de redare video.

Deoarece RPI 4B are o performanță crescută a procesorului cu 4 nuclee, gestionarea sarcinilor sistemului este îmbunătățită destul de semnificativ de la RPI 3B +.

Prin urmare, ieșirea în funcție de durata de funcționare a cozii de rulare ar trebui tratată diferit de RPI 3B +.

- Pentru încărcarea foarte convențională a sistemului, cum ar fi redarea video, lungimea cozii de rulare este de obicei mai mică de 0,5 (Deci, sarcina LOW a sistemului va fi de 0,0 ~ 0,5 nivel)

- Când se adaugă o încărcare suplimentară ușoară a sistemului, cum ar fi redarea video și copierea fișierelor din și către directorul local, tipul de lucrări duce la o ușoară povară asupra procesorului. (Deci, nivelul de încărcare LUMINĂ va fi de 0,5 ~ 1,0)

- Când se aplică încărcări semnificative, cum ar fi redarea videoclipului pe browser pe site-ul Youtube și navigarea pe web pe un alt browser, viteza de rulare a RPI 4 devine ușor lentă (Deci nivelul de încărcare MEDIU va fi de 1,0 ~ 2,0)

- În cele din urmă, încărcarea sistemului RPI 4 devine MARE atunci când rulați mai multe browsere web și copiați un volum mare de fișiere pe un alt server RPI prin rețea (apoi lungimea cozii de rulare devine mai mare de 2,0)

***

Aceste date ale nivelului de încărcare vor fi utilizate de codul python dezvoltat în pasul următor.

Pasul 8: Revizuirea circuitului original

Revizuirea circuitului original
Revizuirea circuitului original

Din cauza mai multor defecte ale designului original al circuitului, modific circuitul așa cum se arată în imaginea de mai sus.

Motivele pentru schimbare sunt următoarele.

- Pulsul de ceas NE555 este format din forma de undă HIGH și LOW. Dar, de obicei, durata semnalului HIGH și LOW (t = 1 / f) nu este aceeași (de exemplu HIGH este 70% și LOW este 30% în circuitul original). Prin urmare, rata de clipire a două LED-uri (LED verde / galben în designul original) nu este aceeași (un LED se aprinde mai mult decât altul). Din acest motiv, indicația vizuală prin clipirea LED-ului nu este ușor de recunoscut."

- Prin urmare, adaug mai multe LED-uri și fac un model de iterație circulară cu CD4017 pentru a asigura recunoașterea ușoară a stării operaționale

- De asemenea, schimbarea schemei de intermitent cu LED-uri invers, cum ar fi clipirea lentă la sarcină scăzută și clipirea mai rapidă cu sarcină MARE. (Circuitul original este făcut să clipească mai repede la încărcare scăzută și să clipească lent la încărcare MARE). În situația de încărcare HIGH, orice acțiune RPI devine lentă. Și afișarea intermitentă lentă a LED-ului nu vă va face fericit. (În aspect psihologic, aleg o schemă de afișare mai pozitivă)

***

Deși partea afișajului cu LED-uri este modificată semnificativ, nivelul global de schimbare cu circuitul original nu este prea mare așa cum puteți vedea în pasul următor.

Pasul 9: Schimbarea schematică originală

Schimbare schematică originală
Schimbare schematică originală

Adăugarea CD4017 și a 8 LED-uri sunt modificări majore.

De asemenea, pentru a modifica frecvența de ceasare NE555 și schema intermitentă a LED-ului invers, valorile rezistențelor sunt modificate așa cum se arată în schemele de mai sus.

Întrucât porțiunea de circuit adăugat este un simplu circuit de urmărire bazat pe CD4017, voi ignora alte explicații detaliate ale circuitului modificat.

Toate porțiunile de circuit modificate pot fi realizate ca placă PCB fiică pe care sunt lipite CD4017 și 8 LED-uri.

Placa fiică poate fi atașată la placa principală (placa de bază) așa cum se arată în pasul 8.

Pasul 10: Testarea

Video de testare a tuturor etapelor operaționale (LOW, LIGHT, MEDIUM and HIGH load state) sunt afișate de fișierul stocat în unitatea google de mai jos.

***

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

***

În funcție de încărcarea curentă a sistemului, rata de clipire va fi modificată între una dintre cele 4 stări afișate în videoclip.

Pasul 11: Cod Python

Cod Python
Cod Python

Deoarece majoritatea logicii de control sunt incluse în circuitul hardware extern, logica operațională a codului python este relativ simplă, incluzând pașii următori.

- Obținerea datelor de temperatură ale procesorului pentru a compara relativitatea dintre încărcarea sistemului și creșterea temperaturii

- Adunarea încărcării medii a sistemului de 1 minut de la ieșirea uptime

- Realizarea ștampilei de timp, cum ar fi formatul aa-mm-zz hh: mm: ss

- Temperatura de scriere, încărcarea sistemului împreună cu marcajul de timp

- Conform datelor de ieșire curente ale sistemului de încărcare (00, 01, 10, 11) în circuitul INDICATOR

- Dormiți 5 secunde înainte de a începe pașii menționați mai sus

Deoarece programul Python are nevoie de o indentare strictă în codul sursă, vă rugăm să descărcați fișierul sursă de pe Google Drive urmând linkul de mai jos.

***

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

***

Deoarece nu folosesc RPI ca computer desktop, rularea aplicațiilor Libre Office sau a browserului web este foarte rară.

De obicei, redau videoclipuri muzicale, copiere / mutare de fișiere sau programare python cu RPI 4B 2GB nou achiziționat.

Prin urmare, încărcarea medie este de obicei mai mică de 1,0 în cazul meu și, în consecință, schimb nivelul LOW / LIGHT / MEDIUM / HIGH din codul meu. (Puteți modifica condițiile de testare altfel)

Dar când vizionați în mod obișnuit videoclipuri Youtube cu RPI, se întâmplă în mod obișnuit mai mult de 2,0 din încărcările sistemului.

Pasul 12: relativitatea între încărcarea sistemului și temperatura procesorului

Relativitatea între încărcarea sistemului și temperatura procesorului
Relativitatea între încărcarea sistemului și temperatura procesorului

De obicei, cred că sunt sigur că creșterea încărcării sistemului va crește temperatura procesorului.

Dar până acum nu am o imagine clară a interacțiunii reciproce dintre ei.

După cum puteți vedea în graficul de mai sus, acestea sunt corelații foarte puternice după cum urmează.

- Pentru o comparație ușoară, înmulțesc 10 la încărcarea medie a sistemului. În caz contrar, scara de încărcare a sistemului este foarte mică (0,0 ~ 2,0), compararea directă devine dificilă.

- Deoarece circuitul FAN de răcire este instalat pe cutia de redare a muzicii, temperatura procesorului nu depășește niciodată mai mult de 50C

- Când încărcarea sistemului este în intervalul de 0,0 ~ 1,0, temperatura în intervalul de 45 ~ 48C (capacul metalic al procesorului se încălzește ușor)

- Dar se aplică o încărcătură mare (De obicei, browserul web și redarea videoclipurilor de pe YouTube), încărcarea crește și astfel temperatura

***

Deoarece RPI 4B este instalat cu un procesor cu 4 nuclee, teoretic performanța nu va fi mult degradată până la nivelul de încărcare (coada de funcționare a timpului de funcționare) 4.

Dar, totuși, sub nivelul mediu de încărcare 4, va fi necesar un control adecvat al temperaturii.

Pasul 13: Finalizare

Finalizare
Finalizare

Finalizez acest proiect instalând INDICATOR în caseta Pi ca în imaginea de mai sus.

În timpul utilizării ocazionale a acestei cutii Pi, INDICATOR arată rareori LED-uri de nivel înalt și intermitente.

De obicei, acesta a rămas în stări LED intermitente lent (deci nivel LOW sau LIGHT).

Oricum, indicatorul vizual adăugat face puțin amuzant, cel puțin arată că RPI face ceva chiar acum.

Mulțumesc că ai citit această poveste …..

Recomandat: