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:
- Računalnik z eno ploščo Raspberry Pi
- Napajalnik za napravo Raspberry Pi
- Kartica microSD z nameščenim OS Raspberry Pi
- Omrežna povezljivost na napravi Raspberry Pi
- Breadboard
- 3 kosi ženskih ženskih povezovalnih žic
- Nekaj povezovalnih žic med moškimi in moškimi
- 10k upor
- 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
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
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_ppKot lahko vidite, so podatki o temperaturi na konzoli natisnjeni v obliki JSON. Torej, API deluje.
Pritisnite
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.
00.00 ° C
Posodabljanje temperature v vsakih 5 sekundah
Ko končate, pritisnite
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
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 -IKot 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.