Sadržaj:

IoT poslužitelj podataka s dvije temperature: 12 koraka (sa slikama)
IoT poslužitelj podataka s dvije temperature: 12 koraka (sa slikama)

Video: IoT poslužitelj podataka s dvije temperature: 12 koraka (sa slikama)

Video: IoT poslužitelj podataka s dvije temperature: 12 koraka (sa slikama)
Video: МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K 2024, Lipanj
Anonim
IoT poslužitelj podataka s dvije temperature
IoT poslužitelj podataka s dvije temperature

Ovo je moj prvi pokušaj da napišem Instructable i zato me polako! Ako mislite da ovo nije tako loše, glasajte za mene na Prvom natječaju za autore.

Ovo je moj projekt zaključavanja za daljinsko praćenje 2 temperature u stakleniku, jedne na razini poda i jedne ispod krova. Iako sam ranije koristio Raspberry Pi (RPi), ovaj projekt je uključivao nekoliko elemenata koje nisam koristio i usput sam pronašao nekoliko vodiča koji su zastarjeli ili jednostavno pogrešni. Ovo je moja zbirka znanja o izradi funkcionalnog dvostrukog daljinskog monitora temperature od Pi Zero & 2 DS18B20+ jednožičnih digitalnih temperaturnih senzora koji je nabavljen usput.

Stvari o kojima sam naučio:

  • Omogućavanje dostupnosti podataka s uređaja u sklopu Interneta stvari (IoT)
  • 1-žično sučelje s 2 uređaja
  • Jačina podataka
  • JSON podaci
  • Postavljanje vatrozida UFW
  • Korištenje programa Freeboard.io za prikaz podataka
  • Konfiguriranje RPi za automatsko pokretanje programa

Ogromne su količine podataka koje se mogu pronaći jednostavnim pretraživanjem svih ovih tema, ali ono što nije tako jasno je kako kombinirati sve te zasebne elemente.

Pribor

  • Trebat će vam Raspberry Pi (s monitorom, mišem i tipkovnicom za postavljanje, ali ne i pri pokretanju gotovog projekta)
  • Radna internetska veza.
  • Napajanje s mikro USB priključkom
  • 2 DS18B20+ jednožičnih digitalnih temperaturnih senzora. Otkrio sam da je Amazon najjeftiniji
  • 4K7 ohm otpornik ili sam koristio 2 10K ohm otpornika.
  • Mala ploča i nekoliko muških/ženskih žica za testiranje na klupi
  • Mali komad trake za završnu montažu
  • Jednostavni alati za lemljenje i skidanje žice.
  • Mala plastična kutija za smještaj gotovog dizajna

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver

Već sam imao Raspberry Pi Zero W (s bežičnom), ali siguran sam da će se ovaj jednostavan projekt dobro izvesti na bilo kojem od RPI -ja. U kutiji čudnih elektroničkih bitova u mojoj radionici bilo je svega ostalog (matična ploča, žica, napajanje itd.) Pa sam sve što sam morao kupiti bila dva 2x senzora DS18B20 iz Amazona. Ovo su normalni čipovi DS18B20 koji su prikladno postavljeni u vodootporno kućište i kabel od 3 metra. Iz kabela postoje 3 žice:

  • Crveno - napajanje - spojite se na 3.3V pin 1
  • Crna - povratak - spojite na pin 6 za uzemljenje
  • Žuta - podaci - spojite se na GPIO4 pin 7

Senzori koriste 1-Wire sučelje i bilo ih je vrlo lako spojiti i dobiti podatke. Na webu postoji nekoliko stranica s pojedinostima o povezivanju 1 uređaja, ali vrlo malo o povezivanju 2 (ili više).

Za testiranje na klupi, sklop je sastavljen pomoću ploče. Vodiči koje sam pronašao navode da koriste otpornik 4K7 za pristranost podatkovne linije, ali nisam ih mogao pronaći, pa sam paralelno koristio 2* 10K i radio je sasvim u redu. Na Internetu postoji mnogo resursa za korištenje matične ploče za sastavljanje RPi sklopova, pa ih ovdje neću ponavljati.

Dijagram kreiran pomoću sheme kola

Korak 2: Postavljanje softvera Raspberry Pi OS

Postavljanje softvera Raspberry Pi OS
Postavljanje softvera Raspberry Pi OS
Postavljanje softvera Raspberry Pi OS
Postavljanje softvera Raspberry Pi OS
Postavljanje softvera Raspberry Pi OS
Postavljanje softvera Raspberry Pi OS

Kako sam već koristio ovaj RPi, odlučio sam početi s čistom instalacijom OS -a, formatirao sam SD karticu i instalirao čistu verziju NOOBS -a. Zatim sam instalirao punu verziju Raspiana za stolna računala (gornja opcija) jer bi se time instalirao i PIP & GIT koji verzija Lite nema. Iako mi za projekt nije bilo potrebno grafičko korisničko sučelje (GUI), to je jednostavan način za postavljanje svih opcija, a uz SD karticu od 16 GB nije nedostajalo prostora.

Postavio sam WI-FI pristup, zatim pokrenuo potpunu instalaciju, a zatim čarobnjak s ažuriranjima i nadogradnjama itd. Pomoću grafičkog sučelja postavio sam RPI prema potrebi samo zato što je korištenje grafičkog sučelja jednostavnije od sučelja naredbenog retka (CLI). Otvorio sam prozor za konfiguraciju s izbornika, a zatim:

  • Na kartici sustava promijenio sam lozinku, postavio za podizanje sustava na CLI i bez potvrde Automatska prijava
  • Na kartici sučelja omogućio sam 1-žicu
  • Kliknuo je u redu i ponovno se pokrenuo

Ako se u bilo kojem trenutku trebate vratiti na GUI, samo upišite startx u CLI

startx

Korak 3: Postavite Dataplicity za dopuštanje udaljenog pristupa

Postavite Dataplicity za dopuštanje udaljenog pristupa
Postavite Dataplicity za dopuštanje udaljenog pristupa
Postavite Dataplicity za dopuštanje udaljenog pristupa
Postavite Dataplicity za dopuštanje udaljenog pristupa
Postavite Dataplicity za dopuštanje udaljenog pristupa
Postavite Dataplicity za dopuštanje udaljenog pristupa

Našao sam zaista koristan zapis na blogu na web stranici Dataplicity na https://blog.dataplicity.com/how-to-build-a-raspb… i upotrijebio nekoliko dijelova ovoga. Odjeljak 3 bloga opisuje postavljanje Dataplicity za daljinski pristup RPi -u. Nikada prije nisam koristio Dataplicity, ali moram reći da ga temeljito preporučujem kao vrlo jednostavan alat za daljinski pristup. Iako su snimke zaslona (na gornjem blogu) malo zastarjele, princip je u redu.

Na računalu idite na Dataplicity.com i stvorite račun (mogli biste koristiti preglednik u grafičkom sučelju, ali radije sporo na RPi Zero). Zatim kliknite gumb "dodaj novi uređaj" i u skočnom prozoru prikazuje se redak koda. Zatim idite na CLI na RPi i upišite redak teksta. Ako je sve u redu, prikazat će se logotip Dataplicity i pokrenut će se instalacijski program.

Na vašem računalu, novi uređaj trebao bi se sada pojaviti na web stranici Dataplicity. Pritisnite uređaj i trebali biste vidjeti terminalni zaslon za svoj RPi.

Ovdje treba napomenuti nekoliko stvari:

  • Za prijavu upišite "su pi" (za pristup superkorisniku) i od vas će se zatražiti lozinka (kao što je ranije postavljeno)
  • Morate omogućiti Wormhole (kasnije će se koristiti)
  • Za kasnije prikaz podataka trebat će vam adresa crvotočine (desnom tipkom miša kliknite za kopiranje po potrebi)

Ovaj daljinski pristup možete koristiti za sve sljedeće korake i mnogo je lakše kopirati podatke, programe itd. Nego izravno na RPi.

Korak 4: Provjerite senzore

Sada možete koristiti Dataplicity daljinski pristup RPI -u za sve sljedeće odjeljke.

Ako je sada sve u redu, trebali biste moći vidjeti temperature koje se vraćaju s DS18B20. Radila sam kroz tutorial Pi Hut, ali većina toga nije bila potrebna. Ako želite potpune pojedinosti, mogu se pronaći ovdje:

Važni dijelovi moraju ići u direktorij uređaja i provjeriti jesu li prikazana 2 različita senzora.

cd/sys/bus/w1/devices/

Ovo bi trebalo prikazati 2 uređaja koji počinju s 28- i sabirnicu. Moji pokazuju:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Ova 2 identifikacijska broja su važna i bit će vam potrebna kasnije! Zatim promijenite u jedan od direktorija senzora:

cd 28-011453ebfdaa

(na primjer), a zatim očitati vrijednost sa senzora

mačka w1_slave

Trebala bi biti prikazana 2 retka teksta:

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

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

DA pokazuje da senzor ispravno čita, a 21187 prikazuje temperaturu u Celzijusima od 21,187 (podijeli s 1000) Ponovite ovo za provjeru drugog senzora. Ako oboje čitaju u redu, možemo prijeći na čitanje podataka s Python3.

Kopirao sam i prilagodio sljedeći kôd koji sam pronašao na webu, ali se ne mogu sjetiti odakle. Ako ovo izgleda kao vaš kôd, ispričavam se jer nije bilo namjere plagiranja; javite mi i priznat ću vaš rad.

Napravite direktorij koji se zove projekti i promijenite ga u taj direktorij.

mkdir ~/projekti

cd ~/projekti

U ovom direktoriju koristite uređivač teksta (nano) za stvaranje i uređivanje datoteke pod nazivom thermo-test.py

sudo nano thermo-test.py

Ovo je trebalo otvoriti uređivač, a dok koristite Dataplicity, možete jednostavno kopirati sljedeći kôd u nastavku (thermo-test.py) i zalijepiti u uređivač. Morat ćete promijeniti dva naziva uređaja (počevši od 28- …) do gore navedenih. Kad sve izgleda ispravno, pritisnite ctrl+X za završetak, Y za spremanje i povratak na korištenje postojećeg naziva. Ako više volite koristiti GUI, Thonny će učiniti isto.

Da biste pokrenuli testni program:

sudo python3 thermo-test.py

Sve u redu, ovo bi trebalo izvršiti datoteku koristeći python 3 i ispisati na zaslon 2 temperature svakih 10 sekundi. Možete provjeriti je li sve u redu stavljanjem 1 senzora u ledenu vodu ili nježnim zagrijavanjem sušilom za kosu. Ako vam se čini da je sve u redu, možemo nastaviti dalje!

Korak 5: UFW vatrozid

UFW vatrozid
UFW vatrozid

Budući da će ovaj RPi biti trajno spojen na internet, odlučio sam da bi Vatrozid bio dobra ideja, a jednostavan za korištenje je Nekomplicirani vatrozid (ufw). Ovdje postoji vrlo jednostavan vodič

Ne ulazim u dubinu jer ovo nije svrha ovog Instructable -a, ali ukratko:

Instalirajte vatrozid sa:

sudo apt-get install ufw

Postavite zadana pravila:

sudo ufw zadano dopušta odlazne

sudo ufw default demanti dolazni

Otvorite port 80 za Dataplicity

sudo ufw dopustiti 80

Omogućite vatrozid

sudo ufw omogućiti

Provjerite status i provjerite radi li sve

sudo ufw status

Korak 6: S završava podatke o temperaturi kao JSON

S završavajući podatke o temperaturi kao JSON
S završavajući podatke o temperaturi kao JSON

Natrag na blog Tima Fernanda i odjeljak 5.

Slijedite navedene korake (osim što smo već stvorili direktorij projekata) i sve bi trebalo funkcionirati. Pomoću GIT -a preuzimate Timove datoteke aplikacija, a PIP će se pobrinuti da su svi potrebni programi instalirani na vaš RPi. Tada sam otkrio da se moram ponovno pokrenuti kako bih provjerio jesu li svi paketi ispravno postavljeni.

Zatim pokrenite Timov program i vaš bi RPi tada trebao pružiti JSON podatke za prvi senzor.

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

temperatura sudo gunicorn: app -b 0.0.0.0:80

Preko bloga možete nastaviti do odjeljka 6 gdje ćete pronaći podatke o jednom od senzora.

Također možete upotrijebiti JSON Viewer za pregled podataka https://codebeautify.org/jsonviewer Pritisnite gumb "učitaj URL" i zalijepite na prethodno spomenutu adresu Wormhole. U lijevom oknu trebali biste vidjeti dva unosa, jedan za Celsius i jedan za Fahrenheit.

Korak 7: Pošaljite podatke s oba senzora

Slanje podataka s oba senzora
Slanje podataka s oba senzora

Na temelju koda u temperature.py i thermo-test.py, stvorio sam 2temps.py Uređen kao i prije u direktoriju /projects /temperature-serve-pi, zalijepljen u kôd i spremljen. Tada sam potrčao

sudo gunicorn 2temps: app -b 0.0.0.0:80

Kad sam ponovno pokrenuo JSON Viewer, dobio sam vrijednosti za temp1 i temp2

Uspjeh:)

Korak 8: Automatsko pokretanje

Automatsko pokretanje
Automatsko pokretanje

Budući da se napajanje staklenika povremeno isključuje, htio sam da RPi automatski učita program i počne dokazivati podatke. Čini se da je najjednostavniji način uređivanje datoteke rc.local i dodavanje potrebnog koda pri dnu neposredno iznad redaka za izlaz 0.

cd itd

sudo nan rc.lokalno

zatim dodatak

spavaj 10

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

  • & Na kraju govori računalu da pokrene skriptu u podljusci tako da vaše računalo ne čeka da se funkcija završi i da će nastaviti s pokretanjem
  • Spavanje 10 [sekundi] osigurava da su sve prethodne operacije dovršene prije pokretanja usluge.

Izađite i spremite kao i prije. Zatim ponovno pokrenite i ponovno pokrenite JSON Viewer kako biste provjerili je li sve u redu.

Ako želite više informacija o programima koji se automatski pokreću, ovdje je sjajan vodič

Korak 9: Prikažite podatke na Freeboard.io (1)

Prikažite podatke na Freeboard.io (1)
Prikažite podatke na Freeboard.io (1)

Ukratko, koraci na Timovu blogu dobro funkcioniraju; stvoriti račun na www.freeboard.io, a zatim stvoriti novi Freeboard, ja sam svoj nazvao SHEDTEMPERATURES.

Prvo dodajte izvor podataka, kliknite DODAJ u gornjem desnom kutu i u skočnom prozoru odaberite JSON kao vrstu, dajte izvoru podataka IME, dodajte adresu crvotočine od ranije kao URL i kliknite NE za TRY THINGPROXY. Temperature se mijenjaju vrlo sporo pa je OSVJEŽITI SVAKIH 15 SEKUNDA u redu. Pritisnite SPREMI.

Korak 10: Prikažite podatke na Freeboard.io (2)

Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)
Prikažite podatke na Freeboard.io (2)

Pritisnite DODAJ PANE, a zatim + za dodavanje prvog widgeta. Možete birati i igrati se s raznim vrstama, ali otkrio sam da je Gauge sasvim u redu. Dajte odgovarajući NASLOV, JEDINICE (C), MINIMUM i MAKSIMUM koji odgovaraju vašoj prijavi. Za IZVOR PODATAKA kliknite + i pojavit će se gore stvoreni izvor.

Padajući izbornik sada bi trebao prikazati 2 JSON izvora podataka (temp2 & temp2) izgrađena ranije. Odaberite odgovarajući izvor i kliknite Spremi.

Ponovite ovo za drugi mjerač i sve je spremno.

Podaci bi se sada trebali prikazati na dva mjerača, a ako još uvijek imate PRi spojen na monitor, trebali biste vidjeti zahtjeve s Freeboard.io čim stignu.

Korak 11: Izgradite projekt u kutiju

Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju
Izgradite projekt u kutiju

Do ovog trenutka svi RPi i ostale komponente bile su sastavljene na klupi pomoću ploče. Zatim je upotrijebljen mali komad trake za zamjenu matične ploče, a svi su vodiči zalemljeni na svoje mjesto.

Pronađena je svijetlo ružičasta mala Lego kutija za pohranu koja je imala dosta prostora i gdje se RPI ne bi previše zagrijao. izbušene su rupe na stranama kutije; 3 mm najlonski stupovi za montažu korišteni su za držanje RPi i trakaste ploče na mjestu.

Za GPIO su potrebne samo 3 veze, 3.3v, GND i podatkovna veza.

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

U kutiju su dodane i rupe za USB napajanje i kabele temperaturnih senzora. Nakon što je sve postavljeno na mjesto, dodana je mala količina silikonskog brtvila kako bi se osiguralo da pauci ne misle da je to lijepo toplo mjesto za zimovanje!

Korak 12: Završeno

Završeno
Završeno
Završeno
Završeno

Kutija je stavljena u staklenik i napajana iz USB punjača. Dva senzora postavljena su jedan blizu vrha staklenika, a drugi na posudu za biljke kako bi provjerili koliko se sadnice hlade noću.

Ovo mi je prvi Instructable i nadam se da mislite da je to u redu. Ako pronađete bilo kakve pogreške, obavijestite me i ja ću ih promijeniti prema potrebi. Sljedeći korak mogao bi biti bilježenje podataka svakih (recimo) 60 sekundi, ali to će doći kasnije.

Preporučeni: