Innehållsförteckning:

Raspberry Pi CPU -laddningsindikator: 13 steg
Raspberry Pi CPU -laddningsindikator: 13 steg

Video: Raspberry Pi CPU -laddningsindikator: 13 steg

Video: Raspberry Pi CPU -laddningsindikator: 13 steg
Video: ПК внутри клавиатуры! Обзор Raspberry Pi 400 за $70 2024, Juli
Anonim
Raspberry Pi CPU -laddningsindikator
Raspberry Pi CPU -laddningsindikator

När du kör Raspberry Pi (RPI) som huvudlös utan konsollmonitor finns inga specifika visuella indikationer tillgängliga för att känna igen att RPI faktiskt gör något.

Även om fjärrterminalen används med SSH, krävs att Linux -kommando körs ibland för att kontrollera hur mycket systembelastning som belastar CPU nu

Så denna krets är gjord för att omedelbart känna igen den verkliga aktiviteten hos CPU (kanske semi-real eller nästan verkligt sätt) för att utföra för närvarande tillämpade systembelastningar.

Även om endast pythonprogrammering och mycket enklare krets kan stödja samma funktionalitet, krävs lite komplexa pythonkoder för att simulera den sofistikerade LED -styrlogiken som krävs av denna krets.

Paradoxalt nog kommer pythonkodens komplexitet att belasta CPU mer med ökad systembelastning.

Därför är det rimligt att ladda ner alla indikationsfunktioner så mycket som möjligt till den externa hårdvarukretsen, eftersom denna tjänst bör köras hela tiden och ofta, till exempel var 5: e sekund.

Och denna krets kommer att lägga till en lite rolig funktion till huvudlösa RPI.

Steg 1: CPU Load Checking Linux Command

CPU -belastning Kontrollerar Linux -kommando
CPU -belastning Kontrollerar Linux -kommando

Det finns olika CPU -belastningskontroll Linux -kommandon är tillgängliga, till exempel top, iostat, sysstat och drifttid.

Varje kommando har specifika fördelaktiga funktioner när det gäller informationsmångfald och visning av datainenkel.

Översta kommandot är den mest informationsrika och mycket detaljerad data är tillgänglig för omedelbar igenkänning av systembelastning.

Men det fungerar som iterationsläge (visar data kontinuerligt på skärmen) och informationsformat är ganska komplext för att extrahera endast nödvändiga CPU -laddningsdata helt enkelt.

Kommandot iostat tillhandahåller fördjupad systembelastningsinformation genom att separera användar- och systemkörjobb som belastar CPU för närvarande.

Men det är också onödigt komplicerat att få aktuell CPU -belastning som ett snabbt och intuitivt sätt.

Vid drifttid finns mycket enkla systembelastningsdata tillgängliga med 1 minuts genomsnitt, 5 minuters genomsnitt och 15 minuters sammanfattat genomsnitt.

Som nämnts ovan är förenkling av pythonkod nödvändig eftersom den bör köras ganska ofta, till exempel varje 5 sekunder eller 10 sekunder.

När pythonkoden blir komplex kommer det att belasta CPU mycket.

Det är en slags paradox att du belastar RPI för att övervaka dess systembelastning.

Därför väljer jag drifttidskommando för att samla CPU -belastning och samverka med indikatorkretsen eftersom det är det enklaste.

Men eftersom drifttiden visar 1 minuts genomsnitt av systembelastningen, ska indikatorkretsen drivas inte lika strikt i realtid.

Ändå kan denna krets ge användbar visuell ledtråd som visar hur RPI gör nu.

Steg 2: Scheman

Scheman
Scheman

Denna krets kommer att ta emot 4 olika nivåer (t.ex. 00-> LÅG, 01-> LJUS, 10-> MEDIUM, 11-> HÖG) av aktuell CPU-belastning från RPI via två optokopplingsingångar.

74LS139 (2 till 4 avkodare och avmultiplexer) avkodar två bitars ingångar till en av enstaka utgångar bland fyra möjliga sätt som 00 (LOW)-> B0, 01 (LIGHT)-> B1, 10 (MEDIUM)-> B2, 11 (HÖG)-> B3.

Eftersom 74LS139 -utgången är omvänd nivå (00 -ingång -> B0 blir LÅG och andra 3 -utgångar HÖG), används 74HC04 -omformaren för att göra utgången omvänd en gång till.

När utmatningen på 74LS139 är normal HÖG, behövs inte 74HC04.

Men på något sätt är 74LS139 gjord så. (Kontrollera sanningstabellen för 74LS139)

När någon av 74LS139 -utgångarna väljs kommer den att aktivera en viss analog switch bland 4 switchar som ingår i CD4066 IC.

CD4066 kan stödja 4 analoga switchar och varje switch består av 1 kontrollingång och 2 analoga utgångar.

När kontrollingången blir HÖG blir två utgångar anslutning till låg impedans (motstånd blir 0) och andra blir HÖG impedans (motståndet mellan två utgångsbanor blir flera hundra mega ohm) nivå.

Kontrollera helt enkelt att 1 (stift 13) på CD4066 blir HÖG, vägen mellan utgång 1 (stift 1) och utgång 2 (stift 2) ansluten medan andra utgångar inte är anslutna (i högimpedansläge).

Likaså HÖG ingång på kontroll 2 (stift 5) gör utgång 1 (stift 4) och utgång 2 (stift 3) anslutna medan andra utgångar är frånkopplade.

Sedan blinkar LM555 två lysdioder i olika blinkningshastighet.

Som du kan se i schemat ovan fungerar NE555 med ett motståndsvärde bland 4 (12k, 24k, 51k, 100k) möjliga motståndsnivåer.

Steg 3: NE555 olika klockgenerering

NE555 Olika klockgenerering
NE555 Olika klockgenerering

Som visas i schemat, kommer NE555 att använda ett av möjliga motståndsvärden såsom 12k, 24l, 51k och 100k.

Faktiskt är NE555 -tidskretsdelen en viktig visuell indikation som stöder en del av kretsen.

Kretsdriftschemat är som följer.

- När det inte finns någon signifikant CPU -belastning skickar pythonprogram som är installerat i RPI 00 utgångar till indikatorkretsen. Sedan aktiveras två utgångar för CD4066 och NE555 arbetar med 12k motståndsvärde. Därför blinkar lysdioder 1,5 gånger per sekund (blinkar ganska snabbt)

- CPU: n laddas lätt (då blir kötidens längd 0,1 ~ 0,9), python skickar 01 till kretsen. Därefter aktiveras CD4066 med utgångar anslutna med 24k motstånd. Som ett resultat minskade LED -blinkningen 1,2 gånger per sekund (LED -blinkningen minskade något men fortfarande lite snabbt)

- När CPU-belastningen ökade avsevärt (då blir körtidens kötidslängd 1,0 ~ 1,9 nivå), kommer python att mata ut 10 till kretsen. Sedan öppnas 51k motståndsanslutningsväg och NE555 arbetar 0,8 gånger per sekund. Nu minskar blinkningshastigheten avsevärt.

- Tunga belastningar som belastar CPU: n och längden på körköerna blir längre (mer än 2 jobb väntar på att köras av CPU och drifttiden rapporterar mer än 2,0). När 100k motståndsanslutning har valts kommer NE555 att blinka LED 0,5 gånger per sekund (blinkhastigheten blir mycket långsam)

***

Tillsammans med ökade systembelastningar kommer LED -blinkningshastigheten att minska.

När lysdioden blinkar ganska långsamt, överbelastas säkert RPI betydligt.

Detta sätt är belastningsindikeringskretsrapporten om din aktuella belastningsnivå för RPI.

Steg 4: Delar

För att göra denna krets används olika IC -chips.

Även om jag nämner 74LSxx, CD40xx -typ av gamla IC -chips, kan du använda de senaste typerna av TTL- och CMOS -chips som 74HC4066 och 74ASxx när valt IC -chip är DIP -typ.

Ytmonterad typ av litet IC -paket kan också användas när du kan löda de små ordentligt på det universella kretskortet.

Andra är vanliga delar som du enkelt kan köpa från internetbutiker.

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

- 74HC04 (6 inverter) x 1

- CD4066 (4 analoga switchar IC) x 1

- NE555 Timer IC x 1

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

-PC817 optokopplare x 2 (Alla vanliga 4-stifts optokopplare kan användas)

- Motstånd: 220ohm x 4 (begränsning av LED-ström), 4,7K (gränssnitt för optokopplare) x 2, 12K,/24K/51K/100K (tidtagningskontroll) x 1

- LED x 2 (Alla olika färger som gul, grön eller röd, grön)

- Universalkort 30 (W) med 20 (H) hålstorlek (Du kan klippa valfri storlek på universalkortet för att passa denna krets)

- Tenntråd (För att göra ledningsmönster på det universella kretskortet)

- stifthuvud (3 stift) x 3

- IC -stifthuvud (4 stift) x 4

- kablar i röd/blå färg

***

Steg 5: Gör PCB -ritning

Gör PCB -ritning
Gör PCB -ritning

Även om jag visar PCB -ritning i varje projekt, är ledningsdesignen bara en referens som hjälper dig att korrekt löda varje del på universal PCB.

Men du behöver inte nödvändigtvis hålla fast vid detta kabelschema.

Som du kan se kopplingsschemat ovan är det ganska komplext och kräver betydligt stort kretskort.

Du kan använda vanlig kabel för att ansluta delar i stället för tenntråd för att minska storleken på lödning färdig PCB.

Använd endast kretskortet för att kontrollera och bekräfta korrekt lödning mellan delarna.

När antalet TTL- eller CMOS -IC: er ökar blir PCB -ritning vanligtvis ganska komplex utöver korrekt integration på ena sidan av PCB.

Därför används flerskiktigt kretskort vanligtvis för industriella digitala kretsar som innehåller mycket TTL, CMOS och mikroprocessor.

Steg 6: Lödning

Lödning
Lödning

Jag använder tenntråd och vanlig ledningskabel tillsammans för att minimera PCB -storleken så mycket som möjligt.

Vid jämförelse med PCB -ritning ändras platsen för varje del helt.

Men fortfarande används PCB -ritning för att verifiera korrekt anslutning mellan delar under lödning.

Du kan se 12k/24k/51k/100k motstånd införda på IC -stifthuvudet utan lödning.

Därför kan du byta ut motstånd till andra värden för att enkelt ändra kretsens driftschema senare.

Steg 7: Montering

Montering
Montering

Slutförd lastindikatorkrets (hädanefter INDIKATOR) installeras i musikspelarens RPI -box enligt bilden ovan.

Denna musikspelare är installerad med DAC och jag använder den här nyligen för att spela musikvideo.

Om denna RPI -låda kommer jag att förklara senare och nu ska vi fokusera på INDIKATOR eftersom kretsen är huvudämnet för detta projekt.

Jag köpte Raspberry Pi 4 Model B 2GB (nedan RPI 4B) nyligen för att stödja videouppspelning.

Eftersom RPI 4B har ökat prestandan för 4 kärnor CPU, förbättras systembelastningshanteringen avsevärt från RPI 3B+.

Därför bör utmatningskörlängdens utmatning behandlas annorlunda än RPI 3B+.

- För den mycket konventionella systembelastningen som att spela upp video, körkölängd vanligtvis mindre än 0,5 (Så LÅG systembelastning blir 0,0 ~ 0,5 nivå)

- När en liten extra systembelastning läggs till, till exempel uppspelning av video och kopiering av filer från och till lokala kataloger, leder det till en liten belastning på CPU: n. (Så LJUS lastnivån blir 0,5 ~ 1,0)

- När betydande belastningar appliceras, till exempel att spela upp video i webbläsaren på Youtube -webbplatsen och surfa på en annan webbläsare, blir RPI 4 -körhastigheten något trög (så MEDIUM -lastnivån ska vara 1,0 ~ 2,0)

- Slutligen blir RPI 4-systembelastningen HÖG när du kör flera webbläsare och kopierar stora volymer filer till en annan RPI-server via nätverket (Då blir körkölängden mer än 2,0)

***

Denna lastnivådata kommer att användas av ska utvecklas pythonkod i nästa steg.

Steg 8: Revidera originalkretsen

Reviderar originalkretsen
Reviderar originalkretsen

På grund av flera defekter i den ursprungliga kretsdesignen ändrar jag kretsen enligt bilden ovan.

Skälen för att ändra är följande.

- NE555 klockpuls består av HÖG och LÅG vågform. Men vanligtvis är HIGH och LOW signal varaktighet (t = 1/f) inte densamma (till exempel HIGH är 70% och LOW är 30% i original krets). Därför är blinkningshastigheten för två lysdioder (grön/gul lysdiod i originalutförande) inte densamma (en lysdiod tänds längre än den andra). Av denna anledning är visuell indikation med LED -blinkning inte mycket lätt igenkännlig. '

- Därför lägger jag till fler lysdioder och gör cirkulärt iterationsmönster med CD4017 för att säkerställa enkel igenkänning av driftstillstånd

- Ändrar även LED -blinkningsschemat omvänt, till exempel långsam blinkning vid LÅG belastning och snabbare blinkning med HÖG belastning. (Originalkretsen blinkar snabbare vid LÅG belastning och långsamt blinkar vid HÖG belastning). I situationen HÖG belastning blir alla RPI -åtgärder tröga. Och att visa långsam LED blinkar kommer inte att göra dig glad. (I den psykologiska aspekten väljer jag mer positivt visningsschema)

***

Även om LED -displaydelen är väsentligt modifierad, är den totala förändringsnivån med den ursprungliga kretsen inte mycket som du kan se i nästa steg.

Steg 9: Ursprunglig schematisk förändring

Ursprunglig schematisk förändring
Ursprunglig schematisk förändring

Tillägg av CD4017 och 8 lysdioder är en stor förändring.

För att ändra NE555 -klockfrekvens och omvänd LED -blinkningsschema ändras motståndsvärdena som visas i schemat ovan.

Eftersom den extra kretsdelen är en enkel CD4017 -baserad chaser -krets, hoppar jag över andra detaljerade förklaringar till den modifierade kretsen.

Alla ändrade kretsar kan göras som dotter -kretskort till vilket CD4017 och 8 lysdioder är lödda.

Dotterkortet kan fästas på huvudkortet (moderkortet) enligt bilden i steg 8.

Steg 10: Testning

Testvideo av alla driftsteg (LOW, LIGHT, MEDIUM och HIGH load state) visas av filen som lagras i google -enheten nedan.

***

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

***

Enligt den aktuella systembelastningen kommer blinkningshastigheten att ändras bland ett av fyra tillstånd som visas i videon.

Steg 11: Python -kod

Python -kod
Python -kod

Eftersom det mesta av styrlogik ingår i extern hårdvarukrets är driftslogiken för pythonkod relativt enkel inklusive följande steg.

- Få CPU -temperaturdata för att jämföra relativitet mellan systembelastning och temperaturhöjning

- Samlar 1 minuts genomsnittlig systembelastning från drifttid

-Gör tidsstämpel som yy-mm-dd hh: mm: ss-format

- Skrivningstemperatur, systembelastning tillsammans med tidsstämpel

- Enligt den aktuella systembelastningsdata (00, 01, 10, 11) till INDIKATOR -kretsen

- Sov 5 sekunder innan du startar stegen som nämns ovan

Eftersom pythonprogrammet behöver strikt inryckning i källkoden, vänligen ladda ner källfilen från Google Drive genom att följa länken nedan.

***

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

***

Eftersom jag inte använder RPI som stationär dator är det väldigt ovanligt att köra Libre -kontorsprogram eller webbläsare.

Vanligtvis spelar jag musikvideo, filkopiering/flyttning eller pythonprogrammering med nyinköpt RPI 4B 2GB.

Därför är genomsnittlig belastning vanligtvis mindre än 1,0 i mitt fall och därför ändrar jag LOW/LIGHT/MEDIUM/HIGH -nivåer i min kod. (Du kan ändra testvillkor annars)

Men när du vanligtvis tittar på Youtube -videor med RPI kommer mer än 2,0 systembelastningar att hända.

Steg 12: Relativitet mellan systembelastning och CPU -temperatur

Relativitet mellan systembelastning och CPU -temperatur
Relativitet mellan systembelastning och CPU -temperatur

Vanligtvis gissar jag och är säker på att ökad systembelastning kommer att höja CPU -temperaturen.

Men tills nu har jag ingen klar bild av det ömsesidiga samarbetet mellan dem.

Som du kan se i grafen ovan är de mycket starka ko-relation enligt följande.

- För enkel jämförelse multiplicerar jag 10 till genomsnittlig systembelastning. Annars är systemets belastning mycket liten (0,0 ~ 2,0), direkt jämförelse blir svår.

- Eftersom kylfläktskretsen är installerad på den musikspelande Pi -boxen överstiger CPU -temperaturen aldrig mer än 50C

- När systembelastningen ligger inom intervallet 0,0 ~ 1,0, temperatur inom intervallet 45 ~ 48C (CPU -metallkåpa värms upp något)

- Men tung belastning appliceras (vanligtvis webbläsare och spelar Youtube -videor), laddar skyhögt och så temperaturen

***

Eftersom RPI 4B är installerat med 4 -kärnig CPU, kommer teoretiskt sett inte prestandan att försämras mycket till belastningsnivå (drifttidskö) 4.

Men fortfarande mindre än genomsnittlig lastnivå 4, lämplig temperaturkontroll kommer att vara nödvändig.

Steg 13: Slutförande

Slutförande
Slutförande

Jag avslutar detta projekt genom att installera INDICATOR to Pi box som bilden ovan.

Under tillfällig användning av denna Pi -låda visar INDIKATOR sällan HÖG nivå och dynamisk LED blinkar.

Vanligtvis förblev den i långsamt blinkande lysdioder (så låg eller låg nivå).

Hur som helst läggs visuell indikator till lite roligt åtminstone visar det att RPI gör något just nu.

Tack för att du läste den här historien ….

Rekommenderad: