INHOUDSOPGAWE:

Lae koste draadlose sensornetwerk op 433MHz -band: 5 stappe (met foto's)
Lae koste draadlose sensornetwerk op 433MHz -band: 5 stappe (met foto's)

Video: Lae koste draadlose sensornetwerk op 433MHz -band: 5 stappe (met foto's)

Video: Lae koste draadlose sensornetwerk op 433MHz -band: 5 stappe (met foto's)
Video: Домашний Keynote — легко. Веселье. Каждый. 2024, November
Anonim
Lae koste draadlose sensornetwerk op 433MHz -band
Lae koste draadlose sensornetwerk op 433MHz -band

Baie dankie aan Teresa Rajba dat u my vriendelik aanvaar het om data uit hul publikasies in hierdie artikel te gebruik

* In die prent hierbo - die vyf sensor -sender -eenhede wat ek gebruik het om te toets

Wat is draadlose sensornetwerke?

'N Eenvoudige definisie sou wees: die draadlose sensornetwerke verwys na 'n groep elektroniese toestelle wat op 'n sekere gebied versprei word vir die monitering en opname van omgewingsdata, wat draadloos na 'n sentrale plek gestuur word om verwerk en gestoor te word.

Deesdae kan draadlose sensornetwerke op verskillende maniere gebruik word, hier is slegs 'n paar voorbeelde:

  • Omgewings van ekologiese monitering van woude, riviere, mere, see en oseane;
  • Die moontlikheid om te waarsku in geval van terroriste, chemiese, biologiese, epidemiese aanvalle;
  • Moniteringstelsels vir kinders, bejaardes, pasiënte of mense met spesiale behoeftes;
  • Toesigstelsels in die landbou en kweekhuise;
  • Weervoorspelling moniteringstelsel;
  • Toezig op stadsverkeer, skole, parkeerareas;

En baie, baie ander toepassings.

In hierdie artikel wil ek die resultate toon van 'n eksperiment met draadlose sensornetwerke wat gebruik is vir die monitering van temperatuur- en humiditeitsdata, met 'n stadige en relatief voorspelbare variasie. Vir hierdie eksperiment het ek gekies om sensors te gebruik wat ek self gebou het met behulp van bekostigbare modules. Die ontvanger is ook selfgemaak, die kommunikasie is unidirectioneel (op die 433 MHz -radioband), wat beteken dat die sensors slegs die data oordra en die sentrale plek slegs ontvang. Daar is geen kommunikasie tussen sensors en van ontvanger na sensors nie.

Maar waarom kies u om veelvuldige senders en slegs een ontvanger te gebruik? Dit is duidelik dat die eerste rede 'eenvoudig maak' sou wees. Hoe eenvoudiger die montering, hoe minder waarskynlik is dit dat dit misluk, en dit is beslis baie makliker om die enkele komponente te herstel en te vervang in geval van foute. Die kragverbruik is ook laer, die batterye hou langer (sensors verbruik slegs tydens monitering en ontvangs, die res van die tyd sal die toestel in die diep slaapmodus wees). Die feit dat dit eenvoudig is, maak die toestel ook goedkoop. 'N Ander aspek om in gedagte te hou, is die dekkingsgebied. Hoekom? Dit is baie makliker om 'n sensitiewe ontvanger te bou en te gebruik as om 'n sensitiewe ontvanger en 'n kragtige sender by beide die sensors en die sentrale module te hê (dit is nodig vir 'n goeie tweerigtingkommunikasie). Met 'n sensitiewe ontvanger van goeie gehalte is dit moontlik om data van 'n lang afstand af te ontvang, maar die uitstuur van data vir dieselfde afstand verg hoë emissiekrag, en dit bring hoë koste, elektrisiteitsverbruik en (laat ons nie vergeet nie) die moontlikheid oorskry wettige maksimum sendervermoë op die 433 MHz -band. Deur 'n medium-kwaliteit ontvanger te gebruik, goedkoop, maar met 'n hoë kwaliteit antenna (selfs selfdoen) en goedkoop senders met 'n antenna van goeie gehalte, kan ons uitstekende resultate behaal teen 'n fraksie van die koste van bestaande draadlose sensornetwerke.

Stap 1: Teoretiese oorwegings

Die idee om 'n draadlose sensornetwerk te bou vir die monitering van temperatuur en humiditeit van lug en grond in verskillende dele van 'n kweekhuis, kom al lank gelede by my op. Ek wou 'n 1-draad netwerk bou en 1-draad temperatuur en humiditeit sensors gebruik. Ongelukkig was humiditeitsensors 10 jaar gelede skaars en duur (alhoewel temperatuursensors wydverspreid was) en aangesien die verspreiding van drade oor die kweekhuis nie 'n opsie was nie, het ek die idee redelik vinnig prysgegee.

Nou het die situasie egter radikaal verander. Ons kan goedkoop sensors van goeie gehalte (temperatuur en humiditeit) vind, en ons het ook toegang tot goedkoop senders en ontvangers op die 433 MHz-band. Daar is net een probleem: as ons meer sensors het (laat ons sê 20), hoe los ons die botsings op (hou in gedagte dat dit 'n eenrigtingkommunikasie is), wat beteken dat die uitstoot van 2 of meer sensors oorvleuel? Terwyl ek na 'n moontlike oplossing gesoek het, kom ek op hierdie baie interessante vraestelle:

Draadlose sensor konvergeer cast gegrond op willekeurige bewerkingsprosedure - deur RAJBA, T. en RAJBA, S.

en

Die waarskynlikheid van botsings in Wireless Sensor Network met ewekansige stuur - deur RAJBA S. en RAJBA. T

Die skrywers wys ons basies dat die waarskynlikheid van botsings in 'n draadlose sensornetwerk bereken kan word as die pakkies op 'n sekere tydstip uitgestuur word volgens 'n giftige (eksponensiële) verspreiding.

'N Uittreksel uit bogenoemde vraestel gee 'n lys van die kenmerke van die bestudeerde netwerk.

  • 'n groot aantal sensor-sender eenhede N;
  • sensor-sender eenhede bly heeltemal onafhanklik en die aan- of uitskakel daarvan het geen invloed op die netwerkbedryf nie;
  • alle sensor-sender-eenhede (of 'n deel daarvan) mag mobiel wees, mits hulle binne die radioafstand van die ontvangstasie geleë is;
  • die stadig veranderende fisiese parameters word aan metings onderwerp, wat beteken dat dit nie nodig is om die data baie gereeld oor te dra nie (bv. elke paar minute of enkele dosyne minute);
  • die oordrag is van eenrigtingtipe, dit wil sê van die sensor-sender-eenheid tot by die ontvangspunt met T gemiddelde tydsintervalle. Inligting word in die protokol by tbl tydsduur;
  • enige geselekteerde sensor begin willekeurig op Poisson -tye stuur. PASTA (Poisson Arrivals See Time Averages) sal gebruik word om die versending van probes by Poisson -tydperke te regverdig;
  • alle sensor-sender eenhede bly ewekansig onafhanklik en hulle sal die inligting op 'n willekeurig geselekteerde tydstip van t oordrabl duur en van T gemiddelde tyd van herhaling;
  • as een of meer sensors begin stuur terwyl die protokol van tbl Die tydsduur word van 'n ander sensor oorgedra, so 'n situasie word die botsing genoem. Botsing maak dit vir die sentrale basisstasie onmoontlik om die inligting op 'n korrekte manier te ontvang.

Dit pas byna perfek by die sensornetwerk wat ek wil toets …

Byna.

Ek sê nie dat ek die wiskunde in die vraestel heeltemal verstaan het nie, maar ek kon op grond van die gegewens en die gevolgtrekkings 'n bietjie verstaan waaroor dit gaan. Die enigste ding is dat 'n waarde wat in die koerant gebruik word, my 'n bietjie bekommerd gemaak het:). Dit is die veranderlike tbl - die duur van die data -oordrag wat aangeneem word 3,2x10-5 s. Die transmissietyd van die versamelde data sou dus 3,2 ons wees! Dit kan nie op die 433 MHz -band gedoen word nie. Ek wil die rcswitch of die radiohead gebruik om die sendersensors te programmeer. Deur die kodes van die twee biblioteke te bestudeer, het ek tot die gevolgtrekking gekom dat die kleinste transmissietyd 20 ms sou wees, ver bo die waarde van 3,2 ons. Met die 2,4 GHz -senders is dit moontlik tbl tyd so klein … maar dit is 'n ander storie.

As ons die formule toepas wat deur die skrywers van hierdie artikel voorgestel word, sal die resultaat wees:

Aanvanklike data ('n voorbeeld):

  • Aantal sensors N = 20;
  • Data -oordragduur tbl= 20x10-3 s (0,020 s)
  • Gemiddelde transmissie -interval T = 180s

Die formule:

Die waarskynlikheid van botsing op T -interval is

Beeld
Beeld

as ons die aanvanklike data in ag neem, is die waarskynlikheid van botsing op T -interval 0,043519

Na my mening is hierdie waarde, wat die waarskynlikheid van 4,35 botsings per 100 metings aandui, redelik goed. Die waarskynlikheid kan verbeter as ons die gemiddelde transmissietyd verhoog, dus teen 'n waarde van 300s het ons 'n waarskynlikheid van 0.026332, dit wil sê 2.6 botsings per 100 metings. As ons van mening is dat ons in elk geval tydens die werking van die stelsel pakketverlies kan verwag (afhangende van die weersomstandighede), is hierdie nommer werklik uitstekend.

Ek wou 'n simulasie van hierdie tipe netwerk doen, maar ook 'n soort ontwerpassistent, so ek het 'n klein program in C gemaak, u kan die bronkode op github vind (ook 'n saamgestelde binêre wat op die Windows -opdraglyn loop - vrylating).

Invoerdata:

  • sensor_number - die aantal sensors op die netwerk;
  • metings_getal - aantal metings om te simuleer;
  • gemiddelde_oordrag_interval -gemiddelde tyd tussen opeenvolgende datatransmissies;
  • transmission_time - die effektiewe duur van data -oordrag.

Uitset:

  • die berekende maksimum meettyd;
  • die lys van botsings tussen twee sensors;
  • aantal botsings;
  • teoretiese waarskynlikheid van botsings.

Die resultate is baie interessant:)

Genoeg met die teorie, ek wil nie meer aandring op die teoretiese deel nie; die artikels en die bronkode is redelik welsprekend, daarom gaan ek beter na die praktiese, effektiewe implementering van die draadlose sensornetwerk en na die toetsuitslae.

Stap 2: Praktiese implementering - die hardeware

Vir sendersensors benodig ons die volgende komponente:

  • ATtiny85 mikrobeheerder 1,11 $;
  • Geïntegreerde stroombaan 8DIP 0,046 $;
  • Temperatuur-/humiditeitsensor DHT11 0,74 $;
  • 433MHz H34A -sendermodule 0.73 $;
  • 4xAA batteryhouer met skakelaar 1 $;

Totaal 3,63 $;

Die ontvanger wat vir die toetse gebruik word, is 'n Arduino UNO (slegs vir toetsing) en 'n H3V4F -ontvangmodule (0.66 $) met 'n goedkoop boogantenne (0.32 $).

Sensor-sender skema's

Beeld
Beeld

Die sender-sensor-eenhede word aangedryf met 3xAA, 1.5v-batterye (in die vierde kompartement van die batteryhouer is die elektroniese samestelling). Soos u kan sien, is die sender se kragtoevoer en die temperatuur-humiditeitsensor aan die PB0-pen van die mikrobeheerder gekoppel (die sender en die sensor word aangeskakel wanneer die pen op HOOG gestel is). As die mikrobeheerder dus in die diep slaapmodus is, kan dit 'n stroomverbruik van 4,7 uA bereik. Aangesien die wakker tyd van die sender-sensor ongeveer 3 sekondes sou wees (meting, transmissie, ens.) En die gemiddelde tyd tussen transmissies van 180's (soos die voorbeeld in die vorige hoofstuk), moet die batterye baie weerstaan. Met 'n paar goeie kwaliteit alkaliese batterye (dws 2000 mAh), kan die outonomie langer as 10 maande wees, soos bereken op omnicalculator.com (waar die totale huidige verbruik is: sensor - 1.5mA, sender module - 3.5mA en ATtiny85 mikrokontroller - 5mA, totaal 10mA).

Op die onderstaande foto kan u die byna voltooide sensor-sender-eenheid sien.

Beeld
Beeld

Hieronder is die foto van die toetsontvanger -eenheid.

Beeld
Beeld

Stap 3: Praktiese implementering - sagteware

Die sagteware wat opgelaai word na die attiny85-mikrobeheerder, die hoofkomponent van die sensor-sender-eenhede, het die doel om die data wat deur die sensor verskaf word, te lees, om te skakel na radio, en dit binne Poisson-tydraamwerke te stuur (eksponensiële verspreiding of PASTA - Poisson aankomste sien tydsgemiddeldes). Deur 'n eenvoudige funksie te gebruik, monitor dit ook die status van die batterye en word 'n waarskuwing gegee as die vereiste spanning vir die sensor nie meer verskaf word nie. Bronkode is beskikbaar op github. Die kode vir die toetsontvanger is baie eenvoudig, ek plaas dit hieronder.

// gewysigde rcswitch-biblioteek vanaf https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// die kode is 'n aangepaste weergawe uit voorbeelde van die oorspronklike rcswitch-biblioteek #sluit RCSwitch mySwitch = RCSwitch in (); ongetekende lang data = 0; ongeldige opstelling () {Serial.begin (9600); mySwitch.enableReceive (0); // Ontvanger op interrupt 0 => dit is pen #2} leemte -lus () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int humiditeit = bitExtracted (data, 7, 1); // minder betekenisvolle 7 -bits vanaf posisie 1 - heel eerste eerste bit int temperatuur = bitExtracted (data, 7, 8); // volgende 7 bits van posisie 8 na regs en so aan int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (data, 3, 16); // 3bits - 8 pakkie -ID's van 0 tot 7 int sensor_id = bitExtracted (data, 6, 19); // 6bit vir 64 sensor -ID's - totaal 24 bis Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (temperatuur); Serial.print (","); Serial.print (humiditeit); Serial.println (); mySwitch.resetAvailable (); }}} // kode van https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (ongetekende lang getal, int k, int p) {return (((1 (p- 1)));}

Ek het probeer om soveel as moontlik opmerkings op te neem om dit makliker te verstaan.

Vir ontfouting gebruik ek die sagteware -seriële biblioteek en die attiny85 -ontwikkelbord met die USBasp -programmeerder (sien ook my instruksies hieroor). Die seriële skakel is gemaak met Serial to TTL -omskakelaar (met 'n PL2303 -chip) wat gekoppel is aan die geboë penne (3 en 4) van die ontwikkelingsbord (sien prent hieronder). Dit alles was van onskatbare waarde om die kode te voltooi.

Beeld
Beeld

Stap 4: Toetsresultate

Toets resultate
Toets resultate
Toets resultate
Toets resultate

Ek het 5 sensor-sender eenhede geskep wat waardes versamel en stuur wat gemeet is deur die DHT11 sensors. Ek het metings met behulp van die toetsontvanger en 'n terminale emulasieprogram (foxterm) gedurende drie dae aangeteken en gestoor. Ek het 'n interval van 48 uur vir studie gekies. Ek was nie noodwendig geïnteresseerd in die gemete waardes nie (sensor 2, dit wys my byvoorbeeld verkeerde waardes), maar in die aantal botsings. Boonop is die sensors baie naby (op 4-5 m) deur die ontvanger geplaas om ander oorsake van pakkieverlies uit te skakel. Die toetsuitslae is in 'n cvs -lêer gestoor en opgelaai (kyk na die lêer hieronder). Ek het ook 'n Excel -lêer opgelaai gebaseer op hierdie csv -lêer. Ek het 'n paar kiekies geneem om jou te wys hoe 'n botsing lyk (natuurlik in my toetse). Ek het ook kommentaar by elke skermkiekie gevoeg.

U wonder miskien hoekom ek nie 'n data laaier diens gebruik het nie, byvoorbeeld ThingSpeak. Die feit is dat ek baie rekords het, baie sensors en data kom gereeld met onreëlmatige tussenposes, en aanlyn IoT -dienste laat slegs data toe met 'n sekere aantal sensors en slegs met redelik groot tussenposes. Ek dink in die toekoms om my eie IoT -bediener te installeer en op te stel.

Uiteindelik het 4598 metings op 5 sensorsender-eenhede (ongeveer 920/sensor) 'n totaal van 5 botsings vir 'n tydperk van 48 uur tot gevolg gehad (0,5435 botsings/100 metings). Om wiskunde te doen (met behulp van die wsn_test -program met aanvanklike data: 5 sensors, gemiddelde tyd 180s, transmissietyd 110 ms) sou die botsingswaarskynlikheid 0,015185 wees (1,52 botsings/100 metings). Die praktiese resultate is selfs beter as die teoretiese resultate, nie waar nie?:)

Beeld
Beeld

In elk geval, daar is ook 18 pakkies in hierdie tydperk verlore, so die botsings maak nie regtig veel saak in hierdie verband nie. Natuurlik moet die toets oor 'n langer tydperk plaasvind om die mees afdoende resultate te kry, maar na my mening is dit selfs in hierdie omstandighede 'n sukses en bevestig dit die teoretiese aannames volledig.

Stap 5: Laaste gedagtes

Onmiddellike aansoek

In 'n groot kweekhuis word verskeie gewasse verbou. As die besproeiing met die hand gedoen word sonder klimaatmonitering, sonder outomatisering, sonder datarekords, is daar 'n risiko van oor- of onderbesproeiing en is die waterverbruik ook hoog, is daar geen bewyse vir die optimalisering van waterverbruik nie, is daar risiko vir gewasse in algemeen. Om dit te vermy, kan ons 'n draadlose sensornetwerk gebruik:)

Temperatuursensors, lugvochtigheidsensors, grondvogtigheidsensors kan oral in die kweekhuis geplaas word, en met behulp van data kan verskeie aksies uitgevoer word: begin-stop elektriese kleppe om die water te laat vloei waar nodig, begin-stop elektriese waaiers om die temperatuur in verskillende gebiede te verlaag, begin-stop-verwarmers indien nodig, en al die data kan vir toekomstige ontleding gestoor word. Die stelsel kan ook 'n webkoppelvlak bied wat oral toeganklik is en e -pos- of SMS -alarms in geval van abnormale toestand.

Wat is volgende?

  • Toets met 'n groter aantal sensors;
  • Intydse toetsing met afstandsensors in die dekkingsgebied;
  • Die installering en opstel van 'n plaaslike IoT -bediener (byvoorbeeld op 'n Raspberry Pi);
  • Toetse ook met sender (sender / ontvanger) sensors op 2,4 GHz.

so … word vervolg …:)

VRYWARING: Die gebruik van die 433MHz frekwensieband in u streek kan onderhewig wees aan radiofrekwensie regulasies. Kontroleer u wettigheid voordat u hierdie projek probeer

Sensors -kompetisie
Sensors -kompetisie
Sensors -kompetisie
Sensors -kompetisie

Naaswenner in die Sensors -kompetisie

Aanbeveel: