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, Studeni
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 jedinica senzora -pošiljatelja koje sam koristio za testiranje

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

Jednostavna bi definicija 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 središnje mjesto za obradu i pohranu.

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 oceana;
  • Mogućnost upozoravanja u slučaju terorističkih, kemijskih, bioloških, epidemijskih napada;
  • Sustavi praćenja djece, starijih osoba, pacijenata ili osoba s posebnim potrebama;
  • Sustavi nadzora u poljoprivredi i staklenicima;
  • Sustav 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 DIY, komunikacija je jednosmjerna (na radijskom pojasu 433 MHz), što znači da senzori samo prenose podatke, a središnje mjesto 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čito bi prvi razlog bio "pojednostavljivanje". Jednostavnije je sastavljanje, manja je vjerojatnost da neće uspjeti, 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 dulje (senzori će trošiti samo tijekom praćenja i primanja, ostatak vremena uređaj će biti u načinu dubokog sna). Činjenica da je jednostavan uređaj čini i jeftinim. Drugi 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 središnjem modulu (to je potrebno za dobru dvosmjernu komunikaciju). S osjetljivim i kvalitetnim prijamnikom moguće je primati podatke s velike udaljenosti, no za emitiranje podataka na istoj udaljenosti potrebna je velika snaga emisije, a to dolazi s visokim troškovima, potrošnjom električne energije i (ne zaboravimo) mogućnošću prevladavanja zakonska maksimalna snaga odašiljača na pojasu 433 MHz. Korištenjem prijemnika srednje kvalitete, jeftinog, ali s visokokvalitetnom antenom (čak i DIY) i jeftinih odašiljača s antenom dobre kvalitete, možemo postići izvrsne rezultate uz mali dio cijene postojećih bežičnih senzorskih mreža.

Korak 1: Teoretska 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 vlage 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 prijamnicima na pojasu 433 MHz. Postoji samo jedan problem: ako imamo više senzora (recimo 20), kako ćemo riješiti sudare (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 na temelju postupka slučajnih operacija - RAJBA, T. i RAJBA, S.

i

Vjerojatnost sudara u bežičnoj senzorskoj mreži sa slučajnim slanjem - 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 poissonovskoj (eksponencijalnoj) raspodjeli.

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

  • prilično velik broj jedinica senzora-pošiljatelja 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 postaje;
  • polako se mijenjaju fizički parametri podvrgavaju se mjerenjima što znači da nema potrebe za prenošenjem podataka vrlo često (npr. svakih nekoliko minuta ili nekoliko desetaka minuta);
  • prijenos je jednosmjeran, tj. od jedinice senzora-pošiljatelja do prijemne točke u prosječnim vremenskim intervalima T. Informacije se prenose u protokolu na tstr vrijeme trajanja;
  • 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 odašiljati dok protokol tstr trajanje se prenosi s drugog senzora, takva se situacija naziva sudar. Sudar onemogućuje središnjoj 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 upotrijebila 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 odašiljača pomoću rcswitch -a ili radiohead -a. Proučavajući kodove dviju knjižnica došao sam do zaključka da bi najmanje vrijeme prijenosa bilo 20 ms, što je znatno iznad vrijednosti od 3,2 us. S odašiljačima na 2,4 GHz moguće je tstr vrijeme tako malo … 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,020 s)
  • Prosječni interval prijenosa T = 180s

Formula:

Vjerojatnost sudara na T intervalu je

Slika
Slika

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

Ta je vrijednost, koja ukazuje na vjerojatnost da će se dogoditi 4,35 sudara na 100 mjerenja, po mom mišljenju prilično dobra. Vjerojatnost bi se mogla poboljšati ako povećamo prosječno vrijeme prijenosa, pa bismo pri vrijednosti od 300s imali vjerojatnost 0,026332, odnosno 2,6 sudara na 100 mjerenja. Ako uzmemo u obzir da ionako možemo očekivati gubitak paketnih podataka tijekom rada sustava (ovisno o, primjerice, vremenskim uvjetima), tada 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 naredbenom retku - puštanje).

Ulazni podaci:

  • sensor_number - broj senzora na mreži;
  • mjerenja_broj - broj mjerenja za simulaciju;
  • prosječni_prenos_prijenosa -prosječno vrijeme između uzastopnih prijenosa podataka;
  • vrijeme_prijenosa - efektivno trajanje prijenosa podataka.

Izlaz:

  • izračunato maksimalno vrijeme mjerenja;
  • popis sudara između dva senzora;
  • broj sudara;
  • teoretska vjerojatnost sudara.

Rezultati su vrlo zanimljivi:)

Dosta je bilo s teorijom, ne bih želio više inzistirati na teoretskom dijelu, članci i izvorni kôd su dosta 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 odašiljača trebat će nam sljedeće komponente:

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

Ukupno 3,63 $;

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

Sheme pošiljatelja senzora

Slika
Slika

Jedinice odašiljača i senzora napajaju se baterijama 3xAA, 1,5 V (u četvrtom odjeljku držača baterija nalazi se elektronički sklop). Kao što vidite, napajanje odašiljača i osjetnik temperature i vlažnosti spojeni su na pin PB0 mikrokontrolera (odašiljač 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. Uzimajući u obzir da bi vrijeme buđenja senzora odašiljača bilo oko 3s (mjerenje, prijenos itd.), A prosječno vrijeme između odašiljanja 180 s (kao primjer u prethodnom poglavlju), baterije bi trebale dosta odoljeti. S nekim kvalitetnim alkalnim baterijama (tj. 2000 mAh), autonomija bi mogla biti veća od 10 mjeseci prema izračunu na omnicalculator.com (gdje je ukupna potrošnja struje: senzor - 1,5 mA, odašiljački modul - 3,5 mA i mikrokontroler ATtiny85 - 5 mA, ukupno 10 mA).

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

Slika
Slika

Ispod je fotografija jedinice prijemnika za testiranje.

Slika
Slika

Korak 3: Praktična implementacija - softver

Softver učitan na mikrokontroler attiny85, glavnu komponentu jedinica senzora-pošiljatelja, ima svrhu pročitati podatke koje daje senzor, pretvoriti ih za prijenos putem radija i prenijeti u Poissonovim vremenskim okvirima (eksponencijalna distribucija ili PASTA - Poissonovi dolasci, pogledajte vremenske prosjeke). Također, pomoću jednostavne funkcije, prati stanje baterija i daje upozorenje ako potreban napon za senzor više nije omogućen. Izvorni kod dostupan je na githubu. Kod za prijemnik za testiranje je vrlo jednostavan, objavljujem ga u nastavku.

// izmijenjena biblioteka rcswitch s https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// kod je izmijenjena verzija iz primjera izvorne biblioteke rcswitch #include RCSwitch mySwitch = RCSwitch (); nepotpisani dugi podaci = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Prijamnik 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 položaja 1 - krajnji desni prvi bit int temperatura = bitExtracted (podaci, 7, 8); // sljedećih 7 bita s položaja 8 udesno i tako dalje int v_min = bitExtracted (podaci, 1, 15); int packet_id = bitExtracted (podaci, 3, 16); // 3 bita - 8 ID -ova 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 s https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, 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 uklanjanje pogrešaka koristio sam softversku serijsku biblioteku i razvojnu ploču attiny85 s programatorom USBasp (pogledajte i moje upute o tome). Serijska veza napravljena je s serijskim na TTL pretvaračem (s čipom PL2303) spojenim na savijene pinove (3 i 4) razvojne ploče (vidi sliku ispod). Sve je ovo bilo od neprocjenjive pomoći pri dovršenju koda.

Slika
Slika

Korak 4: Rezultati ispitivanja

Rezultati ispitivanja
Rezultati ispitivanja
Rezultati ispitivanja
Rezultati ispitivanja

Napravio sam 5 jedinica-pošiljatelja senzora koji prikupljaju i šalju vrijednosti izmjerene DHT11 osjetnicima. Snimio sam i spremio mjerenja, uz pomoć prijemnika za testiranje i programa za emulaciju terminala (foxterm), tijekom 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 primatelji postavljeni vrlo blizu (na 4-5 m) kako bi se uklonili drugi uzroci gubitka paketa. Rezultati testa su spremljeni u cvs datoteku i učitani (pogledajte datoteku u nastavku). Također sam učitao excel datoteku temeljenu na ovoj csv datoteci. Napravio sam nekoliko snimaka zaslona da vam pokažem kako izgleda sudar (u mojim testovima naravno), dodao sam i komentare svakom snimku zaslona.

Možda se pitate zašto nisam upotrijebio 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 poslužitelja.

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

Slika
Slika

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 provoditi kroz dulje razdoblje 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, osjetnici 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 pokrenite i zaustavite grijače, a svi se podaci mogu arhivirati za buduću analizu. Također, sustav može pružiti web sučelje koje je dostupno posvuda te alarme e -poštom ili SMS -om u slučaju abnormalnog stanja.

Što je sljedeće?

  • Testiranje s većim brojem senzora;
  • Testiranje u stvarnom vremenu s daljinskim senzorima u području pokrivanja;
  • Instaliranje i konfiguriranje lokalnog IoT poslužitelja (na primjer na Raspberry Pi);
  • Testira se i s odašiljačkim (primopredajničkim) osjetnicima na 2,4 GHz.

pa … nastavak …:)

ODRICANJE: Korištenje frekvencijskog pojasa 433MHz u vašoj regiji može podlijegati propisima o radiofrekvencijama. Prije isprobavanja ovog projekta provjerite svoju zakonitost

Natječaj senzora
Natječaj senzora
Natječaj senzora
Natječaj senzora

Drugoplasirani na natjecanju senzora

Preporučeni: