Raspberry Pi

Temperatuur bewaken in Raspberry Pi

Temperatuur bewaken in Raspberry Pi


Het bewaken van temperaturen kan een vereiste zijn in veel van uw Raspberry Pi-projecten. Het is relatief eenvoudig te doen in Raspberry Pi en de componenten die nodig zijn voor dit project zijn niet te duur.Dit artikel laat zien hoe u de DS18B20 digitale thermometermodule gebruikt om de temperatuur te bewaken met Raspberry Pi. Het artikel laat ook zien hoe je een web-app maakt om de temperatuur weer te geven.

Dingen die je nodig hebt:

Om de voorbeelden in dit artikel uit te proberen, heeft u het volgende nodig:

  1. Een Raspberry Pi-computer met één bord
  2. Een voedingsadapter voor het Raspberry Pi-apparaat
  3. Een microSD-kaart met Raspberry Pi OS geïnstalleerd
  4. Netwerkconnectiviteit op het Raspberry Pi-apparaat
  5. Een breadboard
  6. 3 stuks vrouwelijke-naar-vrouwelijke aansluitdraden
  7. Sommige mannelijk-naar-mannelijk aansluitdraden
  8. Een weerstand van 10k
  9. Een DS18B20 digitale thermometermodule

DS18B20 Digitale thermometer pinouts

Als u de digitale thermometer DS18B20 vasthoudt zoals weergegeven in de onderstaande afbeelding, wordt de eerste pin geaard (GND), de tweede pin zal zijn GEGEVENS, en de derde pin zal zijn VCC.

Schakelschema

Het schakelschema van de temperatuurmonitor wordt weergegeven in de onderstaande afbeelding:.

Hier de PIN2/5V van het Raspberry Pi-apparaat moet worden aangesloten op de PIN3/VCC van de digitale thermometermodule.

De PIN7/GPIO4 van het Raspberry Pi-apparaat moet worden aangesloten op de PIN2/GEGEVENS van de digitale thermometermodule.

De PIN9/GND van het Raspberry Pi-apparaat moet worden aangesloten op de PIN1/GND van de digitale thermometermodule.

EEN 10kΩ weerstand moet worden aangesloten tussen PIN2 en PIN3 van de digitale thermometermodule.

Je moet je Raspberry Pi vasthouden zoals weergegeven in de onderstaande afbeelding:. Dan is de pin linksboven: PIN1. De pin naast PIN1 zal zijn PIN2. Als u dan één rij vooruit gaat, wordt de linker PIN3 en de juiste zal zijn PIN4, enzovoorts.

Nadat u alle componenten op uw Raspberry Pi-apparaat hebt aangesloten, zou het er ongeveer zo uit moeten zien:

Bekijk hoe ik de componenten op het breadboard heb geplaatst.

Zodra u alle componenten op uw Raspberry Pi-apparaat hebt aangesloten, schakelt u het Raspberry Pi-apparaat in. Maak vervolgens verbinding met uw Raspberry Pi-apparaat via VNC of SSH.

Temperatuurgegevens lezen van de DS18B20 digitale thermometer

De DS18B20-thermometermodule gebruikt het 1-draads communicatieprotocol om gegevens naar de Raspberry Pi te sturen. Standaard is de 1-draads interface niet ingeschakeld. U kunt de interface eenvoudig inschakelen vanuit de Raspberry Pi-configuratietool.

Om de 1-draads interface in te schakelen, voert u raspi-config met het volgende commando:

$ sudo raspi-config

Selecteer Interface-opties en druk op .

Selecteer 1-draads en druk op .

Selecteer en druk op .

druk op .

Om de . te verlaten raspi-config hulpprogramma, druk op .

Om de wijzigingen door te voeren, start u uw Raspberry Pi als volgt opnieuw op:

$ sudo opnieuw opstarten

Om te controleren of de w1_gpio en w1_therm kernelmodules zijn geladen, voert u de volgende opdracht uit:

$ sudo lsmod | grep w1

Als om de een of andere reden de w1_therm module niet is geladen, kunt u deze handmatig laden met het volgende commando:

$ sudo modprobe w1_therm

Zodra je hebt ingeschakeld 1-draads communicatie en laadde de w1_therm module, een nieuw apparaat (28-00000ba693e9, in mijn geval) moet worden vermeld in de /sys/bus/w1/apparaten map, zoals je kunt zien in de onderstaande schermafbeelding.

$ ls /sys/bus/w1/apparaten/

Navigeer als volgt naar de nieuwe map:

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

Je zou een moeten vinden temperatuur- bestand in de map, zoals je kunt zien in de onderstaande schermafbeelding.

$ ls -lh

De temperatuur- bestand is een gewoon tekstbestand. U kunt de temperatuurgegevens aflezen met de kat commando, als volgt:

$ kat temperatuur

Zoals u kunt zien, worden de temperatuurgegevens afgedrukt op de console. Hier, 30375 middelen 30.375 °C.

U kunt een programmeertaal gebruiken, zoals Python of Node.js, om deze temperatuurgegevens te ontleden en in je app te gebruiken. Ik zal je laten zien hoe je dat kunt doen in het volgende gedeelte van dit artikel.

Om de temperatuurgegevens te ontleden met behulp van een programmeertaal, hebt u het absolute pad naar de temperatuur- het dossier. U vindt dit met behulp van de leeslink commando, als volgt:

$ leeslink -f temperatuur

Maak een web-app om temperatuurgegevens weer te geven:

In dit gedeelte leert u hoe u de temperatuurgegevens van de DS18B20-thermometermodule kunt ontleden en weergeven op een web-app.

In dit voorbeeld zal ik een API maken, die de temperatuurgegevens van de DS18B20-thermometermodule zal ontleden die toegankelijk is via de API. Ik zal ook een web-app maken die de temperatuurgegevens uit de API haalt en mooi weergeeft. Ik zal de Node gebruiken.js programmeertaal om dit te doen. De codes worden geüpload in mijn GitHub-repository shovon8/ds18b20-raspberrypi-api. Misschien wil je het eens bekijken als je problemen hebt met het kopiëren en plakken van codes uit dit artikel.

Knooppunt.js is standaard niet geïnstalleerd op Raspberry Pi OS. Maar het is beschikbaar in de officiële pakketrepository van Raspberry Pi OS. U kunt Node eenvoudig installeren.js uit de Raspberry Pi OS-pakketrepository.

Werk eerst de cache van de APT-pakketrepository bij met de volgende opdracht:

$ sudo apt-update

Installeer vervolgens Node.js en NPM met de volgende opdracht:

$ sudo apt install nodejs npm

Om de installatie te bevestigen, drukt u op Y en druk vervolgens op .

De pakketbeheerder van APT zal alle vereiste pakketten downloaden en installeren. Het kan even duren om te voltooien.

Op dit punt, Knooppunt.js en NPM moeten zijn geïnstalleerd.

Eenmaal knooppunt.js en NPM zijn geïnstalleerd, controleer dan of de knooppunt en npm commando's zijn als volgt beschikbaar:

$ knooppunt --versie
$ npm --versie

Upgrade NPM met de volgende opdracht:

$ sudo npm install --global npm

NPM moet worden geüpgraded.

Zoals u kunt zien, is NPM bijgewerkt vanaf versie 5.8.0 tot versie 6.14.8.

$ knooppunt --versie $ npm --versie

Nu dat knooppunt.js en NPM zijn geïnstalleerd, maak de nieuwe projectdirectory aan ~/ds18b20, als volgt:

$ mkdir -v ~/ds18b20

Navigeer naar de ~/ds18b20 directory, als volgt:

$ cd ~/ds18b20

Maak het lege pakket.json bestand met het volgende commando:

$ npm init --y

Installeer de uitdrukken.js bibliotheek voor het project met de volgende opdracht:

$ npm installeren --save express

De Express.js-bibliotheek zou nu moeten zijn geïnstalleerd.

Maak het nieuwe bestand server.js in de projectdirectory, als volgt:

$ nano-server.js

Voer de volgende regels codes in de server.js het dossier.

laat express = vereisen('express');
laat fs = vereisen ('fs');
laat server = express();
const POORT = 8080;
const WEBROOT = './openbaar';
server.get('/', express.statisch (WEBROOT));
server.get('/temperatuur', (req, res) =>
let tempDataPath = '/sys/bus/w1/devices/28-00000ba693e9/temperature';
laat temperatuur = fs.readFileSync(tempDataPath, codering: 'utf8', vlag: 'r') / 1000;
onderzoek.json(temperatuur, bereikStart: -55, bereikEind: 125);
);
server.luister(POORT, () =>
troosten.log('server draait op poort $PORT');
);

Als u klaar bent, drukt u op + X gevolgd door Y en om de server op te slaan.js-bestand.

Hier, regel 1 importeert uitdrukken, en regel 2 importeert de fs module.

Regel 4 initialiseert express.

Regel 6 en 7 definiëren de HAVEN en WEBROOT constante variabelen, respectievelijk. De API en webserver zullen draaien op HAVEN (dat is 8080, in dit artikel), en de webserver zal statische inhoud van de WEBROOT (welke is de openbaar/ directory in de projectdirectory in dit artikel).

Regel 9 wordt gebruikt om express te configureren om statische inhoud van de WEBROOT.

Regels 11-15 definiëren het API-eindpunt /temperatuur, die zal worden gebruikt om de temperatuurgegevens in JSON-indeling te krijgen.

In regel 12, de tempDataPath variabele bevat het absolute pad naar de temperatuur- bestand van de DS18B20 digitale thermometermodule, weergegeven in een eerder gedeelte van dit artikel.

In regel 13 worden de temperatuurgegevens uitgelezen uit de temperatuur- bestand met behulp van de Node.js fs-module, en de temperatuurgegevens worden opgeslagen in de temperatuur- variabele.

In regel 14 worden de temperatuurgegevens afgedrukt in JSON-formaat. De DS18B20 digitale thermometermodule kan meten tussen de temperaturen -55 °C tot 125 °C. Ik heb dat toegevoegd in de JSON-uitvoer met behulp van de bereikStart en bereikEinde eigendommen.

Ten slotte draait regel 17-19 de API en webserver op HAVEN (dat is 8080, in dit artikel).

Maak een openbaar/ directory in de projectdirectory, als volgt:

$ mkdir -v openbaar

Voer de ... uit server.js programma met het volgende commando:

$ node-server.js

De server zou op poort moeten draaien 8080.

U hebt toegang tot de temperatuurgegevens van de DS18B20-thermometermodule via de /temperatuur eindpunt van de API.

Om te testen of u de temperatuurgegevens van de API kunt krijgen, voert u krullen, als volgt:

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

Zoals u kunt zien, worden de temperatuurgegevens in JSON-indeling op de console afgedrukt. Dus de API werkt.

druk op + C om de server te stoppen.

Nu zal ik een webpagina maken die de API-server om de temperatuurgegevens zal vragen en deze netjes op de pagina zal weergeven. De temperatuurgegevens worden elke 5 seconden bijgewerkt.

Maak een nieuwe inhoudsopgave.html bestand in de openbaar/ directory van het project, als volgt:

$ nano openbaar/index.html

Voer de volgende regels codes in de inhoudsopgave.html het dossier.




Temperatuurmonitor







00.00°C


Temperatuurupdates in elke 5 seconden



Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden inhoudsopgave.html het dossier.

Het HTML-bestand inhoudsopgave.html is gemakkelijk te begrijpen. Dit is het formaat waarin de temperatuurgegevens worden weergegeven in de web-app.

Hier worden regels 53-55 gebruikt om een ​​voortgangsbalk weer te geven en regels 57-60 om de temperatuur weer te geven.

Regels 5-49 worden gebruikt om de web-app mooi te versieren met behulp van CSS (Cascading Style Sheet).

Regels 62-109 worden gebruikt om de web-app functioneel te maken. De JavaScript-codes worden gebruikt om de voortgangsbalk te animeren, de temperatuurgegevens van de API op te halen en de informatie weer te geven.

Lijn 63 rijdt de hoofd functie zodra de web-app in de browser is geladen.

De hoofd functie is erg lang. Het loopt van lijn 65 tot lijn 108. Binnen de hoofdfunctie hebben we enkele andere functies, zoals: getTemperatuur, updateTemperatuur, updateVoortgang, app, en begin.

De updateVoortgang functie, in regels 83-86, neemt het voortgangspercentage als invoer en werkt de voortgangsbalk bij.

De updateTemperatuur functie in regels 77-81 neemt de temperatuurgegevens als invoer en werkt de web-app bij met de temperatuurgegevens.

De getTemperatuur functie in regels 66-75 doet een verzoek aan de /temperatuur eindpunt van de API en krijgt de temperatuurgegevens. Zodra de gegevens zijn ontvangen, roept het de updateTemperatuur functie met de gegevens. De updateTemperatuur functie werkt vervolgens de web-app bij met de nieuwe temperatuurgegevens.

De app functie, in regels 88-99, animeert de voortgangsbalk en vraagt ​​elke 5 seconden om de temperatuurgegevens van de API API.

De begin functie, in regels 101-104, start de web-app.

Open de pakket.json bestand met de nano-teksteditor als volgt:

$ nano-pakket.json

Verandering hoofd naar server.js en voeg het nieuwe script toe dienen in de scripts sectie, zoals aangegeven in de onderstaande schermafbeelding.

Als u klaar bent, drukt u op + X gevolgd door Y en om de te redden pakket.json het dossier.

Nu alles klaar is, voert u de web-app en de API uit met de volgende opdracht:

$ npm run serveren

De server zou op poort 8080 . moeten draaien.

Open nu een webbrowser op uw Raspberry Pi-apparaat en bezoek http://localhost:8080. De temperatuurgegevens van de DS18B20 digitale thermometermodule moeten worden weergegeven in uw webbrowser, zoals u kunt zien in de onderstaande schermafbeelding.

De temperatuurgegevens moeten elke 5 seconden worden bijgewerkt.

Zoals je kunt zien, verandert de temperatuur elke 5 seconden.

Als u toegang wilt tot de web-app vanaf een andere computer in uw netwerk, moet u het IP-adres van uw Raspberry Pi-apparaat weten.

Je kunt het IP-adres van je Raspberry Pi-apparaat vinden met het volgende commando:

$ hostnaam -I

Zoals je kunt zien, is het IP-adres van mijn Raspberry Pi-apparaat 192.168.0.107. Dit zal voor jou anders zijn. Zorg er dus voor dat u vanaf nu het IP-adres vervangt.

Zodra u het IP-adres van uw Raspberry Pi-apparaat kent, zou u met een webbrowser toegang moeten hebben tot de web-app vanaf elke computer in uw netwerk. Bezoek gewoon http://192.168.0.107:8080, en de web-app moet de temperatuurgegevens van de DS18B20 digitale thermometermodule weergeven.

Conclusie

In dit artikel heb je geleerd hoe je de DS18B20 digitale thermometermodule in Raspberry Pi gebruikt om de temperatuur te meten. Je hebt ook geleerd hoe je een Node maakt.js API voor het tonen van de temperatuurgegevens in een web-app, die toegang heeft tot de temperatuurgegevens van de API en deze weergeeft. Dit artikel zou u moeten helpen om aan de slag te gaan met Raspberry Pi-temperatuurbewaking met de DS18B20 digitale thermometermodule en IoT met Raspberry Pi.

Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...