Hindbær Pi

Overvågningstemperatur i Raspberry Pi

Overvågningstemperatur i Raspberry Pi


Overvågning af temperaturer kan være et krav i mange af dine Raspberry Pi-projekter. Det er relativt let at gøre i Raspberry Pi, og de komponenter, der kræves til dette projekt, er ikke for dyre.Denne artikel viser dig, hvordan du bruger DS18B20 digitalt termometer modul til at overvåge temperaturen ved hjælp af Raspberry Pi. Artiklen demonstrerer også, hvordan man opretter en webapp til at vise temperaturen.

Ting, du har brug for:

For at prøve eksemplerne i denne artikel skal du bruge følgende:

  1. En Raspberry Pi single-board computer
  2. En strømadapter til Raspberry Pi-enheden
  3. Et microSD-kort med Raspberry Pi OS installeret
  4. Netværksforbindelse på Raspberry Pi-enheden
  5. Et brødbræt
  6. 3 stk forbindelsesledninger fra kvinde til kvinde
  7. Nogle forbindelsesledninger fra mand til mand
  8. En 10 k modstand
  9. Et DS18B20 digitalt termometer modul

DS18B20 Digital termometer pinouts

Hvis du holder det digitale termometer DS18B20 som vist på billedet nedenfor, bliver den første stift jordet (GND), den anden pin bliver DATA, og den tredje pin vil være VCC.

Kredsløbsdiagram

Kredsløbsdiagrammet for temperaturmonitoren er vist på billedet nedenfor.

Her, den PIN2 / 5V af Raspberry Pi-enheden skal forbindes til PIN3 / VCC af det digitale termometermodul.

Det PIN7 / GPIO4 af Raspberry Pi-enheden skal forbindes til PIN2 / DATA af det digitale termometermodul.

Det PIN9 / GND af Raspberry Pi-enheden skal forbindes til PIN1 / GND af det digitale termometermodul.

EN 10 kΩ modstand skal forbindes mellem PIN2 og PIN3 af det digitale termometermodul.

Du skal holde din Raspberry Pi som vist på billedet nedenfor. Derefter vil den øverste venstre pin være PIN1. Stiften lige ved siden af PIN1 vil være PIN2. Derefter, hvis du bevæger dig fremad en række, vil den venstre være PIN3 og den rigtige vil være PIN4, og så videre.

Når du har tilsluttet alle komponenterne til din Raspberry Pi-enhed, skal det se sådan ud:

Se nærmere på, hvordan jeg placerede komponenterne på brødbrættet.

Når du har tilsluttet alle komponenterne til din Raspberry Pi-enhed, skal du tænde Raspberry Pi-enheden. Tilslut derefter til din Raspberry Pi-enhed via VNC eller SSH.

Aflæsning af temperaturdata fra DS18B20 digitalt termometer

DS18B20 termometermodulet bruger 1-leder kommunikationsprotokol til at sende data til Raspberry Pi. Som standard er 1-leder interface ikke aktiveret. Du kan nemt aktivere grænsefladen fra Raspberry Pi-konfigurationsværktøjet.

Kør for at aktivere 1-leder interface raspi-config med følgende kommando:

$ sudo raspi-config

Vælg Grænseflademuligheder og tryk på .

Vælg 1-ledning og tryk på .

Vælg og tryk på .

Trykke .

For at gå ud af raspi-config hjælpeprogram, tryk på .

For at ændringerne skal træde i kraft, skal du genstarte din Raspberry Pi som følger:

$ sudo genstart

For at kontrollere, om w1_gpio og w1_therm kernemoduler er indlæst, kør følgende kommando:

$ sudo lsmod | grep w1

Hvis det af en eller anden grund er w1_therm modulet er ikke indlæst, så kan du manuelt indlæse det med følgende kommando:

$ sudo modprobe w1_therm

Når du har aktiveret 1-leder kommunikation og indlæst w1_therm modul, en ny enhed (28-00000ba693e9, i mit tilfælde) skal være anført i / sys / bus / w1 / enheder bibliotek, som du kan se på skærmbilledet nedenfor.

$ ls / sys / bus / w1 / enheder /

Naviger til den nye mappe som følger:

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

Du skal finde en temperatur fil i biblioteket, som du kan se på skærmbilledet nedenfor.

$ ls -lh

Det temperatur fil er en almindelig tekstfil. Du kan læse temperaturdataene ved hjælp af kat kommando som følger:

$ kat temperatur

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

Du kan bruge et programmeringssprog, såsom Python eller Node.js, for at analysere disse temperaturdata og bruge dem i din app. Jeg vil vise dig, hvordan du gør det i det næste afsnit af denne artikel.

For at analysere temperaturdataene ved hjælp af et programmeringssprog skal du bruge den absolutte vej til temperatur fil. Du kan finde dette ved hjælp af readlink kommando som følger:

$ readlink -f temperatur

Opret en webapp for at vise temperaturdata:

I dette afsnit lærer du, hvordan du analyserer temperaturdataene fra DS18B20 termometermodulet og viser dem i en webapp.

I dette eksempel opretter jeg en API, som vil analysere temperaturdataene fra DS18B20 termometer modulet, som kan tilgås fra API'en. Jeg opretter også en webapp, der henter temperaturdataene fra API'en og viser den pænt. Jeg bruger Node.js programmeringssprog for at gøre det. Koderne uploades i mit GitHub-lager shovon8 / ds18b20-raspberrypi-api. Det kan være en god idé at tjekke det ud, hvis du har problemer med at kopiere og indsætte koder fra denne artikel.

Node.js er ikke installeret på Raspberry Pi OS som standard. Men den er tilgængelig i den officielle pakkeopbevaring af Raspberry Pi OS. Du kan nemt installere Node.js fra Raspberry Pi OS-pakkelageret.

Opdater først APT-pakkeopbevaringscachen med følgende kommando:

$ sudo apt opdatering

Installer derefter Node.js og NPM med følgende kommando:

$ sudo apt installere nodejs npm

Tryk på for at bekræfte installationen Y og tryk derefter på .

APT-pakkehåndteringen downloader og installerer alle de nødvendige pakker. Det kan tage et stykke tid at gennemføre.

På dette tidspunkt, Node.js og NPM skal installeres.

Én gang Node.js og NPM er installeret, skal du kontrollere, om knude og npm kommandoer er tilgængelige som følger:

$ node - version
$ npm - version

Opgrader NPM med følgende kommando:

$ sudo npm install - global npm

NPM skal opgraderes.

Som du kan se, er NPM blevet opdateret fra version 5.8.0 til version 6.14.8.

$ node --version $ npm - version

Nu den node.js og NPM er installeret, skal du oprette den nye projektmappe ~ / ds18b20, som følger:

$ mkdir -v ~ / ds18b20

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

$ cd ~ / ds18b20

Opret det tomme pakke.json fil med følgende kommando:

$ npm init - y

Installer Express.js bibliotek til projektet med følgende kommando:

$ npm install - Gem Express

Expressen.js-biblioteket skal nu installeres.

Opret den nye fil server.js i projektmappen som følger:

$ nano-server.js

Indtast følgende linjer med koder i server.js fil.

lad udtrykke = kræve ('udtrykke');
lad fs = kræve ('fs');
lad server = udtrykke ();
const PORT = 8080;
const WEBROOT = './offentlig';
server.få ('/', udtrykke.statisk (WEBROOT));
server.get ('/ temperature', (req, res) =>
lad tempDataPath = '/ sys / bus / w1 / enheder / 28-00000ba693e9 / temperatur';
lad temperatur = fs.readFileSync (tempDataPath, kodning: 'utf8', flag: 'r') / 1000;
res.json (temperatur, rækkeviddeStart: -55, rækkevidde: 125);
);
server.lyt (PORT, () =>
konsol.log ('server kører på port $ PORT');
);

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at gemme serveren.js-fil.

Her importeres linje 1 udtrykke, og linje 2 importerer fs modul.

Linje 4 initialiserer ekspres.

Linje 6 og 7 definerer HAVN og WEBROOT konstante variabler, henholdsvis. API og webserver kører HAVN (som er 8080, i denne artikel), og webserveren serverer statisk indhold fra WEBROOT (hvilket er offentlig/ katalog inde i projektmappen i denne artikel).

Linie 9 bruges til at konfigurere ekspres til at levere statiske indhold fra WEBROOT.

Linjer 11-15 definerer API-slutpunktet /temperatur, som vil blive brugt til at få temperaturdataene til JSON-format.

I linje 12 er tempDataPath variabel har den absolutte vej til temperatur fil af det digitale termometermodul DS18B20, vist i et tidligere afsnit af denne artikel.

I linje 13 læses temperaturdataene fra temperatur fil ved hjælp af noden.js fs-modulet, og temperaturdataene gemmes i temperatur variabel.

I linje 14 udskrives temperaturdataene i JSON-format. DS18B20 digitalt termometermodul kan måle mellem temperaturerne -55 ° C til 125 ° C. Jeg har tilføjet det i JSON-output ved hjælp af rækkeviddeStart og rækkevidde ejendomme.

Endelig kører linje 17-19 API og webserver på HAVN (som er 8080, i denne artikel).

Lave en offentlig/ katalog i projektmappen som følger:

$ mkdir -v offentlig

Kør server.js program med følgende kommando:

$ node-server.js

Serveren skal køre på port 8080.

Du kan få adgang til temperaturdataene for DS18B20 termometermodulet fra /temperatur slutpunkt for API.

For at teste, om du kan få temperaturdataene fra API'en, skal du køre krølle, som følger:

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

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

Trykke + C for at stoppe serveren.

Nu opretter jeg en webside, der beder API-serveren om temperaturdata og viser det pænt på siden. Temperaturdataene opdateres hvert 5. sekund.

Opret en ny indeks.html fil i offentlig/ projektmappe som følger:

$ nano public / index.html

Indtast følgende linjer med koder i indeks.html fil.




Temperaturovervågning







00.00 ° C


Temperaturopdateringer hvert 5. sekund



Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde indeks.html fil.

HTML-filen indeks.html er let at forstå. Det er det format, hvor temperaturdataene vises i webappen.

Her bruges linier 53-55 til at vise en statuslinje, og linjerne 57-60 bruges til at vise temperaturen.

Linjer 5-49 bruges til at dekorere webappen pænt ved hjælp af CSS (Cascading Style Sheet).

Linjer 62-109 bruges til at gøre webappen funktionel. JavaScript-koder bruges til at animere statuslinjen, hente temperaturdataene fra API'en og vise oplysningerne.

Linie 63 kører vigtigste funktion, når webappen er indlæst i browseren.

Det vigtigste funktionen er meget lang. Det spænder fra linje 65 til linje 108. Inde i hovedfunktionen har vi nogle andre funktioner, såsom getTemperature, updateTemperature, updateProgress, app, og Start.

Det updateProgress funktion, i linje 83-86, tager procentdelen af ​​fremskridt som input og opdaterer statuslinjen.

Det updateTemperature funktion i linje 77-81 tager temperaturdataene som input og opdaterer webappen med temperaturdataene.

Det getTemperature funktion i linje 66-75 fremsætter en anmodning til /temperatur API'ets slutpunkt og får temperaturdataene. Når dataene er modtaget, kalder det updateTemperature funktion med dataene. Det updateTemperature funktion opdaterer derefter webappen med de nye temperaturdata.

Det app funktion, i linje 88-99, animerer statuslinjen og anmoder om temperaturdata fra API hvert 5. sekund.

Det Start funktion, i linier 101-104, starter webappen.

Åbn pakke.json fil med nano-teksteditoren som følger:

$ nano-pakke.json

Lave om vigtigste til server.js og tilføj det nye script tjene i scripts sektion, som markeret i skærmbilledet nedenfor.

Når du er færdig, skal du trykke på + x efterfulgt af Y og for at redde pakke.json fil.

Nu hvor alt er klar, skal du køre webappen og API'en med følgende kommando:

$ npm køre tjene

Serveren skal køre på port 8080.

Åbn nu en webbrowser på din Raspberry Pi-enhed og besøg http: // localhost: 8080. Temperaturdataene fra det digitale termometermodul DS18B20 skal vises i din webbrowser, som du kan se på skærmbilledet nedenfor.

Temperaturdataene skal opdateres hvert 5. sekund.

Som du kan se, ændres temperaturen hvert 5. sekund.

Hvis du vil have adgang til webappen fra en anden computer på dit netværk, skal du kende IP-adressen på din Raspberry Pi-enhed.

Du kan finde IP-adressen på din Raspberry Pi-enhed med følgende kommando:

$ værtsnavn -I

Som du kan se, er IP-adressen på min Raspberry Pi-enhed 192.168.0.107. Dette vil være anderledes for dig. Så sørg for at udskifte IP-adressen fra nu af.

Når du kender IP-adressen på din Raspberry Pi-enhed, skal du være i stand til at få adgang til webappen fra enhver computer på dit netværk ved hjælp af en webbrowser. Bare besøg http: // 192.168.0.107: 8080, og webappen skal vise temperaturdataene fra det digitale termometermodul DS18B20.

Konklusion

I denne artikel lærte du, hvordan du bruger DS18B20 digitalt termometer modul i Raspberry Pi til at måle temperaturen. Du lærte også, hvordan du opretter en node.js API til visning af temperaturdata i en webapp, der får adgang til temperaturdataene fra API'en og viser dem. Denne artikel skal hjælpe dig med at komme i gang med Raspberry Pi temperaturovervågning med DS18B20 digitalt termometer modul og IoT med Raspberry Pi.

Mus Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
Sådan ændres mus og touchpad-indstillinger ved hjælp af Xinput i Linux
De fleste Linux-distributioner leveres som standard med "libinput" -biblioteket til at håndtere inputhændelser på et system. Det kan behandle inputhæn...
Mus Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Remap dine museknapper forskelligt til anden software med X-Mouse Button Control
Måske har du brug for et værktøj, der kan ændre din muses kontrol med hver applikation, du bruger. Hvis dette er tilfældet, kan du prøve en applikatio...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har for nylig læst om Microsoft Sculpt Touch trådløs mus og besluttede at købe den. Efter at have brugt det et stykke tid besluttede jeg at dele m...