Kazalo:

IoT Dual Temperature Data Server: 12 korakov (s slikami)
IoT Dual Temperature Data Server: 12 korakov (s slikami)

Video: IoT Dual Temperature Data Server: 12 korakov (s slikami)

Video: IoT Dual Temperature Data Server: 12 korakov (s slikami)
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Junij
Anonim
IoT Dual Temperature Data Server
IoT Dual Temperature Data Server

To je moj prvi poskus pisanja Instructable -a, zato me prosim olajšajte! Če menite, da to ni tako slabo, vas prosim, da glasujete zame na prvem natečaju avtorjev.

To je moj projekt Lock-Down za daljinsko spremljanje 2 temperatur v rastlinjaku, enega na tleh in enega tik pod streho. Čeprav sem že uporabljal Raspberry Pi (RPi), je ta projekt vključeval več elementov, ki jih nisem uporabljal, in med potjo sem našel več vaj, ki so zastarele ali pa so bile napačne. To je moja zbirka znanja za izdelavo delujočega dvojnega daljinskega nadzornika temperature iz digitalnih temperaturnih senzorjev Pi Zero & 2 DS18B20+ One Wire, ki smo jih pridobili med potjo.

Stvari, o katerih sem se naučil:

  • Omogočanje dostopnosti podatkov iz naprave kot dela interneta stvari (IoT)
  • 1-žični vmesnik z dvema napravama
  • Podatkovnost
  • Podatki JSON
  • Nastavitev požarnega zidu UFW
  • Za prikaz podatkov uporabite Freeboard.io
  • Konfiguriranje RPi za samodejni zagon programa

S preprostim iskanjem po vseh teh temah je mogoče najti ogromno podatkov, vendar ni tako jasno, kako združiti vse te ločene elemente.

Zaloge

  • Potrebovali boste Raspberry Pi (z monitorjem, miško in tipkovnico za nastavitev, vendar ne pri izvajanju končanega projekta)
  • Delovna internetna povezava.
  • Napajalnik s priključkom Micro USB
  • 2 enožilnih digitalnih temperaturnih senzorjev DS18B20+. Ugotovil sem, da je Amazon najcenejši
  • 4K7 ohmski upor ali pa sem uporabil 2 10K ohmska upora.
  • Majhna plošča in nekaj moških/ženskih žic za testiranje na klopi
  • Majhen kos traku za končno montažo
  • Preprosta orodja za spajkanje in odstranjevanje žice.
  • Majhna plastična škatla za shranjevanje končne zasnove

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Imel sem že Raspberry Pi Zero W (z brezžičnim), vendar sem prepričan, da bo ta preprost projekt dobro deloval na katerem koli RPI -ju. V škatli čudnih elektronskih bitov v moji delavnici je bilo vse ostalo (plošča, žica, napajalnik itd.), Zato sem moral kupiti le dva 2x senzorja DS18B20 iz Amazona. To so običajni čipi DS18B20, ki so prav priročno nameščeni v vodotesnem ohišju in 3 -metrskem kablu. Iz kabla so 3 žice:

  • Rdeča - napajanje - priklopite na 3.3v pin 1
  • Črna - vrnitev - priključite na ozemljitveni zatič 6
  • Rumena - podatki - priključite se na pin 7 GPIO4

Tipala uporabljajo vmesnik 1-Wire in jih je bilo zelo enostavno povezati in pridobiti podatke. Na spletu je več strani s podrobnostmi za povezavo ene naprave, zelo malo pa za povezavo 2 (ali več).

Za preskušanje na klopi je bilo vezje sestavljeno s pomočjo mize. V vadnicah, ki sem jih našel, je bilo navedeno, da uporabljam upor 4K7 za pristranskost podatkovne linije, vendar nisem mogel najti enega, zato sem vzporedno uporabljal 2* 10K in je deloval odlično. Na spletu je veliko virov za uporabo mize za sestavljanje vezij RPi, zato jih tukaj ne bom ponavljal.

Diagram, ustvarjen s tokokrogom

2. korak: Namestitev programske opreme Raspberry Pi OS

Namestitev programske opreme Raspberry Pi OS
Namestitev programske opreme Raspberry Pi OS
Namestitev programske opreme Raspberry Pi OS
Namestitev programske opreme Raspberry Pi OS
Namestitev programske opreme Raspberry Pi OS
Namestitev programske opreme Raspberry Pi OS

Ker sem že uporabljal ta RPi, sem se odločil, da bom začel s čisto namestitvijo operacijskega sistema, preoblikoval sem kartico SD in namestil čisto različico NOOBS. Nato sem namestil polno namizno različico Raspian (zgornja možnost), saj bi to namestilo tudi PIP & GIT, ki ga različica lite nima. Čeprav za projekt nisem potreboval grafičnega uporabniškega vmesnika (GUI), je to preprost način za nastavitev vseh možnosti in s kartico SD s 16 GB ni zmanjkalo prostora.

Nastavil sem dostop WI-FI, nato zagnal celotno namestitev in nato čarovnika s posodobitvami in nadgradnjami itd. Z grafičnim vmesnikom nastavim RPI po potrebi samo zato, ker je uporaba grafičnega vmesnika enostavnejša od vmesnika ukazne vrstice (CLI). V meniju sem odšel v konfiguracijsko okno in nato:

  • Na zavihku sistem sem spremenil geslo, nastavil za zagon na CLI in odkljukal samodejno prijavo
  • Na zavihku vmesniki sem omogočil 1-žilno
  • Kliknite v redu in znova zaženite

Če se želite kadar koli vrniti v grafični vmesnik, vnesite startx v CLI

startx

3. korak: Nastavite podatkovnost za omogočanje oddaljenega dostopa

Nastavite podatkovnost za omogočanje oddaljenega dostopa
Nastavite podatkovnost za omogočanje oddaljenega dostopa
Nastavite podatkovnost za omogočanje oddaljenega dostopa
Nastavite podatkovnost za omogočanje oddaljenega dostopa
Nastavite podatkovnost za omogočanje oddaljenega dostopa
Nastavite podatkovnost za omogočanje oddaljenega dostopa

Na spletnem mestu Dataplicity na naslovu https://blog.dataplicity.com/how-to-build-a-raspb… sem našel resnično koristen vnos v blog in uporabil nekaj delov tega. Oddelek 3 spletnega dnevnika opisuje nastavitev Dataplicity za oddaljeni dostop do RPi. Nikoli še nisem uporabljal Dataplicity, vendar moram reči, da ga zelo priporočam kot zelo preprosto orodje za oddaljeni dostop. Čeprav so posnetki zaslona (v zgornjem blogu) nekoliko zastareli, je načelo v redu.

V računalniku pojdite na Dataplicity.com in ustvarite račun (lahko uporabite brskalnik v grafičnem vmesniku, raje pa počasi pri RPi Zero). Nato kliknite gumb »dodaj novo napravo« in v pojavnem oknu se prikaže vrstica kode. Nato pojdite na CLI na RPi in vnesite vrstico besedila. Če je vse v redu, se prikaže logotip Dataplicity in zažene se namestitveni program.

Nova naprava bi se morala v vašem računalniku zdaj pojaviti na spletnem mestu Dataplicity. Kliknite napravo in prikazal se bo terminalski zaslon za vaš RPi.

Tukaj je treba opozoriti na nekaj stvari:

  • Za prijavo vnesite "su pi" (za dostop super -uporabnika) in pozvani boste k vnosu gesla (kot je bilo nastavljeno prej)
  • Omogočiti morate Wormhole (za uporabo kasneje)
  • Za kasnejši prikaz podatkov potrebujete naslov Wormhole (z desno miškino tipko kliknite, če želite kopirati)

Ta oddaljeni dostop lahko uporabite za vse naslednje korake in je veliko lažje kopirati podatke, programe itd. Kot neposredno na RPi.

4. korak: Preverite senzorje

Zdaj lahko za vse naslednje razdelke uporabite oddaljeni dostop do RPI Dataplicity.

Če je zdaj vse v redu, bi morali videti, kako se temperature vračajo iz DS18B20. Delal sem skozi vadnico Pi Hut, vendar večina tega ni bila potrebna. Če želite vse podrobnosti, jih lahko najdete tukaj:

Pomembno je, da greste v imenik naprav in se prepričate, da sta prikazana 2 različna senzorja.

cd/sys/bus/w1/devices/

To bi moralo prikazati 2 napravi, ki se začneta z 28-, in glavno vodilo vodila. Moje kažejo:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Ti dve identifikacijski številki sta pomembni in ju boste potrebovali kasneje! Nato preklopite v enega od imenikov senzorjev:

cd 28-011453ebfdaa

(na primer) in nato prebrati vrednost s senzorja

mačka w1_slave

Prikazana morata biti 2 vrstici besedila:

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

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

DA prikazuje, da senzor pravilno odčita, 21187 pa temperaturo v Celsih 21,187 (deljeno s 1000) To ponovite, da preverite drugi senzor. Če oba prebereta ok, lahko nadaljujemo z branjem podatkov s Python3.

Kopiral sem in prilagodil naslednjo kodo, ki sem jo našel v spletu, vendar se ne spomnim, od kod. Če je to videti kot vaša koda, se opravičujem, ker ni bil namenjen plagiat; prosim, sporočite mi in potrdil bom vaše delo.

Ustvarite imenik, imenovano projekti, in ga spremenite v ta imenik.

mkdir ~/projekti

cd ~/projekti

V tem imeniku z urejevalnikom besedila (nano) ustvarite in uredite datoteko, imenovano thermo-test.py

sudo nano thermo-test.py

To bi moralo odpreti urejevalnik in ko uporabljate Dataplicity, lahko preprosto kopirate spodnjo kodo (thermo-test.py) in jo prilepite v urejevalnik. Dva imena naprav (od 28 do…) morate spremeniti v zgoraj navedena. Ko je vse videti pravilno, pritisnite ctrl+X za dokončanje, Y za shranjevanje in vrnitev za uporabo obstoječega imena. Če raje uporabljate grafični vmesnik, bo Thonny storil enako.

Za zagon preskusnega programa:

sudo python3 thermo-test.py

Če je vse v redu, bi to moralo izvesti datoteko z uporabo pythona 3 in natisniti 2 temperaturi na vsakih 10 sekund. Lahko preverite, ali je vse v redu, tako da 1 senzor postavite v ledeno vodo ali nežno segrejete s sušilcem za lase. Če se vse zdi v redu, lahko gremo naprej!

5. korak: Požarni zid UFW

Požarni zid UFW
Požarni zid UFW

Ker bo ta RPi trajno povezan z internetom, sem se odločil, da bi bil požarni zid dobra ideja in enostaven za uporabo je Nezapleten požarni zid (ufw). Tukaj je zelo preprosta vadnica

Ne bom se poglobil, saj to ni namen tega navodila, ampak na kratko:

Požarni zid namestite z:

sudo apt-get install ufw

Nastavite privzeta pravila:

sudo ufw privzeto dovoljuje odhodne

sudo ufw privzeto zavrni dohodne

Odprite vrata 80 za Dataplicity

sudo ufw dovoli 80

Omogočite požarni zid

sudo ufw enable

Preverite stanje in se prepričajte, da vse deluje

status sudo ufw

6. korak: S zaključite temperaturne podatke kot JSON

S končanje temperaturnih podatkov kot JSON
S končanje temperaturnih podatkov kot JSON

Nazaj na blog Tim Fernando in oddelek 5.

Sledite korakom, kot je navedeno (razen če smo že ustvarili imenik projektov), in vse bi moralo delovati v redu. Z GIT -om boste prenesli Timove aplikacijske datoteke, PIP pa bo poskrbel, da bodo na vaš RPi nameščeni vsi potrebni programi. Nato sem ugotovil, da moram znova zagnati, da se prepričam, ali so bili paketi pravilno nastavljeni.

Nato zaženite Timov program in vaš RPi naj bi potem zagotovil podatke JSON za prvi senzor.

cd home/pi/projects/temperature-serve-pi

temperatura sudo gunicorn: app -b 0.0.0.0:80

Po spletnem dnevniku lahko nadaljujete do razdelka 6, kjer boste našli podatke za 1 senzor.

Uporabite lahko tudi pregledovalnik JSON, da si ogledate podatke https://codebeautify.org/jsonviewer Kliknite gumb »naloži URL« in prilepite prej omenjeni naslov Wormhole. V levem podoknu bi morali videti dva vnosa, enega za Celzij in enega za Fahrenheit.

7. korak: Pošljite podatke z obeh senzorjev

Pošljite podatke z obeh senzorjev
Pošljite podatke z obeh senzorjev

Na podlagi kode v temperature.py in thermo-test.py sem ustvaril 2temps.py Urejeno kot prej v imeniku /projects /temperature-serve-pi, prilepilo v kodo in shranilo. Nato sem tekel

sudo gunicorn 2temps: aplikacija -b 0.0.0.0:80

Ko sem znova zagnal JSON Viewer, sem dobil vrednosti za temp1 in temp2

Uspeh:)

8. korak: Samodejni zagon

Samodejni zagon
Samodejni zagon

Ker se elektrika v rastlinjaku občasno izklopi, sem želel, da RPi samodejno naloži program in začne dokazovati podatke. Zdi se, da je najpreprostejši način urediti datoteko rc.local in dodati zahtevano kodo na dnu tik nad vrstico exit 0.

cd itd

sudo nan rc.local

nato dodatek

spanje 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • Na koncu & pove računalniku, naj zažene skript v podljudni lupini, tako da vaš računalnik ne počaka, da se funkcija konča, in nadaljuje z zagonom
  • Sleep 10 [seconds] poskrbi, da so vse prejšnje operacije zaključene pred zagonom storitve.

Zaprite in shranite kot prej. Nato znova zaženite in znova zaženite JSON Viewer, da preverite, ali je vse v redu.

Če želite več informacij o samodejno zagnanih programih, je tukaj odlična vadnica

9. korak: prikaz podatkov na Freeboard.io (1)

Prikaz podatkov na Freeboard.io (1)
Prikaz podatkov na Freeboard.io (1)

Koraki na Timovem blogu povzamejo dobro; ustvarite račun na www.freeboard.io in nato ustvarite nov Freeboard, svojega sem poklical SHEDTEMPERATURES.

Najprej dodajte vir podatkov, kliknite DODAJ v zgornjem desnem kotu in v pojavnem oknu izberite vrsto JSON, dajte izvoru podatkov IME, dodajte naslov črvnine od prej kot URL in kliknite NE za POSKUSI THINGPROXY. Temperature se spreminjajo le zelo počasi, zato OSVEŽITE VSAKIH 15 SEKUND. Kliknite SHRANI.

10. korak: prikaz podatkov na Freeboard.io (2)

Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)
Prikaz podatkov na Freeboard.io (2)

Kliknite DODAJ PANE in nato +, da dodate prvi gradnik. Izbirate lahko in se igrate z različnimi vrstami, vendar sem ugotovil, da je Gauge v redu. Dajte ustrezen NASLOV, ENOTE (C), MINIMALNO in MAKSIMALNO, da ustrezajo vaši prijavi. Za VAR PODATKOV kliknite + in prikazal se bo zgoraj ustvarjen vir.

Spustni meni bi moral zdaj prikazati 2 vira podatkov JSON (temp2 in temp2), zgrajena prej. Izberite ustrezen vir in kliknite shrani.

Ponovite to za drugo merilo in vse je pripravljeno.

Podatki bi morali biti zdaj prikazani na dveh merilnikih in če imate PRi še vedno priključen na monitor, bi morali videti zahteve z Freeboard.io, ko prispejo.

11. korak: Zgradite projekt v škatlo

Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo
Zgradite projekt v škatlo

Do tega trenutka so bili vsi RPi in druge komponente sestavljene na klopi z uporabo mize. Nato je bil za zamenjavo plošče uporabljen majhen kos lesene plošče, vse žice pa so spajane na svoje mesto.

Ugotovljeno je bilo, da je svetlo roza majhna škatla za shranjevanje Lego, ki je imela veliko prostora in kjer se RPI ne bi preveč segrela. na straneh škatle so bile izvrtane luknje; 3 mm najlonski stebri so bili uporabljeni za pritrditev RPi in traku.

Potrebne so le 3 povezave iz GPIO, 3.3v, GND in podatkov.

  • 3.3vdc pin 1
  • GND pin 6
  • Podatkovni (GPIO4) pin 7

V škatli za napajanje USB in kable so bili temperaturnim senzorjem dodane tudi luknje. Ko je bilo vse nameščeno na svoje mesto, smo dodali majhno količino silikonske tesnilne mase, da pajki ne bi mislili, da je to lepo toplo mesto za zimo!

12. korak: Končano

Dokončano
Dokončano
Dokončano
Dokončano

Škatlo so postavili v rastlinjak in jo napajali iz polnilnika USB. Dva senzorja smo postavili enega blizu vrha rastlinjaka, drugega pa v lonček za rastline, da bi preverili, kako mrzlo je sadike ponoči.

To je moj prvi Instructable in upam, da mislite, da je v redu. Če odkrijete napake, mi to sporočite in po potrebi jih bom spremenil. Naslednji korak je lahko beleženje podatkov vsakih (recimo) 60 sekund, vendar bo to prišlo kasneje.

Priporočena: