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, Jun
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 molim vas polako! Ako mislite da ovo nije tako loše, glasajte za mene na Prvom takmičenju autora.

Ovo je moj projekt zaključavanja za daljinsko praćenje 2 temperature u stakleniku, jedne na nivou 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 otkrio 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 senzora temperature 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 sa 2 uređaja
  • Dataplicity
  • JSON podaci
  • Postavljanje zaštitnog zida UFW
  • Korištenje Freeboard.io za prikaz podataka
  • Konfiguriranje RPi za automatsko pokretanje programa

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

Supplies

  • Trebat će vam Raspberry Pi (s monitorom, mišem i tipkovnicom za postavljanje, ali ne i pri pokretanju gotovog projekta)
  • Radna internetska veza.
  • Napajanje sa mikro USB konektorom
  • 2 DS18B20+ jednožilni digitalni temperaturni senzori. Otkrio sam da je Amazon najjeftiniji
  • 4K7 ohm otpornik ili sam koristio 2 10K ohm otpornika.
  • Mala ploča i nekoliko muško/ž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 odlično izvesti na bilo kojem od RPI -ja. U kutiji čudnih elektronskih bitova u mojoj radionici bilo je svega ostalog (matična ploča, žica, napajanje itd.), Pa sam sve što sam morao kupiti bila dva 2 x DS18B20 senzora 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 pin 3,3v
  • Crna - povratak - spojite na pin 6 za uzemljenje
  • Žuta - podaci - spojite se na GPIO4 pin 7

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

Za testiranje na stolu, krug je sastavljen pomoću matične ploče. U vodičima koje sam pronašao navodi se da se koristi 4K7 otpornik za pomicanje podatkovne linije, ali nisam mogao pronaći jedan, pa sam upotrijebio 2* 10K paralelno i radio je sasvim u redu. Na Internetu postoji mnogo resursa za korištenje matične ploče za sastavljanje RPi kola, pa ih ovdje neću ponavljati.

Dijagram kreiran pomoću sheme kola

Korak 2: Postavljanje softvera Raspberry Pi OS

Podešavanje softvera Raspberry Pi OS
Podešavanje softvera Raspberry Pi OS
Podešavanje softvera Raspberry Pi OS
Podešavanje softvera Raspberry Pi OS
Podešavanje softvera Raspberry Pi OS
Podešavanje 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 desktop verziju Raspian -a (gornja opcija) jer bi se na ovaj način instalirao i PIP & GIT koji lite verzija 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. Korištenjem grafičkog sučelja postavio sam RPI po potrebi samo zato što je korištenje grafičkog sučelja jednostavnije od sučelja naredbene linije (CLI). Otvorio sam prozor za konfiguraciju iz menija, a zatim:

  • Na sistemskoj kartici promijenio sam lozinku, postavio boot na CLI i neoznačio Auto Login
  • Na kartici sučelja omogućio sam 1-žicu
  • Kliknuo je u redu i ponovo pokrenuo sistem

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

startx

Korak 3: Postavite Dataplicity da biste omogućili daljinski pristup

Postavite Dataplicity da dopustite daljinski pristup
Postavite Dataplicity da dopustite daljinski pristup
Postavite Dataplicity da dopustite daljinski pristup
Postavite Dataplicity da dopustite daljinski pristup
Postavite Dataplicity da dopustite daljinski pristup
Postavite Dataplicity da dopustite daljinski pristup

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. Odeljak 3 bloga opisuje postavljanje Dataplicity -a 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 ekrana (na gornjem blogu) pomalo zastarjele, princip je u redu.

Na svom računaru idite na Dataplicity.com i kreirajte račun (mogli biste koristiti preglednik u grafičkom sučelju, ali radije sporo na RPi Zero). Zatim kliknite na dugme „dodaj novi uređaj“i u skočnom prozoru će se prikazati red 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čunaru, novi uređaj bi se sada trebao pojaviti na web stranici Dataplicity. Kliknite na uređaj i trebali biste vidjeti terminalni ekran za svoj RPi.

Ovdje treba napomenuti nekoliko stvari:

  • Za prijavu upišite "su pi" (za pristup superkorisniku) i od vas će se traž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 (desni klik 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 direktno 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. Radio sam kroz vodič za Pi Hut, ali većina toga nije bila potrebna. Ako želite potpune detalje, oni se mogu pronaći ovdje:

Važni dijelovi su da odete u direktorij uređaja i provjerite jesu li prikazana 2 različita senzora.

cd/sys/bus/w1/devices/

Ovo bi trebalo prikazati 2 uređaja koji počinju sa 28- i magistralu sabirnice. Moje 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 reda 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 Celzijusovima od 21,187 (podijeljeno s 1000) Ponovite ovo za provjeru drugog senzora. Ako oboje čitaju u redu, možemo prijeći na čitanje podataka pomoću Python3.

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

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

mkdir ~/projects

cd ~/projects

U ovom direktoriju koristite uređivač teksta (nano) za kreiranje 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 donji kod ispod (thermo-test.py) i zalijepiti ga u uređivač. Morat ćete promijeniti 2 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 za korištenje postojećeg imena. 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 pokrenuti datoteku koristeći python 3 i ispisati na ekran 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 zaštitni zid

UFW zaštitni zid
UFW zaštitni zid

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 uputstva, ali ukratko:

Instalirajte vatrozid sa:

sudo apt-get install ufw

Postavite zadana pravila:

sudo ufw podrazumevano dozvoljava odlazne

sudo ufw default deny incoming

Otvorite port 80 za Dataplicity

sudo ufw dozvoljava 80

Omogućite zaštitni zid

sudo ufw enable

Provjerite status i provjerite radi li sve

sudo ufw status

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

S završava podatke o temperaturi kao JSON
S završava podatke o temperaturi kao JSON

Nazad 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 aplikacijske datoteke, a PIP će se pobrinuti da su svi potrebni programi instalirani na vaš RPi. Tada sam otkrio da moram ponovo pokrenuti sistem kako bih se uvjerio da su svi paketi ispravno postavljeni.

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

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

temperatura sudo gunicorn: app -b 0.0.0.0:80

Možete nastaviti putem bloga do odjeljka 6 gdje ćete pronaći podatke za jedan od senzora.

Također možete koristiti JSON Viewer za pregled podataka https://codebeautify.org/jsonviewer Kliknite na dugme „učitaj URL“i zalijepite na prethodno spomenutu adresu crvotočine. U lijevom oknu trebali biste vidjeti dva unosa, jedan za Celzijus i jedan za Fahrenheit.

Korak 7: Pošaljite podatke s oba senzora

Šaljite podatke sa oba senzora
Šaljite podatke sa oba senzora

Na osnovu koda u temperature.py i thermo-test.py, kreirao sam 2temps.py Uređeno kao i do sada u /projects /temperature-serve-pi direktorijumu, zalijepljeno u kôd i spremljeno. Potom sam potrčao

sudo gunicorn 2temps: app -b 0.0.0.0:80

Sada, kada sam ponovo pokrenuo JSON Viewer, dobio sam vrijednosti za temp1 & temp2

Uspjeh:)

Korak 8: Automatsko pokretanje

Automatsko pokretanje
Automatsko pokretanje

Kako se povremeno isključuje napajanje staklenika, 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 na dno neposredno iznad redaka za izlaz 0.

cd itd

sudo nan rc.local

zatim dodatak

spava 10

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

  • & Na kraju govori računaru da pokrene skriptu u podljuzi kako vaš računar ne bi čekao da se funkcija završi i nastavio bi sa 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 ponovo pokrenite JSON Viewer da provjerite je li sve u redu.

Ako želite više informacija o programima koji se automatski pokreću, ovdje je odličan 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 Timovom blogu rade dobro; 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 PROBAJ THINGPROXY. Temperature se mijenjaju vrlo sporo pa je OSVJEŽITI SVAKIH 15 SECUNDA u redu. Pritisnite SAVE.

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 različitim 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 i 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 PRi još uvijek imate spojen na monitor, trebali biste vidjeti zahtjeve sa Freeboard.io čim stignu.

Korak 11: Izgradite projekat u kutiju

Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju
Izgradite projekat u kutiju

Do ovog trenutka, 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 žice su zalemljene na mjesto.

Pronađena je svijetlo ružičasta mala Lego kutija za skladištenje koja je imala dosta prostora i gdje se RPI ne bi previše zagrijao. rupe su izbušene na bočnim stranama kutije, a najlonski montažni stubovi od 3 mm korišteni su za držanje RPi i trakaste ploče na mjestu.

Potrebne su samo 3 veze od GPIO -a, 3.3v, GND i podataka.

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

U kutiji su također dodane rupe za USB napajanje i kabele na senzorima temperature. Nakon što je sve montirano na svoje mjesto, dodana je mala količina silikonskog brtvila kako bi se osiguralo da pauci ne misle da je to lijepo toplo mjesto za zimu!

Korak 12: Završeno

Finished
Finished
Finished
Finished

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

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

Preporučuje se: