Malinový koláč

Monitorovanie teploty v Raspberry Pi

Monitorovanie teploty v Raspberry Pi


Monitorovanie teplôt môže byť požiadavkou v mnohých vašich projektoch Raspberry Pi. Na Raspberry Pi sa to dá robiť pomerne ľahko a komponenty potrebné pre tento projekt nie sú príliš nákladné.Tento článok vám ukáže, ako používať modul digitálneho teplomeru DS18B20 na sledovanie teploty pomocou Raspberry Pi. Tento článok tiež ukazuje, ako vytvoriť webovú aplikáciu na zobrazovanie teploty.

Veci, ktoré budete potrebovať:

Ak chcete vyskúšať príklady v tomto článku, budete potrebovať toto:

  1. Jednodeskový počítač Raspberry Pi
  2. Napájací adaptér pre zariadenie Raspberry Pi
  3. Karta microSD s nainštalovaným operačným systémom Raspberry Pi OS
  4. Sieťové pripojenie na zariadení Raspberry Pi
  5. Nepálska doska
  6. 3 ks spojovacích vodičov žena-žena
  7. Niektoré spojovacie vodiče muž-muž
  8. Rezistor 10k
  9. Modul digitálneho teplomeru DS18B20

Pripojenie digitálneho teplomeru DS18B20

Ak držíte digitálny teplomer DS18B20, ako je znázornené na obrázku nižšie, prvý kolík bude uzemnený (GND), druhý špendlík bude ÚDAJE, a tretí špendlík bude VCC.

Schéma zapojenia

Schéma zapojenia teplotného monitora je znázornená na obrázku nižšie.

Tu je PIN2 / 5V zariadenia Raspberry Pi by mali byť pripojené k PIN3 / VCC modulu digitálneho teplomeru.

The PIN7 / GPIO4 zariadenia Raspberry Pi by mali byť pripojené k PIN2 / DATA modulu digitálneho teplomeru.

The PIN9 / GND zariadenia Raspberry Pi by mali byť pripojené k PIN1 / GND modulu digitálneho teplomeru.

A 10kΩ rezistor by mali byť spojené medzi PIN2 a PIN3 modulu digitálneho teplomeru.

Mali by ste držať Raspberry Pi tak, ako je to znázornené na obrázku nižšie. Potom bude špendlík vľavo hore PIN1. Špendlík hneď vedľa PIN1 bude PIN2. Potom, ak sa posuniete vpred o jeden rad, bude ľavý PIN3 a ten pravý bude PIN4, a tak ďalej.

Po pripojení všetkých komponentov k zariadeniu Raspberry Pi by malo vyzerať asi takto:

Pozrime sa bližšie na to, ako som umiestnil komponenty na nepájivú dosku.

Po pripojení všetkých komponentov k zariadeniu Raspberry Pi zapnite zariadenie Raspberry Pi. Potom sa pripojte k svojmu zariadeniu Raspberry Pi cez VNC alebo SSH.

Čítanie údajov o teplote z digitálneho teplomeru DS18B20

Modul teplomeru DS18B20 používa na prenos údajov na Raspberry Pi 1-vodičový komunikačný protokol. Štandardne nie je 1-vodičové rozhranie povolené. Rozhranie môžete ľahko povoliť z konfiguračného nástroja Raspberry Pi.

1-vodičové rozhranie povolíte spustením raspi-config nasledujúcim príkazom:

$ sudo raspi-config

Vyberte Možnosti prepojenia a stlačte .

Vyberte 1-drôt a stlačte .

Vyberte a stlačte .

Stlačte .

Ak chcete vyjsť z raspi-config nástroj, stlačte .

Aby sa zmeny prejavili, reštartujte počítač Raspberry Pi nasledovne:

$ sudo reštart

Ak chcete skontrolovať, či w1_gpio a w1_therm moduly jadra sú načítané, spustite nasledujúci príkaz:

$ sudo lsmod | grep w1

Ak z nejakého dôvodu, w1_therm modul sa nenačíta, môžete ho manuálne načítať pomocou nasledujúceho príkazu:

$ sudo modprobe w1_therm

Po povolení 1-drôtová komunikácia a naložil w1_therm modul, nové zariadenie (28-00000ba693e9, v mojom prípade) by mali byť uvedené v zozname / sys / bus / w1 / zariadenia adresár, ako vidíte na snímke obrazovky nižšie.

$ ls / sys / bus / w1 / zariadenia /

Prejdite do nového adresára takto:

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

Mali by ste nájsť a teplota súbor v adresári, ako vidíte na snímke obrazovky nižšie.

$ ls -lh

The teplota súbor je súbor vo formáte obyčajného textu. Údaje o teplote môžete načítať pomocou kat príkaz:

$ teplota mačky

Ako vidíte, údaje o teplote sa tlačia na konzole. Tu, 30375 znamená 30.375 ° C.

Môžete použiť programovací jazyk, napríklad Python alebo Node.js, analyzovať tieto údaje o teplote a použiť ich vo vašej aplikácii. V ďalšej časti tohto článku vám ukážem, ako na to.

Ak chcete analyzovať údaje o teplote pomocou programovacieho jazyka, budete potrebovať absolútnu cestu k teplota spis. Nájdete to pomocou readlink príkaz:

$ readlink -f teplota

Vytvorte webovú aplikáciu na zobrazenie údajov o teplote:

V tejto časti sa dozviete, ako analyzovať údaje o teplote z modulu teplomeru DS18B20 a zobraziť ich vo webovej aplikácii.

V tomto príklade vytvorím API, ktoré bude analyzovať údaje o teplote z modulu teplomeru DS18B20, ku ktorému je možné získať prístup z API. Vytvorím tiež webovú aplikáciu, ktorá načíta údaje o teplote z API a pekne ich zobrazí. Použijem Uzol.js programovací jazyk. Kódy sa nahrávajú do môjho úložiska GitHub shovon8 / ds18b20-raspberrypi-api. Možno to budete chcieť skontrolovať, ak máte ťažkosti s kopírovaním a vkladaním kódov z tohto článku.

Uzol.js nie je v predvolenom nastavení nainštalovaný na Raspberry Pi OS. Je však k dispozícii v oficiálnom úložisku balíkov systému Raspberry Pi OS. Node môžete ľahko nainštalovať.js z úložiska balíkov Raspberry Pi OS.

Najskôr aktualizujte medzipamäť úložiska balíkov APT pomocou nasledujúceho príkazu:

$ sudo apt aktualizácia

Ďalej nainštalujte uzol.js a NPM s nasledujúcim príkazom:

$ sudo apt nainštalovať nodejs npm

Inštaláciu potvrdíte stlačením Y a potom stlačte .

Správca balíkov APT stiahne a nainštaluje všetky požadované balíčky. Dokončenie môže chvíľu trvať.

V tomto okamihu Uzol.js a NPM by mali byť nainštalované.

Raz Uzol.js a NPM sú nainštalované, skontrolujte, či uzol a npm príkazy sú k dispozícii nasledovne:

$ node --verzia
$ npm - verzia

Aktualizujte NPM pomocou nasledujúceho príkazu:

$ sudo npm install --global npm

NPM by sa mal upgradovať.

Ako vidíte, program NPM bol aktualizovaný z verzie 5.8.0 do verzie 6.14.8.

$ node --verzia $ npm --verzia

Teraz ten Uzol.js a NPM sú nainštalované, vytvorte nový adresár projektu ~ / ds18b20, nasledovne:

$ mkdir -v ~ / ds18b20

Prejdite na ikonu ~ / ds18b20 adresár takto:

$ cd ~ / ds18b20

Vytvorte prázdne miesto balíček.json súbor s nasledujúcim príkazom:

$ npm zač

Nainštalujte expresné.js knižnica pre projekt s nasledujúcim príkazom:

$ npm inštalácia - uložiť expres

Express.Teraz by mala byť nainštalovaná knižnica js.

Vytvorte nový súbor server.js v adresári projektu takto:

$ nano server.js

Zadajte nasledujúce riadky kódov do server.js spis.

let express = require ('express');
nech fs = require ('fs');
nech server = express ();
const PORT = 8080;
const WEBROOT = './ public “;
server.get ('/', expresné.statický (WEBROOT));
server.get ('/ temperature', (req, res) =>
let tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
nech teplota = fs.readFileSync (tempDataPath, encoding: 'utf8', flag: 'r') / 1000;
res.json (temperature, rangeStart: -55, rangeEnd: 125);
);
server.počúvať (PORT, () =>
konzola.log ('server bežiaci na porte $ PORT');
);

Po dokončení stlačte + X nasledovaný Y a uložte server.súbor js.

Sem sa importuje riadok 1 expresné, a riadok 2 dováža fs modul.

Riadok 4 inicializuje expres.

Riadky 6 a 7 definujú PRÍSTAV a WEBROOT konštantné premenné, resp. Rozhranie API a webový server budú fungovať ďalej PRÍSTAV (ktorý je 8080, v tomto článku) a webový server bude poskytovať statický obsah z WEBROOT (Ktoré je verejné / v rámci adresára projektu v tomto článku).

Riadok 9 sa používa na konfiguráciu služby Express na poskytovanie statického obsahu z WEBROOT.

Riadky 11-15 definujú koncový bod API / teplota, ktoré sa použijú na získanie údajov o teplote do formátu JSON.

V riadku 12 sa tempDataPath premenná drží absolútnu cestu k teplota súbor modulu digitálneho teplomeru DS18B20, zobrazený v predchádzajúcej časti tohto článku.

V riadku 13 sa údaje o teplote načítajú z teplota súbor pomocou uzla.js fs modul a údaje o teplote sú uložené v teplota premenná.

V riadku 14 sa údaje o teplote vytlačia vo formáte JSON. Modul digitálneho teplomeru DS18B20 môže merať medzi teplotami -55 ° C až 125 ° C. Pridal som, že vo výstupe JSON pomocou rangeStart a rangeEnd vlastnosti.

Nakoniec riadok 17-19 spustí API a webový server PRÍSTAV (ktorý je 8080, v tomto článku).

Vytvor verejné / v adresári projektu nasledovne:

$ mkdir -v verejné

Spustiť server.js program s nasledujúcim príkazom:

$ uzlový server.js

Server by mal bežať na porte 8080.

K údajom o teplote modulu teplomeru DS18B20 máte prístup z adresy / teplota koncový bod API.

Ak chcete otestovať, či môžete získať údaje o teplote z rozhrania API, spustite príkaz zvlnenie, nasledovne:

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

Ako vidíte, údaje o teplote sa na konzole tlačia vo formáte JSON. Takže API funguje.

Stlačte + C zastaviť server.

Teraz vytvorím webovú stránku, ktorá bude požadovať od servera API údaje o teplote a pekne ich zobrazí na stránke. Údaje o teplote sa budú aktualizovať každých 5 sekúnd.

Vytvorte nový index.html súbor v verejné / adresár projektu, a to nasledovne:

$ nano public / index.html

Zadajte nasledujúce riadky kódov do index.html spis.




Monitor teploty







00.00 ° C


Aktualizácia teploty každých 5 sekúnd



Po dokončení stlačte + X nasledovaný Y a zachrániť index.html spis.

Súbor HTML index.html je ľahko pochopiteľné. Je to formát, v ktorom sa budú údaje o teplote zobrazovať vo webovej aplikácii.

Tu sa riadky 53-55 používajú na zobrazenie pruhu postupu a riadky 57-60 sa používajú na zobrazenie teploty.

Riadky 5–49 sa používajú na pekné zdobenie webovej aplikácie pomocou CSS (kaskádová štýlová tabuľka).

Riadky 62 - 109 sa používajú na zabezpečenie funkčnosti webovej aplikácie. Kódy JavaScript sa používajú na animáciu indikátora priebehu, načítanie údajov o teplote z API a zobrazenie informácií.

Linka 63 premáva na hlavný funkcia sa spustí po načítaní webovej aplikácie v prehliadači.

The hlavný funkcia je veľmi dlhá. Rozprestiera sa od linky 65 po linku 108. Vo vnútri hlavnej funkcie máme niektoré ďalšie funkcie, ako napr getTemperature, updateTemperature, updateProgress, aplikácia, a začať.

The updateProgress funkcia, na riadkoch 83-86, berie percento pokroku ako vstup a aktualizuje indikátor priebehu.

The updateTemperature funkcia na riadkoch 77-81 berie údaje o teplote ako vstup a aktualizuje webovú aplikáciu o údaje o teplote.

The getTemperature Funkcia v riadkoch 66-75 zadá požiadavku na / teplota koncový bod API a získa údaje o teplote. Akonáhle sú dáta prijaté, zavolá na updateTemperature funkcia s údajmi. The updateTemperature Táto funkcia potom aktualizuje webovú aplikáciu o nové údaje o teplote.

The aplikácia funkcia na riadkoch 88-99 animuje indikátor priebehu a každých 5 sekúnd žiada údaje o teplote z API.

The začať funkcia, na riadkoch 101-104, spustí webovú aplikáciu.

Otvor balíček.json súbor s nano textovým editorom nasledovne:

$ nano balíček.json

Zmena hlavný do server.js a pridajte nový skript slúžiť v skriptov sekcia, ako je vyznačené na snímke obrazovky nižšie.

Po dokončení stlačte + X nasledovaný Y a zachrániť balíček.json spis.

Teraz, keď je všetko pripravené, spustite webovú aplikáciu a API pomocou nasledujúceho príkazu:

$ npm beh slúži

Server by mal bežať na porte 8080.

Teraz otvorte webový prehliadač na svojom zariadení Raspberry Pi a navštívte stránku http: // localhost: 8080. Údaje o teplote z modulu digitálneho teplomeru DS18B20 by sa mali zobrazovať vo vašom webovom prehliadači, ako vidíte na snímke obrazovky nižšie.

Údaje o teplote by sa mali aktualizovať každých 5 sekúnd.

Ako vidíte, teplota sa mení každých 5 sekúnd.

Ak chcete získať prístup k webovej aplikácii z iného počítača v sieti, musíte poznať adresu IP vášho zariadenia Raspberry Pi.

IP adresu vášho zariadenia Raspberry Pi nájdete pomocou nasledujúceho príkazu:

$ hostname -I

Ako vidíte, adresa IP môjho zariadenia Raspberry Pi je 192.168.0.107. Toto bude pre vás iné. Nezabudnite teda odteraz nahrádzať adresu IP.

Keď poznáte adresu IP vášho zariadenia Raspberry Pi, mali by ste mať prístup k webovej aplikácii z ľubovoľného počítača v sieti pomocou webového prehliadača. Stačí navštíviť stránku http: // 192.168.0.107: 8080, a webová aplikácia by mala zobrazovať údaje o teplote z modulu digitálneho teplomeru DS18B20.

Záver

V tomto článku ste sa naučili, ako používať modul digitálneho teplomeru DS18B20 v Raspberry Pi na meranie teploty. Dozvedeli ste sa tiež, ako vytvoriť uzol.js API na zobrazovanie údajov o teplote vo webovej aplikácii, ktorá pristupuje k údajom o teplote z API a zobrazuje ich. Tento článok by vám mal pomôcť začať s monitorovaním teploty Raspberry Pi pomocou modulu digitálneho teplomeru DS18B20 a IoT s Raspberry Pi.

Hry Ako vyvíjať hru v systéme Linux
Ako vyvíjať hru v systéme Linux
Pred desiatimi rokmi by len málo používateľov Linuxu predpovedalo, že ich obľúbený operačný systém bude jedného dňa populárnou hernou platformou pre k...
Hry Open source porty komerčných herných strojov
Open source porty komerčných herných strojov
Na hranie starých i niektorých z nedávnych herných titulov je možné využiť bezplatné hry s otvoreným zdrojom a multiplatformové herné enginy. V tomto ...
Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...