Raspberry Pi

Monitorování teploty v Raspberry Pi

Monitorování teploty v Raspberry Pi


Monitorování teplot může být požadavkem v mnoha vašich projektech Raspberry Pi. Na Raspberry Pi je to relativně snadné a komponenty potřebné pro tento projekt nejsou příliš nákladné.Tento článek ukazuje, jak pomocí modulu digitálního teploměru DS18B20 sledovat teplotu pomocí Raspberry Pi. Článek také ukazuje, jak vytvořit webovou aplikaci pro zobrazení teploty.

Věci, které budete potřebovat:

K vyzkoušení příkladů v tomto článku budete potřebovat následující:

  1. Jednodeskový počítač Raspberry Pi
  2. Napájecí adaptér pro zařízení Raspberry Pi
  3. Karta microSD s nainstalovaným operačním systémem Raspberry Pi
  4. Síťové připojení na zařízení Raspberry Pi
  5. Nepájivá deska
  6. 3 ks propojovacích vodičů žena-žena
  7. Některé spojovací vodiče muž-muž
  8. Rezistor 10k
  9. Modul digitálního teploměru DS18B20

Připojení digitálního teploměru DS18B20

Pokud držíte digitální teploměr DS18B20, jak je znázorněno na obrázku níže, první kolík bude uzemněn (GND), druhý kolík bude DATA, a třetí pin bude VCC.

Kruhový diagram

Schéma zapojení teplotního monitoru je zobrazeno na obrázku níže.

Tady PIN2 / 5V zařízení Raspberry Pi by mělo být připojeno k PIN3 / VCC modulu digitálního teploměru.

The PIN7 / GPIO4 zařízení Raspberry Pi by mělo být připojeno k PIN2 / DATA modulu digitálního teploměru.

The PIN9 / GND zařízení Raspberry Pi by mělo být připojeno k PIN1 / GND modulu digitálního teploměru.

A 10kΩ rezistor by měly být spojeny mezi PIN2 a PIN3 modulu digitálního teploměru.

Měli byste držet Raspberry Pi, jak je znázorněno na obrázku níže. Potom bude špička vlevo nahoře PIN1. Špendlík hned vedle PIN1 bude PIN2. Pak, pokud se posunete vpřed o jeden řádek, bude levý PIN3 a ten pravý bude PIN4, a tak dále.

Jakmile připojíte všechny komponenty k vašemu zařízení Raspberry Pi, mělo by to vypadat nějak takto:

Podívejte se blíže na to, jak jsem umístil komponenty na prkénko.

Jakmile připojíte všechny komponenty k vašemu zařízení Raspberry Pi, zapněte zařízení Raspberry Pi. Poté se připojte k vašemu zařízení Raspberry Pi přes VNC nebo SSH.

Čtení údajů o teplotě z digitálního teploměru DS18B20

Modul teploměru DS18B20 používá 1vodičový komunikační protokol k odesílání dat na Raspberry Pi. Ve výchozím nastavení není 1vodičové rozhraní povoleno. Rozhraní můžete snadno povolit z konfiguračního nástroje Raspberry Pi.

Chcete-li povolit 1vodičové rozhraní, spusťte raspi-config s následujícím příkazem:

$ sudo raspi-config

Vybrat Možnosti propojení a stiskněte .

Vybrat 1-vodič a stiskněte .

Vybrat a stiskněte .

lis .

Chcete-li vystoupit z raspi-config nástroj, stiskněte .

Aby se změny projevily, restartujte Raspberry Pi následujícím způsobem:

$ sudo restart

Chcete-li zkontrolovat, zda w1_gpio a w1_therm načteny moduly jádra, spusťte následující příkaz:

$ sudo lsmod | grep w1

Pokud z nějakého důvodu, w1_therm modul není načten, můžete jej ručně načíst pomocí následujícího příkazu:

$ sudo modprobe w1_therm

Jakmile povolíte 1-drátová komunikace a naložil w1_therm modul, nové zařízení (28-00000ba693e9, v mém případě) by měl být uveden v / sys / bus / w1 / zařízení adresář, jak vidíte na následujícím obrázku.

$ ls / sys / bus / w1 / zařízení /

Přejděte do nového adresáře následujícím způsobem:

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

Měli byste najít teplota soubor v adresáři, jak vidíte na obrázku níže.

$ ls -lh

The teplota soubor je soubor ve formátu prostého textu. Údaje o teplotě můžete číst pomocí kočka příkaz takto:

$ teplota kočky

Jak vidíte, údaje o teplotě jsou vytištěny na konzole. Tady, 30375 prostředek 30.375 ° C.

Můžete použít programovací jazyk, například Python nebo Node.js, analyzovat tato data o teplotě a použít je ve vaší aplikaci. V další části tohoto článku vám ukážu, jak to udělat.

Chcete-li analyzovat údaje o teplotě pomocí programovacího jazyka, budete potřebovat absolutní cestu k teplota soubor. Najdete to pomocí readlink příkaz takto:

$ readlink -f teplota

Vytvořte webovou aplikaci pro zobrazení údajů o teplotě:

V této části se naučíte, jak analyzovat údaje o teplotě z modulu teploměru DS18B20 a zobrazit je ve webové aplikaci.

V tomto příkladu vytvořím API, které bude analyzovat údaje o teplotě z modulu teploměru DS18B20, ke kterému lze přistupovat z API. Také vytvořím webovou aplikaci, která načte data o teplotě z API a pěkně je zobrazí. Použiji Uzel.js programovací jazyk. Kódy se nahrávají do mého úložiště GitHub shovon8 / ds18b20-raspberrypi-api. Možná budete chtít zkontrolovat, zda máte potíže s kopírováním a vložením kódů z tohoto článku.

Uzel.js není ve výchozím nastavení nainstalován na Raspberry Pi OS. Je však k dispozici v oficiálním úložišti balíků operačního systému Raspberry Pi. Node můžete snadno nainstalovat.js z úložiště balíčků Raspberry Pi OS.

Nejprve aktualizujte mezipaměť úložiště balíčků APT pomocí následujícího příkazu:

$ sudo apt aktualizace

Dále nainstalujte Node.js a NPM s následujícím příkazem:

$ sudo apt install nodejs npm

Instalaci potvrďte stisknutím Y a poté stiskněte .

Správce balíků APT stáhne a nainstaluje všechny požadované balíčky. Dokončení může chvíli trvat.

V tomto okamžiku, Node.JS a NPM by měly být nainstalovány.

Once Node.js a NPM jsou nainstalovány, zkontrolujte, zda uzel a npm příkazy jsou k dispozici následovně:

$ node --verze
$ npm - verze

Upgradujte NPM pomocí následujícího příkazu:

$ sudo npm install --global npm

NPM by měl být upgradován.

Jak vidíte, NPM byl aktualizován z verze 5.8.0 do verze 6.14.8.

$ uzel - verze $ npm - verze

Teď ten Uzel.js a NPM jsou nainstalovány, vytvořte nový adresář projektu ~ / ds18b20, jak následuje:

$ mkdir -v ~ / ds18b20

Přejděte na ~ / ds18b20 adresář takto:

$ cd ~ / ds18b20

Vytvořte prázdný balík.JSON soubor s následujícím příkazem:

$ npm zahájení - rok

Nainstalujte Vyjádřit.js knihovna pro projekt s následujícím příkazem:

$ npm instalace - uložit expres

Express.Knihovna js by nyní měla být nainstalována.

Vytvořte nový soubor serveru.js v adresáři projektu takto:

$ nano server.js

Zadejte následující řádky kódů do serveru.js soubor.

let express = require ('express');
ať fs = require ('fs');
let server = express ();
const PORT = 8080;
const WEBROOT = './veřejnost';
serveru.get ('/', vyjádřit.statický (WEBROOT));
serveru.get ('/ temperature', (req, res) =>
let tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
nechte teplotu = fs.readFileSync (tempDataPath, encoding: 'utf8', flag: 'r') / 1000;
res.json (teplota, rangeStart: -55, rangeEnd: 125);
);
serveru.poslouchat (PORT, () =>
řídicí panel.log ('server běží na portu $ PORT');
);

Po dokončení stiskněte + X následován Y a pro uložení serveru.soubor js.

Zde se importuje řádek 1 vyjádřit, a řádek 2 importuje fs modul.

Řádek 4 inicializuje expres.

Řádky 6 a 7 definují PŘÍSTAV a WEBROOT konstantní proměnné. API a webový server poběží na PŘÍSTAV (který je 8080, v tomto článku) a webový server bude poskytovat statický obsah z WEBROOT (který je veřejnost/ adresář v adresáři projektu v tomto článku).

Řádek 9 se používá ke konfiguraci expresu, aby sloužil statickému obsahu z WEBROOT.

Řádky 11-15 definují koncový bod API /teplota, který bude použit k získání údajů o teplotě do formátu JSON.

V řádku 12 je tempDataPath proměnná drží absolutní cestu k teplota soubor modulu digitálního teploměru DS18B20, který je uveden v předchozí části tohoto článku.

V řádku 13 se údaje o teplotě načítají z teplota soubor pomocí uzlu.js fs modul a údaje o teplotě jsou uloženy v teplota proměnná.

V řádku 14 jsou data o teplotě vytištěna ve formátu JSON. Modul digitálního teploměru DS18B20 může měřit mezi teplotami -55 ° C až 125 ° C. Přidal jsem, že ve výstupu JSON pomocí rangeStart a rangeEnd vlastnosti.

Nakonec řádek 17-19 spustí API a webový server PŘÍSTAV (který je 8080, v tomto článku).

Vytvořit veřejnost/ adresář v adresáři projektu, a to následovně:

$ mkdir -v veřejné

Spusťte serveru.js program s následujícím příkazem:

$ uzel server.js

Server by měl běžet na portu 8080.

K údajům o teplotě modulu teploměru DS18B20 máte přístup z /teplota koncový bod API.

Chcete-li otestovat, zda můžete získat údaje o teplotě z API, spusťte kučera, jak následuje:

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

Jak vidíte, údaje o teplotě jsou na konzole vytištěny ve formátu JSON. API tedy funguje.

lis + C zastavit server.

Nyní vytvořím webovou stránku, která požádá server API o údaje o teplotě a pěkně ji zobrazí na stránce. Údaje o teplotě budou aktualizovány každých 5 sekund.

Vytvoř nový index.html soubor v veřejnost/ adresář projektu takto:

$ nano public / index.html

Zadejte následující řádky kódů do index.html soubor.




Monitor teploty







00.00 ° C


Aktualizace teploty každých 5 sekund



Po dokončení stiskněte + X následován Y a uložit index.html soubor.

Soubor HTML index.html je snadno pochopitelné. Je to formát, ve kterém se ve webové aplikaci zobrazí údaje o teplotě.

Zde se řádky 53-55 používají k zobrazení pruhu postupu a řádky 57-60 se používají k zobrazení teploty.

Řádky 5-49 se používají k pěknému zdobení webové aplikace pomocí CSS (kaskádový styl).

Řádky 62-109 se používají k zajištění funkčnosti webové aplikace. Kódy JavaScript se používají k animaci ukazatele průběhu, načítání údajů o teplotě z API a zobrazování informací.

Linka 63 provozuje hlavní po načtení webové aplikace do prohlížeče.

The hlavní funkce je velmi dlouhá. Rozkládá se od řádku 65 do řádku 108. Uvnitř hlavní funkce máme několik dalších funkcí, například getTemperature, updateTemperature, updateProgress, aplikace, a Start.

The updateProgress funkce, na řádcích 83-86, bere procento pokroku jako vstup a aktualizuje ukazatel průběhu.

The updateTemperature funkce na řádcích 77-81 bere údaje o teplotě jako vstup a aktualizuje webovou aplikaci o údaje o teplotě.

The getTemperature funkce na řádcích 66-75 provede požadavek na /teplota koncový bod API a získá údaje o teplotě. Jakmile jsou data přijata, volá updateTemperature funkce s daty. The updateTemperature funkce pak aktualizuje webovou aplikaci o nové údaje o teplotě.

The aplikace funkce na řádcích 88-99 animuje ukazatel průběhu a každých 5 sekund požaduje údaje o teplotě z API.

The Start funkce, na řádcích 101-104, spustí webovou aplikaci.

Otevři balík.JSON soubor s nano textovým editorem následujícím způsobem:

$ nano balíček.JSON

Změna hlavní na serveru.js a přidejte nový skript sloužit v skripty sekce, jak je vyznačeno na snímku obrazovky níže.

Po dokončení stiskněte + X následován Y a uložit balík.JSON soubor.

Nyní, když je vše připraveno, spusťte webovou aplikaci a rozhraní API pomocí následujícího příkazu:

$ npm běh sloužit

Server by měl běžet na portu 8080.

Nyní otevřete webový prohlížeč na svém zařízení Raspberry Pi a navštivte http: // localhost: 8080. Údaje o teplotě z modulu digitálního teploměru DS18B20 by se měly zobrazovat ve vašem webovém prohlížeči, jak vidíte na následujícím obrázku.

Údaje o teplotě by se měly aktualizovat každých 5 sekund.

Jak vidíte, teplota se mění každých 5 sekund.

Pokud chcete k webové aplikaci přistupovat z jiného počítače ve vaší síti, budete potřebovat znát IP adresu vašeho zařízení Raspberry Pi.

IP adresu vašeho zařízení Raspberry Pi najdete pomocí následujícího příkazu:

$ hostname -I

Jak vidíte, IP adresa mého zařízení Raspberry Pi je 192.168.0.107. Bude to pro vás jiné. Nezapomeňte tedy od nynějška vyměnit adresu IP.

Jakmile znáte IP adresu vašeho zařízení Raspberry Pi, měli byste mít přístup k webové aplikaci z libovolného počítače v síti pomocí webového prohlížeče. Stačí navštívit http: // 192.168.0.107: 8080, a webová aplikace by měla zobrazovat údaje o teplotě z modulu digitálního teploměru DS18B20.

Závěr

V tomto článku jste se naučili používat modul digitálního teploměru DS18B20 v Raspberry Pi k měření teploty. Také jste se naučili, jak vytvořit uzel.js API pro zobrazení údajů o teplotě ve webové aplikaci, která přistupuje k údajům o teplotě z API a zobrazuje je. Tento článek by vám měl pomoci začít s monitorováním teploty Raspberry Pi pomocí modulu digitálního teploměru DS18B20 a IoT s Raspberry Pi.

Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...
Hry Užitečné nástroje pro hráče Linuxu
Užitečné nástroje pro hráče Linuxu
Pokud rádi hrajete hry na Linuxu, je pravděpodobné, že jste ke zlepšení herního zážitku použili aplikace a nástroje jako Wine, Lutris a OBS Studio. Kr...
Hry HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
Mnoho vývojářů a vydavatelů her přichází s HD remasterem starých her, aby prodloužili životnost franšízy, prosím fanoušky, kteří požadují kompatibilit...