Himbeer-Pi

Überwachung der Temperatur in Raspberry Pi

Überwachung der Temperatur in Raspberry Pi


Die Überwachung der Temperaturen kann in vielen Ihrer Raspberry Pi-Projekte eine Anforderung sein. Es ist relativ einfach in Raspberry Pi zu tun und die für dieses Projekt benötigten Komponenten sind nicht zu teuer.Dieser Artikel zeigt Ihnen, wie Sie das digitale Thermometermodul DS18B20 verwenden, um die Temperatur mit Raspberry Pi . zu überwachen. Der Artikel zeigt auch, wie Sie eine Web-App erstellen, um die Temperatur anzuzeigen.

Dinge, die Sie brauchen:

Um die Beispiele in diesem Artikel auszuprobieren, benötigen Sie Folgendes:

  1. Ein Raspberry Pi Einplatinencomputer
  2. Ein Netzteil für das Raspberry Pi-Gerät
  3. Eine microSD-Karte mit installiertem Raspberry Pi OS
  4. Netzwerkkonnektivität auf dem Raspberry Pi-Gerät
  5. Ein Steckbrett
  6. 3 Stück Buchse-zu-Buchse-Verbindungsdrähte
  7. Einige Stecker-zu-Stecker-Verbindungsdrähte
  8. Ein 10k Widerstand
  9. Ein digitales Thermometermodul DS18B20

DS18B20 Digitalthermometer Pinbelegung

Wenn Sie das digitale Thermometer DS18B20 wie in der Abbildung unten gezeigt halten, wird der erste Pin geerdet (Masse), der zweite Pin wird sein DATEN, und der dritte Pin wird sein VCC.

Schaltplan

Das Schaltbild des Temperaturwächters ist im Bild unten dargestellt.

Hier die PIN2/5V des Raspberry Pi-Geräts sollte mit dem PIN3/VCC des digitalen Thermometermoduls.

Das PIN7/GPIO4 des Raspberry Pi-Geräts sollte mit dem PIN2/DATEN des digitalen Thermometermoduls.

Das PIN9/GND des Raspberry Pi-Geräts sollte mit dem PIN1/GND des digitalen Thermometermoduls.

EIN 10kΩ Widerstand sollte verbunden werden zwischen PIN2 und PIN3 des digitalen Thermometermoduls.

Sie sollten Ihren Raspberry Pi wie im Bild unten gezeigt halten hold. Dann ist der Pin oben links PIN1. Der Pin direkt daneben PIN1 wird sein PIN2. Wenn Sie dann eine Reihe vorwärts gehen, ist die linke PIN3 und der Richtige wird sein PIN4, und so weiter.

Nachdem Sie alle Komponenten an Ihr Raspberry Pi-Gerät angeschlossen haben, sollte es in etwa so aussehen:

Schauen Sie sich genauer an, wie ich die Komponenten auf dem Steckbrett platziert habe.

Nachdem Sie alle Komponenten an Ihr Raspberry Pi-Gerät angeschlossen haben, schalten Sie das Raspberry Pi-Gerät ein. Stellen Sie dann über VNC oder SSH eine Verbindung zu Ihrem Raspberry Pi-Gerät her.

Lesen von Temperaturdaten vom digitalen Thermometer DS18B20

Das Thermometermodul DS18B20 verwendet das 1-Wire-Kommunikationsprotokoll, um Daten an den Raspberry Pi zu senden. Standardmäßig ist die 1-Wire-Schnittstelle nicht aktiviert. Sie können die Schnittstelle einfach über das Raspberry Pi-Konfigurationstool aktivieren enable.

Um die 1-Wire-Schnittstelle zu aktivieren, führen Sie raspi-config mit folgendem Befehl:

$ sudo raspi-config

Wählen Schnittstellenoptionen und drücke .

Wählen 1-Draht und drücke .

Wählen und drücke .

Drücken Sie .

Um aus dem auszusteigen raspi-config Dienstprogramm, drücken Sie .

Damit die Änderungen wirksam werden, starten Sie Ihren Raspberry Pi wie folgt neu:

$ sudo Neustart

Um zu überprüfen, ob die w1_gpio und w1_therm Kernel-Module geladen sind, führen Sie den folgenden Befehl aus:

$ sudo lsmod | grep w1

Wenn aus irgendeinem Grund die w1_therm Modul nicht geladen ist, können Sie es mit dem folgenden Befehl manuell laden:

$ sudo modprobe w1_therm

Sobald Sie aktiviert haben 1-Draht-Kommunikation und geladen die w1_therm Modul, ein neues Gerät (28-00000ba693e9, in meinem Fall) sollte in der listed aufgeführt werden /sys/bus/w1/Geräte Verzeichnis, wie Sie im Screenshot unten sehen können.

$ ls /sys/bus/w1/devices/

Navigieren Sie wie folgt zum neuen Verzeichnis:

$ cd /sys/bus/w1/devices/28-00000ba693e9

Sie sollten eine finden Temperatur Datei im Verzeichnis, wie Sie im Screenshot unten sehen können.

$ ls -lh

Das Temperatur Datei ist eine reine Textdatei. Sie können die Temperaturdaten mit der Katze Befehl wie folgt:

$ Katzentemperatur

Wie Sie sehen, werden die Temperaturdaten auf der Konsole gedruckt. Hier, 30375 meint 30.375°C.

Sie können eine Programmiersprache wie Python oder Node verwenden.js, um diese Temperaturdaten zu analysieren und in Ihrer App zu verwenden. Wie das geht, zeige ich dir im nächsten Abschnitt dieses Artikels.

Um die Temperaturdaten mit einer Programmiersprache zu parsen, benötigen Sie den absoluten Pfad zum Temperatur Datei. Sie finden dies über die Link lesen Befehl wie folgt:

$ readlink -f Temperatur

Erstellen Sie eine Web-App zum Anzeigen von Temperaturdaten:

In diesem Abschnitt erfahren Sie, wie Sie die Temperaturdaten des Thermometermoduls DS18B20 analysieren und in einer Web-App anzeigen.

In diesem Beispiel erstelle ich eine API, die die Temperaturdaten des Thermometermoduls DS18B20 analysiert, auf das über die API zugegriffen werden kann. Ich werde auch eine Web-App erstellen, die die Temperaturdaten von der API abruft und schön anzeigt. Ich werde den Knoten verwenden.js-Programmiersprache dazu. Die Codes werden in mein GitHub-Repository shovon8/ds18b20-raspberrypi-api . hochgeladen. Sie können es sich ansehen, wenn Sie Schwierigkeiten beim Kopieren und Einfügen von Codes aus diesem Artikel haben.

Knoten.js ist nicht standardmäßig auf Raspberry Pi OS installiert. Es ist jedoch im offiziellen Paket-Repository von Raspberry Pi OS verfügbar. Sie können Node . ganz einfach installieren.js aus dem Raspberry Pi OS-Paket-Repository.

Aktualisieren Sie zunächst den Cache des APT-Paket-Repositorys mit dem folgenden Befehl:

$ sudo apt-Update

Als nächstes installieren Sie Node.js und NPM mit dem folgenden Befehl:

$ sudo apt install nodejs npm

Um die Installation zu bestätigen, drücken Sie Ja und drücke dann .

Der APT-Paketmanager lädt alle erforderlichen Pakete herunter und installiert sie. Es kann eine Weile dauern, bis es abgeschlossen ist.

An diesem Punkt, Knoten.js und NPM sollten installiert sein.

Einmal-Knoten.js und NPM installiert sind, überprüfen Sie, ob die Knoten und npm Befehle sind wie folgt verfügbar:

$ Knoten --version
$ npm --version

Aktualisieren Sie NPM mit dem folgenden Befehl:

$ sudo npm install --global npm

NPM sollte aktualisiert werden.

Wie Sie sehen, wurde NPM von Version 5 aktualisiert.8.0 bis Version 6.14.8.

$ Knoten --version $ npm --version

Jetzt, da Node.js und NPM installiert sind, erstellen Sie das neue Projektverzeichnis ~/ds18b20, wie folgt:

$ mkdir -v ~/ds18b20

Navigieren Sie zum ~/ds18b20 Verzeichnis wie folgt:

$ cd ~/ds18b20

Erstellen Sie das Leere Paket.json Datei mit folgendem Befehl:

$ npm init --y

Installiere das ausdrücken.js Bibliothek für das Projekt mit folgendem Befehl:

$ npm install --save express

Der Express.js-Bibliothek sollte jetzt installiert sein.

Erstellen Sie die neue Datei Server.js im Projektverzeichnis wie folgt:

$ Nano-Server.js

Geben Sie die folgenden Codezeilen in das Server.js Datei.

ausdrücken lassen = erfordern('ausdrücken');
let fs = erfordern('fs');
let server = express();
const PORT = 8080;
const WEBROOT = './Öffentlichkeit';
Server.get('/', ausdrücken.statisch (WEBROOT));
Server.get('/temperatur', (req, res) =>
let tempDataPath = '/sys/bus/w1/devices/28-00000ba693e9/temperature';
lass temperatur = fs.readFileSync(tempDataPath, Kodierung: 'utf8', Flag: 'r') / 1000;
res.json(temperatur, rangeStart: -55, rangeEnd: 125);
);
Server.hören(PORT, () =>
Konsole.log('Server läuft auf Port $PORT');
);

Wenn Sie fertig sind, drücken Sie + X gefolgt von Ja und um den Server zu retten.js-Datei.

Hier importiert Zeile 1 ausdrücken, und Zeile 2 importiert die fs Modul.

Zeile 4 initialisiert Express.

Zeile 6 und 7 definieren die HAFEN und WEBWURZEL konstante Variablen bzw. Die API und der Webserver laufen auf HAFEN (welches ist 8080, in diesem Artikel) und der Webserver liefert statische Inhalte aus dem WEBWURZEL (was ist das? Öffentlichkeit/ Verzeichnis innerhalb des Projektverzeichnisses in diesem Artikel).

Zeile 9 wird verwendet, um Express so zu konfigurieren, dass statische Inhalte aus dem WEBWURZEL.

Zeilen 11-15 definieren den API-Endpunkt /Temperatur, die verwendet wird, um die Temperaturdaten in das JSON-Format zu übertragen.

In Zeile 12, die tempDataPath Variable enthält den absoluten Pfad zum Temperatur Datei des digitalen Thermometermoduls DS18B20, das in einem früheren Abschnitt dieses Artikels gezeigt wurde.

In Zeile 13 werden die Temperaturdaten aus dem gelesen Temperatur Datei mit dem Knoten.js fs-Modul, und die Temperaturdaten werden im Temperatur Variable.

In Zeile 14 werden die Temperaturdaten im JSON-Format gedruckt. Das digitale Thermometermodul DS18B20 kann zwischen den Temperaturen -55°C bis 125°C messen. Ich habe das in der JSON-Ausgabe mit dem . hinzugefügt ReichweiteStart und BereichEnde Eigenschaften.

Schließlich führt Zeile 17-19 die API und den Webserver aus HAFEN (welches ist 8080, In diesem Artikel).

Ein ... kreieren Öffentlichkeit/ Verzeichnis im Projektverzeichnis wie folgt:

$ mkdir -v öffentlich

Führen Sie die Server.js Programm mit folgendem Befehl:

$ Knotenserver.js

Der Server sollte auf Port laufen 8080.

Auf die Temperaturdaten des Thermometermoduls DS18B20 können Sie über die /Temperatur Endpunkt der API.

Um zu testen, ob Sie die Temperaturdaten von der API abrufen können, führen Sie . aus Locken, wie folgt:

$ curl -s http://localhost:8080/temperature | json_pp

Wie Sie sehen, werden die Temperaturdaten auf der Konsole im JSON-Format gedruckt. Die API funktioniert also.

Drücken Sie + C um den Server zu stoppen.

Jetzt werde ich eine Webseite erstellen, die den API-Server nach den Temperaturdaten anfordert und diese schön auf der Seite anzeigt. Die Temperaturdaten werden alle 5 Sekunden aktualisiert.

Erstelle eine neue Index.html Datei in der Öffentlichkeit/ Verzeichnis des Projekts wie folgt:

$ nano public/index.html

Geben Sie die folgenden Codezeilen in die Index.html Datei.




Temperaturmonitor







00.00°C


Temperaturaktualisierungen alle 5 Sekunden



Wenn Sie fertig sind, drücken Sie + X gefolgt von Ja und um die zu retten Index.html Datei.

Die HTML-Datei Index.html ist leicht zu verstehen. In diesem Format werden die Temperaturdaten in der Web-App angezeigt.

Hier dienen die Zeilen 53-55 zur Anzeige eines Fortschrittsbalkens und die Zeilen 57-60 zur Anzeige der Temperatur.

Die Zeilen 5-49 werden verwendet, um die Web-App mit CSS (Cascading Style Sheet) schön zu dekorieren.

Die Zeilen 62-109 werden verwendet, um die Web-App funktionsfähig zu machen. Die JavaScript-Codes werden verwendet, um den Fortschrittsbalken zu animieren, die Temperaturdaten von der API abzurufen und die Informationen anzuzeigen.

Linie 63 fährt die Main Funktion, sobald die Web-App im Browser geladen ist.

Das Main Funktion ist sehr lang. Es erstreckt sich von Linie 65 bis Linie 108. Innerhalb der Hauptfunktion haben wir einige andere Funktionen, wie z getTemperature, updateTemperatur, Aktualisierungsfortschritt, App, und Start.

Das Aktualisierungsfortschritt Funktion, in den Zeilen 83-86, nimmt den Prozentsatz des Fortschritts als Eingabe und aktualisiert den Fortschrittsbalken.

Das updateTemperatur Funktion in den Zeilen 77-81 nimmt die Temperaturdaten als Eingabe und aktualisiert die Web-App mit den Temperaturdaten.

Das getTemperature Funktion in den Zeilen 66-75 stellt eine Anfrage an die /Temperatur Endpunkt der API und ruft die Temperaturdaten ab. Sobald die Daten empfangen wurden, ruft es die updateTemperatur Funktion mit den Daten. Das updateTemperatur Funktion aktualisiert dann die Web-App mit den neuen Temperaturdaten.

Das App Funktion in den Zeilen 88-99 animiert den Fortschrittsbalken und fordert alle 5 Sekunden die Temperaturdaten von der API an.

Das Start Funktion, in den Zeilen 101-104, startet die Web-App.

Öffne das Paket.json Datei mit dem Nano-Texteditor wie folgt:

$ Nano-Paket.json

Veränderung Main zu Server.js und füge das neue Skript hinzu Dienen in dem Skripte Abschnitt, wie im Screenshot unten markiert.

Wenn Sie fertig sind, drücken Sie + X gefolgt von Ja und um die zu retten Paket.json Datei.

Nachdem alles bereit ist, führen Sie die Web-App und die API mit dem folgenden Befehl aus:

$ npm Laufaufschlag

Der Server sollte auf Port 8080 laufen.

Öffnen Sie nun einen Webbrowser auf Ihrem Raspberry Pi-Gerät und besuchen Sie http://localhost:8080. Die Temperaturdaten des digitalen Thermometermoduls DS18B20 sollten in Ihrem Webbrowser angezeigt werden, wie Sie im Screenshot unten sehen können.

Die Temperaturdaten sollten alle 5 Sekunden aktualisiert werden.

Wie Sie sehen, ändert sich die Temperatur alle 5 Sekunden.

Wenn Sie von einem anderen Computer in Ihrem Netzwerk auf die Web-App zugreifen möchten, müssen Sie die IP-Adresse Ihres Raspberry Pi-Geräts kennen.

Die IP-Adresse Ihres Raspberry Pi Geräts finden Sie mit folgendem Befehl:

$ Hostname -I

Wie Sie sehen können, ist die IP-Adresse meines Raspberry Pi-Geräts 192.168.0.107. Das wird bei dir anders. Stellen Sie also sicher, dass Sie von nun an die IP-Adresse ersetzen.

Sobald Sie die IP-Adresse Ihres Raspberry Pi-Geräts kennen, sollten Sie von jedem Computer in Ihrem Netzwerk mit einem Webbrowser auf die Web-App zugreifen können. Besuchen Sie einfach http://192.168.0.107:8080, und die Web-App sollte die Temperaturdaten des digitalen Thermometermoduls DS18B20 anzeigen.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie das digitale Thermometermodul DS18B20 im Raspberry Pi verwenden, um die Temperatur zu messen. Sie haben auch gelernt, wie Sie einen Knoten erstellen.js-API zum Anzeigen der Temperaturdaten in einer Web-App, die auf die Temperaturdaten aus der API zugreift und diese anzeigt. Dieser Artikel soll Ihnen den Einstieg in die Raspberry Pi-Temperaturüberwachung mit dem digitalen Thermometermodul DS18B20 und IoT mit Raspberry Pi erleichtern.

Top 5 ergonomische Computermaus-Produkte für Linux
Verursacht längere Computernutzung Schmerzen im Handgelenk oder in den Fingern?? Leiden Sie unter steifen Gelenken und müssen ständig die Hände schütt...
So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...