Inhaltsverzeichnis:

Raspberry Pi CPU-Temperaturanzeige - Gunook
Raspberry Pi CPU-Temperaturanzeige - Gunook

Video: Raspberry Pi CPU-Temperaturanzeige - Gunook

Video: Raspberry Pi CPU-Temperaturanzeige - Gunook
Video: Thingworx View: Raspberry Pi Datenerfassung und Darstellung 2024, Juli
Anonim
Raspberry Pi CPU-Temperaturanzeige
Raspberry Pi CPU-Temperaturanzeige

Zuvor hatte ich eine einfache Himbeer-Pi (im Folgenden als RPI) Betriebsstatusanzeigeschaltung eingeführt.

Dieses Mal werde ich eine weitere nützliche Anzeigeschaltung für RPI erklären, die als Headless (ohne Monitor) ausgeführt wird.

Die obige Schaltung zeigt die CPU-Temperatur in 4 verschiedenen Stufen an, wie zum Beispiel:

- Grüne LED leuchtet, wenn die CPU-Temperatur innerhalb von 30 bis 39 Grad liegt

- Gelbe LED zeigt an, dass die Temperatur im Bereich von 40 bis 45 Grad. erhöht wird

- 3. rote LED zeigt an, dass die CPU etwas heiß wird, wenn sie 46 ~ 49 Grad erreicht

- Eine weitere rote LED blinkt, wenn die Temperatur mehr als 50 Grad beträgt

Die oben genannten CPU-Temperaturbereiche sind mein persönliches Designkonzept (andere Temperaturbereiche können durch Ändern der Testbedingungen des Python-Programms konfiguriert werden, das diese Schaltung steuert).

Wenn Sie diese Schaltung verwenden, führen Sie den Befehl „vcgencmd measure_temp“nicht unbedingt häufig auf dem Konsolenterminal aus.

Diese Schaltung informiert kontinuierlich und bequem über die aktuelle CPU-Temperatur.

Schritt 1: Vorbereiten von Schaltplänen

Vorbereiten von Schaltplänen
Vorbereiten von Schaltplänen

Obwohl Sie 4 LEDs direkt steuern können, indem Sie nur Python-Codes verwenden, lädt die Steuerlogik des Programms RPI und als Ergebnis wird die CPU-Temperatur mehr erhöht, da Sie kontinuierlich einen etwas komplexen Python-Code ausführen sollten.

Daher minimiere ich die Komplexität des Python-Codes so einfach wie möglich und entlaste die LED-Steuerungslogik auf eine externe Hardwareschaltung.

Der Schaltkreis der CPU-Temperaturanzeige (im Folgenden INICATOR) besteht aus den folgenden Hauptteilen.

- Zwei Optokoppler sind an RPI GPIO-Pins angeschlossen, um Temperaturdaten wie 00->LOW, 01->Medium, 10->High, 11->Need Cooling zu erhalten.

- 74LS139 (oder 74HC139, 2-zu-4-Decoder und Demultiplexer) steuern Ausgänge (Y0, Y1, Y2, Y3) entsprechend den Eingängen (A, B)

- Wenn die Temperatur zwischen 30 und 39 Grad liegt, gibt der Python-Code 00 an die GPIO-Pins aus. Daher erhält 74LS139 Eingangsdaten 00 (A->0, B->0)

- Wenn 00 eingegeben wird, wird der Y0-Ausgang LOW. (Bitte beachten Sie die Wahrheitstabelle von 74LS139)

- Wenn der Y0-Ausgang LOW wird, aktiviert er den 2N3906 PNP-Transistor und als Ergebnis wird die grüne LED eingeschaltet

- Ebenso soll Y1 (01 -> CPU-Temperaturmedium) die gelbe LED einschalten und so weiter

- Wenn Y3 LOW wird, aktiviert DB140 den NE555-LED-Blinkschaltkreis (dies ist ein üblicher 555-IC-basierter LED-Blinker), der die Last des BD140-PNP-Transistors ist

Die wichtigste Komponente dieser Schaltung ist 74LS139, die 2 Eingabeziffern in 4 verschiedene Einzelausgaben dekodiert, wie in der folgenden Wahrheitstabelle gezeigt.

Eingabe | Ausgabe

G (Aktivieren) | B | A | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

Da der Ausgang des 74LS139 LOW wird, kann der PNP-Transistor die Gesamtschaltung vereinfachen, da der PNP-Transistor eingeschaltet wird, wenn der Basisanschluss LOW wird. (Ich zeige die NPN-Version am Ende dieser Geschichte)

Da das 100K-Potentiometer im NE555-LED-Blinkerschaltkreis enthalten ist, kann die Ein- / Ausschaltzeit der roten LED frei nach Bedarf eingestellt werden.

Schritt 2: PCB-Zeichnung erstellen

Erstellen von PCB-Zeichnungen
Erstellen von PCB-Zeichnungen

Nachdem das Funktionsschema des INDICATOR erklärt wurde, beginnen wir mit der Schaltung.

Bevor Sie etwas auf der Universalplatine löten, ist es hilfreich, die oben gezeigte PCB-Zeichnung vorzubereiten, um Fehler zu minimieren.

Die Zeichnung wird erstellt, indem ein Stromanschluss verwendet wird, um jedes Teil auf der Universalplatine zu lokalisieren und Verdrahtungsmuster zwischen den Teilen mit Drähten zu erstellen.

Da IC- und Transistor-Pin-Out-Bilder zusammen mit dem PCB-Verdrahtungsmuster angeordnet sind, kann das Löten unter Verwendung dieser Zeichnung durchgeführt werden.

Schritt 3: Löten

Löten
Löten

Obwohl die ursprüngliche PCB-Zeichnung nicht mit einzelnen Drähten erstellt wird, um Komponenten auf der PCB zu verbinden, löte ich etwas anders.

Durch die Verwendung eines einzelnen Leiters von Drähten (kein Zinndraht) versuche ich, die universelle Leiterplattengröße zu reduzieren, die den INDIKATOR-Schaltkreis enthält.

Aber wie Sie auf der Lötseite der Leiterplatte sehen können, verwende ich Zinndraht auch nach den in der Leiterplattenzeichnung abgebildeten Mustern.

Wenn jede Komponente gemäß dem ursprünglichen Design der PCB-Zeichnung angeschlossen ist, funktioniert das Löten der fertigen PCB-Platine einschließlich der INDIKATOR-Schaltung ordnungsgemäß.

Schritt 4: Testvorbereitung

Prüfungsvorbereitung
Prüfungsvorbereitung

Vor der RPI-Verbindung muss die fertige Schaltung getestet werden.

Da Lötfehler auftreten können, wird ein Gleichstromversorgungsgerät verwendet, um Schäden bei Kurzschlüssen oder falscher Verdrahtung zu vermeiden.

Zum Testen von INDICATOR werden zwei zusätzliche Stromversorgungskabel an den 5V-Stromversorgungsanschluss des Schaltkreises angeschlossen.

Schritt 5: Testen (CPU-Temperatur ist mittel)

Testen (CPU-Temperatur auf mittlerem Niveau)
Testen (CPU-Temperatur auf mittlerem Niveau)

Wenn kein 5-V-Eingang anliegt, dekodiert 74LS139 den Eingang und aktiviert den Ausgang Y0 als LOW (grüne LED leuchtet).

Aber 5V an Eingang A angelegt, Ausgang Y1 von 74LS139 aktiviert (LOW).

Daher leuchtet die gelbe LED wie im Bild oben gezeigt.

Schritt 6: Testen (CPU benötigt Kühlstufe)

Testen (CPU benötigt Kühlniveau)
Testen (CPU benötigt Kühlniveau)

Wenn 5V an beiden Eingängen (A und B) des 74LS139 anliegen, blinkt die 4. rote LED.

Die Blinkrate kann durch Einstellen von 100K VR geändert werden, wie in der Abbildung oben gezeigt.

Wenn der Test abgeschlossen ist, können zwei Molex-3-Pin-Buchsenkabel entfernt werden.

Schritt 7: Stromversorgung zum INDIKATOR-Schaltkreis

Stromversorgung zum INDIKATOR-Schaltkreis
Stromversorgung zum INDIKATOR-Schaltkreis

Für die Stromversorgung des INDICATOR-Schaltkreises verwende ich ein übliches Handtelefon-Ladegerät, das 5 V und einen USB-Typ-B-Adapter ausgibt, wie im Bild oben gezeigt.

Um Probleme mit RPI zu vermeiden, indem 3,3 V GPIO und 5 V gespeiste INDIKATOR-Schaltung angeschlossen werden, sind Signalschnittstelle und Stromversorgung vollständig voneinander isoliert.

Schritt 8: RPI-Verkabelung

RPI-Verkabelung
RPI-Verkabelung

Um die INDICATOR-Schaltung mit RPI zu verbinden, sollten zwei GPIO-Pins zusammen mit zwei Massepins dediziert werden.

Es gibt keine spezifischen Anforderungen für die Auswahl von GPIO-Pins.

Sie können beliebige GPIO-Pins zum Anschluss von INDICATOR verwenden.

Aber verdrahtete Pins sollten im Python-Programm als Eingänge für 74LS139 (z. B. A, B) bezeichnet werden.

Schritt 9: Python-Programm

Python-Programm
Python-Programm

Wenn die Schaltung abgeschlossen ist, ist die Erstellung eines Python-Programms erforderlich, um die INDICATOR-Funktion zu verwenden.

Weitere Informationen zur Programmlogik finden Sie im obigen Flussdiagramm.

#-*- Kodierung:utf-8 -*-

import subprocess, signal, sys

Importzeit, re

importiere RPi. GPIO als g

A = 12

B = 16

g.setmode (g. BCM)

g.setup(A, g. OUT)

g.setup(B, g. OUT)

##

def signal_handler(sig, frame):

print('Du hast Strg+C gedrückt!')

g. Ausgabe (A, Falsch)

g. Ausgabe (B, Falsch)

f.schließen()

sys.exit(0)

signal.signal(signal. SIGINT, signal_handler)

##

während Wahr:

f = open('/home/pi/My_project/CPU_temperature_log.txt', 'a+')

temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd measure_temp', shell=True)

temp_str = temp_str.decode(encoding = 'UTF-8', error = 'strict')

CPU_temp = re.findall("\d+\.\d+", temp_str)

# Extrahieren der aktuellen CPU-Temperatur

current_temp = float(CPU_temp[0])

wenn aktuelle_temp > 30 und aktuelle_temp < 40:

# Temperatur niedrig A=0, B=0

g. Ausgabe (A, Falsch)

g. Ausgabe (B, Falsch)

Zeit. Schlaf(5)

elif current_temp >= 40 und current_temp < 45:

# Temperatur Medium A=0, B=1

g. Ausgabe (A, Falsch)

g. Ausgabe (B, Wahr)

Zeit. Schlaf(5)

elif current_temp >= 45 und current_temp < 50:

# Temperatur hoch A=1, B=0

g. Ausgabe (A, Wahr)

g. Ausgabe (B, Falsch)

Zeit. Schlaf(5)

elif aktuelle_temp >= 50:

# CPU-Kühlung ist erforderlich hoch A=1, B=1

g. Ausgabe (A, Wahr)

g. Ausgabe (B, Wahr)

Zeit. Schlaf(5)

aktuelle_Zeit = Zeit. Zeit()

formated_time = time.strftime("%H:%M:%S", time.gmtime(current_time))

f.write(str(formated_time)+'\t'+str(current_temp)+'\n')

f.schließen()

Die Hauptfunktion des Python-Programms ist wie folgt.

- Zuerst GPIO 12, 16 als Ausgangsport einstellen

- Definieren von Strg+C-Interrupt-Handler zum Schließen der Protokolldatei und zum Ausschalten von GPIO 12, 16

- Wenn Sie in die Endlosschleife gelangen, öffnen Sie die Protokolldatei als Anhängemodus

- Lesen Sie die CPU-Temperatur, indem Sie den Befehl „/opt/vc/bin/vcgencmd measure_temp“ausführen

- Wenn die Temperatur im Bereich von 30 ~ 39 liegt, geben Sie 00 aus, um die grüne LED einzuschalten

- Wenn die Temperatur im Bereich von 40 bis 44 liegt, geben Sie 01 aus, um die gelbe LED einzuschalten

- Wenn die Temperatur im Bereich von 45 bis 49 liegt, geben Sie 10 aus, um die rote LED einzuschalten

- Wenn die Temperatur mehr als 50 beträgt, geben Sie 11 aus, damit die rote LED blinkt

- Schreiben Sie Zeitstempel und Temperaturdaten in die Protokolldatei

Schritt 10: INDIKATOR-Betrieb

ANZEIGE Betrieb
ANZEIGE Betrieb

Wenn alles in Ordnung ist, können Sie sehen, dass jede LED entsprechend der CPU-Temperatur eingeschaltet ist oder blinkt.

Sie müssen keinen Shell-Befehl eingeben, um die aktuelle Temperatur zu überprüfen.

Nach dem Sammeln von Daten in der Protokolldatei und dem Rendern von Textdaten in ein Diagramm mithilfe von Excel, wird das Ergebnis im obigen Bild angezeigt.

Bei hoher Last (Betreiben von zwei Midori-Browsern und Abspielen von Youtube-Videos) steigt die CPU-Temperatur auf bis zu 57,9 ° C.

Schritt 11: Alternative Herstellung (mit NPN-Transistor) und Weiterentwicklung

Alternative Herstellung (mit NPN-Transistor) und Weiterentwicklung
Alternative Herstellung (mit NPN-Transistor) und Weiterentwicklung

Dies ist ein früheres INDICATOR-Projektbeispiel mit NPN-Transistoren (2N3904 und BD139).

Wie Sie sehen, ist ein weiterer IC (74HC04, Quad-Inverter) erforderlich, um den NPN-Transistor anzusteuern, da eine HIGH-Pegel-Spannung an die Basis des NPN angelegt werden sollte, um den Transistor einzuschalten.

Zusammenfassend lässt sich sagen, dass die Verwendung eines NPN-Transistors die Herstellung einer INDIKATOR-Schaltung unnötig kompliziert macht.

Für die Weiterentwicklung dieses Projekts füge ich einen Lüfter wie im Bild oben gezeigt hinzu, um die INDICATOR-Schaltung nützlicher zu machen.

Empfohlen: