Raspberry Pi

Spremljanje temperature v Raspberry Pi

Spremljanje temperature v Raspberry Pi


Nadzor temperature je lahko zahteva pri mnogih projektih Raspberry Pi. To je razmeroma enostavno narediti v Raspberry Pi in komponente, potrebne za ta projekt, niso predrage.V tem članku je razloženo, kako uporabljati modul digitalnega termometra DS18B20 za spremljanje temperature s pomočjo Raspberry Pi. Članek tudi prikazuje, kako ustvariti spletno aplikacijo za prikaz temperature.

Stvari, ki jih boste potrebovali:

Če želite preizkusiti primere v tem članku, boste potrebovali naslednje:

  1. Računalnik z eno ploščo Raspberry Pi
  2. Napajalnik za napravo Raspberry Pi
  3. Kartica microSD z nameščenim OS Raspberry Pi
  4. Omrežna povezljivost na napravi Raspberry Pi
  5. Breadboard
  6. 3 kosi ženskih ženskih povezovalnih žic
  7. Nekaj ​​povezovalnih žic med moškimi in moškimi
  8. 10k upor
  9. Modul digitalnega termometra DS18B20

DS18B20 Digitalni termometri Pinouts

Če držite digitalni termometer DS18B20, kot je prikazano na spodnji sliki, bo prvi zatič ozemljen (GND), drugi pin bo PODATKI, in tretji zatič bo VCC.

Shema vezja

Shema vezja temperaturnega monitorja je prikazana na spodnji sliki.

Tukaj PIN2 / 5V naprave Raspberry Pi je treba priključiti na PIN3 / VCC modula digitalnega termometra.

The PIN7 / GPIO4 naprave Raspberry Pi je treba priključiti na PIN2 / PODATKI modula digitalnega termometra.

The PIN9 / GND naprave Raspberry Pi je treba priključiti na PIN1 / GND modula digitalnega termometra.

A 10kΩ upor mora biti povezan med PIN2 in PIN3 modula digitalnega termometra.

Držite Raspberry Pi, kot je prikazano na spodnji sliki. Nato bo zgornji levi zatič PIN1. Zatič tik ob PIN1 bo PIN2. Če se nato premaknete za eno vrstico naprej, bo leva PIN3 in pravi bo PIN4, in tako naprej.

Ko povežete vse komponente z napravo Raspberry Pi, mora biti videti nekako takole:

Pobližje si oglejte, kako sem komponente postavil na ploščo.

Ko ste vse komponente povezali z napravo Raspberry Pi, vklopite napravo Raspberry Pi. Nato se povežite z napravo Raspberry Pi prek VNC ali SSH.

Branje temperaturnih podatkov iz digitalnega termometra DS18B20

Modul termometra DS18B20 uporablja 1-žični komunikacijski protokol za pošiljanje podatkov na Raspberry Pi. Privzeto 1-žični vmesnik ni omogočen. Vmesnik lahko enostavno omogočite v konfiguracijskem orodju Raspberry Pi.

Če želite omogočiti 1-žični vmesnik, zaženite raspi-config z naslednjim ukazom:

$ sudo raspi-config

Izberite Možnosti povezovanja in pritisnite .

Izberite 1-žica in pritisnite .

Izberite in pritisnite .

Pritisnite .

Za izhod iz raspi-config pripomoček, pritisnite .

Da bodo spremembe začele veljati, znova zaženite Raspberry Pi, kot sledi:

$ sudo znova zaženite

Če želite preveriti, ali je w1_gpio in w1_therm moduli jedra so naloženi, zaženite naslednji ukaz:

$ sudo lsmod | grep w1

Če je iz nekega razloga, w1_therm modul ni naložen, ga lahko ročno naložite z naslednjim ukazom:

$ sudo modprobe w1_therm

Ko omogočite 1-žična komunikacija in naložil w1_therm modul, nova naprava (28-00000ba693e9, v mojem primeru) je treba navesti v / sys / bus / w1 / naprav imenik, kot lahko vidite na spodnjem posnetku zaslona.

$ ls / sys / bus / w1 / devices /

Pomaknite se do novega imenika, kot sledi:

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

Moral bi najti a temperatura datoteko v imeniku, kot lahko vidite na spodnjem posnetku zaslona.

$ ls -lh

The temperatura datoteka je navadna besedilna datoteka. Podatke o temperaturi lahko preberete s pomočjo mačka ukaz, kot sledi:

$ mačka temperatura

Kot lahko vidite, so podatki o temperaturi natisnjeni na konzoli. Tukaj, 30375 pomeni 30.375 ° C.

Uporabite lahko programski jezik, na primer Python ali Node.js, da razčlenite te podatke o temperaturi in jih uporabite v svoji aplikaciji. Kako to storiti, vam bom pokazal v naslednjem oddelku tega članka.

Za razčlenitev temperaturnih podatkov s programskim jezikom potrebujete absolutno pot do temperatura mapa. To lahko najdete s pomočjo bralna povezava ukaz, kot sledi:

$ readlink -f temperature

Ustvarite spletno aplikacijo za prikaz temperaturnih podatkov:

V tem razdelku boste izvedeli, kako razčleniti podatke o temperaturi iz termometrskega modula DS18B20 in jih prikazati v spletni aplikaciji.

V tem primeru bom ustvaril API, ki bo razčlenil podatke o temperaturi iz termometrskega modula DS18B20, do katerega je mogoče dostopati iz API-ja. Ustvaril bom tudi spletno aplikacijo, ki bo iz API-ja pridobivala podatke o temperaturi in jih lepo prikazovala. Uporabil bom Node.js, da to storijo. Kode se naložijo v moje skladišče GitHub shovon8 / ds18b20-raspberrypi-api. Morda ga boste želeli preveriti, če imate težave s kopiranjem in lepljenjem kod iz tega članka.

Vozlišče.js privzeto ni nameščen v OS Raspberry Pi. Na voljo pa je v uradnem repozitoriju paketov OS Raspberry Pi. Node lahko enostavno namestite.js iz skladišča paketov OS Raspberry Pi.

Najprej posodobite predpomnilnik repozitorija paketov APT z naslednjim ukazom:

$ sudo apt posodobitev

Nato namestite Node.js in NPM z naslednjim ukazom:

$ sudo apt namestite nodejs npm

Za potrditev namestitve pritisnite Y in nato pritisnite .

Upravitelj paketov APT bo naložil in namestil vse zahtevane pakete. Dokončanje lahko traja nekaj časa.

Na tej točki Node.js in NPM je treba namestiti.

Enkrat Node.js in NPM nameščeni, preverite, ali je vozlišče in npm na voljo so naslednji ukazi:

$ vozlišče --verzija
$ npm --verzija

Nadgradite NPM z naslednjim ukazom:

$ sudo npm install --global npm

NPM je treba nadgraditi.

Kot lahko vidite, je bil NPM posodobljen od različice 5.8.0 do različice 6.14.8.

$ node --version $ npm --version

Zdaj to vozlišče.js in NPM nameščeni, ustvarite nov imenik projekta ~ / ds18b20, kot sledi:

$ mkdir -v ~ / ds18b20

Pomaknite se do ~ / ds18b20 imenik, kot sledi:

$ cd ~ / ds18b20

Ustvari prazno paket.json datoteko z naslednjim ukazom:

$ npm init --y

Namestite Express.js knjižnico za projekt z naslednjim ukazom:

$ npm install --save express

Express.js zdaj bi morala biti nameščena knjižnica.

Ustvari novo datoteko strežnik.js v imeniku projekta, kot sledi:

$ nano strežnik.js

V vrstico vnesite naslednje vrstice kod strežnik.js mapa.

naj izraža = zahteva ('izraz');
naj fs = zahteva ('fs');
naj strežnik = express ();
const PORT = 8080;
const WEBROOT = './ javno ';
strežnik.get ('/', izraz.statično (WEBROOT));
strežnik.get ('/ temperature', (req, res) =>
naj tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
naj je temperatura = fs.readFileSync (tempDataPath, kodiranje: 'utf8', zastavica: 'r') / 1000;
res.json (temperatura, rangeStart: -55, rangeEnd: 125);
);
strežnik.poslušaj (PORT, () =>
konzola.log ('strežnik se izvaja na vratih $ PORT');
);

Ko končate, pritisnite + X čemur sledi Y in da shranite strežnik.js.

Tukaj je vrstica 1 uvoz izraziti, in vrstica 2 uvozi fs modul.

Vrstica 4 inicializira ekspresno.

Vrstici 6 in 7 definirata PRISTANIŠČE in WEBROOT konstantne spremenljivke. API in spletni strežnik bosta delovala naprej PRISTANIŠČE (kateri je 8080, (v tem članku), spletni strežnik pa bo prikazoval statične vsebine iz WEBROOT (kar je javno / v imeniku projekta v tem članku).

Vrstica 9 se uporablja za konfiguriranje ekspresnega strežnika statične vsebine iz WEBROOT.

Vrstice 11-15 definirajo končno točko API / temperatura, ki bo uporabljen za pridobitev podatkov o temperaturi v formatu JSON.

V vrstici 12 je tempDataPath spremenljivka vsebuje absolutno pot do temperatura datoteka modula digitalnega termometra DS18B20, prikazana v prejšnjem oddelku tega članka.

V vrstici 13 se podatki o temperaturi berejo iz temperatura datoteko z uporabo vozlišča.js fs modul, podatki o temperaturi pa so shranjeni v temperatura spremenljivka.

V vrstici 14 so podatki o temperaturi natisnjeni v formatu JSON. Digitalni termometer DS18B20 lahko meri med temperaturami od -55 ° C do 125 ° C. Dodal sem, da v izhodu JSON z uporabo rangeStart in rangeEnd lastnosti.

Končno, vrstica 17-19 poganja API in spletni strežnik PRISTANIŠČE (kateri je 8080, v tem članku).

Ustvariti javno / imenik v imeniku projekta, kot sledi:

$ mkdir -v javno

Zaženite strežnik.js program z naslednjim ukazom:

$ node strežnik.js

Strežnik mora delovati na vratih 8080.

Do podatkov o temperaturi termometrskega modula DS18B20 lahko dostopate s spletne strani / temperatura končna točka API-ja.

Za preizkus, ali lahko dobite podatke o temperaturi iz API-ja, zaženite curl, kot sledi:

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

Kot lahko vidite, so podatki o temperaturi na konzoli natisnjeni v obliki JSON. Torej, API deluje.

Pritisnite + C da zaustavite strežnik.

Zdaj bom ustvaril spletno stran, ki bo zahtevala strežnik API za podatke o temperaturi in jih lepo prikazala na strani. Podatki o temperaturi se posodabljajo vsakih 5 sekund.

Ustvari novo indeks.html v datoteki javno / imenik projekta, kot sledi:

$ nano javni / indeks.html

V vrstico vnesite naslednje vrstice kod indeks.html mapa.




Nadzor temperature







00.00 ° C


Posodabljanje temperature v vsakih 5 sekundah



Ko končate, pritisnite + X čemur sledi Y in shraniti indeks.html mapa.

Datoteka HTML indeks.html je enostavno razumeti. To je oblika, v kateri bodo podatki o temperaturi prikazani v spletni aplikaciji.

Tu se vrstice 53-55 uporabljajo za prikaz vrstice napredovanja, vrstice 57-60 pa za prikaz temperature.

Vrstice 5-49 se uporabljajo za lepo okrasitev spletne aplikacije s pomočjo CSS (Cascading Style Sheet).

Vrstice 62-109 se uporabljajo za funkcionalnost spletne aplikacije. Kode JavaScript se uporabljajo za animiranje vrstice napredka, pridobivanje temperaturnih podatkov iz API-ja in prikaz informacij.

Vrstica 63 vodi glavni ko se spletna aplikacija naloži v brskalnik.

The glavni funkcija je zelo dolga. Sega od vrstice 65 do vrstice 108. Znotraj glavne funkcije imamo še nekatere druge funkcije, kot so getTemperature, updateTemperature, updateProgress, app, in začetek.

The updateProgress Funkcija v vrsticah 83-86 za vhod upošteva odstotek napredka in posodobi vrstico napredovanja.

The updateTemperature funkcija v vrsticah 77-81 vzame podatke o temperaturi kot vhod in posodobi spletno aplikacijo s podatki o temperaturi.

The getTemperature funkcija v vrsticah 66-75 poda zahtevo / temperatura končna točka API-ja in dobi podatke o temperaturi. Ko so podatki prejeti, pokliče updateTemperature funkcijo s podatki. The updateTemperature funkcija nato spletno aplikacijo posodobi z novimi podatki o temperaturi.

The app funkcija v vrsticah 88-99 animira vrstico napredovanja in zahteva API-je podatke o temperaturi vsakih 5 sekund.

The začetek funkcija v vrsticah 101-104 zažene spletno aplikacijo.

Odprite paket.json datoteko z urejevalnikom besedil nano, kot sledi:

$ nano paket.json

Sprememba glavni do strežnik.js in dodajte nov skript služijo v skripte , kot je označeno na spodnjem posnetku zaslona.

Ko končate, pritisnite + X čemur sledi Y in shraniti paket.json mapa.

Zdaj, ko je vse pripravljeno, zaženite spletno aplikacijo in API z naslednjim ukazom:

$ npm run serve

Strežnik mora delovati na vratih 8080.

Zdaj odprite spletni brskalnik v napravi Raspberry Pi in obiščite http: // localhost: 8080. Podatki o temperaturi iz modula digitalnega termometra DS18B20 naj bodo prikazani v vašem spletnem brskalniku, kot lahko vidite na spodnjem posnetku zaslona.

Podatke o temperaturi je treba posodabljati vsakih 5 sekund.

Kot vidite, se temperatura spreminja vsakih 5 sekund.

Če želite dostopati do spletne aplikacije iz drugega računalnika v omrežju, boste morali poznati naslov IP svoje naprave Raspberry Pi.

Naslov IP vaše naprave Raspberry Pi najdete z naslednjim ukazom:

$ hostname -I

Kot lahko vidite, je naslov moje naprave Raspberry Pi 192.168.0.107. To bo za vas drugače. Torej, odslej ne pozabite zamenjati naslova IP.

Ko poznate naslov IP svoje naprave Raspberry Pi, boste s spletnim brskalnikom lahko dostopali do spletne aplikacije iz katerega koli računalnika v omrežju. Samo obiščite http: // 192.168.0.107: 8080, spletna aplikacija pa naj prikazuje podatke o temperaturi iz modula digitalnega termometra DS18B20.

Zaključek

V tem članku ste izvedeli, kako za merjenje temperature uporabljate modul digitalnega termometra DS18B20 v Raspberry Pi. Naučili ste se tudi, kako ustvariti vozlišče.js API za prikaz temperaturnih podatkov v spletni aplikaciji, ki dostopa do temperaturnih podatkov iz API-ja in jih prikaže. Ta članek vam bo pomagal začeti s spremljanjem temperature Raspberry Pi z modulom digitalnega termometra DS18B20 in IoT z Raspberry Pi.

Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...