Sadržaj:

Jeftina bežična senzorska mreža na pojasu 433MHz: 5 koraka (sa slikama)
Jeftina bežična senzorska mreža na pojasu 433MHz: 5 koraka (sa slikama)

Video: Jeftina bežična senzorska mreža na pojasu 433MHz: 5 koraka (sa slikama)

Video: Jeftina bežična senzorska mreža na pojasu 433MHz: 5 koraka (sa slikama)
Video: Računalne mreže - Sigurnost bežičnih mreža - Probijanje WPA2 zaštite na WiFi mreži - Dictionary 2024, Novembar
Anonim
Jeftina bežična senzorska mreža na pojasu 433MHz
Jeftina bežična senzorska mreža na pojasu 433MHz

Veliko hvala Terezi Rajbi što mi je ljubazno dala svoj pristanak da koristim podatke iz njihovih publikacija u ovom članku

* Na gornjoj slici - pet senzorskih jedinica -pošiljalaca koje sam koristio za testiranje

Šta su bežične senzorske mreže?

Jednostavna definicija bi bila: bežične senzorske mreže odnose se na skupinu elektroničkih uređaja raspoređenih na određenom području za praćenje i snimanje podataka o okolišu, koji se bežično prenose na centralnu lokaciju radi obrade i pohrane.

Danas se bežične senzorske mreže mogu koristiti na nekoliko načina, u nastavku je samo nekoliko primjera:

  • Područja ekološkog nadzora šuma, rijeka, jezera, mora i okeana;
  • Mogućnost upozorenja u slučaju terorističkih, hemijskih, bioloških, epidemijskih napada;
  • Sistemi za nadzor djece, starijih osoba, pacijenata ili osoba sa posebnim potrebama;
  • Sistemi nadzora u poljoprivredi i staklenicima;
  • Sistem praćenja vremenske prognoze;
  • Nadzor gradskog prometa, škola, parkirališta;

I mnoge, mnoge druge aplikacije.

U ovom članku želim prikazati rezultate eksperimenta s bežičnim senzorskim mrežama koje su korištene za praćenje podataka o temperaturi i vlažnosti, sa sporom i relativno predvidljivom varijacijom. Za ovaj eksperiment odabrao sam korištenje senzora-pošiljatelja koje sam sam izgradio koristeći pristupačne module. Prijemnik je također "uradi sam", komunikacija je jednosmjerna (na radijskom pojasu 433 MHz), što znači da senzori samo prenose podatke, a centralna lokacija samo prima. Nema komunikacije između senzora i od prijemnika do senzora.

Ali zašto se odlučiti za korištenje više odašiljača i samo jednog prijemnika? Očigledno bi prvi razlog bio „pojednostavljivanje“. Jednostavnije je sastavljanje, manja je vjerojatnost da će propasti, a definitivno je mnogo lakše popraviti i zamijeniti pojedinačne komponente u slučaju kvara. Potrošnja energije je također manja, baterije će trajati duže (senzori će trošiti samo za vrijeme praćenja i prijema, ostatak vremena uređaj će biti u načinu dubokog sna). Činjenica da je jednostavan čini uređaj jeftinim. Još jedan aspekt koji treba imati na umu je područje pokrivanja. Zašto? Mnogo je lakše izgraditi i koristiti osjetljivi prijemnik nego imati osjetljiv prijemnik i snažan odašiljač i na senzorima i na centralnom modulu (to je potrebno za dobru dvosmjernu komunikaciju). S osjetljivim i kvalitetnim prijemnikom moguće je primati podatke s velike udaljenosti, ali za emitiranje podataka na istoj udaljenosti potrebna je velika emisiona snaga, a to dolazi s visokim troškovima, potrošnjom električne energije i (ne zaboravimo) mogućnošću prevladavanja zakonska maksimalna snaga predajnika u opsegu 433 MHz. Korištenjem prijemnika srednjeg kvaliteta, jeftinog, ali sa visokokvalitetnom antenom (čak i uradi sam) i jeftinih predajnika s antenom dobrog kvaliteta, možemo postići odlične rezultate uz mali dio cijene postojećih bežičnih senzorskih mreža.

Korak 1: Teorijska razmatranja

Ideja o izgradnji bežične senzorske mreže za praćenje temperature i vlažnosti zraka i tla u različitim područjima staklenika pala mi je na pamet davno, gotovo 10 godina. Htio sam izgraditi 1-žičnu mrežu i koristiti 1-žične senzore temperature i vlažnosti. Nažalost, prije 10 godina senzori vlažnosti bili su rijetki i skupi (iako su senzori temperature bili široko rasprostranjeni) i budući da se širenje žica po stakleniku nije činilo kao opcija, brzo sam odustao od te ideje.

Međutim, sada se situacija radikalno promijenila. U mogućnosti smo pronaći jeftine i kvalitetne senzore (temperature i vlažnosti), a imamo i pristup jeftinim odašiljačima i prijemnicima na pojasu 433 MHz. Postoji samo jedan problem: ako imamo više senzora (recimo 20), kako ćemo riješiti sukobe (imajte na umu da je ovo jednosmjerna komunikacija), što znači preklapanje emisije 2 ili više senzora? Tražeći moguće rješenje naišao sam na ove vrlo zanimljive papire:

Bežični senzori konvergiraju emitiranje zasnovano na proceduri slučajnih operacija - autora RAJBA, T. i RAJBA, S.

i

Vjerovatnoća sudara u bežičnoj senzorskoj mreži sa slučajnim slanjem - od strane RAJBA S. i RAJBA. T

U osnovi, autori nam pokazuju da se vjerojatnost sudara u bežičnoj senzorskoj mreži može izračunati ako se paketi emitiraju u određenim vremenskim točkama prema puasonovoj (eksponencijalnoj) distribuciji.

Izvod iz gornjeg rada navodi karakteristike proučavane mreže.

  • prilično veliki broj jedinica-pošiljatelja senzora N;
  • jedinice-pošiljatelji senzora ostaju potpuno neovisne i njihovo uključivanje ili isključivanje nema utjecaja na rad mreže;
  • sve jedinice-pošiljatelji senzora (ili njihov dio) mogu biti mobilne pod uvjetom da se nalaze unutar radijskog dometa prijemne stanice;
  • fizički parametri koji se polako mijenjaju podliježu mjerenjima, što znači da nema potrebe da se podaci prenose vrlo često (npr. svakih nekoliko minuta ili nekoliko desetina minuta);
  • prijenos je jednosmjeran, tj. od senzorsko-pošiljateljske jedinice do prijemne tačke u T prosječnim vremenskim intervalima. Informacije se prenose u protokolu na tstr trajanje;
  • bilo koji odabrani senzor počinje nasumično emitirati u Poissonovo vrijeme. PASTA (Poisson Arrivals See Time Averages) će se koristiti za opravdanje slanja sondi u Poisson epohama;
  • sve jedinice senzora-pošiljatelja ostaju nasumično neovisne i prenosit će informacije u slučajno odabranom trenutku vremena tstr trajanje i T prosječno vrijeme ponavljanja;
  • ako jedan ili više senzora počnu emitirati dok protokol tstr trajanje se prenosi s drugog senzora, takva se situacija naziva sudar. Sudar onemogućava centralnoj baznoj stanici da primi informacije na ispravan način.

Skoro savršeno se uklapa u senzorsku mrežu koju želim testirati …

Skoro.

Ne kažem da sam u potpunosti razumio matematiku u radu, ali na temelju prikazanih podataka i zaključaka uspio sam malo razumjeti o čemu se radi. Jedino što me je upotrijebilo u novinama malo me zabrinulo:). To je varijabla tstr - trajanje prijenosa podataka za koje se pretpostavlja da je 3,2x10-5 s. Dakle, vrijeme prijenosa prikupljenih podataka bilo bi 3,2 us! To se ne može učiniti na pojasu 433 MHz. Želim programirati senzore predajnika pomoću rcswitch -a ili radiohead -a. Proučavajući kodove dviju biblioteka došao sam do zaključka da bi najmanje vrijeme prijenosa bilo 20 ms, što je znatno iznad vrijednosti od 3,2 us. Sa odašiljačima na 2,4 GHz moguće je tstr tako malo vremena … ali to je već druga priča.

Primijenimo li formulu koju su predložili autori ovog rada, rezultat će biti:

Početni podaci (primjer):

  • Broj senzora N = 20;
  • Trajanje prijenosa podataka tstr= 20x10-3 s (0.020s)
  • Prosječni interval prijenosa T = 180s

Formula:

Vjerovatnoća sudara na T intervalu je

Image
Image

ako uzmemo u obzir početne podatke vjerovatnoća sudara na T intervalu bit će 0,043519

Ova vrijednost, koja ukazuje na vjerovatnoću da će doći do 4,35 sudara na 100 mjerenja, je po mom mišljenju prilično dobra. Vjerovatnoća bi se mogla poboljšati ako povećamo prosječno vrijeme prijenosa, pa bismo pri vrijednosti od 300s imali vjerovatnoću 0,026332, odnosno 2,6 sudara na 100 mjerenja. Ako smatramo da u svakom slučaju možemo očekivati gubitak paketnih podataka tijekom rada sistema (ovisno o, na primjer, vremenskim uvjetima), onda je ovaj broj zaista odličan.

Htio sam napraviti simulaciju ove vrste mreže, ali i svojevrsnog pomoćnika u dizajnu, pa sam napravio mali program u C -u, izvorni kod možete pronaći na githubu (također kompajlirani binarni program koji se izvodi u Windows naredbenoj liniji - pustiti).

Ulazni podaci:

  • sensor_number - broj senzora na mreži;
  • mjerenja_broj - broj mjerenja za simulaciju;
  • prosečan_prenos_intervala_prenosa -prosečno vreme između uzastopnih prenosa podataka;
  • vrijeme_prijenosa - efektivno trajanje prijenosa podataka.

Izlaz:

  • izračunato maksimalno vreme merenja;
  • spisak sudara između dva senzora;
  • broj sudara;
  • teorijska vjerovatnoća sudara.

Rezultati su vrlo zanimljivi:)

Dosta je bilo s teorijom, ne bih želio više inzistirati na teorijskom dijelu, članci i izvorni kod su prilično rječiti, pa bolje da pređem na praktičnu, učinkovitu implementaciju bežične senzorske mreže i na rezultate ispitivanja.

Korak 2: Praktična implementacija - hardver

Za senzore predajnika trebat će nam sljedeće komponente:

  • Mikrokontroler ATtiny85 1,11 USD;
  • Utičnica za integrirano kolo 8DIP 0,046 USD;
  • Senzor temperature/vlažnosti DHT11 0,74 USD;
  • 433MHz odašiljački modul H34A 0,73 USD;
  • Držač baterije 4xAA sa prekidačem 1 USD;

Ukupno 3,63 $;

Prijemnik koji se koristi za testove je Arduino UNO (samo za testiranje) i prijemni modul H3V4F (0,66 USD) sa jeftinom lučnom antenom (0,32 USD).

Sheme senzora-pošiljatelja

Image
Image

Jedinice predajnika i senzora napajaju se baterijama 3xAA, 1.5v (u četvrtom odjeljku držača baterija nalazi se elektronički sklop). Kao što vidite, napajanje predajnika i senzor temperature i vlažnosti spojeni su na pin PB0 mikrokontrolera (predajnik i senzor se napajaju kada je pin postavljen na HIGH). Dakle, kada je mikrokontroler u načinu dubokog sna, može doseći potrošnju struje od 4,7uA. S obzirom na to da bi vrijeme buđenja senzora predajnika bilo oko 3s (mjerenje, prijenos itd.), A prosječno vrijeme između odašiljanja 180s (kao primjer u prethodnom poglavlju), baterije bi trebale izdržati dosta. Uz neke kvalitetne alkalne baterije (tj. 2000 mAh), autonomija bi mogla biti i preko 10 mjeseci prema izračunu na omnicalculator.com (gdje je ukupna potrošnja struje: senzor - 1,5 mA, modul predajnika - 3,5 mA i mikrokontroler ATtiny85 - 5 mA, ukupno 10 mA).

Na donjoj fotografiji možete vidjeti gotovo gotov sklop senzora-pošiljatelja.

Image
Image

Ispod je fotografija jedinice prijemnika za testiranje.

Image
Image

Korak 3: Praktična implementacija - softver

Softver postavljen na mikrokontroler attiny85, glavnu komponentu senzorsko-pošiljateljskih jedinica, ima svrhu pročitati podatke koje daje senzor, pretvoriti ih za prijenos putem radija i prenijeti u Poissonovim vremenskim okvirima (eksponencijalna distribucija ili PASTA - Poisson Dolasci Vidite prosjeke vremena). Također, pomoću jednostavne funkcije, prati stanje baterija i daje upozorenje ako potreban napon za senzor više nije dostupan. Izvorni kod je dostupan na githubu. Kod za prijemnik za testiranje je vrlo jednostavan, objavljujem ga ispod.

// izmijenjena rcswitch biblioteka s https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// kod je izmijenjena verzija iz primjera originalne rcswitch biblioteke #include RCSwitch mySwitch = RCSwitch (); nepotpisani dugi podaci = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Prijemnik pri prekidu 0 => to je pin #2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // izlaz (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int vlažnost = bitExtracted (podaci, 7, 1); // manje značajnih 7 bita s pozicije 1 - krajnji desni prvi bit int temperatura = bitExtracted (podaci, 7, 8); // sljedećih 7 bita od pozicije 8 na desno i tako dalje int v_min = bitExtracted (podaci, 1, 15); int packet_id = bitExtracted (podaci, 3, 16); // 3 bita - 8 ID -a paketa od 0 do 7 int sensor_id = bitExtracted (podaci, 6, 19); // 6bit za 64 ID -a senzora - ukupno 24 bita Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (temperatura); Serial.print (","); Serial.print (vlažnost); Serial.println (); mySwitch.resetAvailable (); }} // kôd sa https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (nepotpisani dugi broj, int k, int p) {return (((1 (p- 1)));}

Pokušao sam uključiti što je moguće više komentara kako bih stvari lakše razumio.

Za otklanjanje grešaka koristio sam serijsku biblioteku softvera i razvojnu ploču attiny85 sa USBasp programatorom (pogledajte i moje upute o ovome). Serijska veza je napravljena sa serijskim na TTL pretvaračem (sa čipom PL2303) spojenim na savijene pinove (3 i 4) razvojne ploče (pogledajte sliku ispod). Sve je ovo bilo od neprocjenjive pomoći pri dovršenju koda.

Image
Image

Korak 4: Rezultati testa

Rezultati testa
Rezultati testa
Rezultati testa
Rezultati testa

Napravio sam 5 jedinica-pošiljatelja senzora koji prikupljaju i šalju vrijednosti izmjerene pomoću DHT11 senzora. Snimio sam i sačuvao mjerenja, uz pomoć prijemnika za testiranje i programa za emulaciju terminala (foxterm), tokom tri dana. Odabrao sam interval od 48 sati za učenje. Mene nisu nužno zanimale izmjerene vrijednosti (senzor 2, na primjer, pokazuje mi pogrešne vrijednosti), već broj sudara. Osim toga, senzori su postavljeni od strane prijemnika vrlo blizu (na 4-5 m) kako bi se uklonili drugi uzroci gubitka paketa. Rezultati testa su sačuvani u cvs datoteci i učitani (pogledajte datoteku ispod). Takođe sam postavio excel datoteku zasnovanu na ovoj csv datoteci. Napravio sam nekoliko snimaka ekrana da vam pokažem kako izgleda sudar (u mojim testovima naravno), dodao sam i komentare svakom snimku ekrana.

Možda ćete se zapitati zašto nisam koristio uslugu učitavanja podataka, na primjer ThingSpeak. Činjenica je da imam mnogo zapisa, mnogo senzora i podataka koji često dolaze u nepravilnim intervalima, a internetske IoT usluge dopuštaju podatke samo na određenom broju senzora i samo u prilično velikim intervalima. U budućnosti razmišljam o instaliranju i konfiguriranju vlastitog IoT servera.

Na kraju, 4598 mjerenja na 5 jedinica senzora-pošiljatelja (otprilike 920/senzor) rezultiralo je s ukupno 5 sudara u razdoblju od 48 sati (0,5435 sudara/100 mjerenja). Nekim proračunom (koristeći program wsn_test s početnim podacima: 5 senzora, prosječno vrijeme 180 s, vrijeme prijenosa 110 ms) vjerovatnoća sudara bi bila 0,015185 (1,52 sudara/100 mjerenja). Praktični rezultati su čak i bolji od teoretskih, zar ne?:)

Image
Image

U svakom slučaju, u ovom je razdoblju izgubljeno i 18 paketa, pa sudari u tom pogledu zapravo nisu previše bitni. Naravno, test bi se trebao odvijati kroz duži vremenski period kako bi se dobili što konačniji rezultati, ali po mom mišljenju uspjeh je čak i u ovim uvjetima i u potpunosti potvrđuje teorijske pretpostavke.

Korak 5: Završne misli

Odmah primjena

U velikom stakleniku uzgaja se nekoliko usjeva. Ako se navodnjavanje vrši ručno, bez nadzora klime, bez ikakve automatizacije, bez zapisa podataka, postoji rizik od prekomjernog ili premalog navodnjavanja, a također je i potrošnja vode velika, nema dokaza za optimizaciju potrošnje vode, postoji rizik za usjeve u općenito. Da bismo to izbjegli, možemo koristiti bežičnu senzorsku mrežu:)

Senzori temperature, senzori vlažnosti zraka, senzori vlažnosti tla mogu se postaviti svuda u stakleniku i uz pomoć prenesenih podataka može se izvršiti nekoliko radnji: start-stop električni ventili za propuštanje vode gdje je potrebno, start-stop električni ventilatori kako bi se smanjila temperatura u različitim područjima, po potrebi pokreni-zaustavi grijače i svi se podaci mogu arhivirati za buduću analizu. Takođe, sistem može pružiti web interfejs koji je dostupan svuda i alarme putem e -pošte ili SMS -a u slučaju abnormalnog stanja.

Šta je sledeće?

  • Testiranje sa većim brojem senzora;
  • Testiranje u stvarnom vremenu s daljinskim senzorima u području pokrivenosti;
  • Instaliranje i konfiguriranje lokalnog IoT servera (na Raspberry Pi na primjer);
  • Testira se i sa senzorima predajnika (primopredajnika) na 2,4 GHz.

pa … nastavak …:)

ODRICANJE: Korištenje frekvencijskog opsega 433MHz u vašoj regiji može podlijegati propisima o radio frekvencijama. Molimo vas da prije isprobavanja ovog projekta provjerite svoju zakonitost

Takmičenje senzora
Takmičenje senzora
Takmičenje senzora
Takmičenje senzora

Drugoplasirani na takmičenju senzora

Preporučuje se: