Raspberry Pi-temperatuurmonitor

Raspberry Pi Temperature Monitor



Raspberry Pi is een krachtige Single Board Computer (SBC). Het kan worden gebruikt om veel geavanceerde taken uit te voeren. Maar dit zal de temperatuur van de processor van Raspberry Pi-apparaten verhogen. Wat niet goed is. De prestaties van de Raspberry Pi SBC zullen te lijden hebben onder de temperatuur. Dit wordt ook wel thermal throttling genoemd.

Als de temperatuur van de processor van je Raspberry Pi hoger is dan 80 graden Celsius, zie je een thermometerpictogram in de rechterbovenhoek van het scherm. Officieel beveelt de Raspberry Pi Foundation aan dat de temperatuur van je Raspberry Pi-apparaat lager dan 85 graden Celsius moet zijn om goed te kunnen werken. Dat is de maximale limiet. Maar het zou gaan smoren bij 82 graden Celsius.







In dit artikel laat ik je zien hoe je de temperatuur van je Raspberry Pi in de gaten kunt houden. Ik zal het Raspbian-besturingssysteem gebruiken op mijn Raspberry Pi 3 Model B-apparaat. Maar het zou moeten werken op elke Raspberry Pi SBC waarop het Raspbian-besturingssysteem is geïnstalleerd.



Je kunt de kerntemperatuur van je Raspberry Pi-apparaat meten met het volgende commando:



$vcgencmd measure_temp

De huidige kerntemperatuur is 48,3 graden Celsius zoals je kunt zien in het gemarkeerde gedeelte van de onderstaande schermafbeelding.





Zoals je kunt zien, toont elke keer dat ik de opdracht uitvoer een andere temperatuurwaarde.



De temperatuurgegevens ontleden:

De temperatuurgegevens die we krijgen van de vcgencmd commando is een string. U kunt er geen berekening op uitvoeren. We kunnen eenvoudig reguliere expressie gebruiken om alleen de temperatuurgegevens te extraheren en er elk type berekening op uit te voeren.

Als u de temperatuurgegevens in een Bash-shellscript wilt gebruiken, kunt u de temperatuurgegevens extraheren met egrep commando als volgt:

$vcgencmd measure_temp| egrep -of '[0-9] * . [0-9] *'

Zoals u kunt zien, worden alleen de temperatuurgegevens afgedrukt. Er is niets ervoor of erna.

Je kunt het gebruiken in je shellscript (laten we zeggen print_temp.sh ) als volgt:

$nanoprint_temp.sh

Hier, op regel 3, stel ik de temp variabele naar de geparseerde temperatuurgegevens die ik krijg van de vcgencmd en greep opdracht.

Op regel 5 gebruikte ik gooide uit om de inhoud van de . af te drukken temp variabel op het scherm.

Regel 1 wordt gebruikt om Linux te vertellen dat het script moet worden uitgevoerd met /bin/bash standaard.

Maak het script nu uitvoerbaar met de volgende opdracht:

$chmod+ x print_temp.sh

Voer het script nu als volgt uit:

$./print_temp.sh

Zoals u kunt zien, wordt de gewenste uitvoer op het scherm afgedrukt.

Een Raspberry Pi-script voor temperatuurbewaking schrijven:

Nu we de temperatuurgegevens kunnen ontleden die we krijgen van de vcgencmd commando, kunnen we eenvoudig een temperatuurbewakingsscript voor Raspberry Pi schrijven. Het temperatuurbewakingsscript zal elke seconde de huidige tijdstempel en kerntemperatuur op een mooi opgemaakte manier op het scherm afdrukken.

Maak eerst een nieuw script tempmon.sh met het volgende commando:

$aanrakentempmon.sh

Bewerk nu de tempmon.sh script met het volgende commando:

$nanotempmon.sh

Typ nu de volgende regels codes in en sla het bestand op met + x en druk vervolgens op en gevolgd door .

Hier, op lijn 4, printf wordt gebruikt om de tekenreeksen TIMESTAMP en TEMP(degC) af te drukken als een kolom met vaste breedte.

Op regel 5 gebruikte ik printf nogmaals om een ​​stippellijn af te drukken om de uitvoer leesbaarder en aantrekkelijker te maken.

Op regel 7-13 liep ik een oneindige lus om de temperatuurgegevens elke seconde af te drukken.

Op regel 9 heb ik de geparseerde temperatuurgegevens opgeslagen op de temp variabel.

Op regel 10 heb ik de tijdstempelgegevens opgeslagen die ik kreeg van de datum commando op de tijdstempel variabel.

Op regel 11 heb ik de datum en tijd afgedrukt in tijdstempelformaat en de temperatuurgegevens in kolomformaat met vaste breedte.

Op regel 12 heb ik de opdracht sleep 1 gebruikt om de uitvoering van het script een seconde vast te houden. Daarna gaat de lus verder.

Maak nu het script tempmon.sh uitvoerbaar met het volgende commando:

$chmod+ x tempmon.sh

Voer ten slotte het script uit tempmon.sh met het volgende commando:

$./tempmon.sh

Zoals u kunt zien, werkt het script voor de temperatuurmonitor perfect. Het drukt elke seconde de temperatuurgegevens af.

Zoals je kunt zien, nam de temperatuur iets toe toen ik de systeembelasting verhoogde.

Als u het temperatuurbewakingsscript wilt stoppen, drukt u op + C . De temperatuurbewaking is niet meer actief zoals u kunt zien in de onderstaande schermafbeelding.

Nu het temperatuurbewakingsscript werkt, laten we het kopiëren naar /usr/bin map. Op die manier kun je het uitvoeren zoals elk ander Linux-commando.

Het script kopiëren: tempmon.sh naar de /usr/bin map, voer de volgende opdracht uit:

$sudo cptempmon.sh/usr/ben/tempmon

Zoals je kunt zien, kan ik het temperatuurbewakingsscript uitvoeren net zoals ik standaard Linux-commando's uitvoer.

Wijzigen tempmon voor het afdrukken van temperatuurgegevens in Fahrenheit:

U kunt de temperatuurgegevens eenvoudig omzetten van Celsius naar Fahrenheit.

De algemeen bekende formule voor het berekenen van temperaturen in Fahrenheit van Celsius is,

F =(9/5)*C +32
Of
F =1.8 *C +32

Maar het probleem is dat bash-shell geen noodzakelijke functies heeft om drijvende-kommaberekeningen uit te voeren. U moet dus vertrouwen op een aantal andere programma's, zoals: bc .

bc is standaard niet geïnstalleerd op Raspbian. Maar je kunt het eenvoudig installeren met het volgende commando:

$sudogeschiktinstalleren bc

bc moet worden geïnstalleerd.

Nu moet u het temperatuurbewakingsscript wijzigen en de nodige berekeningen maken om de temperatuur van Celsius naar Fahrenheit te converteren met bc .

Bewerk de tempmon.sh script met het volgende commando:

$nanotempmon.sh

Breng nu de wijzigingen aan zoals aangegeven in de onderstaande schermafbeelding.

Hier, op regel 4, heb ik afgedrukt TEMP (F) in plaats van TEMP (degC) .

Op regel 9 heb ik de variabele gewijzigd van temp tot tempC .

Op regel 10 heb ik het resultaat van de Celsius naar Fahrenheit-conversie toegevoegd aan een variabele tempF .

Ten slotte heb ik de waarde van afgedrukt tempF variabele in plaats van temp op lijn 12.

Voer het script nu als volgt uit:

$./tempmon

Zoals u kunt zien, wordt de temperatuur afgedrukt in Fahrenheit-eenheid.

Dus zo bewaak je de temperatuur in Raspberry Pi. Bedankt voor het lezen van dit artikel.