Aveņu Pi

Temperatūras monitorings Raspberry Pi

Temperatūras monitorings Raspberry Pi


Temperatūras uzraudzība var būt prasība daudzos jūsu Raspberry Pi projektos. Tas ir samērā viegli izdarāms Raspberry Pi, un šim projektam nepieciešamie komponenti nav pārāk dārgi.Šajā rakstā parādīts, kā izmantot DS18B20 digitālā termometra moduli, lai uzraudzītu temperatūru, izmantojot Raspberry Pi. Raksts arī parāda, kā izveidot tīmekļa lietotni, lai parādītu temperatūru.

Jums nepieciešamās lietas:

Lai izmēģinātu šī raksta piemērus, jums būs nepieciešams:

  1. Raspberry Pi viena borta dators
  2. Raspberry Pi ierīces strāvas adapteris
  3. MicroSD karte ar instalētu Raspberry Pi OS
  4. Tīkla savienojamība ierīcē Raspberry Pi
  5. Maizes dēlis
  6. 3 gab no sievietes uz sievieti savienojošie vadi
  7. Daži vīriešu-vīriešu savienojuma vadi
  8. 10k rezistors
  9. Digitālā termometra modulis DS18B20

DS18B20 digitālā termometra tapas

Ja turat digitālo termometru DS18B20, kā parādīts attēlā, pirmā tapa tiks slīpēta (GND), otrā tapa būs DATI, un trešais tapa būs VCC.

Ķēdes shēma

Temperatūras monitora shēma ir parādīta zemāk esošajā attēlā.

Lūk, PIN2 / 5V Raspberry Pi ierīces savienojums ar PIN3 / VCC digitālā termometra moduļa.

The PIN7 / GPIO4 Raspberry Pi ierīces savienojums ar PIN2 / DATI digitālā termometra moduļa.

The PIN9 / GND Raspberry Pi ierīces savienojums ar PIN1 / GND digitālā termometra moduļa.

A 10kΩ rezistors būtu jāsavieno starp PIN2 un PIN3 digitālā termometra moduļa.

Jums vajadzētu turēt Raspberry Pi, kā parādīts zemāk esošajā attēlā. Tad augšējā kreisā tapa būs PIN1. Spraudīte tieši blakus PIN1 būs PIN2. Tad, ja jūs virzīsities uz priekšu vienu rindu, kreisā būs PIN3 un īstā būs PIN4, un tā tālāk.

Kad visi komponenti ir savienoti ar Raspberry Pi ierīci, tam vajadzētu izskatīties apmēram šādi:

Apskatiet tuvāk, kā es ievietoju komponentus uz maizes dēļa.

Kad visi komponenti ir savienoti ar Raspberry Pi ierīci, ieslēdziet Raspberry Pi ierīci. Pēc tam izveidojiet savienojumu ar Raspberry Pi ierīci, izmantojot VNC vai SSH.

Temperatūras datu nolasīšana no DS18B20 digitālā termometra

Termometra modulis DS18B20 izmanto 1-vadu sakaru protokolu, lai nosūtītu datus uz Raspberry Pi. Pēc noklusējuma 1-vadu saskarne nav iespējota. Interfeisu varat viegli iespējot no Raspberry Pi konfigurācijas rīka.

Lai iespējotu 1-vadu saskarni, palaidiet raspi-config ar šādu komandu:

$ sudo raspi-config

Atlasiet Saskarnes iespējas un nospiediet .

Atlasiet 1-vads un nospiediet .

Atlasiet un nospiediet .

Nospiediet .

Lai izietu no raspi-config lietderība, nospiediet .

Lai izmaiņas stātos spēkā, restartējiet Raspberry Pi šādi:

$ sudo atsāknēšana

Lai pārbaudītu, vai w1_gpio un w1_therm kodola moduļi ir ielādēti, izpildiet šādu komandu:

$ sudo lsmod | grep w1

Ja kāda iemesla dēļ w1_therm modulis nav ielādēts, tad to var manuāli ielādēt ar šādu komandu:

$ sudo modprobe w1_therm

Kad esat iespējojis 1 vadu sakari un ielādēja w1_therm modulis, jauna ierīce (28-00000ba693e9, manā gadījumā) būtu jānorāda / sys / kopne / w1 / ierīces direktoriju, kā redzat zemāk redzamajā ekrānuzņēmumā.

$ ls / sys / kopne / w1 / ierīces /

Pārejiet uz jauno direktoriju šādi:

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

Jums vajadzētu atrast temperatūra failu direktorijā, kā redzat zemāk redzamajā ekrānuzņēmumā.

$ ls -lh

The temperatūra fails ir vienkārša teksta fails. Temperatūras datus var nolasīt, izmantojot kaķis komandu:

$ kaķu temperatūra

Kā redzat, temperatūras dati tiek drukāti uz konsoles. Šeit, 30375 nozīmē 30.375 ° C.

Varat izmantot programmēšanas valodu, piemēram, Python vai Node.js, lai parsētu šos temperatūras datus un izmantotu tos savā lietotnē. Kā to izdarīt, es jums parādīšu šī raksta nākamajā sadaļā.

Lai parsētu temperatūras datus, izmantojot programmēšanas valodu, jums būs nepieciešams absolūtais ceļš uz temperatūra failu. To var atrast, izmantojot lasīt saiti komandu:

$ readlink -f temperatūra

Izveidojiet tīmekļa lietotni, lai parādītu temperatūras datus:

Šajā sadaļā jūs uzzināsiet, kā parsēt temperatūras datus no termometra moduļa DS18B20 un parādīt tos tīmekļa lietotnē.

Šajā piemērā es izveidošu API, kas parsēs temperatūras datus no termometra moduļa DS18B20, kam var piekļūt no API. Es izveidošu arī tīmekļa lietotni, kas ielādēs temperatūras datus no API un tos labi parādīs. Es izmantošu Mezglu.js programmēšanas valoda, lai to izdarītu. Kodi tiek augšupielādēti manā GitHub krātuvē shovon8 / ds18b20-raspberrypi-api. Iespējams, vēlēsities to pārbaudīt, ja rodas problēmas ar kodu kopēšanu un ielīmēšanu no šī raksta.

Mezgls.js pēc noklusējuma nav instalēts Raspberry Pi OS. Bet tas ir pieejams Raspberry Pi OS oficiālajā pakotņu krātuvē. Jūs varat viegli instalēt Node.js no Raspberry Pi OS pakotņu krātuves.

Vispirms atjauniniet APT pakotnes krātuves kešatmiņu ar šādu komandu:

$ sudo apt atjauninājums

Pēc tam instalējiet mezglu.js un NPM ar šādu komandu:

$ sudo apt instalējiet nodejs npm

Lai apstiprinātu instalēšanu, nospiediet un pēc tam nospiediet .

APT pakotņu pārvaldnieks lejupielādēs un instalēs visas nepieciešamās pakotnes. Tas var aizņemt kādu laiku, lai pabeigtu.

Šajā brīdī Mezgls.Jāinstalē js un NPM.

Vienreiz Mezgls.js un NPM ir instalēti, pārbaudiet, vai mezgls un npm komandas ir pieejamas šādi:

$ node --versija
$ npm - versija

Jauniniet NPM ar šādu komandu:

$ sudo npm install - globālais npm

NPM būtu jāatjaunina.

Kā redzat, NPM ir atjaunināts no 5. versijas.8.0 līdz 6. versijai.14.8.

$ node --versija $ npm --versija

Tagad tas Mezgls.js un NPM ir instalēti, izveidojiet jauno projekta direktoriju ~ / ds18b20, sekojoši:

$ mkdir -v ~ / ds18b20

Pārejiet uz ~ / ds18b20 direktorijā:

$ cd ~ / ds18b20

Izveidojiet tukšo iepakojums.json failu ar šādu komandu:

$ npm init - g

Instalējiet Izteikt.js bibliotēka projektam ar šādu komandu:

$ npm install --save express

Ekspress.js bibliotēka tagad būtu jāinstalē.

Izveidojiet jauno failu serveris.js projekta direktorijā šādi:

$ nano serveris.js

Ievadiet šādas kodu rindas serveris.js failu.

ļaujiet izteikt = pieprasīt ('izteikt');
ļaujiet fs = pieprasīt ('fs');
ļaut serverim = express ();
const PORT = 8080;
const WEBROOT = './ public ”;
serveris.get ('/', izteikt.statisks (WEBROOT));
serveris.get ('/ temperatūra', (req, res) =>
ļaujiet tempDataPath = '/ sys / kopne / w1 / ierīces / 28-00000ba693e9 / temperatūra';
ļaujiet temperatūrai = fs.readFileSync (tempDataPath, kodējums: 'utf8', karodziņš: 'r') / 1000;
rez.json (temperatūra, diapazona sākums: -55, diapazona beigas: 125);
);
serveris.klausīties (OSTA, () =>
konsole.log ('serveris darbojas portā $ PORT');
);

Kad esat pabeidzis, nospiediet + X sekoja un lai saglabātu serveri.js fails.

Šeit importē 1. rindu izteikt, un 2. rinda importē fs modulis.

4. rindiņa inicializē ekspress.

6. un 7. rindā ir definēts OSTA un WEBROOT attiecīgi nemainīgi mainīgie. Darbosies API un tīmekļa serveris OSTA (kurš ir 8080, šajā rakstā), un tīmekļa serveris apkalpos statisko saturu no WEBROOT (kas ir publisks / (šajā direktorijā esošais direktorijs projekta direktorijā).

9. Rinda tiek izmantota, lai konfigurētu ekspress, lai kalpotu statiskajam saturam no WEBROOT.

11. – 15. Rindā definēts API galapunkts /temperatūra, ko izmantos, lai temperatūras datus iegūtu JSON formātā.

12. rindā tempDataPath mainīgais tur absolūtu ceļu uz temperatūra digitālā termometra moduļa DS18B20 fails, kas parādīts šī raksta iepriekšējā sadaļā.

13. Rindā temperatūras datus nolasa no temperatūra failu, izmantojot mezglu.js fs modulis, un temperatūras dati tiek saglabāti temperatūra mainīgais.

14. rindā temperatūras dati tiek drukāti JSON formātā. Digitālā termometra modulis DS18B20 var mērīt no -55 ° C līdz 125 ° C. Esmu pievienojis, ka JSON izvadē, izmantojot rangeStart un diapazonsEnd īpašības.

Visbeidzot, 17.-19. Rindā darbojas API un tīmekļa serveris OSTA (kurš ir 8080, šajā rakstā).

Izveidojiet a publisks / direktoriju projekta direktorijā šādi:

$ mkdir -v public

Palaidiet serveris.js programmu ar šādu komandu:

$ mezgla serveris.js

Serverim jādarbojas ostā 8080.

Termometra moduļa DS18B20 temperatūras datiem varat piekļūt no /temperatūra API galapunkts.

Lai pārbaudītu, vai temperatūras datus varat iegūt no API, palaidiet čokurošanās, sekojoši:

$ curl -s http: // localhost: 8080 / temperatūra | json_pp

Kā redzat, temperatūras dati uz konsoles tiek drukāti JSON formātā. Tātad, API darbojas.

Nospiediet + C lai apturētu serveri.

Tagad es izveidošu tīmekļa lapu, kas pieprasīs API serverim temperatūras datus un tos labi parādīs lapā. Temperatūras dati tiks atjaunināti ik pēc 5 sekundēm.

Izveidojiet jaunu indekss.html failu publisks / projekta direktoriju:

$ nano public / index.html

Ievadiet šādas kodu rindas indekss.html failu.




Temperatūras monitors







00.00 ° C


Temperatūras atjaunināšana notiek ik pēc 5 sekundēm



Kad esat pabeidzis, nospiediet + X sekoja un lai saglabātu indekss.html failu.

HTML fails indekss.html ir viegli saprotams. Tas ir formāts, kādā temperatūras dati tiks parādīti tīmekļa lietotnē.

Šeit līnijas 53-55 tiek izmantotas, lai parādītu progresa joslu, un līnijas 57-60 tiek izmantotas, lai parādītu temperatūru.

5. – 49. Rinda tiek izmantota, lai jauki dekorētu tīmekļa lietotni, izmantojot CSS (kaskādes stila lapa).

62. – 109. Rinda tiek izmantota, lai padarītu tīmekļa lietotni funkcionālu. JavaScript kodi tiek izmantoti, lai animētu progresa joslu, iegūtu temperatūras datus no API un parādītu informāciju.

63. līnija vada galvenais funkcija, kad tīmekļa lietotne ir ielādēta pārlūkprogrammā.

The galvenais funkcija ir ļoti ilga. Tas stiepjas no 65. līdz 108. līnijai. Galvenās funkcijas iekšpusē mums ir dažas citas funkcijas, piemēram, getTemperature, updateTemperature, updateProgress, lietotne, un sākt.

The updateProgress Funkcija 83. – 86. rindā kā ievadi ņem progresa procentuālo daļu un atjaunina progresa joslu.

The updateTemperature funkcija 77. – 81. rindā ņem temperatūras datus kā ievadi un atjaunina tīmekļa lietotni ar temperatūras datiem.

The getTemperature funkcija rindās 66-75 pieprasa /temperatūra API galapunkts un iegūst datus par temperatūru. Kad dati ir saņemti, tas izsauc updateTemperature funkcija ar datiem. The updateTemperature Pēc tam funkcija atjaunina tīmekļa lietotni ar jauniem temperatūras datiem.

The lietotne funkcija rindās 88-99 animē progresa joslu un ik pēc 5 sekundēm pieprasa temperatūras datus no API.

The sākt funkcija 101. – 104.rindā palaiž tīmekļa lietotni.

Atveriet iepakojums.json failu ar nano teksta redaktoru šādi:

$ nano pakete.json

Mainīt galvenais uz serveris.js un pievienojiet jauno skriptu kalpot iekš skripti sadaļā, kā norādīts zemāk redzamajā ekrānuzņēmumā.

Kad esat pabeidzis, nospiediet + X sekoja un lai saglabātu iepakojums.json failu.

Tagad, kad viss ir gatavs, palaidiet tīmekļa lietotni un API ar šādu komandu:

$ npm palaist

Serverim jādarbojas portā 8080.

Tagad savā Raspberry Pi ierīcē atveriet tīmekļa pārlūkprogrammu un apmeklējiet vietni http: // localhost: 8080. Temperatūras dati no digitālā termometra moduļa DS18B20 jāparāda jūsu tīmekļa pārlūkprogrammā, kā redzat zemāk redzamajā ekrānuzņēmumā.

Temperatūras dati jāatjaunina ik pēc 5 sekundēm.

Kā redzat, temperatūra mainās ik pēc 5 sekundēm.

Ja vēlaties piekļūt tīmekļa lietotnei no cita tīkla tīkla datora, jums būs jāzina Raspberry Pi ierīces IP adrese.

Raspberry Pi ierīces IP adresi varat atrast ar šādu komandu:

$ resursdatora nosaukums -Es

Kā redzat, manas Raspberry Pi ierīces IP adrese ir 192.168. lpp.0.107. Jums tas būs savādāk. Tātad, tagad noteikti nomainiet IP adresi.

Kad esat uzzinājis savas Raspberry Pi ierīces IP adresi, jums vajadzētu būt iespējai piekļūt tīmekļa lietotnei no jebkura tīkla datora, izmantojot tīmekļa pārlūku. Vienkārši apmeklējiet vietni http: // 192.168. lpp.0.107: 8080, un tīmekļa lietotnei jāparāda temperatūras dati no digitālā termometra moduļa DS18B20.

Secinājums

Šajā rakstā jūs uzzinājāt, kā temperatūras mērīšanai izmantot Raspberry Pi digitālo termometra moduli DS18B20. Jūs arī uzzinājāt, kā izveidot mezglu.js API temperatūras datu parādīšanai tīmekļa lietotnē, kas piekļūst temperatūras datiem no API un tos parāda. Šis raksts palīdzēs jums sākt darbu ar Raspberry Pi temperatūras uzraudzību ar digitālā termometra moduli DS18B20 un IoT ar Raspberry Pi.

Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...
WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...