Turinys:

Dvigubos temperatūros duomenų serveris: 12 žingsnių (su paveikslėliais)
Dvigubos temperatūros duomenų serveris: 12 žingsnių (su paveikslėliais)

Video: Dvigubos temperatūros duomenų serveris: 12 žingsnių (su paveikslėliais)

Video: Dvigubos temperatūros duomenų serveris: 12 žingsnių (su paveikslėliais)
Video: 120 Dienų Atlante, Aurimo Nuhakintas Youtube ir Nauja Zelandija: Exclusive Čempiono Pasakojimai 2024, Lapkritis
Anonim
Dvigubos temperatūros duomenų serveris
Dvigubos temperatūros duomenų serveris

Tai pirmas mano bandymas parašyti „Instructable“, todėl prašau neskubėkite! Jei manote, kad tai nėra labai blogai, balsuokite už mane pirmojo autoriaus konkurse.

Tai yra mano „Lock-Down“projektas, skirtas nuotoliniu būdu stebėti 2 temperatūras šiltnamyje, vieną grindų lygyje, o kitą po stogu. Nors anksčiau naudoju „Raspberry Pi“(RPi), šis projektas apėmė keletą elementų, kurių nenaudojau, ir pakeliui radau keletą pamokymų, kurios buvo pasenusios arba tiesiog neteisingos. Tai yra mano žinių rinkinys, kaip pasigaminti veikiantį dvigubą nuotolinį temperatūros monitorių iš „Pi Zero & 2 DS18B20+ One Wire“skaitmeninių temperatūros jutiklių.

Dalykai, apie kuriuos sužinojau:

  • Duomenų teikimas iš įrenginio kaip daiktų interneto (daiktų interneto) dalis
  • 1 laido sąsaja su 2 įrenginiais
  • Dataplicity
  • JSON duomenys
  • UFW užkardos nustatymas
  • „Freeboard.io“naudojimas duomenims rodyti
  • RPi konfigūravimas automatiškai paleisti programą

Yra daug duomenų, kuriuos galima rasti paprastu paiešku visomis šiomis temomis, tačiau ne taip aišku, kaip sujungti visus šiuos atskirus elementus.

Prekės

  • Jums reikės „Raspberry Pi“(su monitoriumi, pele ir klaviatūra, kad galėtumėte nustatyti, bet ne tada, kai vykdote baigtą projektą)
  • Veikiantis interneto ryšys.
  • PSU su „Micro USB“jungtimi
  • 2 iš DS18B20+ vieno laido skaitmeninių temperatūros jutiklių. Radau, kad „Amazon“buvo pigiausia
  • 4K7 omų rezistorius arba aš naudoju 2 10K omų rezistorius.
  • Maža duonos lentelė ir keli laidai, skirti bandymams ant suoliuko
  • Mažas juostelės gabalas galutiniam surinkimui
  • Paprasti įrankiai litavimui ir vielos nuėmimui.
  • Maža plastikinė dėžutė, skirta galutiniam dizainui

1 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Aš jau turėjau „Raspberry Pi Zero W“(su belaidžiu ryšiu), bet esu tikras, kad šis paprastas projektas veiks gerai bet kuriame RPI. Keistų elektroninių bitų dėžutėje mano dirbtuvėse buvo visa kita (duonos plokštė, viela, PSU ir kt.), Todėl viskas, ką turėjau nusipirkti, buvo du 2 x DS18B20 jutikliai iš „Amazon“. Tai yra įprastos DS18B20 mikroschemos, patogiai sumontuotos vandeniui atspariame korpuse ir 3 m kabeliu. Iš kabelio yra 3 laidai:

  • Raudona - maitinimas - prijunkite prie 3.3V kaiščio 1
  • Juoda - grįžkite - prijunkite prie įžeminimo kaiščio 6
  • Geltona - duomenys - prisijunkite prie GPIO4 kaiščio 7

Jutikliai naudoja 1 laido sąsają ir buvo labai lengvai prijungiami ir gaunami duomenys. Internete yra keli puslapiai, kuriuose pateikiama išsami informacija apie 1 įrenginio prijungimą, bet labai mažai apie 2 (ar daugiau) prijungimą.

Bandymams ant stendo grandinė buvo surinkta naudojant duonos lentą. Pamokose, kurias radau, teigiama, kad duomenų linijai šalinti naudojamas 4K7 rezistorius, tačiau nepavyko rasti vieno, taigi lygiagrečiai naudojamo 2* 10K, ir jis veikė puikiai. Internete yra daug išteklių, skirtų naudoti duonos lentą RPi grandinėms surinkti, todėl čia jų nekartosiu.

Diagrama sukurta naudojant grandinės schemą

2 veiksmas: Raspberry Pi OS programinės įrangos sąranka

Raspberry Pi OS programinės įrangos sąranka
Raspberry Pi OS programinės įrangos sąranka
Raspberry Pi OS programinės įrangos sąranka
Raspberry Pi OS programinės įrangos sąranka
Raspberry Pi OS programinės įrangos sąranka
Raspberry Pi OS programinės įrangos sąranka

Kadangi anksčiau naudoju šį RPi, nusprendžiau pradėti nuo švaraus OS diegimo, iš naujo suformataviau SD kortelę ir įdiegiau švarią NOOBS versiją. Tada įdiegiau visą „Raspian“darbalaukio versiją (viršutinė parinktis), nes taip pat būtų įdiegta „PIP & GIT“, o ne „Lite“versija. Nors projektui man nereikėjo grafinės vartotojo sąsajos (GUI), tai yra paprastas būdas nustatyti visas parinktis, o naudojant 16 GB SD kortelę vietos netrūko.

Aš sukūriau WI-FI prieigą, tada paleidau visą diegimą, tada vedlį su atnaujinimais ir atnaujinimais ir tt Naudodama GUI, aš nustatiau RPI kaip reikia tik todėl, kad GUI naudojimas yra paprastesnis nei komandinės eilutės sąsaja (CLI). Meniu nuėjau į konfigūracijos langą ir tada:

  • Sistemos skirtuke pakeičiau slaptažodį, nustatiau paleisti į CLI ir nepažymėjau automatinio prisijungimo
  • Sąsajų skirtuke įgalinau 1 laidą
  • Spustelėkite Gerai ir paleiskite iš naujo

Jei jums reikia bet kada grįžti prie GUI, tiesiog įveskite startx CLI

startas

3 veiksmas: nustatykite „Dataplicity“, kad leistumėte nuotolinę prieigą

Nustatykite „Dataplicity“, kad galėtumėte pasiekti nuotolinę prieigą
Nustatykite „Dataplicity“, kad galėtumėte pasiekti nuotolinę prieigą
Nustatykite „Dataplicity“, kad galėtumėte pasiekti nuotolinę prieigą
Nustatykite „Dataplicity“, kad galėtumėte pasiekti nuotolinę prieigą
Nustatykite „Dataplicity“, kad leistumėte nuotolinę prieigą
Nustatykite „Dataplicity“, kad leistumėte nuotolinę prieigą

Radau tikrai naudingą tinklaraščio įrašą „Dataplicity“svetainėje adresu https://blog.dataplicity.com/how-to-build-a-raspb… ir panaudojau keletą jo dalių. Tinklaraščio 3 skyriuje aprašoma „Dataplicity“nustatymas nuotolinei prieigai prie RPi. Niekada anksčiau nenaudojau „Dataplicity“, tačiau turiu pasakyti, kad aš labai rekomenduoju jį kaip labai paprastą nuotolinės prieigos įrankį. Nors ekrano kopijos (aukščiau esančiame tinklaraštyje) yra šiek tiek pasenusios, principas yra geras.

Kompiuteryje eikite į Dataplicity.com ir sukurkite paskyrą (galite naudoti naršyklę GUI, bet gana lėtai RPi Zero). Tada spustelėkite mygtuką „Pridėti naują įrenginį“ir iššokančiajame lange rodoma kodo eilutė. Tada eikite į RPI CLI ir įveskite teksto eilutę. Jei viskas gerai, pasirodys „Dataplicity“logotipas ir bus paleista diegimo programa.

Grįžęs į kompiuterį, naujasis įrenginys dabar turėtų būti rodomas „Dataplicity“svetainėje. Spustelėkite įrenginį ir turėtumėte pamatyti RPi terminalo ekraną.

Čia reikia atkreipti dėmesį į keletą dalykų:

  • Jei norite prisijungti, įveskite „su pi“(prieigai prie viršininko) ir būsite paraginti įvesti slaptažodį (kaip nustatyta anksčiau)
  • Turite įgalinti kirmgraužą (bus naudojama vėliau)
  • Jums reikės „Kirminų skylės“adreso, kad vėliau galėtumėte rodyti duomenis (dešiniuoju pelės mygtuku spustelėkite, jei norite nukopijuoti)

Šią nuotolinę prieigą galite naudoti atlikdami visus šiuos veiksmus ir daug lengviau kopijuoti duomenis, programas ir tt, nei tiesiogiai RPi.

4 žingsnis: patikrinkite jutiklius

Dabar galite naudoti „Dataplicity“nuotolinę prieigą prie RPI visuose kituose skyriuose.

Jei dabar viskas gerai prijungta, turėtumėte matyti, kaip temperatūra grįžta iš DS18B20. Aš dirbau per „Pi Hut“vadovėlį, tačiau dauguma to nebuvo privalomi. Jei norite išsamios informacijos, jas rasite čia:

Svarbiausia yra patekti į įrenginių katalogą ir įsitikinti, kad rodomi 2 skirtingi jutikliai.

cd/sys/bus/w1/devices/

Tai turėtų parodyti 2 įrenginius, prasidedančius 28 ir magistralės magistralę. Mano rodo:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Šie 2 ID numeriai yra svarbūs ir bus reikalingi vėliau! Tada pakeiskite vieną iš jutiklių katalogų:

cd 28-011453ebfdaa

(pavyzdžiui) ir tada nuskaityti vertę iš jutiklio

katė w1_slave

Turėtų būti rodomos 2 teksto eilutės:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d TAIP

53 01 4b 46 7f ff 0c 10 2d t = 21187

TAIP rodo, kad jutiklis skaito teisingai, o 21187 rodo temperatūrą Celsijaus laipsniu 21,187 (padalykite iš 1000) Pakartokite tai, kad patikrintumėte antrąjį jutiklį. Jei abu skaito gerai, galime pereiti prie duomenų skaitymo naudojant „Python3“.

Nukopijavau ir pritaikiau šį kodą, kurį radau internete, bet nepamenu, iš kur. Jei tai atrodo kaip jūsų kodas, atsiprašau, nes nebuvo skirtas plagiatas; praneškite man ir aš pripažinsiu jūsų darbą.

Sukurkite katalogą pavadinimu projektai ir pereikite prie to katalogo.

mkdir ~/projektai

cd ~/projektai

Šiame kataloge naudokite teksto redaktorių (nano), kad sukurtumėte ir redaguotumėte failą, pavadintą thermo-test.py

sudo nano termotestas.py

Tai turėjo atidaryti redaktorių ir, kai naudojate „Dataplicity“, galite tiesiog nukopijuoti žemiau esantį kodą (thermo-test.py) ir įklijuoti į redaktorių. Turėsite pakeisti 2 įrenginių pavadinimus (pradedant 28–…) į aukščiau paminėtus. Kai viskas atrodo teisingai, paspauskite „Ctrl“+X, kad baigtumėte, „Y“, kad išsaugotumėte ir grįžtumėte naudoti esamą pavadinimą. Jei norite naudoti GUI, Thonny padarys tą patį.

Norėdami paleisti testavimo programą:

sudo python3 termotestas.py

Jei viskas gerai, failą reikia vykdyti naudojant „python 3“ir kas 10 sekundžių spausdinti ekrane 2 temperatūras. Galite patikrinti, ar viskas gerai, įdėję 1 jutiklį į ledinį vandenį arba švelniai pašildydami plaukų džiovintuvu. Jei viskas atrodo gerai, galime judėti toliau!

5 veiksmas: UFW užkarda

UFW užkarda
UFW užkarda

Kadangi šis RPi buvo nuolat prijungtas prie interneto, nusprendžiau, kad ugniasienė bus gera idėja, o paprasta naudoti - nesudėtinga užkarda (ufw). Čia yra labai paprasta pamoka

Aš nesigilinu į didelį gilumą, nes tai nėra šios instrukcijos tikslas, bet trumpai:

Įdiekite užkardą naudodami:

sudo apt-get install ufw

Nustatykite numatytąsias taisykles:

sudo ufw numatytasis leidimas išeinantis

sudo ufw numatytasis paneigti gaunamus

Atidarykite 80 prievadą „Dataplicity“

sudo ufw leidžia 80

Įjunkite užkardą

sudo ufw įjungti

Patikrinkite būseną ir įsitikinkite, kad viskas veikia

sudo ufw būsena

6 veiksmas: S baigiant temperatūros duomenis kaip JSON

S baigia temperatūros duomenis kaip JSON
S baigia temperatūros duomenis kaip JSON

Grįžkite į Tim Fernando tinklaraštį ir 5 skyrių.

Atlikite nurodytus veiksmus (išskyrus tai, kad jau sukūrėme projektų katalogą) ir viskas turėtų veikti gerai. Naudodami GIT atsisiųsite Tim programos failus ir PIP užtikrins, kad visos reikalingos programos būtų įdiegtos jūsų RPi. Tada supratau, kad reikia iš naujo paleisti, kad įsitikintumėte, jog visi paketai buvo teisingai nustatyti.

Tada paleiskite Timo programą ir jūsų RPi turėtų pateikti JSON duomenis pirmajam jutikliui.

cd home/pi/projektai/temperatura-serv-pi

sudo gunicorn temperatūra: programa -b 0.0.0.0:80

Tinklaraštyje galite pereiti prie 6 skyriaus, kuriame rasite duomenis apie vieną jutiklį.

Taip pat galite naudoti „JSON Viewer“, kad pamatytumėte duomenis https://codebeautify.org/jsonviewer Spustelėkite mygtuką „įkelti URL“ir įklijuokite anksčiau nurodytą kirminų skylės adresą. Kairiojoje srityje turėtumėte pamatyti du įrašus: vieną Celsijaus ir vieną Fahrenheit.

7 veiksmas: siųskite duomenis iš abiejų jutiklių

Siųskite duomenis iš abiejų jutiklių
Siųskite duomenis iš abiejų jutiklių

Remdamasis temperatūrose.py ir thermo-test.py esančiais kodais, sukūriau 2temps.py Redaguotas, kaip ir anksčiau, kataloge / / / /temperatūra-serv-pi, įklijavau į kodą ir išsaugojau. Tada bėgau

„sudo gunicorn 2temps“: programa -b 0.0.0.0:80

Dabar, kai iš naujo paleidau „JSON Viewer“, gavau temp1 ir temp2 reikšmes

Sėkmė:)

8 žingsnis: automatinis paleidimas

Automatinis paleidimas
Automatinis paleidimas

Kadangi šiltnamio energija kartais išjungiama, norėjau, kad RPi automatiškai įkeltų programą ir pradėtų įrodinėti duomenis. Atrodo, kad paprasčiausias būdas yra redaguoti rc.local failą ir pridėti reikiamą kodą apačioje virš išėjimo 0 eilutės.

cd ir kt

sudo nan rc.local

tada priedas

miegoti 10

cd home/pi/projektai/Temperature-serve-pi sudo gunicorn temp04: programa -b 0.0.0.0:80 &

  • & Pabaigoje nurodo kompiuteriui paleisti scenarijų antriniame apvalkale, kad jūsų kompiuteris nelauktų, kol baigsis funkcija, ir toliau bus paleistas
  • Miego režimas 10 sekundžių užtikrina, kad visos ankstesnės operacijos būtų baigtos prieš pradedant paslaugą.

Išeikite ir išsaugokite kaip anksčiau. Tada iš naujo paleiskite ir iš naujo paleiskite „JSON Viewer“, kad patikrintumėte, ar viskas gerai.

