Avietė Pi

Aviečių Pi temperatūros stebėjimas

Aviečių Pi temperatūros stebėjimas


Temperatūros stebėjimas gali būti reikalingas daugelyje jūsų „Raspberry Pi“ projektų. Tai gana lengva padaryti naudojant „Raspberry Pi“, o šiam projektui reikalingi komponentai nėra per brangūs.Šiame straipsnyje parodyta, kaip naudoti skaitmeninį termometro modulį DS18B20 temperatūrai stebėti naudojant „Raspberry Pi“. Straipsnyje taip pat parodoma, kaip sukurti interneto programą, kad būtų rodoma temperatūra.

Dalykai, kurių jums reikės:

Norėdami išbandyti šio straipsnio pavyzdžius, jums reikės:

  1. „Raspberry Pi“ vieno borto kompiuteris
  2. „Raspberry Pi“ įrenginio maitinimo adapteris
  3. „MicroSD“ kortelė su įdiegta „Raspberry Pi OS“
  4. Tinklo ryšys „Raspberry Pi“ įrenginyje
  5. Duonos lenta
  6. 3 vnt. Tarp moterų ir moterų jungiamieji laidai
  7. Kai kurie vyrai-vyrai jungiamieji laidai
  8. 10k rezistorius
  9. DS18B20 skaitmeninio termometro modulis

DS18B20 skaitmeninio termometro kištukai

Jei laikysite DS18B20 skaitmeninį termometrą, kaip parodyta paveikslėlyje, pirmasis kaištis bus šlifuotas (BND), antras kaištis bus DUOMENYS, o trečiasis kaištis bus VCC.

Grandinės schema

Temperatūros monitoriaus schema parodyta žemiau esančiame paveikslėlyje.

Čia, PIN2 / 5V "Raspberry Pi" prietaiso turėtų būti prijungtas prie PIN3 / VCC skaitmeninio termometro modulio.

The PIN7 / GPIO4 "Raspberry Pi" prietaiso turėtų būti prijungtas prie PIN2 / DUOMENYS skaitmeninio termometro modulio.

The PIN9 / GND "Raspberry Pi" prietaiso turėtų būti prijungtas prie PIN1 / GND skaitmeninio termometro modulio.

A 10kΩ rezistorius turėtų būti sujungtas tarp PIN2 ir PIN3 skaitmeninio termometro modulio.

Jūs turėtumėte laikyti savo avietę Pi, kaip parodyta paveikslėlyje žemiau. Tada bus kairysis viršuje esantis kaištis PIN1. Smeigtukas prie pat PIN1 bus PIN2. Tada, jei judėsite į priekį viena eile, kairė bus PIN3 ir teisingas bus PIN4, ir taip toliau.

Prijungę visus komponentus prie „Raspberry Pi“ įrenginio, jis turėtų atrodyti maždaug taip:

Atidžiau pažiūrėkite, kaip dedu komponentus į duoną.

Prijungę visus komponentus prie „Raspberry Pi“ įrenginio, įjunkite „Raspberry Pi“ įrenginį. Tada prijunkite prie „Raspberry Pi“ įrenginio per VNC arba SSH.

Temperatūros duomenų nuskaitymas iš skaitmeninio termometro DS18B20

Termometro modulis DS18B20 naudoja 1 laido ryšio protokolą duomenims siųsti į „Raspberry Pi“. Pagal numatytuosius nustatymus 1 laido sąsaja neįgalinta. Sąsają galite lengvai įjungti naudodamiesi „Raspberry Pi“ konfigūravimo įrankiu.

Norėdami įjungti 1 laido sąsają, paleiskite raspi-config su tokia komanda:

$ sudo raspi-config

Pasirinkite Sąsajos parinktys ir paspauskite .

Pasirinkite 1 laidas ir paspauskite .

Pasirinkite ir paspauskite .

Paspauskite .

Norėdami išeiti iš raspi-config naudingumas, paspauskite .

Kad pakeitimai įsigaliotų, perkraukite „Raspberry Pi“ taip:

$ sudo perkrauti

Norėdami patikrinti, ar w1_gpio ir w1_therm branduolio moduliai yra įkelti, vykdykite šią komandą:

$ sudo lsmod | grep w1

Jei dėl kokių nors priežasčių, w1_therm modulis nėra įkeltas, tada galite rankiniu būdu jį įkelti naudodami šią komandą:

$ sudo modprobe w1_therm

Kai įjungsite 1 laido ryšys ir įkėlė w1_therm modulis, naujas įrenginys (28-00000ba693e9, mano atveju) turėtų būti išvardyti / sys / magistralė / w1 / įrenginiai katalogą, kaip matote toliau pateiktoje ekrano kopijoje.

$ ls / sys / magistralė / w1 / įrenginiai /

Eikite į naują katalogą taip:

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

Turėtumėte rasti a temperatūra failą kataloge, kaip matote toliau pateiktoje ekrano kopijoje.

$ ls -lh

The temperatūra failas yra paprasto teksto failas. Temperatūros duomenis galite perskaityti naudodami katė komandą taip:

$ katės temperatūra

Kaip matote, temperatūros duomenys atspausdinti ant konsolės. Čia, 30375 reiškia 30.375 ° C.

Galite naudoti programavimo kalbą, pvz., „Python“ ar „Node“.js, norėdami išanalizuoti šiuos temperatūros duomenis ir naudoti juos savo programoje. Aš jums parodysiu, kaip tai padaryti, kitame šio straipsnio skyriuje.

Norint išanalizuoti temperatūros duomenis naudojant programavimo kalbą, jums reikės absoliutaus kelio į temperatūra failą. Tai galite rasti naudodami perskaitymo nuoroda komandą taip:

$ readlink -f temperatūra

Sukurkite žiniatinklio programą, kad būtų rodomi temperatūros duomenys:

Šiame skyriuje sužinosite, kaip analizuoti temperatūros duomenis iš termometro modulio DS18B20 ir juos rodyti žiniatinklio programoje.

Šiame pavyzdyje sukursiu API, kuri analizuos temperatūros duomenis iš termometro modulio DS18B20, kurį galima pasiekti iš API. Taip pat sukursiu žiniatinklio programą, kuri atims temperatūros duomenis iš API ir gražiai juos atvaizduos. Aš naudosiu Mazgą.js programavimo kalba tai padaryti. Kodai įkeliami į mano „GitHub“ saugyklą shovon8 / ds18b20-raspberrypi-api. Galbūt norėsite tai patikrinti, jei kyla sunkumų nukopijuojant ir įklijuojant kodus iš šio straipsnio.

Mazgas.„js“ pagal nutylėjimą nėra įdiegta „Raspberry Pi OS“. Bet tai galima rasti oficialioje „Raspberry Pi OS“ paketų saugykloje. Galite lengvai įdiegti „Node“.js iš „Raspberry Pi OS“ paketų saugyklos.

Pirmiausia atnaujinkite APT paketų saugyklos talpyklą naudodami šią komandą:

$ sudo apt atnaujinimas

Tada įdiekite mazgą.js ir NPM su tokia komanda:

$ sudo apt įdiekite nodejs npm

Norėdami patvirtinti diegimą, paspauskite Y tada paspauskite .

APT paketų tvarkyklė atsisiųs ir įdiegs visus reikalingus paketus. Gali praeiti šiek tiek laiko.

Šiuo metu Mazgas.turėtų būti įdiegti js ir NPM.

Kartą mazgas.js ir NPM yra įdiegti, patikrinkite, ar mazgas ir npm yra tokios komandos:

$ node --versija
$ npm - versija

Atnaujinkite NPM naudodami šią komandą:

$ sudo npm install - pasaulinis npm

NPM turėtų būti atnaujinta.

Kaip matote, NPM buvo atnaujinta nuo 5 versijos.8.0 iki 6 versijos.14.8.

$ node --versija $ npm --versija

Dabar tas mazgas.js ir NPM yra įdiegti, sukurkite naują projekto katalogą ~ / ds18b20, taip:

$ mkdir -v ~ / ds18b20

Eikite į ~ / ds18b20 katalogą:

$ cd ~ / ds18b20

Sukurkite tuščią pakuotė.Json failą su šia komanda:

$ npm inic

Įdiekite Išreikšti.js projekto biblioteka su tokia komanda:

$ npm įdiegti - išsaugoti greitąjį

„Express“.js biblioteka dabar turėtų būti įdiegta.

Sukurkite naują failą serverio.js projekto kataloge taip:

$ nano serveris.js

Įveskite šias kodų eilutes serverio.js failą.

tegul express = reikalauja ('express');
tegul fs = reikalauja ('fs');
tegul serveris = express ();
const Uostas = 8080;
const WEBROOT = './ public “;
serverio.gauti ('/', išreikšti.statinis (WEBROOT));
serverio.gauti ('/ temperatūra', (req, res) =>
tegul tempDataPath = '/ sys / bus / w1 / devices / 28-00000ba693e9 / temperatūra';
tegul temperatūra = fs.readFileSync (tempDataPath, encoding: 'utf8', flag: 'r') / 1000;
res.json (temperatūra, diapazono pradžia: -55, diapazono pabaiga: 125);
);
serverio.klausytis (Uostas, () =>
konsolė.žurnalas ('serveris, veikiantis uoste $ PORT');
);

Baigę paspauskite + X paskui Y ir išsaugoti serverį.js failas.

Čia importuojama 1 eilutė išreikšti, ir 2 eilutė importuoja fs modulis.

4 eilutė inicijuoja greitąjį.

6 ir 7 eilutėse apibrėžiamas Uostas ir Tinklalapis pastovieji kintamieji. API ir žiniatinklio serveris veiks Uostas (kuris yra 8080 m, šiame straipsnyje), o interneto serveris aptarnaus statinį turinį iš Tinklalapis (kuris yra viešas / šiame kataloge esančiame kataloge).

9 eilutė naudojama sukonfigūruoti, kad būtų teikiamas statinis turinys iš Tinklalapis.

11-15 eilutėse apibrėžiamas API galas / temperatūra, kurie bus naudojami temperatūros duomenims gauti JSON formatu.

12 eilutėje tempDataPath kintamasis turi absoliutų kelią į temperatūra skaitmeninio termometro modulio DS18B20 failas, parodytas ankstesniame šio straipsnio skyriuje.

13 eilutėje temperatūros duomenys nuskaitomi iš temperatūra failą naudodami mazgą.js fs modulis, o temperatūros duomenys yra saugomi temperatūra kintamasis.

14 eilutėje temperatūros duomenys spausdinami JSON formatu. DS18B20 skaitmeninis termometro modulis gali matuoti nuo -55 ° C iki 125 ° C temperatūrą. Aš pridūriau, kad JSON išvestyje naudojant rangeStart ir diapazonasPabaiga savybes.

Galiausiai 17-19 eilutėje veikia API ir žiniatinklio serveris Uostas (kuris yra 8080 m, šiame straipsnyje).

Sukurti viešas / katalogą projekto kataloge taip:

$ mkdir -v public

Paleiskite serverio.js programa su tokia komanda:

$ node serveris.js

Serveris turėtų veikti uoste 8080 m.

Termometro modulio DS18B20 temperatūros duomenis galite pasiekti iš / temperatūra API galinis taškas.

Norėdami patikrinti, ar galite gauti temperatūros duomenis iš API, paleiskite garbanoti, taip:

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

Kaip matote, temperatūros duomenys spausdinami ant konsolės JSON formatu. Taigi, API veikia.

Paspauskite + C sustabdyti serverį.

Dabar sukursiu tinklalapį, kuris paprašys API serverio pateikti temperatūros duomenis ir gražiai juos parodys puslapyje. Temperatūros duomenys bus atnaujinami kas 5 sekundes.

Sukurkite naują indeksas.HTML failą viešas / projekto katalogą:

$ nano public / index.HTML

Įveskite šias kodų eilutes indeksas.HTML failą.




Temperatūros monitorius







00.00 ° C


Temperatūra atnaujinama kas 5 sekundes



Baigę paspauskite + X paskui Y ir išsaugoti indeksas.HTML failą.

HTML failas indeksas.HTML yra lengvai suprantama. Tai formatas, kuriuo temperatūros duomenys bus rodomi žiniatinklio programoje.

Čia eigos juostai rodyti naudojamos 53–55 eilutės, o temperatūrai rodyti - 57–60 eilutės.

5–49 eilutės naudojamos gražiai puošiant žiniatinklio programą naudojant CSS (kaskadinio stiliaus lapas).

62–109 eilutės naudojamos, kad žiniatinklio programa būtų funkcionali. „JavaScript“ kodai naudojami progreso juostai animuoti, temperatūros duomenims gauti iš API ir informacijai rodyti.

63 linija eina pagrindinis funkcija, kai žiniatinklio programa bus įkelta į naršyklę.

The pagrindinis funkcija yra labai ilga. Jis tęsiasi nuo 65 iki 108 linijos. Pagrindinės funkcijos viduje mes turime keletą kitų funkcijų, tokių kaip „getTemperature“, updateTemperature, updateProgress, programa, ir pradžia.

The updateProgress funkcija 83–86 eilutėse nurodo pažangos procentą kaip įvestį ir atnaujina eigos juostą.

The updateTemperature funkcija 77–81 eilutėse laiko temperatūros duomenis kaip įvestį ir atnaujina žiniatinklio programą temperatūros duomenimis.

The „getTemperature“ funkcija 66-75 eilutėse pateikia užklausą / temperatūra galutinį API tašką ir gauna temperatūros duomenis. Gavęs duomenis, jis iškviečia updateTemperature funkcija su duomenimis. The updateTemperature Tada funkcija atnaujina žiniatinklio programą naujais temperatūros duomenimis.

The programa funkcija, eilučių 88–99, animuoja eigos juostą ir kas 5 sekundes prašo temperatūros duomenų iš API.

The pradžia funkcija, 101–104 eilutėse, paleidžia žiniatinklio programą.

Atidaryk pakuotė.Json failą su nano teksto redaktoriumi taip:

„$ nano“ paketas.Json

Keisti pagrindinis į serverio.js ir pridėkite naują scenarijų tarnauti viduje konors scenarijus skyriuje, kaip pažymėta toliau pateiktoje ekrano kopijoje.

Baigę paspauskite + X paskui Y ir išsaugoti pakuotė.Json failą.

Dabar, kai viskas paruošta, paleiskite žiniatinklio programą ir API naudodami šią komandą:

$ npm bėgimas

Serveris turėtų veikti 8080 prievade.

Dabar „Raspberry Pi“ įrenginyje atidarykite interneto naršyklę ir apsilankykite http: // localhost: 8080. Temperatūros duomenys iš skaitmeninio termometro modulio DS18B20 turėtų būti rodomi jūsų interneto naršyklėje, kaip matote toliau pateiktoje ekrano kopijoje.

Temperatūros duomenys turėtų būti atnaujinami kas 5 sekundes.

Kaip matote, temperatūra keičiasi kas 5 sekundes.

Jei norite pasiekti žiniatinklio programą iš kito tinklo kompiuterio, turėsite žinoti „Raspberry Pi“ įrenginio IP adresą.

„Raspberry Pi“ įrenginio IP adresą galite rasti naudodami šią komandą:

$ pagrindinio kompiuterio vardas -I

Kaip matote, mano „Raspberry Pi“ įrenginio IP adresas yra 192.168.0.107. Jums tai bus kitaip. Taigi, nuo šiol būtinai pakeiskite IP adresą.

Kai žinosite „Raspberry Pi“ įrenginio IP adresą, turėtumėte turėti galimybę pasiekti žiniatinklio programą iš bet kurio tinklo kompiuterio naudodami žiniatinklio naršyklę. Tiesiog apsilankykite http: // 192.168.0.107: 8080, o žiniatinklio programoje turėtų būti rodomi temperatūros duomenys iš skaitmeninio termometro modulio DS18B20.

Išvada

Šiame straipsnyje jūs sužinojote, kaip naudoti „Raspberry Pi“ skaitmeninio termometro modulį DS18B20 temperatūrai matuoti. Jūs taip pat išmokote sukurti mazgą.js API temperatūros duomenims rodyti žiniatinklio programoje, kuri pasiekia temperatūros duomenis iš API ir juos parodo. Šis straipsnis turėtų padėti pradėti naudoti „Raspberry Pi“ temperatūros stebėjimą naudojant skaitmeninio termometro modulį DS18B20 ir „IoT“ su „Raspberry Pi“.

5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...
Kaip sukurti žaidimą „Linux“
Prieš dešimtmetį nedaugelis „Linux“ vartotojų numatė, kad jų mėgstama operacinė sistema vieną dieną bus populiari komercinių vaizdo žaidimų žaidimų pl...
Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...