INHOUDSOPGAWE:

IoT -data -bediener met dubbele temperatuur: 12 stappe (met foto's)
IoT -data -bediener met dubbele temperatuur: 12 stappe (met foto's)

Video: IoT -data -bediener met dubbele temperatuur: 12 stappe (met foto's)

Video: IoT -data -bediener met dubbele temperatuur: 12 stappe (met foto's)
Video: Dit gebeurt er als je een week geen ondergoed draagt 2024, Junie
Anonim
IoT -data -bediener met dubbele temperatuur
IoT -data -bediener met dubbele temperatuur

Dit is my eerste poging om 'n instruksies te skryf, en wees versigtig! As u dink dat dit nie te erg is nie, stem dan vir my in die eerste keer -outeurskompetisie.

Dit is my Lock-Down-projek om 2 temperature in 'n kweekhuis op afstand te monitor, een op vloervlak en een net onder die dak. Alhoewel ek Raspberry Pi's (RPi) voorheen gebruik het, het hierdie projek verskeie elemente behels wat ek nie gebruik het nie, en ek het onderweg verskeie tutoriale gevind wat verouderd was of net verkeerd was. Dit is my kennisversameling om 'n werkende dubbele afstandstemperatuurmonitor te maak van 'n Pi Zero & 2 DS18B20+ One Wire Digital Temperature Sensors wat onderweg verkry is.

Dinge waaroor ek geleer het:

  • Stel data vanaf 'n toestel beskikbaar as deel van die Internet of Things (IoT)
  • 1-draads koppelvlak met 2 toestelle
  • Gegewens
  • JSON data
  • Die opstel van die UFW -firewall
  • Gebruik Freeboard.io om die data te vertoon
  • Die konfigurasie van die RPi om die program outomaties uit te voer

Daar is groot hoeveelhede data wat gevind kan word met 'n eenvoudige soektog na al hierdie onderwerpe, maar wat nie so duidelik is nie, is hoe om al hierdie afsonderlike elemente te kombineer.

Voorrade

  • U benodig 'n Raspberry Pi (met 'n monitor, muis en sleutelbord om dit op te stel, maar nie as u die voltooide projek uitvoer nie)
  • 'N Werkende internetverbinding.
  • 'N PSU met 'n mikro -USB -aansluiting
  • 2 van die DS18B20+ Digitale temperatuursensors met een draad. Ek het gevind Amazon is die goedkoopste
  • 4K7 ohm weerstand of ek het 2 10K ohm weerstande gebruik.
  • Klein broodbord en 'n paar manlike/vroulike drade om op die bank te toets
  • Klein stukkie strookbord vir die finale samestelling
  • Eenvoudige gereedskap vir soldeer en draadstroop.
  • Klein plastiek boks om die voltooide ontwerp te huisves

Stap 1: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware

Ek het al 'n Raspberry Pi Zero W (met draadloos) gehad, maar ek is seker dat hierdie eenvoudige projek goed op enige van die RPI's sal werk. Die boks met vreemde elektroniese stukkies in my werkswinkel het al die ander dinge (broodbord, draad, PSU, ens) gehad, en al wat ek moes koop was twee 2 x DS18B20 -sensors van Amazon. Dit is die normale DS18B20 -skyfies wat net maklik in 'n waterdigte omhulsel en 'n kabel van 3 m gemonteer is. Daar is 3 drade van die kabel:

  • Rooi - krag - koppel aan die 3.3v pen 1
  • Swart - terug - verbind met die grondpen 6
  • Geel - data - koppel aan die GPIO4 -pen 7

Die sensors gebruik die 1-Wire-koppelvlak en was baie maklik om aan te sluit en data te bekom. Daar is verskeie bladsye op die internet met besonderhede vir die koppeling van 1 toestel, maar baie min om 2 (of meer) aan te sluit.

Om te toets op die bank, is die kring saamgestel met 'n broodbord. Die tutoriale wat ek gevind het, het gesê dat ek 'n 4K7 -weerstand moet gebruik om die data -lyn te vooroordeel, maar ek kon dit nie vind nie, en ek het 2* 10K parallel gebruik, en dit werk goed. Daar is baie hulpbronne op die internet om 'n broodbord te gebruik om RPi -stroombane te monteer, en ek sal dit nie hier herhaal nie.

Diagram geskep met behulp van stroombaandiagram

Stap 2: Opstelling van Raspberry Pi OS -sagteware

Opstelling van Raspberry Pi OS -sagteware
Opstelling van Raspberry Pi OS -sagteware
Opstelling van Raspberry Pi OS -sagteware
Opstelling van Raspberry Pi OS -sagteware
Opstelling van Raspberry Pi OS -sagteware
Opstelling van Raspberry Pi OS -sagteware

Aangesien ek hierdie RPi voorheen gebruik het, het ek besluit om met 'n skoon installasie van die bedryfstelsel te begin, ek het die SD -kaart herformatteer en 'n skoon weergawe van NOOBS geïnstalleer. Ek installeer toe die volledige lessenaarweergawe van Raspian (die boonste opsie), aangesien dit ook PIP & GIT sou installeer wat die lite -weergawe nie doen nie. Alhoewel ek nie die grafiese gebruikerskoppelvlak (GUI) vir die projek nodig gehad het nie, is dit 'n maklike manier om al die opsies op te stel, en met 'n 16 GB SD -kaart was daar geen tekort aan ruimte nie.

Ek het WI-FI-toegang opgestel, daarna die volledige installasie uitgevoer en dan die towenaar met opdaterings en opgraderings, ens. Met die GUI stel ek die RPI op soos nodig, net omdat die gebruik van die GUI eenvoudiger is as die Command Line Interface (CLI). Ek het na die konfigurasievenster in die spyskaart gegaan en dan:

  • Op die oortjie stelsel het ek die wagwoord verander, ingestel op opstart na CLI en outomatiese aanmelding nie gemerk nie
  • Op die koppelvlak-oortjie het ek 1-draad aangeskakel
  • Klik OK en herlaai

As u te eniger tyd na die GUI wil terugkeer, tik net startx by die CLI

beginx

Stap 3: Stel die data op om afstandtoegang toe te laat

Stel data op om afstandtoegang toe te laat
Stel data op om afstandtoegang toe te laat
Stel data op om afstandtoegang toe te laat
Stel data op om afstandtoegang toe te laat
Stel data op om afstandtoegang toe te laat
Stel data op om afstandtoegang toe te laat

Ek het 'n baie nuttige bloginskrywing op die Dataplicity-webwerf gevind op https://blog.dataplicity.com/how-to-build-a-raspb… en 'n paar dele hiervan gebruik. Afdeling 3 van die blog beskryf die opstel van Dataplicity vir toegang op afstand tot die RPi. Ek het nog nooit Dataplicity gebruik nie, maar ek moet dit ten sterkste aanbeveel as 'n baie eenvoudige hulpmiddel vir toegang tot afstand. Alhoewel die kiekies (in die blog hierbo) 'n bietjie verouderd is, is die beginsel goed.

Gaan op u rekenaar na Dataplicity.com en skep 'n rekening (u kan die blaaier in die GUI gebruik, maar eerder stadig op die RPi Zero). Klik dan op die knoppie "voeg nuwe toestel by" en 'n reël kode verskyn in die opspringvenster. Gaan dan na die CLI op die RPi en tik die reël teks in. As alles in orde is, sal die Dataplicity -logo verskyn en sal die installeringsprogram uitgevoer word.

Terug op u rekenaar, moet die nuwe toestel nou op die Dataplicity -webwerf verskyn. Klik op die toestel en u sal 'n terminale skerm vir u RPi sien.

Hier is 'n paar dinge om op te let:

  • Om aan te meld, tik "su pi" (vir toegang tot supergebruikers) en u word gevra om die wagwoord in te voer (soos vroeër gestel)
  • U moet Wormhole aktiveer (om later gebruik te word)
  • U het die Wormhole-adres nodig om die data later te vertoon (klik met die rechtermuisknop om dit te kopieer indien nodig)

U kan hierdie toegang op afstand gebruik vir al die volgende stappe, en dit is baie makliker om data, programme ens te kopieer as direk op die RPi.

Stap 4: Gaan die sensors na

U kan nou Dataplicity op afstand toegang tot RPI gebruik vir al die volgende afdelings.

As alles nou in orde is, moet u die temperatuur van die DS18B20 kan sien. Ek het wel deur die Pi Hut -tutoriaal gewerk, maar die meeste hiervan was nie nodig nie. As u die volledige besonderhede wil hê, kan u dit hier vind:

Die belangrikste stukkies is om na die apparaatgids te gaan en seker te maak dat twee verskillende sensors vertoon word.

cd/sys/bus/w1/toestelle/

Dit moet twee toestelle wat met 28- en die busmeester begin, wys. Myne wys:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Hierdie 2 ID -nommers is belangrik en sal later nodig wees! Verander dan na een van die sensorgidse:

cd 28-011453ebfdaa

(byvoorbeeld) en dan om die waarde van die sensor af te lees

kat w1_slaaf

Daar moet 2 reëls teks verskyn:

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

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

Die JA toon dat die sensor korrek lees en die 21187 toon die temperatuur in Celsius van 21.187 (deel met 1000) Herhaal dit om die tweede sensor te kontroleer. As albei goed lees, kan ons verder gaan met die lees van die data met Python3.

Ek het die volgende kode wat ek op die internet gevind het, gekopieer en aangepas, maar ek kan nie onthou waarvandaan nie. As dit soos u kode lyk, vra ek om verskoning, aangesien geen plagiaat bedoel was nie; Laat weet my asseblief, en ek sal u werk erken.

Skep 'n gids genaamd projekte en verander na die gids.

mkdir ~/projekte

cd ~/projekte

Gebruik die teksredigeerder (nano) in hierdie gids om 'n lêer genaamd thermo-test.py te skep en te wysig

sudo nano thermo-test.py

Dit moes die redakteur oopgemaak het, en terwyl u Dataplicity gebruik, kan u eenvoudig die onderstaande kode (thermo-test.py) kopieer en in die redakteur plak. U moet die twee apparaatname (vanaf 28-…) verander na die hierbo genoem. As alles reg lyk, druk ctrl+X om te voltooi, Y om op te slaan en terug te keer om die bestaande naam te gebruik. As u verkies om die GUI te gebruik, sal Thonny dieselfde doen.

Om die toetsprogram uit te voer:

sudo python3 thermo-test.py

Alles in orde, moet die lêer met behulp van python 3 uitgevoer word en elke 10 sekondes die 2 temperature op die skerm gedruk word. U kan toets of alles reg is deur 1 sensor in yswater te plaas of liggies met 'n haardroër op te warm. As alles goed lyk, kan ons voortgaan!

Stap 5: UFW -firewall

UFW -firewall
UFW -firewall

Aangesien hierdie RPi permanent aan die internet gekoppel sou wees, het ek besluit dat 'n Firewall 'n goeie idee sou wees, en 'n eenvoudige een is om te gebruik: ongekompliseerde firewall (ufw). Daar is 'n baie eenvoudige handleiding hier

Ek gaan nie in op diepte nie, want dit is nie die doel van hierdie instruksies nie, maar kortliks:

Installeer die firewall met:

sudo apt-get install ufw

Stel die standaardreëls:

sudo ufw standaard laat uitgaande toe

sudo ufw standaard ontken inkomende

Maak poort 80 oop vir Dataplicity

sudo ufw laat 80 toe

Aktiveer die firewall

sudo ufw aktiveer

Kontroleer die status en maak seker dat alles werk

sudo ufw status

Stap 6: S eindig die temperatuurdata as JSON

S eindig die temperatuurdata as JSON
S eindig die temperatuurdata as JSON

Terug na Tim Fernando se blog en afdeling 5.

Volg die stappe soos uiteengesit (behalwe dat ons die projekgids reeds geskep het) en alles moet goed werk. Deur GIT te gebruik, laai u die toepassingslêers van Tim af, en die PIP sorg dat al die vereiste programme op u RPi geïnstalleer is. Ek het toe gevind dat ek weer moet begin om seker te maak dat die pakkette almal korrek opgestel is.

Begin dan die Tim -program en u RPi moet dan JSON -data vir die eerste sensor verskaf.

cd home/pi/projekte/temperatuur-dien-pi

sudo gunicorn temperatuur: app -b 0.0.0.0:80

U kan deur die blog gaan na afdeling 6, waar u sal vind dat data vir 1 van die sensors verskaf word.

U kan ook JSON Viewer gebruik om die data te sien https://codebeautify.org/jsonviewer Klik op die knoppie "laai URL" en plak die Wormhole -adres wat vroeër opgemerk is, in. In die linkerdeelvenster moet u twee inskrywings sien, een vir Celsius en een vir Fahrenheit.

Stap 7: Stuur data van beide sensors

Stuur data van beide sensors
Stuur data van beide sensors

Op grond van die kode in temperature.py en thermo-test.py, het ek 2temps.py soos voorheen gewysig in die gids /projects /temperature-serve-pi geskep, in die kode geplak en gestoor. Ek hardloop toe

sudo gunicorn 2 tempels: app -b 0.0.0.0:80

Toe ek JSON Viewer weer begin, kry ek waardes vir temp1 en temp2

Sukses:)

Stap 8: Outomatiese begin

Outomatiese begin
Outomatiese begin

Aangesien die krag van die kweekhuis af en toe afgeskakel word, wou ek hê dat die RPi die program outomaties laai en die data begin bewys. Die eenvoudigste manier is om die rc.local -lêer te wysig en die vereiste kode onderaan net bokant die afrit 0 -reël by te voeg.

cd ens

sudo nan rc.local

voeg dan by

slaap 10

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

  • Die & aan die einde vertel die rekenaar om die script in 'n subdop uit te voer, sodat u rekenaar nie wag totdat die funksie eindig nie en met opstart sal voortgaan
  • Slaap 10 [sekondes] maak seker dat al die vorige operasies voltooi is voordat die diens begin word.

Verlaat en stoor soos voorheen. Herlaai dan en voer JSON Viewer weer uit om te kyk of alles reg is.

As u meer inligting wil hê oor programme wat outomaties loop, is hier 'n uitstekende handleiding

Stap 9: Gee die data op Freeboard.io (1)

Wys die data op Freeboard.io (1)
Wys die data op Freeboard.io (1)

Die stappe in Tim se blog werk goed, in opsomming; skep 'n rekening op www.freeboard.io en skep dan 'n nuwe Freeboard, ek het myne SHEDTEMPERATURES genoem.

Voeg eers 'n databron by, klik op TOEVOEG in die regter boonste hoek en kies in die pop-up JSON as die tipe, gee die databron 'n NAAM, voeg die wormgatadres van vroeër by as die URL en klik NEE om PROGRAMME TE PROBEER. Temperature verander net baie stadig, en VERVERS ELKE 15 SEKONDE is goed. Klik op SAVE.

Stap 10: Gee die data op Freeboard.io (2)

Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)
Wys die data op Freeboard.io (2)

Klik op PANE TOEVOEG en dan op die + om die eerste widget by te voeg. U kan met verskillende tipes kies en speel, maar ek het gevind dat Gauge goed was. Gee 'n geskikte TITEL, EENHEDE (C), MINIMUM en MAKSIMUM wat by u aansoek pas. Klik vir die DATASOURCE op die + en die bron hierbo sal verskyn.

Die aftreklys moet nou die 2 JSON -databronne (temp2 en temp2) wat vroeër gebou is, toon. Kies die toepaslike bron en klik op stoor.

Herhaal dit vir die tweede meter en ons is gereed.

Die data moet nou op die twee meters vertoon word, en as u nog steeds die PRi aan 'n monitor gekoppel het, moet u die versoeke van Freeboard.io sien wanneer dit aankom.

Stap 11: Bou die projek in 'n boks

Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks
Bou die projek in 'n boks

Tot dusver was die RPi en die ander komponente op 'n bank met 'n broodbord op die bank gemonteer. 'N Klein stukkie strookplank is daarna gebruik om die broodbord te vervang en die leidings is almal op hul plek gesoldeer.

Daar is 'n helder pienk klein Lego -opbergkas gevind wat baie ruimte het en waar die RPI nie te warm sou word nie. gate is aan die kante van die boks geboor en 3 mm nylon -steunpilare is gebruik om die RPi en strook vas te hou.

Daar is slegs 3 verbindings nodig van die GPIO, 3.3v, GND en data.

  • 3.3vdc pen 1
  • GND -pen 6
  • Data (GPIO4) pen 7

Daar is ook gate in die boks vir USB -krag en kabels by die temperatuursensors gevoeg. Nadat alles op sy plek aangebring is, is 'n klein hoeveelheid silikoon seëlaar bygevoeg om te verseker dat spinnekoppe nie dink dat dit 'n lekker warm plek is om die winter deur te bring nie!

Stap 12: klaar

Klaar
Klaar
Klaar
Klaar

Die boks is in die kweekhuis geplaas en aangedryf deur 'n USB -laaier. Die twee sensors is een naby die bokant van die kweekhuis en die ander op 'n plantpot geplaas om te kyk hoe koud die saailinge snags word.

Dit is my eerste instruksies en ek hoop dat u dink dit is goed. Laat weet my as u foute vind, en ek sal dit waar nodig aanpas. Die volgende stap kan wees om die data elke (sê) 60 sekondes aan te meld, maar dit sal later kom.

Aanbeveel: