Sadržaj:
- Korak 1: Teorijska razmatranja
- Korak 2: Praktična implementacija - hardver
- Korak 3: Praktična implementacija - softver
- Korak 4: Rezultati testa
- Korak 5: Završne misli
Video: Jeftina bežična senzorska mreža na pojasu 433MHz: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
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
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
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.
Ispod je fotografija jedinice prijemnika za testiranje.
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.
Korak 4: 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?:)
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
Drugoplasirani na takmičenju senzora
Preporučuje se:
Kako koristiti MIDI datoteke u garažnom pojasu: 23 koraka
Kako koristiti MIDI datoteke u Garage Band -u: U ovom vodiču naučit ćete kako stvoriti "Marry Had a Little Lamb" s MIDI -jem u GarageBandu. Ovaj vodič zahtijeva pristup GarageBand -u, kao i određeno predznanje o muzici (poput nota klavira i sposobnost čitanja muzike u ko
Mreža senzorskih stanica za osvjetljenje i sigurnosnu kontrolu: 5 koraka (sa slikama)
Mreža senzorskih stanica za osvjetljenje i sigurnosnu kontrolu: S ovom mrežom senzorskih stanica konfiguriranom u master/slave načinu rada, moći ćete vršiti kontrolu rasvjete i sigurnosti u svom domu. Ove senzorske stanice (Node01, Node02 u ovom projektu) povezane su s glavnom stanicom (Node00) povezane s vašim
Kućna mreža OpenWrt: 9 koraka (sa slikama)
Kućna mreža OpenWrt: OpenWrt je Linux distribucija otvorenog koda koju korisnici obično instaliraju na svoje kućne Wi-Fi usmjerivače. Sigurnost: Firmver usmjerivača na bazi OpenWrt često je sigurniji od standardnog firmvera kućnog usmjerivača jer prima redovnu sigurnost ažurirano
DIY 18650 Mreža za punjenje litij -ionskih ćelija: 7 koraka (sa slikama)
DIY 18650 Mreža za punjenje litij -ionskih ćelija: Radio sam na motoriziranju svog bicikla pomoću istosmjernog motora sa zupčanikom i sada mi za to treba baterija. Stoga sam za izradu baterije odlučio da koristim popularne 18650 litijum -jonske ćelije iz dvije stare baterije na hoverbordu. Pošto su ćelije
Bežična komunikacija pomoću jeftinih RF modula od 433MHz i Pic mikrokontrolera. Dio 2: 4 koraka (sa slikama)
Bežična komunikacija pomoću jeftinih RF modula od 433MHz i Pic mikrokontrolera. Drugi dio: U prvom dijelu ovog uputstva pokazao sam kako programirati PIC12F1822 koristeći MPLAB IDE i XC8 kompajler, za slanje jednostavnog niza bežično pomoću jeftinih TX/RX 433MHz modula. Prijemnički modul je povezan preko USB -a na UART TTL kablovski oglas