Indholdsfortegnelse:

Raspberry Pi CPU -belastningsindikator: 13 trin
Raspberry Pi CPU -belastningsindikator: 13 trin

Video: Raspberry Pi CPU -belastningsindikator: 13 trin

Video: Raspberry Pi CPU -belastningsindikator: 13 trin
Video: I Ran ChatGPT on a Raspberry Pi Locally! 2024, November
Anonim
Raspberry Pi CPU -belastningsindikator
Raspberry Pi CPU -belastningsindikator

Når du kører Raspberry Pi (RPI) som hovedløs uden konsolmonitor, er der ingen specifikke visuelle indikationer tilgængelige for at genkende, at RPI faktisk gør noget.

Selvom fjernterminal bruges med SSH, er det nødvendigt at udføre Linux -kommando fra tid til anden for at kontrollere, hvor meget systembelastning, der belaster CPU nu

Så dette kredsløb er lavet til at hjælpe med øjeblikkeligt at genkende den reelle aktivitet af CPU (måske semi-reel eller nær reel måde) til at udføre aktuelt anvendte systembelastninger.

Selvom kun pythonprogrammering og meget enklere kredsløb kan understøtte den samme funktionalitet, vil der kræves lidt komplekse pythonkoder for at simulere den sofistikerede LED -styringslogik, der kræves af dette kredsløb.

Paradoksalt nok vil øget kompleksitet af python -kode belaste CPU mere med øget systembelastning.

Derfor vil det være rimeligt at aflaste enhver indikationsfunktionalitet så meget som muligt til eksternt hardwarekredsløb, da denne service bør køre hele tiden og ofte f.eks. Pr. 5 sekunder.

Og dette kredsløb tilføjer en lille smule sjov funktion til hovedløs kørende RPI.

Trin 1: CPU -belastningskontrol af Linux -kommando

CPU -belastning Kontrol af Linux -kommando
CPU -belastning Kontrol af Linux -kommando

Der er forskellige CPU -belastningskontrol Linux -kommandoer er tilgængelige, f.eks. Top, iostat, sysstat og oppetid.

Hver kommando har specifikke fordelagtige funktioner med hensyn til informationsmangfoldighed og visning af dataindsigt.

Topkommandoen er den mest informationsrige og meget detaljerede data er tilgængelige for øjeblikkelig at genkende systembelastning.

Men det fungerer som iterationstilstand (viser kontinuerligt data på skærmen) og informationsformat er ret komplekst for at udtrække kun nødvendige CPU -belastningsdata.

Kommandoen iostat giver dybdegående oplysninger om systembelastning ved at adskille bruger- og systemkøjob, der belaster CPU i øjeblikket.

Men det er også unødigt komplekst at få den aktuelle CPU -belastning som hurtig og intuitiv måde.

I tilfælde af oppetid er meget enkle systembelastningsdata tilgængelige i gennemsnit på 1 minuts gennemsnit, 5 minutters gennemsnit og 15 minutter sammenfattet gennemsnit.

Som nævnt ovenfor er forenkling af python -kode nødvendig, fordi den skal udføres ret ofte, f.eks. Pr. 5 sekunder eller 10 sekunder.

Når python -kode bliver kompleks, vil det belaste CPU meget.

Det er lidt af et paradoks, at du belaster RPI til at overvåge dens systembelastning.

Derfor vælger jeg oppetidskommando for at samle CPU -belastning og arbejde sammen med indikator kredsløb, fordi det er det enkleste.

Men da oppetid viser 1 minuts gennemsnit af systembelastning, skal indikator kredsløb drives ikke så strengt i realtid.

Stadig dette kredsløb kan give et nyttigt visuelt tip, der viser, hvordan RPI klarer sig nu.

Trin 2: Skemaer

Skemaer
Skemaer

Dette kredsløb modtager 4 forskellige niveauer (f.eks. 00-> LOW, 01-> LIGHT, 10-> MEDIUM, 11-> HIGH) af den aktuelle CPU-belastning fra RPI via to optokoblingsindgange.

74LS139 (2 til 4 dekoder og de-multiplexer) dekoder to bit input til en af de enkelte udgange blandt 4 mulige måder, f.eks. 00 (LOW)-> B0, 01 (LIGHT)-> B1, 10 (MEDIUM)-> B2, 11 (HØJ)-> B3.

Da 74LS139 output er omvendt niveau (00 input -> B0 bliver LOW og andre 3 output HIGH), bruges 74HC04 inverter til at få output til at vende en gang til.

Når output på 74LS139 er normalt HIGH, er 74HC04 ikke nødvendigt.

Men på en eller anden måde er 74LS139 lavet sådan. (Se venligst sandhedstabel med 74LS139)

Når en af 74LS139 -udgange er valgt, aktiverer den en bestemt analog switch blandt 4 switches, der er inkluderet i CD4066 IC.

CD4066 kan understøtte 4 analoge switche, og hver switch består af 1 kontrolindgang og 2 analoge udgange.

Når kontrolindgang bliver HØJ, bliver to udgange til lav impedans (modstand bliver til 0) og andre bliver til HØJ impedans (modstand mellem to udgangsstier bliver flere hundrede mega ohm) niveau.

Bare styr 1 (pin 13) på CD4066 bliver HIGH, banen mellem output 1 (pin 1) og output 2 (pin 2) er forbundet, mens andre udgange ikke er tilsluttet (i tilstanden høj impedans).

Ligeledes HØJ indgang på kontrol 2 (pin 5) gør output 1 (pin 4) og output 2 (pin 3) forbundet, mens andre udgange er afbrudt.

Derefter blinker LM555 to lysdioder i forskellige blinkhastigheder.

Som du kan se i skematikken ovenfor, fungerer NE555 med en modstandsværdi blandt 4 (12k, 24k, 51k, 100k) mulige modstandsniveauer.

Trin 3: NE555 Forskellig urgenerering

NE555 Forskellig urgenerering
NE555 Forskellig urgenerering

Som vist i skematikken vil NE555 betjene en af mulige modstandsværdier som 12k, 24l, 51k og 100k.

Faktisk er NE555 timing kredsløbsdel en stor visuel indikation, der understøtter en del af kredsløbet.

Kredsløbsdriftsplan er som følger.

- Når der ikke er nogen betydelig CPU -belastning, sender python -program installeret i RPI 00 output til indikator kredsløb. Derefter aktiveres to udgange til CD4066, og NE555 fungerer med en 12 k modstandsværdi. Derfor blinker LED'er 1,5 gange i sekundet (blinker ret hurtigt)

- CPU'en er let indlæst (Så bliver kølængden på oppetid 0,1 ~ 0,9), python sender 01 til kredsløb. Derefter aktiveres CD4066 med udgange forbundet med 24k modstand. Som følge heraf faldt LED -blinking 1,2 gange i sekundet (LED -blink blinker lidt, men stadig lidt hurtigt)

- Når CPU-belastningen steg betydeligt (Derefter bliver kørelængden for driftstid på 1,0 ~ 1,9 niveau), sender python 10 til kredsløb. Derefter åbnes 51k modstandsforbindelsessti, og NE555 fungerer 0,8 gange i sekundet. Nu reduceres blinkhastigheden markant.

- Tunge belastninger, der belaster CPU og længde på kø-køen, bliver længere (mere end 2 job venter på at blive udført af CPU, og oppetid rapporterer mere end 2,0). Da 100k modstandsforbindelse er valgt, blinker NE555 LED 0,5 gange i sekundet (blinkhastigheden bliver meget langsom)

***

Sammen med øget systembelastning reduceres LED -blinkhastigheden tilsvarende.

Når LED blinker ret langsomt, overbelastes RPI sikkert betydeligt.

På denne måde rapporterer belastningsindikationskredsløbet dig det aktuelle belastningsniveau for RPI.

Trin 4: Dele

Til fremstilling af dette kredsløb bruges forskellige IC -chips.

Selvom jeg nævner 74LSxx, CD40xx -type gamle IC -chips, kan du bruge de seneste typer TTL- og CMOS -chips, f.eks. 74HC4066 og 74ASxx, når den valgte IC -chip er DIP -type.

Overflademonteringstype lille IC -pakke kan også bruges, når du kan lodde de små korrekt på det universelle printkort.

Andre er almindelige dele, du nemt kan købe fra internet-e-butikker.

- 74LS139 (2 til 4 dekoder, de-multiplexer) x 1

- 74HC04 (6 inverter) x 1

- CD4066 (4 analoge switches IC) x 1

- NE555 Timer IC x 1

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

-PC817 optokobler x 2 (enhver almindelig 4-polet optokobler kan bruges)

Modstande: 220ohm x 4 (begrænsning af LED-strøm), 4,7K (interface med optokobler) x 2, 12K,/24K/51K/100K (urstyring) x 1

- LED x 2 (enhver anden farve som gul, grøn eller rød, grøn)

- Universal board 30 (W) x 20 (H) huller størrelse (Du kan skære enhver størrelse af universal board til at passe til dette kredsløb)

- Tin wire (Til fremstilling af ledningsmønstre på det universelle printkort)

- pinhoved (3 pins) x 3

- IC -pinhoved (4 ben) x 4

- ledninger i rød/blå farve

***

Trin 5: Lav PCB -tegning

Fremstilling af PCB -tegning
Fremstilling af PCB -tegning

Selvom jeg viser PCB -tegning i hvert projekt, er ledningsdesignet bare en reference, der vil guide dig til at lodde hver del på universal PCB.

Men du holder ikke nødvendigvis fast ved denne ledningsplan.

Som du kan se ledningsdiagrammet ovenfor, er det ret komplekst og kræver betydeligt stort printkort.

Du kan bruge et almindeligt kabel til at forbinde dele i stedet for tindtråd for at reducere størrelsen på loddet færdiggjort printkort.

Brug kun printkortet til at kontrollere og bekræfte den korrekte lodning mellem dele.

Når antallet af TTL- eller CMOS -IC'er øges, bliver PCB -tegning normalt ret kompleks ud over korrekt integration på den ene side af PCB.

Derfor bruges flerlags PCB almindeligt til digitale kredsløb i industriel kvalitet, der indeholder en masse TTL, CMOS og mikroprocessor.

Trin 6: Lodning

Lodning
Lodning

Jeg bruger tinnetråd og fælles ledningskabel sammen for at minimere PCB -størrelse så meget som muligt.

Ved sammenligning med PCB -tegning ændres placeringen af hver del fuldstændigt.

Men stadig bruges PCB -tegning til at verificere korrekt forbindelse mellem dele under lodning.

Du kan se 12k/24k/51k/100k modstande indsat på IC -pinhovedet uden lodning.

Derfor kan du udskifte modstande til andre værdier for bekvemt at ændre kredsløbets driftsplan senere.

Trin 7: Samling

Montering
Montering

Fuldført belastningsindikator kredsløb (i det følgende betegnet INDIKATOR) er installeret i musikafspillerens RPI -boks som vist på billedet ovenfor.

Denne musikafspiller er installeret med DAC, og jeg bruger denne for nylig til at afspille musikvideo.

Om denne RPI -boks forklarer jeg senere, og lad os nu fokusere på INDIKATOR, da kredsløbet er hovedemnet for dette projekt.

Jeg købte for nylig Raspberry Pi 4 Model B 2GB (herefter RPI 4B) for at understøtte videoafspilning.

Da RPI 4B har øget ydeevnen på 4 kerner CPU, forbedres systembelastning meget markant fra RPI 3B+.

Derfor bør output-run-kø-længdeoutput behandles anderledes end RPI 3B+.

- For den meget konventionelle systembelastning, f.eks. Afspilning af video, er kø-længden normalt mindre end 0,5 (Så LAV systembelastning vil være 0,0 ~ 0,5 niveau)

- Når der tilføjes en lille ekstra systembelastning, f.eks. Afspilning af video og kopiering af filer fra og til lokale mapper, resulterer slags arbejde i en lille belastning på CPU'en. (Så LIGHT belastningsniveauet vil være 0,5 ~ 1,0)

- Når der påføres betydelige belastninger, f.eks. Afspilning af video på browser på Youtube -websted og websurfing i en anden browser, bliver kørehastigheden på RPI 4 lidt træg (Så MEDIUM -belastningsniveauet skal være 1,0 ~ 2,0)

- Endelig bliver RPI 4 systembelastning HØJ, når der køres flere webbrowsere og kopieres store mængder filer til en anden RPI-server via netværk (Derefter bliver kørelængden mere end 2,0)

***

Disse belastningsniveaudata vil blive brugt af skal udvikles python -kode i det næste trin.

Trin 8: Revidering af det originale kredsløb

Revideret originalt kredsløb
Revideret originalt kredsløb

På grund af flere defekter i det originale kredsløbsdesign ændrer jeg kredsløbet som vist på billedet ovenfor.

Årsagerne til ændringen er som følger.

- NE555 urpuls består af HØJ og LAV bølgeform. Men normalt er HIGH og LOW signalvarighed (t = 1/f) ikke det samme (f.eks. HIGH er 70% og LOW er 30% i det originale kredsløb). Derfor er blinkende hastighed for to lysdioder (grøn/gul LED i originalt design) ikke den samme (en LED tændes længere end en anden). Af denne grund er visuel indikation ved LED -blink ikke meget let genkendelig. '

- Derfor tilføjer jeg flere lysdioder og laver cirkulært iterationsmønster med CD4017 for at sikre let genkendelse af driftstilstand

- Skifter også LED -blinkskema omvendt, såsom langsomt blink ved LAV belastning og hurtigere blink med HØJ belastning. (Det originale kredsløb skal blinke hurtigere ved LAV belastning og langsomt blinke ved HØJ belastning). I situationen HIGH load bliver enhver RPI -handling træg. Og at vise langsom LED blinker vil ikke gøre dig glad. (I det psykologiske aspekt vælger jeg mere positivt displayskema)

***

Selvom LED -displaydelen er markant ændret, er det generelle ændringsniveau med det originale kredsløb ikke meget, som du kan se i det næste trin.

Trin 9: Original skematisk ændring

Original skematisk ændring
Original skematisk ændring

Tilføjelse af CD4017 og 8 lysdioder er store ændringer.

For at ændre NE555 -clockfrekvensen og omvendt LED -blinkende skema ændres modstandsværdierne som vist i skemaerne ovenfor.

Da tilføjet kredsløbsdel er et enkelt CD4017 -baseret chaser -kredsløb, springer jeg andre detaljerede forklaringer over det modificerede kredsløb over.

Alle ændrede kredsløbsdele kan laves som datter -printkort, hvortil CD4017 og 8 lysdioder er loddet.

Datterkortet kan fastgøres til hovedkortet (bundkortet) som vist på billede i trin 8.

Trin 10: Test

Testvideo af alle driftstrin (LOW, LIGHT, MEDIUM og HIGH load state) vises af filen gemt i google -drevet herunder.

***

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

***

I henhold til den aktuelle systembelastning vil blinkhastigheden blive ændret blandt en af 4 tilstande, der vises i videoen.

Trin 11: Python -kode

Python -kode
Python -kode

Da de fleste af styrende logikker er inkluderet i eksternt hardwarekredsløb, er driftslogik for python -kode relativt enkel, herunder de følgende trin.

- Få CPU -temperaturdata til at sammenligne relativitet mellem systembelastning og temperaturstigning

- Indsamling af 1 minuts gennemsnitlig systembelastning fra outtime -output

-Lav tidsstempel som åå-mm-dd hh: mm: ss-format

- Skrivetemperatur, systembelastning sammen med tidsstempel

- Ifølge de aktuelle systembelastningsdata (00, 01, 10, 11) til INDIKATOR -kredsløbet

- Sov 5 sekunder, før du starter ovenstående trin

Da python -programmet har brug for streng indrykning i kildekoden, skal du downloade kildefilen fra Google Drive ved at følge nedenstående link.

***

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

***

Da jeg ikke bruger RPI som stationær computer, er det meget sjældent at køre Libre -kontorprogrammer eller webbrowser.

Normalt spiller jeg musikvideo, filkopiering/flytning eller python -programmering med nyindkøbte RPI 4B 2GB.

Derfor er den gennemsnitlige belastning normalt mindre end 1,0 i mit tilfælde, og derfor ændrer jeg LOW/LIGHT/MEDIUM/HIGH -niveauer i min kode. (Du kan ændre testbetingelserne ellers)

Men når du normalt ser Youtube -videoer med RPI, sker der normalt mere end 2,0 systemindlæsninger.

Trin 12: Relativitet mellem systembelastning og CPU -temperatur

Relativitet mellem systembelastning og CPU -temperatur
Relativitet mellem systembelastning og CPU -temperatur

Normalt gætter jeg og er sikre på, at stigende systembelastning vil øge CPU -temperaturen.

Men indtil nu har jeg ikke et klart billede af den gensidige indbyrdes operation mellem dem.

Som du kan se i grafen ovenfor, er de meget stærke ko-relation som følger.

- For let sammenligning multiplicerer jeg 10 med den gennemsnitlige systembelastning. Ellers er omfanget af systembelastningen meget lille (0,0 ~ 2,0), direkte sammenligning bliver vanskelig.

- Da køle -FAN -kredsløb er installeret til den musikafspilende Pi -boks, overstiger CPU -temperaturen aldrig mere end 50C

- Når systembelastningen er inden for området 0,0 ~ 1,0, temperatur inden for området 45 ~ 48C (CPU -metaldæksel varmer lidt op)

- Men tung belastning påføres (Normalt webbrowser og afspiller Youtube -videoer), belastning skyhøje og så temperaturen

***

Da RPI 4B er installeret med 4 -core CPU, vil teoretisk set ikke ydelsen blive meget forringet til belastningsniveau (driftstidskø) 4.

Men stadig mindre end gennemsnitsbelastningsniveau 4, vil passende temperaturkontrol være nødvendig.

Trin 13: Afslutning

Afslutning
Afslutning

Jeg afslutter dette projekt ved at installere INDIKATOR til Pi -boks som billedet ovenfor.

Under afslappet brug af denne Pi -boks viser INDIKATOR sjældent HØJT niveau og dynamisk LED, der blinker.

Normalt forblev den i langsomt blinkende lysdioder (så lavt eller let niveau).

Anyway tilføjet visuel indikator gør en lille smule sjov i det mindste det viser RPI gør noget lige nu.

Tak fordi du læste denne historie ….

Anbefalede: