A hőmérséklet figyelése számos Raspberry Pi projektben követelmény lehet. Raspberry Pi-ben viszonylag könnyű elvégezni, és a projekthez szükséges alkatrészek nem túl költségesek.Ez a cikk bemutatja, hogyan használhatja a DS18B20 digitális hőmérő modult a hőmérséklet mérésére a Raspberry Pi segítségével. A cikk azt is bemutatja, hogyan hozhat létre webalkalmazást a hőmérséklet megjelenítésére.
Amire szüksége lesz:
A cikk példáinak kipróbálásához a következőkre lesz szükség:
- Egy Raspberry Pi egykártyás számítógép
- Hálózati adapter a Raspberry Pi készülékhez
- Egy microSD kártya Raspberry Pi operációs rendszerrel
- Hálózati kapcsolat a Raspberry Pi eszközön
- Egy kenyérdeszka
- 3 db nő-nő összekötő vezeték
- Néhány férfi-férfi összekötő vezeték
- 10k-os ellenállás
- DS18B20 digitális hőmérő modul
DS18B20 digitális hőmérő kivezetések
Ha a DS18B20 digitális hőmérőt az alábbi képen látható módon tartja, az első csap lesz köszörülve (GND), a második csap lesz ADAT, és a harmadik csap lesz VCC.
Kördiagramm
A hőmérséklet-monitor kapcsolási rajzát az alábbi kép mutatja.
Itt a PIN2 / 5V a Raspberry Pi eszközének csatlakoznia kell a PIN3 / VCC a digitális hőmérő modul.
A PIN7 / GPIO4 A Raspberry Pi eszközének csatlakoznia kell a PIN2 / ADATOK a digitális hőmérő modul.
A PIN9 / GND a Raspberry Pi eszközének csatlakoznia kell a PIN1 / GND a digitális hőmérő modul.
A 10kΩ ellenállás között kell kapcsolódni PIN2 és PIN3 a digitális hőmérő modul.
Tartsa a Raspberry Pi-t az alábbi képen látható módon. Ezután a bal felső csap lesz PIN1. A csap a mellett PIN1 lesz PIN2. Majd ha egy sort előre lép, akkor a bal lesz PIN3 és a megfelelő lesz PIN4, stb.
Miután az összes alkatrészt csatlakoztatta a Raspberry Pi eszközhöz, annak kb
Nézze meg közelebbről, hogyan helyeztem el az alkatrészeket a kenyérlapon.
Miután az összes alkatrészt csatlakoztatta a Raspberry Pi eszközhöz, kapcsolja be a Raspberry Pi eszközt. Ezután csatlakozzon a Raspberry Pi eszközhöz VNC vagy SSH segítségével.
Hőmérséklet adatok leolvasása a DS18B20 digitális hőmérőből
A DS18B20 hőmérő modul az egyvezetékes kommunikációs protokollt használja az adatok elküldéséhez a Raspberry Pi-hez. Alapértelmezés szerint az 1 vezetékes interfész nincs engedélyezve. A felületet egyszerűen engedélyezheti a Raspberry Pi konfigurációs eszközből.
Az 1 vezetékes interfész engedélyezéséhez futtassa raspi-config a következő paranccsal:
$ sudo raspi-config
Válassza a lehetőséget Interfacing Options és nyomja meg
Válassza a lehetőséget 1-vezeték és nyomja meg
Válassza a lehetőséget
nyomja meg
Kilépés a raspi-config segédprogram, nyomja meg a gombot
A változások életbe lépéséhez indítsa újra a Raspberry Pi-t az alábbiak szerint:
$ sudo reboot
Annak ellenőrzésére, hogy a w1_gpio és w1_therm a kernelmodulok betöltődnek, futtassa a következő parancsot:
$ sudo lsmod | grep w1
Ha valamilyen oknál fogva az w1_therm A modul nincs betöltve, akkor manuálisan töltheti be a következő paranccsal:
$ sudo modprobe w1_therm
Miután engedélyezte 1 vezetékes kommunikáció és betöltötte a w1_therm modul, egy új eszköz (28-00000ba693e9, esetemben) fel kell sorolni a / sys / busz / w1 / eszközök könyvtárat, amint az az alábbi képernyőképen látható.
$ ls / sys / busz / w1 / eszközök /
Keresse meg az új könyvtárat az alábbiak szerint:
$ cd / sys / busz / w1 / devices / 28-00000ba693e9
Meg kellene találnia a hőfok fájlt a könyvtárban, amint az az alábbi képernyőképen látható.
$ ls -lh
A hőfok fájl egy egyszerű szöveges fájl. A hőmérsékleti adatokat a macska parancsot, az alábbiak szerint:
$ macska hőmérséklet
Mint látható, a hőmérsékleti adatok a konzolra vannak nyomtatva. Itt, 30375 eszközök 30.375 ° C.
Használhat programozási nyelvet, például Python vagy Node.js, hogy elemezze ezeket a hőmérsékleti adatokat, és felhasználja azokat az alkalmazásában. A cikk következő szakaszában megmutatom, hogyan kell ezt megtenni.
A hőmérsékleti adatok programozási nyelv segítségével történő elemzéséhez szükség lesz a hőfok fájl. Ezt megtalálhatja a readlink parancsot, az alábbiak szerint:
$ readlink -f hőmérséklet
Hozzon létre egy webalkalmazást a hőmérsékleti adatok megjelenítéséhez:
Ebben a szakaszban megtanulhatja, hogyan kell elemezni a hőmérsékleti adatokat a DS18B20 hőmérő modulból, és megjeleníteni egy webalkalmazásban.
Ebben a példában létrehozok egy API-t, amely elemzi a hőmérsékleti adatokat az API-ból elérhető DS18B20 hőmérő modulból. Létrehozok egy webalkalmazást is, amely beolvassa a hőmérsékleti adatokat az API-ból, és szépen megjeleníti azokat. A Csomópontot fogom használni.js programozási nyelv erre. A kódokat feltöltöttem a GitHub táromba: shovon8 / ds18b20-raspberrypi-api. Érdemes megnézni, ha problémái vannak a kódok másolásával és beillesztésével ebből a cikkből.
Csomópont.A js alapértelmezés szerint nincs telepítve a Raspberry Pi OS-re. De elérhető a Raspberry Pi OS hivatalos csomagtárában. Könnyedén telepítheti a Node-ot.js a Raspberry Pi OS csomagtárból.
Először frissítse az APT csomagtárház gyorsítótárát a következő paranccsal:
$ sudo apt frissítés
Ezután telepítse a Node-ot.js és NPM a következő paranccsal:
$ sudo apt install nodejs npm
A telepítés megerősítéséhez nyomja meg a gombot Y majd nyomja meg
Az APT csomagkezelő letölti és telepíti az összes szükséges csomagot. Eltarthat egy ideig, amíg elkészül.
Ezen a ponton Node.js és NPM kell telepíteni.
Egyszer Node.js és NPM telepítve van, ellenőrizze, hogy a csomópont és npm parancsok állnak rendelkezésre, az alábbiak szerint:
$ node --verzió$ npm - verzió
Frissítse az NPM-et a következő paranccsal:
$ sudo npm install - globális npm
Az NPM-et frissíteni kell.
Mint láthatja, az NPM az 5. verziótól frissült.8.0-tól a 6. verzióig.14.8.
$ node --version $ npm --version
Most az a Csomópont.A js és az NPM telepítve van, hozza létre az új projekt könyvtárat ~ / ds18b20, alábbiak szerint:
$ mkdir -v ~ / ds18b20
Navigáljon a ~ / ds18b20 könyvtárat, az alábbiak szerint:
$ cd ~ / ds18b20
Hozza létre az üreset csomag.json fájl a következő paranccsal:
$ npm init - y
Telepítse a Expressz.js könyvtár a projekthez a következő paranccsal:
$ npm install --save express
Az Express.A js könyvtárat most telepíteni kell.
Hozza létre az új fájlt szerver.js a projekt könyvtárban, az alábbiak szerint:
$ nano szerver.js
Írja be a következő kódsorokat a szerver.js fájl.
let express = igényelni ('express');legyen fs = igény ('fs');
let szerver = express ();
const PORT = 8080;
const WEBROOT = './nyilvános';
szerver.get ('/', express.statikus (WEBROOT));
szerver.get ('/ hőmérséklet', (req, res) =>
hagyja tempDataPath = '/ sys / busz / w1 / eszközök / 28-00000ba693e9 / hőmérséklet';
legyen hőmérséklet = fs.readFileSync (tempDataPath, encoding: 'utf8', flag: 'r') / 1000;
res.json (hőmérséklet, tartományStart: -55, tartományVég: 125);
);
szerver.hallgat (PORT, () =>
konzol.napló ('$ PORT porton futó kiszolgáló');
);
Ha végzett, nyomja meg a gombot
Itt az 1. sor importál Expressz, a 2. sor pedig a fs modul.
A 4. sor inicializálja az expresszt.
A 6. és 7. sor határozza meg a KIKÖTŐ és WEBROOT állandó változók, ill. Az API és a webszerver futni fog KIKÖTŐ (ami 8080, ebben a cikkben), és a webszerver a WEBROOT (ami a nyilvános/ ebben a cikkben a projekt könyvtárban).
A 9. sor az expressz konfigurálására szolgál a statikus tartalmak kiszolgálására WEBROOT.
A 11-15. Sor határozza meg az API végpontot /hőfok, amelyek felhasználásával a hőmérsékleti adatok JSON formátumba kerülnek.
A 12. sorban a tempDataPath változó tartja az abszolút utat a hőfok a DS18B20 digitális hőmérő modul fájlja, a cikk korábbi szakaszában látható.
A 13. sorban a hőmérsékleti adatokat a hőfok fájl a Csomópont használatával.js fs modul, és a hőmérsékleti adatokat a hőfok változó.
A 14. sorban a hőmérsékleti adatok JSON formátumban vannak kinyomtatva. A DS18B20 digitális hőmérő modul -55 ° C és 125 ° C közötti hőmérsékleteket képes mérni. Hozzátettem, hogy a JSON kimenetben a rangeStart és tartományVége tulajdonságait.
Végül a 17-19. Sor futtatja az API-t és a webszervert KIKÖTŐ (ami 8080, ebben a cikkben).
Hozzon létre egy nyilvános/ könyvtár a projekt könyvtárban, az alábbiak szerint:
$ mkdir -v public
Futtassa a szerver.js programot a következő paranccsal:
$ node szerver.js
A szervernek a porton kell futnia 8080.
A DS18B20 hőmérő modul hőmérsékleti adatait a /hőfok az API végpontja.
Futtassa a teszteléshez, hogy megkapja-e a hőmérsékleti adatokat az API-tól becsavar, alábbiak szerint:
$ curl -s http: // localhost: 8080 / hőmérséklet | json_ppMint látható, a hőmérsékleti adatok a konzolra JSON formátumban kerülnek kinyomtatásra. Tehát az API működik.
nyomja meg
Most létrehozok egy weboldalt, amely az API szervert kéri a hőmérsékleti adatokhoz, és szépen megjeleníti azokat az oldalon. A hőmérsékleti adatok 5 másodpercenként frissülnek.
Újat csinálni index.html fájl a nyilvános/ a projekt könyvtárát, az alábbiak szerint:
$ nano public / index.html
Írja be a következő kódsorokat a index.html fájl.
00.00 ° C
A hőmérséklet 5 másodpercenként frissül
Ha végzett, nyomja meg a gombot
A HTML fájl index.html könnyen érthető. Ez a formátum, amelyben a hőmérsékleti adatok megjelennek a webalkalmazásban.
Itt az előrehaladási sáv megjelenítésére az 53-55, az 57-60 pedig a hőmérséklet kijelzésére szolgál.
Az 5–49. Sorok a webalkalmazás szép díszítésére szolgálnak a CSS (Cascading Style Sheet) használatával.
A 62–109. Sorokat használják a webalkalmazás működőképessé tételére. A JavaScript kódokat a folyamatjelző sáv animálásához, a hőmérsékleti adatok lekéréséhez az API-ból és az információk megjelenítésére használják.
A 63-as vonal fut a fő- funkciót, amint a webalkalmazás betöltődik a böngészőbe.
A fő- funkció nagyon hosszú. A 65-től a 108-ig terjed. A fő funkción belül van néhány más funkciónk is, például getTemperature, updateTemperature, updateProgress, kb, és Rajt.
A updateProgress függvény, a 83–86. sorokban az előrehaladás százalékát veszi bemenetként, és frissíti a folyamatjelző sávot.
A updateTemperature függvény a 77–81. sorokban veszi a hőmérsékleti adatokat bemenetként, és frissíti a webalkalmazást a hőmérsékleti adatokkal.
A getTemperature függvény a 66-75. sorokban kérést küld a /hőfok az API végpontja, és megkapja a hőmérsékleti adatokat. Miután megkapta az adatokat, felhívja a updateTemperature függvény az adatokkal. A updateTemperature funkció ezután frissíti a webalkalmazást az új hőmérsékleti adatokkal.
A kb funkció a 88-99. sorokban animálja a folyamatjelző sávot, és 5 másodpercenként kéri a hőmérsékleti adatokat az API-tól.
A Rajt függvény a 101–104. sorokban elindítja a webalkalmazást.
Nyissa meg a csomag.json fájl a nano szövegszerkesztővel az alábbiak szerint:
$ nano csomag.json
változás fő- nak nek szerver.js és adja hozzá az új szkriptet szolgál ban,-ben szkriptek szakasz, az alábbi képernyőképen látható módon.
Ha végzett, nyomja meg a gombot
Most, hogy minden készen van, futtassa a webalkalmazást és az API-t a következő paranccsal:
$ npm futtatás
A szervernek a 8080-as porton kell futnia.
Most nyisson meg egy webböngészőt a Raspberry Pi eszközön, és keresse fel a http: // localhost: 8080 webhelyet. A DS18B20 digitális hőmérő modul hőmérsékleti adatait meg kell jeleníteni a böngészőben, amint az az alábbi képernyőképen látható.
A hőmérsékleti adatokat 5 másodpercenként frissíteni kell.
Mint látható, a hőmérséklet 5 másodpercenként változik.
Ha a hálózaton lévő másik számítógépről szeretne hozzáférni a webalkalmazáshoz, akkor tudnia kell a Raspberry Pi készülékének IP-címét.
A Raspberry Pi eszköz IP-címét a következő paranccsal találhatja meg:
$ hostname -IMint látható, a Raspberry Pi készülékem IP-címe 192.168.0.107. Ez más lesz számodra. Tehát mindenképpen cserélje le az IP-címet.
Miután megismerte a Raspberry Pi készülékének IP-címét, képesnek kell lennie arra, hogy a böngésző segítségével a hálózat bármely számítógépről hozzáférjen a webalkalmazáshoz. Csak keresse fel a http: // 192 oldalt.168.0.107: 8080, és a webalkalmazásnak meg kell jelenítenie a DS18B20 digitális hőmérő modul hőmérsékleti adatait.
Következtetés
Ebben a cikkben megtanulta, hogyan kell használni a Raspberry Pi DS18B20 digitális hőmérő modulját a hőmérséklet mérésére. Azt is megtanulta, hogyan kell létrehozni egy csomópontot.js API a hőmérsékleti adatok megjelenítésére egy webalkalmazásban, amely hozzáfér a hőmérsékleti adatokhoz az API-ból és megjeleníti azokat. Ez a cikk segít a Raspberry Pi hőmérséklet-monitorozásának elkezdésében a DS18B20 digitális hőmérő modullal és az IoT a Raspberry Pi készülékkel.