Overvåkingstemperatur i Raspberry Pi

Overvåkingstemperatur i Raspberry Pi

Videospillerhttps: // linuxhint.COM/WP-Content/Uploads/2020/10/2020-09-29-20-47-25.MP400: 0000: 0000: 40 Bruk opp/ned piltastene for å øke eller redusere volumet.
Overvåkningstemperaturer kan være et krav i mange av bringebærprosjektene dine. Det er relativt enkelt å gjøre i Raspberry Pi, og komponentene som kreves for dette prosjektet er ikke så kostbare.Denne artikkelen viser deg hvordan du bruker DS18B20 Digital termometermodul for å overvåke temperaturen ved hjelp av Raspberry Pi. Artikkelen demonstrerer også hvordan du oppretter en webapp for å vise temperaturen.

Ting du trenger:

For å prøve eksemplene i denne artikkelen, trenger du følgende:

  1. En bringebærpi-datamaskin
  2. En strømadapter for Raspberry Pi -enheten
  3. Et microSD -kort med bringebærpi -os installert
  4. Nettverkstilkobling på Raspberry Pi -enheten
  5. En brødplate
  6. 3 stk av kvinnelige til kvinnelige tilkoblingsledninger
  7. Noen mann-til-mannlige tilkoblingsledninger
  8. En 10K -motstand
  9. En ds18b20 digital termometermodul

Ds18b20 digitale termometer pinouts

Hvis du holder DS18B20 digitalt termometer som vist på bildet nedenfor, vil den første pinnen være malt (GND), Den andre pinnen vil være DATA, Og den tredje pinnen vil være VCC.

Kretsdiagram

Kretsdiagrammet for temperaturmonitoren er vist på bildet nedenfor.

Her, The Pin2/5v av Raspberry Pi -enheten skal kobles til PIN3/VCC av den digitale termometermodulen.

De Pin7/gpio4 av Raspberry Pi -enheten skal kobles til Pin2/data av den digitale termometermodulen.

De Pin9/GND av Raspberry Pi -enheten skal kobles til Pin1/GND av den digitale termometermodulen.

EN 10kΩ motstand skal kobles mellom Pin2 og Pin3 av den digitale termometermodulen.

Du bør holde Raspberry Pi som vist på bildet nedenfor. Deretter vil den øverste pinnen være Pin1. Pinnen rett ved siden av Pin1 vil være Pin2. Deretter, hvis du går fremover en rad, vil den venstre være Pin3 Og den rette vil være Pin4, og så videre.

Når du har koblet alle komponentene til Raspberry Pi -enheten, skal den se ut som dette:

Se nærmere på hvordan jeg plasserte komponentene på brødplaten.

Når du har koblet alle komponentene til Raspberry Pi -enheten, strøm på Raspberry Pi -enheten. Koble deretter til Raspberry Pi -enheten via VNC eller SSH.

Lesetemperaturdata fra DS18B20 Digital termometer

DS18B20 termometermodulen bruker 1-tråds kommunikasjonsprotokoll for å sende data til Raspberry Pi. Som standard er ikke 1-ledningsgrensesnittet aktivert. Du kan enkelt aktivere grensesnittet fra Raspberry PI -konfigurasjonsverktøyet.

For å aktivere 1-Wire-grensesnittet, kjør Raspi-Config med følgende kommando:

$ Sudo Raspi-Config

Plukke ut Grensesnittalternativer og trykk .

Plukke ut 1-ledning og trykk .

Plukke ut og trykk .

trykk .

Å gå ut av Raspi-Config Utility, trykk .

For at endringene skal tre i kraft, må du starte Raspberry Pi på nytt som følger:

$ sudo omstart

For å sjekke om W1_GPIO og W1_Therm Kernelmoduler er lastet, kjør følgende kommando:

$ sudo lsmod | grep w1

Hvis av en eller annen grunn, er det W1_Therm Modulen er ikke lastet, så kan du laste den manuelt med følgende kommando:

$ sudo modprobe w1_therm

Når du har aktivert 1-ledningskommunikasjon og lastet W1_Therm modul, en ny enhet (28-00000BA693E9, i mitt tilfelle) skal være oppført i /sys/buss/w1/enheter Katalog, som du kan se på skjermdumpen nedenfor.

$ ls/sys/buss/w1/enheter/

Naviger til den nye katalogen, som følger:

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

Du bør finne en temperatur fil i katalogen, som du kan se på skjermdumpen nedenfor.

$ ls -lh

De temperatur Filen er en vanlig tekstfil. Du kan lese temperaturdataene ved hjelp av katt Kommando, som følger:

$ kattemperatur

Som du kan se, skrives temperaturdataene på konsollen. Her, 30375 midler 30.375 ° C.

Du kan bruke et programmeringsspråk, for eksempel Python eller Node.JS, for å analysere disse temperaturdataene og bruke dem på appen din. Jeg vil vise deg hvordan du gjør det i neste del av denne artikkelen.

For å analysere temperaturdataene ved hjelp av et programmeringsspråk, trenger du den absolutte banen til temperatur fil. Du kan finne dette ved hjelp av Readlink Kommando, som følger:

$ readlink -f temperatur

Opprett en webapp for å vise temperaturdata:

I denne delen lærer du hvordan du kan analysere temperaturdataene fra DS18B20 termometermodulen og vise den på en webapp.

I dette eksemplet vil jeg opprette en API, som vil analysere temperaturdataene fra DS18B20 termometermodul som kan nås fra API. Jeg vil også opprette en webapp som vil hente temperaturdataene fra API og vise dem pent. Jeg vil bruke noden.JS -programmeringsspråk for å gjøre det. Kodene lastes opp i GitHub-depotet. Det kan være lurt å sjekke det ut hvis du har vanskeligheter med å kopiere og lede koder fra denne artikkelen.

Node.JS er ikke installert på Raspberry Pi OS som standard. Men det er tilgjengelig i det offisielle pakkelagdet til Raspberry Pi OS. Du kan enkelt installere node.JS fra Raspberry Pi OS Package Repository.

Oppdater først Apt Package Repository Cache med følgende kommando:

$ sudo apt oppdatering

Neste, installer node.JS og NPM med følgende kommando:

$ sudo apt install nodejs npm

For å bekrefte installasjonen, trykk Y Og trykk deretter .

Apt Package Manager vil laste ned og installere alle nødvendige pakker. Det kan ta en stund å fullføre.

På dette tidspunktet, node.JS og NPM skal installeres.

En gang node.JS og NPM er installert, sjekk om Node og npm Kommandoer er tilgjengelige, som følger:

$ node -Versjon
$ npm -Versjon

Oppgrader NPM med følgende kommando:

$ sudo npm installasjon -global npm

NPM skal oppgraderes.

Som du kan se, har NPM blitt oppdatert fra versjon 5.8.0 til versjon 6.14.8.

$ node -Versjon
$ npm -Versjon

Nå den noden.JS og NPM er installert, oppretter den nye prosjektkatalogen ~/ds18b20, følgende:

$ mkdir -v ~/ds18b20

Naviger til ~/ds18b20 Katalog, som følger:

$ CD ~/DS18B20

Lag det tomme pakke.JSON fil med følgende kommando:

$ npm init --y

Installer Uttrykke.JS Bibliotek for prosjektet med følgende kommando:

$ NPM Install -Save Express

Express.JS -biblioteket skal nå installeres.

Opprett den nye filen server.JS I prosjektkatalogen, som følger:

$ Nano Server.JS

Skriv inn følgende koder i server.JS fil.

La Express = kreve ('Express');
La fs = kreve ('fs');
La Server = Express ();
const port = 8080;
const webroot = './offentlig';
server.få ('/', uttrykk.statisk (Webroot));
server.få ('/temperatur', (req, res) =>
La tempdatapath = '/sys/buss/w1/enheter/28-00000ba693e9/temperatur';
La temperatur = FS.ReadFileSync (TempDatapath, koding: 'utf8', flagg: 'r') / 1000;
res.JSON (Temperatur, Rangestart: -55, Rangeend: 125);
);
server.lytt (port, () =>
konsoll.logg ('server som kjører på port $ port');
);

Når du er ferdig, trykk + X etterfulgt av Y og For å lagre serveren.JS -fil.

Her importerer linje 1 uttrykke, og linje 2 importerer fs modul.

Linje 4 initialiserer ekspress.

Linje 6 og 7 definerer HAVN og Webroot henholdsvis konstante variabler. API og webserver vil kjøre på HAVN (som er 8080, i denne artikkelen), og webserveren vil tjene statisk innhold fra Webroot (hvilken er den offentlig/ Katalog i prosjektkatalogen i denne artikkelen).

Linje 9 brukes til å konfigurere Express for å tjene statisk innhold fra Webroot.

Linjer 11-15 Definer API-endepunktet /temperatur, som vil bli brukt til å få temperaturdataene i JSON -format.

På linje 12, den tempdatapath Variabel holder den absolutte veien til temperatur Fil av DS18B20 Digital termometermodul, vist i en tidligere del av denne artikkelen.

I linje 13 leses temperaturdataene fra temperatur fil ved hjelp av noden.JS FS -modul, og temperaturdataene lagres i temperatur variabel.

I linje 14 er temperaturdataene skrevet ut i JSON -format. DS18B20 Digital termometermodul kan måle mellom temperaturene -55 ° C til 125 ° C. Jeg har lagt til det i JSON -utgangen ved å bruke Rangestart og Rangeend egenskaper.

Til slutt kjører linje 17-19 API og webserver på HAVN (som er 8080, i denne artikkelen).

Lage en offentlig/ Katalog i prosjektkatalogen, som følger:

$ mkdir -v public

Kjør server.JS Program med følgende kommando:

$ node -server.JS

Serveren skal kjøres på port 8080.

Du kan få tilgang til temperaturdataene til DS18B20 termometermodulen fra /temperatur endepunktet på API.

For å teste om du kan få temperaturdataene fra API, kjører du krøll, følgende:

$ Curl -S http: // localhost: 8080/temperatur | JSON_PP

Som du kan se, skrives temperaturdataene på konsollen i JSON -format. Så API fungerer.

trykk + C For å stoppe serveren.

Nå vil jeg opprette en webside som vil be API -serveren om temperaturdata og vise den pent på siden. Temperaturdataene vil bli oppdatert hvert 5. sekund.

Lage en ny indeks.html fil i offentlig/ Katalogen til prosjektet, som følger:

$ nano public/index.html

Skriv inn følgende koder i indeks.html fil.




Temperaturmonitor







00.00 ° C


Temperaturoppdateringer i hvert 5. sekund



Når du er ferdig, trykk + X etterfulgt av Y og For å redde indeks.html fil.

HTML -filen indeks.html er lett å forstå. Det er formatet som temperaturdataene vises i webappen.

Her brukes linjer 53-55 til å vise en fremdriftslinje, og linjer 57-60 brukes til å vise temperaturen.

Linjer 5-49 brukes til å dekorere webappen pent ved hjelp av CSS (Cascading Style Sheet).

Linjer 62-109 brukes til å gjøre nettappen funksjonell. JavaScript -kodene brukes til å animere fremdriftslinjen, hente temperaturdataene fra API og vise informasjonen.

Linje 63 kjører hoved- Funksjon når nettappen er lastet i nettleseren.

De hoved- Funksjonen er veldig lang. Den spenner fra linje 65 til linje 108. Inne i hovedfunksjonen har vi noen andre funksjoner, for eksempel Gettemperatur, updateTemperature, UpdateProgress, app, og start.

De UpdateProgress Funksjon, i linjene 83-86, tar prosentandelen av fremgangen som inngangen og oppdaterer fremdriftslinjen.

De updateTemperature Funksjon i linjer 77-81 tar temperaturdataene som inndata og oppdaterer webappen med temperaturdata.

De Gettemperatur Funksjon i linjer 66-75 gir en forespørsel til /temperatur endepunktet på API og får temperaturdata. Når dataene er mottatt, kaller de updateTemperature funksjon med dataene. De updateTemperature Funksjon oppdaterer deretter webappen med de nye temperaturdataene.

De app Funksjon, i linjene 88-99, animerer fremdriftslinjen og ber om temperaturdataene fra API hvert 5. sekund.

De start Funksjon, i linjer 101-104, starter webappen.

Åpne pakke.JSON Fil med Nano Text Editor som følger:

$ Nano -pakke.JSON

Endring hoved- til server.JS og legg til det nye skriptet tjene i skript seksjon, som merket i skjermbildet nedenfor.

Når du er ferdig, trykk + X etterfulgt av Y og For å redde pakke.JSON fil.

Nå som alt er klart, kjør webappen og API med følgende kommando:

$ npm run serverer

Serveren skal kjøres på port 8080.

Nå, åpne en nettleser på Raspberry Pi -enheten din og besøk http: // localhost: 8080. Temperaturdataene fra DS18B20 Digital termometermodul skal vises på nettleseren din, som du kan se i skjermdumpen nedenfor.

Temperaturdataene skal oppdateres hvert 5. sekund.

Som du ser endres temperaturen hvert 5. sekund.

Hvis du vil få tilgang til webappen fra en annen datamaskin på nettverket ditt, må du kjenne IP -adressen til Raspberry Pi -enheten din.

Du kan finne IP -adressen til Raspberry Pi -enheten din med følgende kommando:

$ hostname -i

Som du kan se, er IP -adressen til Raspberry Pi -enheten 192.168.0.107. Dette vil være annerledes for deg. Så sørg for å erstatte IP -adressen fra nå av.

Når du kjenner IP -adressen til Raspberry Pi -enheten din, bør du kunne få tilgang til webappen fra hvilken som helst datamaskin på nettverket ditt ved hjelp av en nettleser. Bare besøk http: // 192.168.0.107: 8080, og webappen skal vise temperaturdataene fra DS18B20 Digital Thermometer Module.

Konklusjon

I denne artikkelen lærte du hvordan du bruker DS18B20 Digital termometermodul i Raspberry Pi for å måle temperaturen. Du lærte også hvordan du lager en node.JS API for å vise temperaturdataene i en webapp, som får tilgang til temperaturdataene fra API og viser dem. Denne artikkelen skal hjelpe deg i gang med Raspberry Pi -temperaturovervåking med DS18B20 Digital termometermodul og IoT med Raspberry Pi.