Raspberry Pi

Övervakningstemperatur i Raspberry Pi

Övervakningstemperatur i Raspberry Pi


Övervakning av temperaturer kan vara ett krav i många av dina Raspberry Pi-projekt. Det är relativt enkelt att göra i Raspberry Pi och de komponenter som krävs för detta projekt är inte för dyra.Den här artikeln visar hur du använder den digitala termometermodulen DS18B20 för att övervaka temperaturen med hjälp av Raspberry Pi. Artikeln visar också hur man skapar en webbapp för att visa temperaturen.

Saker du behöver:

För att testa exemplen i den här artikeln behöver du följande:

  1. En Raspberry Pi-dator ombord
  2. En strömadapter för Raspberry Pi-enheten
  3. Ett microSD-kort med Raspberry Pi OS installerat
  4. Nätverksanslutning på Raspberry Pi-enheten
  5. En brödbräda
  6. 3 st kvinnliga till kvinnliga anslutningsledningar
  7. Några man-till-man-anslutningskablar
  8. Ett 10k motstånd
  9. En DS18B20 digital termometermodul

DS18B20 Digital termometerutgångar

Om du håller den digitala termometern DS18B20 enligt bilden nedan kommer den första stiftet att slipas (GND), den andra stiftet kommer att vara DATA, och den tredje stiftet kommer att vara VCC.

Kretsschema

Kretsschemat för temperaturmonitorn visas i bilden nedan.

Här, den PIN2 / 5V på Raspberry Pi-enheten ska anslutas till PIN3 / VCC av den digitala termometermodulen.

De PIN7 / GPIO4 på Raspberry Pi-enheten ska anslutas till PIN2 / DATA av den digitala termometermodulen.

De PIN9 / GND på Raspberry Pi-enheten ska anslutas till PIN1 / GND av den digitala termometermodulen.

A 10kΩ motstånd bör anslutas mellan PIN2 och PIN3 av den digitala termometermodulen.

Du bör hålla din Raspberry Pi som visas i bilden nedan. Då kommer den övre vänstra stiftet att vara PIN1. Stiftet bredvid PIN1 kommer vara PIN2. Om du sedan går framåt en rad kommer den vänstra att vara PIN3 och den rätta kommer att vara PIN4, och så vidare.

När du väl har anslutit alla komponenter till din Raspberry Pi-enhet ska det se ut så här:

Ta en närmare titt på hur jag placerade komponenterna på panelen.

När du har anslutit alla komponenter till din Raspberry Pi-enhet, slå på Raspberry Pi-enheten. Anslut sedan till din Raspberry Pi-enhet via VNC eller SSH.

Läser temperaturdata från DS18B20 digital termometer

DS18B20-termometermodulen använder 1-tråds kommunikationsprotokoll för att skicka data till Raspberry Pi. Som standard är 1-trådsgränssnittet inte aktiverat. Du kan enkelt aktivera gränssnittet från Raspberry Pi-konfigurationsverktyget.

För att aktivera 1-trådsgränssnittet, kör raspi-config med följande kommando:

$ sudo raspi-config

Välj Gränssnittsalternativ och tryck .

Välj 1-tråd och tryck .

Välj och tryck .

Tryck .

Att gå ut ur raspi-config verktyg, tryck på .

För att ändringarna ska träda i kraft startar du om din Raspberry Pi enligt följande:

$ sudo omstart

För att kontrollera om w1_gpio och w1_therm kärnmoduler är laddade, kör följande kommando:

$ sudo lsmod | grep w1

Om det av någon anledning w1_therm modulen är inte laddad, då kan du ladda den manuellt med följande kommando:

$ sudo modprobe w1_therm

När du har aktiverat 1-trådskommunikation och laddade w1_therm modul, en ny enhet (28-00000ba693e9, i mitt fall) bör listas i / sys / bus / w1 / enheter katalog, som du kan se på skärmdumpen nedan.

$ ls / sys / bus / w1 / enheter /

Navigera till den nya katalogen enligt följande:

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

Du borde hitta en temperatur fil i katalogen, som du kan se på skärmdumpen nedan.

$ ls -lh

De temperatur filen är en vanlig textfil. Du kan läsa temperaturdata med hjälp av katt kommandot enligt följande:

$ katt temperatur

Som du kan se skrivs temperaturdata ut på konsolen. Här, 30375 innebär att 30.375 ° C.

Du kan använda ett programmeringsspråk, till exempel Python eller Node.js, för att analysera denna temperaturinformation och använda den i din app. Jag kommer att visa dig hur du gör det i nästa avsnitt av den här artikeln.

För att analysera temperaturdata med ett programmeringsspråk behöver du den absoluta sökvägen till temperatur fil. Du hittar detta med hjälp av läslänk kommandot enligt följande:

$ readlink -f temperatur

Skapa en webbapp för att visa temperaturdata:

I det här avsnittet lär du dig att analysera temperaturdata från termometermodulen DS18B20 och visa den i en webbapp.

I det här exemplet skapar jag ett API som analyserar temperaturdata från termometermodulen DS18B20 som kan nås från API: t. Jag kommer också att skapa en webbapp som hämtar temperaturdata från API och visar den snyggt. Jag kommer att använda noden.js programmeringsspråk för att göra det. Koderna laddas upp i mitt GitHub-arkiv shovon8 / ds18b20-raspberrypi-api. Du kanske vill kolla in det om du har problem med att kopiera och klistra in koder från den här artikeln.

Nod.js är inte installerat på Raspberry Pi OS som standard. Men det är tillgängligt i det officiella paketförvaret för Raspberry Pi OS. Du kan enkelt installera Node.js från Raspberry Pi OS-paketförvaret.

Uppdatera först APT-paketets förvarscache med följande kommando:

$ sudo apt uppdatering

Installera sedan Node.js och NPM med följande kommando:

$ sudo apt installera nodejs npm

För att bekräfta installationen, tryck på Y och tryck sedan på .

APT-pakethanteraren laddar ner och installerar alla nödvändiga paket. Det kan ta ett tag att slutföra.

Vid denna punkt, Node.js och NPM bör installeras.

Once Node.js och NPM är installerade, kontrollera om nod och npm kommandon är tillgängliga, enligt följande:

$ node --version
$ npm --version

Uppgradera NPM med följande kommando:

$ sudo npm install - global npm

NPM bör uppgraderas.

Som du kan se har NPM uppdaterats från version 5.8.0 till version 6.14.8.

$ node --version $ npm --version

Nu den noden.js och NPM är installerade, skapa den nya projektkatalogen ~ / ds18b20, som följer:

$ mkdir -v ~ / ds18b20

Navigera till ~ / ds18b20 katalog, enligt följande:

$ cd ~ / ds18b20

Skapa det tomma paket.json fil med följande kommando:

$ npm init --y

Installera uttrycka.js bibliotek för projektet med följande kommando:

$ npm install - spara express

Expressen.js-biblioteket ska nu installeras.

Skapa den nya filen server.js i projektkatalogen enligt följande:

$ nano-server.js

Ange följande rader med koder i server.js fil.

let express = kräver ('express');
låt fs = kräver ('fs');
låt server = express ();
const PORT = 8080;
const WEBROOT = './offentlig';
server.få ('/', uttrycka.statisk (WEBROOT));
server.get ('/ temperature', (req, res) =>
låt tempDataPath = '/ sys / bus / w1 / enheter / 28-00000ba693e9 / temperatur';
låt temperatur = fs.readFileSync (tempDataPath, kodning: 'utf8', flagga: 'r') / 1000;
res.json (temperatur, rangeStart: -55, rangeEnd: 125);
);
server.lyssna (PORT, () =>
trösta.log ('server som körs på port $ PORT');
);

När du är klar trycker du på + X följd av Y och för att spara servern.js-fil.

Här importerar rad 1 uttrycka, och linje 2 importerar fs modul.

Rad 4 initialiserar express.

Rad 6 och 7 definierar HAMN och WEBROOT konstanta variabler. API och webserver körs HAMN (vilket är 8080, i den här artikeln) och webbservern kommer att servera statiskt innehåll från WEBROOT (vilken är offentlig/ katalog i projektkatalogen i den här artikeln).

Linje 9 används för att konfigurera express för att servera statiskt innehåll från WEBROOT.

Linjer 11-15 definierar API-slutpunkten /temperatur, som kommer att användas för att få temperaturdata till JSON-format.

I rad 12, tempDataPath variabel har den absoluta vägen till temperatur filen för den digitala termometermodulen DS18B20, som visas i ett tidigare avsnitt i den här artikeln.

I rad 13 avläses temperaturdata från temperatur fil med hjälp av noden.js fs-modulen och temperaturdata lagras i temperatur variabel.

I rad 14 skrivs temperaturdata ut i JSON-format. DS18B20 digital termometermodul kan mäta mellan temperaturerna -55 ° C och 125 ° C. Jag har lagt till det i JSON-utgången med rangeStart och rangeEnd egenskaper.

Slutligen kör linje 17-19 API och webserver på HAMN (vilket är 8080, i den här artikeln).

Skapa en offentlig/ katalog i projektkatalogen enligt följande:

$ mkdir -v allmänhet

Springa det server.js program med följande kommando:

$ nodserver.js

Servern ska köras på port 8080.

Du kan komma åt temperaturdata för termometermodulen DS18B20 från /temperatur slutpunkt för API: et.

För att testa om du kan få temperaturdata från API: n, kör ringla, som följer:

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

Som du kan se skrivs temperaturdata ut på konsolen i JSON-format. Så API fungerar.

Tryck + C för att stoppa servern.

Nu skapar jag en webbsida som begär API-servern för temperaturdata och visar den snyggt på sidan. Temperaturdata kommer att uppdateras var 5: e sekund.

Skapa en ny index.html filen i offentlig/ projektets katalog, enligt följande:

$ nano public / index.html

Ange följande rader med koder i index.html fil.




Temperaturövervakare







00.00 ° C


Temperaturuppdateringar var 5: e sekund



När du är klar trycker du på + X följd av Y och för att spara index.html fil.

HTML-filen index.html är lätt att förstå. Det är det format där temperaturdata kommer att visas i webbappen.

Här används raderna 53-55 för att visa en förloppsindikator och raderna 57-60 för att visa temperaturen.

Linjer 5-49 används för att dekorera webbappen snyggt med CSS (Cascading Style Sheet).

Linjer 62-109 används för att göra webbappen funktionell. JavaScript-koder används för att animera förloppsindikatorn, hämta temperaturdata från API: et och visa informationen.

Linje 63 kör huvud funktion när webbappen laddas i webbläsaren.

De huvud funktionen är mycket lång. Det sträcker sig från linje 65 till linje 108. Inuti huvudfunktionen har vi några andra funktioner, till exempel getTemperature, updateTemperature, updateProgress, app, och Start.

De updateProgress funktion, i raderna 83-86 tar procentandelen av framsteg som inmatning och uppdaterar förloppsindikatorn.

De updateTemperature funktion i rader 77-81 tar temperaturdata som inmatning och uppdaterar webbappen med temperaturdata.

De getTemperature funktion i rad 66-75 gör en begäran till /temperatur slutpunkt för API: et och får temperaturdata. När data väl har tagits emot ringer den till updateTemperature fungerar med data. De updateTemperature funktionen uppdaterar sedan webbappen med de nya temperaturdata.

De app funktionen, i raderna 88-99, animerar förloppsindikatorn och begär temperaturdata från API var 5: e sekund.

De Start funktionen, i raderna 101-104, startar webbappen.

Öppna paket.json fil med nano-textredigeraren enligt följande:

$ nano-paket.json

Förändra huvud till server.js och lägg till det nya skriptet tjäna i skript avsnitt, som markerat i skärmdumpen nedan.

När du är klar trycker du på + X följd av Y och för att spara paket.json fil.

Nu när allt är klart kör du webbappen och API: et med följande kommando:

$ npm kör servering

Servern ska köras på port 8080.

Öppna nu en webbläsare på din Raspberry Pi-enhet och besök http: // localhost: 8080. Temperaturdata från den digitala termometermodulen DS18B20 ska visas i din webbläsare, som du kan se på skärmdumpen nedan.

Temperaturdata bör uppdateras var 5: e sekund.

Som du kan se ändras temperaturen var 5: e sekund.

Om du vill komma åt webbappen från en annan dator i ditt nätverk måste du känna till din Raspberry Pi-enhets IP-adress.

Du hittar IP-adressen till din Raspberry Pi-enhet med följande kommando:

$ värdnamn -I

Som du kan se är IP-adressen till min Raspberry Pi-enhet 192.168.0.107. Detta kommer att vara annorlunda för dig. Så se till att ersätta IP-adressen från och med nu.

När du väl känner till din Raspberry Pi-enhets IP-adress bör du kunna komma åt webbappen från vilken dator som helst i ditt nätverk med en webbläsare. Besök bara http: // 192.168.0.107: 8080 och webbappen ska visa temperaturdata från den digitala termometermodulen DS18B20.

Slutsats

I den här artikeln lärde du dig hur du använder den digitala termometermodulen DS18B20 i Raspberry Pi för att mäta temperaturen. Du lärde dig också hur du skapar en nod.js API för att visa temperaturdata i en webbapp, som får åtkomst till temperaturdata från API och visar den. Den här artikeln ska hjälpa dig att komma igång med Raspberry Pi temperaturövervakning med den digitala termometermodulen DS18B20 och IoT med Raspberry Pi.

HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...