Raspberry Pi

Praćenje temperature u Raspberry Pi

Praćenje temperature u Raspberry Pi


Nadzor temperature može biti zahtjev u mnogim vašim projektima Raspberry Pi. To je relativno lako učiniti u Raspberry Pi, a komponente potrebne za ovaj projekt nisu preskupe.Ovaj vam članak pokazuje kako koristiti modul digitalnog termometra DS18B20 za nadgledanje temperature pomoću Raspberry Pi. Članak također pokazuje kako stvoriti web aplikaciju za prikaz temperature.

Stvari koje će vam trebati:

Da biste isprobali primjere u ovom članku, trebat će vam sljedeće:

  1. Računalo s jednom pločom Raspberry Pi
  2. Ispravljač za Raspberry Pi uređaj
  3. MicroSD kartica s instaliranim OS Raspberry Pi
  4. Mrežna povezanost na uređaju Raspberry Pi
  5. Breadboard
  6. 3 kom spojnih žica ženske-ženske
  7. Neke muške spojne žice
  8. Otpornik od 10k
  9. Modul digitalnog termometra DS18B20

DS18B20 Izvori digitalnog termometra

Ako držite digitalni termometar DS18B20, kao što je prikazano na donjoj slici, prvi će klin biti uzemljen (GND), druga će igla biti PODACI, a treća igla bit će VCC.

Kružni dijagram

Shema spoja monitora temperature prikazana je na donjoj slici.

Evo, PIN2 / 5V uređaja Raspberry Pi treba spojiti na PIN3 / VCC modula digitalnog termometra.

The PIN7 / GPIO4 uređaja Raspberry Pi treba spojiti na PIN2 / PODACI modula digitalnog termometra.

The PIN9 / GND uređaja Raspberry Pi treba spojiti na PIN1 / GND modula digitalnog termometra.

A Otpornik 10kΩ treba biti povezan između PIN2 i PIN3 modula digitalnog termometra.

Trebali biste držati Raspberry Pi kako je prikazano na donjoj slici. Tada će biti gornji lijevi klin PIN1. Pribadača odmah do PIN1 bit će PIN2. Zatim, ako se pomaknete za jedan red naprijed, bit će lijevi PIN3 a onaj pravi bit će PIN4, i tako dalje.

Nakon što spojite sve komponente na svoj Raspberry Pi uređaj, to bi trebalo izgledati otprilike ovako:

Pobliže pogledajte kako sam komponente smjestio na ploču za ploče.

Nakon što spojite sve komponente na svoj Raspberry Pi uređaj, uključite Raspberry Pi uređaj. Zatim se povežite s Raspberry Pi uređajem putem VNC-a ili SSH-a.

Očitavanje podataka o temperaturi s digitalnog termometra DS18B20

Modul termometra DS18B20 koristi 1-žični komunikacijski protokol za slanje podataka na Raspberry Pi. Prema zadanim postavkama 1-žično sučelje nije omogućeno. Sučelje možete lako omogućiti iz alata za konfiguraciju Raspberry Pi.

Da biste omogućili 1-žično sučelje, pokrenite raspi-config sa sljedećom naredbom:

$ sudo raspi-config

Odaberi Mogućnosti povezivanja i pritisnite .

Odaberi 1-žica i pritisnite .

Odaberi i pritisnite .

Pritisnite .

Za izlazak iz raspi-config uslužni program, pritisnite .

Da bi promjene stupile na snagu, ponovno pokrenite Raspberry Pi na sljedeći način:

$ sudo ponovno pokretanje

Da biste provjerili je li w1_gpio i w1_therm kernel moduli su učitani, pokrenite sljedeću naredbu:

$ sudo lsmod | grep w1

Ako je iz nekog razloga, w1_therm modul nije učitan, a zatim ga možete ručno učitati sljedećom naredbom:

$ sudo modprobe w1_therm

Nakon što omogućite Jednožična komunikacija i učitao w1_therm modul, novi uređaj (28-00000ba693e9, u mom slučaju) treba navesti u / sys / bus / w1 / uređaji direktorija, kao što možete vidjeti na donjoj snimci zaslona.

$ ls / sys / bus / w1 / devices /

Dođite do novog direktorija, kako slijedi:

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

Trebali biste pronaći temperatura datoteku u direktoriju, kao što možete vidjeti na snimci zaslona u nastavku.

$ ls -lh

The temperatura datoteka je obična tekstualna datoteka. Podatke o temperaturi možete pročitati pomoću mačka naredba, kako slijedi:

$ mačka temperatura

Kao što vidite, podaci o temperaturi ispisuju se na konzoli. Ovdje, 30375 sredstva 30.375 ° C.

Možete koristiti programski jezik, kao što je Python ili Node.js, da raščlanite ove podatke o temperaturi i upotrijebite ih u svojoj aplikaciji. Pokazat ću vam kako to učiniti u sljedećem odjeljku ovog članka.

Da biste raščlanili podatke o temperaturi pomoću programskog jezika, trebat će vam apsolutni put do temperatura datoteka. To možete pronaći pomoću veza za čitanje naredba, kako slijedi:

$ readlink -f temperature

Stvorite web aplikaciju za prikaz podataka o temperaturi:

U ovom ćete odjeljku naučiti kako raščlaniti podatke o temperaturi iz modula termometra DS18B20 i prikazati ih na web aplikaciji.

U ovom primjeru izradit ću API, koji će raščlaniti podatke o temperaturi iz modula termometra DS18B20 kojem se može pristupiti iz API-ja. Također ću stvoriti web aplikaciju koja će dohvatiti podatke o temperaturi iz API-ja i lijepo ih prikazati. Koristit ću Node.js programski jezik za to. Kodovi se prenose u moje GitHub spremište shovon8 / ds18b20-raspberrypi-api. Možda biste to htjeli provjeriti ako imate poteškoća s kopiranjem i lijepljenjem kodova iz ovog članka.

Čvor.js po defaultu nije instaliran na Raspberry Pi OS. Ali, dostupan je u službenom spremištu paketa OS Raspberry Pi. Node možete jednostavno instalirati.js iz spremišta paketa OS Raspberry Pi.

Prvo ažurirajte predmemoriju spremišta APT paketa sljedećom naredbom:

$ sudo apt ažuriranje

Zatim instalirajte Node.js i NPM sa sljedećom naredbom:

$ sudo apt instaliraj nodejs npm

Da biste potvrdili instalaciju, pritisnite Y a zatim pritisnite .

Upravitelj paketa APT preuzet će i instalirati sve potrebne pakete. Dovršenje može potrajati.

U ovom trenutku, Node.js i NPM trebaju biti instalirani.

Jednom Node.js i NPM instalirani, provjerite je li čvor i npm naredbe su dostupne, kako slijedi:

$ čvor --verzija
$ npm --verzija

Nadogradite NPM sljedećom naredbom:

$ sudo npm install --global npm

NPM treba nadograditi.

Kao što vidite, NPM je ažuriran od verzije 5.8.0 do verzije 6.14.8.

$ node --version $ npm --version

Sad taj Čvor.js i NPM su instalirani, stvorite novi direktorij projekta ~ / ds18b20, kako slijedi:

$ mkdir -v ~ / ds18b20

Idite na ~ / ds18b20 direktorij, kako slijedi:

$ cd ~ / ds18b20

Stvorite prazno paket.json datoteka sa sljedećom naredbom:

$ npm init --y

Instalirajte Izraziti.js knjižnica za projekt sa sljedećom naredbom:

$ npm install --save express

Express.js bi sada trebala biti instalirana.

Stvorite novu datoteku poslužitelju.js u direktoriju projekta, kako slijedi:

$ nano poslužitelj.js

Unesite sljedeće retke kodova u poslužitelju.js datoteka.

neka izrazi = zahtijeva ('ekspresno');
neka fs = zahtijeva ('fs');
neka poslužitelj = express ();
const PORT = 8080;
const WEBROOT = './javnost';
poslužitelju.get ('/', ekspres.statički (WEBROOT));
poslužitelju.get ('/ temperature', (req, res) =>
neka tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperature';
neka je temperatura = fs.readFileSync (tempDataPath, kodiranje: 'utf8', zastavica: 'r') / 1000;
rez.json (temperatura, rangeStart: -55, rangeEnd: 125);
);
poslužitelju.slušaj (PORT, () =>
konzola.log ('poslužitelj pokrenut na portu $ PORT');
);

Kada završite, pritisnite + x nakon čega slijedi Y i za spremanje poslužitelja.js datoteku.

Evo, linija 1 uvozi izraziti, a linija 2 uvozi fs modul.

Redak 4 inicijalizira express.

Redci 6 i 7 definiraju LUKA i WEBROOT konstantne varijable. API i web poslužitelj će raditi LUKA (koji je 8080, u ovom članku), a web poslužitelj poslužit će statički sadržaj s web mjesta WEBROOT (koje je javnost/ direktorij unutar direktorija projekta u ovom članku).

Redak 9 koristi se za konfiguriranje expressa za posluživanje statičnih sadržaja iz WEBROOT.

Redci 11-15 definiraju API krajnju točku /temperatura, koji će se koristiti za dobivanje podataka o temperaturi u JSON formatu.

U retku 12, tempDataPath varijabla sadrži apsolutni put do temperatura datoteka modula digitalnog termometra DS18B20, prikazana u ranijem odjeljku ovog članka.

U retku 13, podaci o temperaturi očitavaju se iz temperatura datoteku pomoću Node.js fs modul, a podaci o temperaturi pohranjuju se u temperatura varijabilna.

U retku 14 podaci o temperaturi ispisuju se u JSON formatu. Modul digitalnog termometra DS18B20 može mjeriti između temperatura od -55 ° C do 125 ° C. Dodao sam da u JSON izlazu pomoću rangeStart i rangeEnd Svojstva.

Napokon, redak 17-19 pokreće API i web poslužitelj LUKA (koji je 8080, u ovom članku).

Stvoriti javnost/ direktorij u direktoriju projekta, kako slijedi:

$ mkdir -v javni

Pokrenite poslužitelju.js program sa sljedećom naredbom:

$ čvor poslužitelj.js

Poslužitelj bi trebao biti pokrenut na priključku 8080.

Podatcima o temperaturi modula termometra DS18B20 možete pristupiti s uređaja /temperatura krajnja točka API-ja.

Pokrenite da biste testirali možete li podatke o temperaturi dobiti iz API-ja kovrča, kako slijedi:

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

Kao što vidite, podaci o temperaturi ispisuju se na konzoli u JSON formatu. Dakle, API radi.

Pritisnite + C da zaustavi poslužitelj.

Sada ću stvoriti web stranicu koja će tražiti API poslužitelj za podatke o temperaturi i lijepo ih prikazati na stranici. Podaci o temperaturi ažurirat će se svakih 5 sekundi.

Stvori novo indeks.html datoteku u javnost/ direktorij projekta, kako slijedi:

$ nano javni / indeks.html

Unesite sljedeće retke kodova u indeks.html datoteka.




Nadzor temperature







00.00 ° C


Ažuriranje temperature u svakih 5 sekundi



Kada završite, pritisnite + x nakon čega slijedi Y i spasiti indeks.html datoteka.

HTML datoteka indeks.html lako je razumjeti. To je format u kojem će se podaci o temperaturi prikazivati ​​u web aplikaciji.

Ovdje se linije 53-55 koriste za prikaz trake napretka, a linije 57-60 koriste se za prikaz temperature.

Linije 5-49 koriste se za lijepo uređenje web aplikacije pomoću CSS-a (Cascading Style Sheet).

Linije 62-109 koriste se kako bi web aplikacija bila funkcionalna. JavaScript kodovi koriste se za animiranje trake napretka, dohvaćanje podataka o temperaturi iz API-ja i prikaz podataka.

Linija 63 vodi glavni funkcija nakon što se web aplikacija učita u preglednik.

The glavni funkcija je vrlo duga. Prostire se od retka 65 do retka 108. Unutar glavne funkcije imamo neke druge funkcije, kao što su getTemperature, updateTemperature, updateProgress, app, i početak.

The updateProgress funkcija, u redovima 83-86, uzima postotak napretka kao ulaz i ažurira traku napretka.

The updateTemperature funkcija u redovima 77-81 uzima podatke o temperaturi kao ulaz i ažurira web aplikaciju podacima o temperaturi.

The getTemperature funkcija u redovima 66-75 upućuje zahtjev /temperatura krajnja točka API-ja i dobiva podatke o temperaturi. Nakon primanja podataka, poziva updateTemperature funkcija s podacima. The updateTemperature funkcija zatim ažurira web aplikaciju s novim podacima o temperaturi.

The app funkcija, u redovima 88-99, animira traku napretka i traži API podatke o temperaturi svakih 5 sekundi.

The početak funkcija, u redovima 101-104, pokreće web aplikaciju.

Otvori paket.json datoteka s uređivačem nano teksta kako slijedi:

$ nano paket.json

Promijeniti glavni do poslužitelju.js i dodajte novu skriptu poslužiti u skripte odjeljak, kako je označeno na snimci zaslona u nastavku.

Kada završite, pritisnite + x nakon čega slijedi Y i spasiti paket.json datoteka.

Sada kada je sve spremno, pokrenite web aplikaciju i API sljedećom naredbom:

$ npm pokrenuto posluživanje

Poslužitelj bi trebao biti pokrenut na priključku 8080.

Sada otvorite web preglednik na uređaju Raspberry Pi i posjetite http: // localhost: 8080. Podaci o temperaturi iz modula digitalnog termometra DS18B20 trebali bi biti prikazani na vašem web pregledniku, kao što možete vidjeti na donjoj snimci zaslona.

Podaci o temperaturi trebaju se ažurirati svakih 5 sekundi.

Kao što vidite, temperatura se mijenja svakih 5 sekundi.

Ako želite pristupiti web aplikaciji s drugog računala u mreži, morat ćete znati IP adresu vašeg Raspberry Pi uređaja.

IP adresu vašeg Raspberry Pi uređaja možete pronaći pomoću sljedeće naredbe:

$ hostname -I

Kao što vidite, IP adresa mog Raspberry Pi uređaja je 192.168.0.107. Ovo će biti drugačije za vas. Dakle, od sada pazite da zamijenite IP adresu.

Nakon što saznate IP adresu vašeg Raspberry Pi uređaja, trebali biste moći pristupiti web aplikaciji s bilo kojeg računala na mreži pomoću web preglednika. Samo posjetite http: // 192.168.0.107: 8080, a web aplikacija trebala bi prikazivati ​​podatke o temperaturi iz modula digitalnog termometra DS18B20.

Zaključak

U ovom ste članku naučili kako koristiti DS18B20 modul digitalnog termometra u Raspberry Pi za mjerenje temperature. Također ste naučili kako stvoriti čvor.js API za prikaz podataka o temperaturi u web aplikaciji koja pristupa podacima o temperaturi iz API-ja i prikazuje ih. Ovaj bi vam članak trebao pomoći da započnete s praćenjem temperature Raspberry Pi s modulom digitalnog termometra DS18B20 i IoT s Raspberry Pi.

Najbolji Linux Distros za igre na sreću 2021. godine
Linux operativni sustav daleko je prevalio svoj izvorni, jednostavni izgled zasnovan na poslužitelju. Ovaj se OS posljednjih godina izuzetno poboljšao...
Kako snimiti i struji svoju igraću sesiju na Linuxu
U prošlosti se igranje igara smatralo samo hobijem, ali s vremenom je igračka industrija zabilježila ogroman rast u pogledu tehnologije i broja igrača...
Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...