Jei norite gauti daugiau informacijos apie automatiškai paleidžiamas programas, čia yra puiki pamoka

9 veiksmas: rodykite duomenis „Freeboard.io“(1)

Rodyti duomenis „Freeboard.io“(1)
Rodyti duomenis „Freeboard.io“(1)

Apibendrinant, Timo tinklaraščio veiksmai veikia gerai; susikurkite paskyrą www.freeboard.io ir sukurkite naują „Freeboard“, aš paskambinau „SHEDTEMPERATURES“.

Pirmiausia pridėkite duomenų šaltinį, viršutiniame dešiniajame kampe spustelėkite PRIDĖTI ir iššokančiajame lange pasirinkite tipą JSON, suteikite duomenų šaltiniui PAVADINIMĄ, pridėkite kirmgraužos adresą iš ankstesnio kaip URL ir spustelėkite NE, kad išbandytumėte THINGPROXY. Temperatūra keičiasi tik labai lėtai, todėl atnaujinkite kas 15 sekundžių. Spustelėkite IŠSAUGOTI.

10 veiksmas: rodykite duomenis „Freeboard.io“(2)

Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)
Rodyti duomenis „Freeboard.io“(2)

Norėdami pridėti pirmąjį valdiklį, spustelėkite PRIDĖTI PANE, o tada +. Galite pasirinkti ir žaisti su įvairiais TIPAIS, bet aš pastebėjau, kad matuoklis buvo puikus. Nurodykite tinkamą PAVADINIMĄ, VIENETUS (C), MINIMUMĄ ir MAXIMUM, kad jis atitiktų jūsų programą. Norėdami gauti duomenų bazę, spustelėkite + ir pasirodys aukščiau sukurtas šaltinis.

Išskleidžiamajame meniu dabar turėtų būti rodomi 2 anksčiau sukurti JSON duomenų šaltiniai (temp2 ir temp2). Pasirinkite tinkamą šaltinį ir spustelėkite išsaugoti.

Pakartokite tai antram matuokliui ir mes visi pasiruošę.

Duomenys dabar turėtų būti rodomi 2 matuokliuose, o jei PRi vis dar prijungtas prie monitoriaus, turėtumėte matyti „Freeboard.io“užklausas, kai jos bus gautos.

11 žingsnis: surinkite projektą į dėžutę

Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę
Sukurkite projektą į dėžę

Iki šiol RPi ir kiti komponentai buvo surinkti ant stendo, naudojant duonos lentą. Tada nedidelis juostelės gabalas buvo naudojamas pakeisti duonos lentą, o visi laidai buvo lituojami.

Buvo rasta ryškiai rožinė maža „Lego“laikymo dėžutė, kurioje buvo daug vietos ir kurioje RPI neįkaistų. dėžutės šonuose buvo išgręžtos skylės ir 3 mm nailono tvirtinimo stulpai buvo naudojami RPi ir juostelėms laikyti.

Iš GPIO reikalingi tik 3 ryšiai, 3.3v, GND ir duomenys.

  • 3.3Vdc kaištis 1
  • GND kaištis 6
  • Duomenų (GPIO4) kaištis 7

Dėžutėje taip pat buvo pridėtos skylės, skirtos USB maitinimo šaltiniui ir kabeliams prie temperatūros jutiklių. Kai viskas buvo sumontuota į vietą, į silikono sandariklį buvo įdėta nedidelė dalis, kad vorai negalvotų, jog tai maloni šilta vieta žiemoti!

12 žingsnis: Baigta

Baigta
Baigta
Baigta
Baigta

Dėžutė buvo įdėta į šiltnamį ir maitinama iš USB įkroviklio. Du jutikliai buvo pastatyti vienas šalia šiltnamio viršaus, o kitas - ant vazonėlio, kad būtų galima patikrinti, kaip naktį šalta sodinukai.

Tai mano pirmasis „Instructable“ir tikiuosi, kad manote, kad viskas gerai. Jei radote klaidų, praneškite man, jei reikia, pataisysiu. Kitas žingsnis gali būti duomenų registravimas kas 60 sekundžių, bet tai įvyks vėliau.

Rekomenduojamas: