Sisällysluettelo:
- Vaihe 1: Teoreettiset näkökohdat
- Vaihe 2: Käytännön toteutus - laitteisto
- Vaihe 3: Käytännön toteutus - Ohjelmisto
- Vaihe 4: Testitulokset
- Vaihe 5: Viimeiset ajatukset
Video: Edullinen langaton anturiverkko 433 MHz: n kaistalla: 5 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Paljon kiitoksia Teresa Rajballe ystävällisesti siitä, että hän hyväksyi minut käyttämään heidän julkaisujensa tietoja tässä artikkelissa
* Yllä olevassa kuvassa - viisi anturin lähetinyksikköä, joita käytin testaukseen
Mitä ovat langattomat anturiverkot?
Yksinkertainen määritelmä olisi seuraava: langattomat anturiverkot viittaavat tiettyihin alueisiin jaettujen ympäristötietojen seurantaan ja tallentamiseen tarkoitettujen elektronisten laitteiden ryhmään, jotka lähetetään langattomasti keskeiseen paikkaan käsiteltäväksi ja tallennettavaksi.
Nykyään langattomia anturiverkkoja voidaan käyttää useilla tavoilla, alla on vain muutamia esimerkkejä:
- Metsien, jokien, järvien, merien ja valtamerien ekologisen seurannan alueet;
- Mahdollisuus varoittaa mahdollisista terrori-, kemiallisista, biologisista ja epidemiahyökkäyksistä;
- Lasten, vanhusten, potilaiden tai erityistarpeisten seurantajärjestelmät;
- Maatalouden ja kasvihuoneiden valvontajärjestelmät;
- Sääennusteiden seurantajärjestelmä;
- Kaupunkiliikenteen, koulujen, pysäköintialueiden valvonta;
Ja monia, monia muita sovelluksia.
Tässä artikkelissa haluan näyttää tulokset kokeilusta langattomilla anturiverkkoilla, joita on käytetty lämpötilan ja kosteuden seurantaan, hitaalla ja suhteellisen ennakoitavalla vaihtelulla. Tässä kokeessa päätin käyttää anturilähettimiä, jotka rakensin itse käyttämällä kohtuuhintaisia moduuleja. Vastaanotin on myös DIY, tiedonsiirto on yksisuuntaista (433 MHz: n radiotaajuudella), mikä tarkoittaa, että anturit lähettävät vain tietoja ja keskuspaikka vain vastaanottaa. Anturien ja vastaanottimen välillä ei ole kommunikaatiota.
Mutta miksi valita useiden lähettimien ja vain yhden vastaanottimen käyttö? Ensimmäinen syy olisi tietysti "yksinkertaistaminen". Mitä yksinkertaisempi on kokoonpano, sitä epätodennäköisemmin se epäonnistuu, ja yksittäisten osien korjaaminen ja vaihtaminen on ehdottomasti paljon helpompaa toimintahäiriöiden sattuessa. Virrankulutus on myös pienempi, paristot kestävät pidempään (anturit kuluttavat vain seurannan ja vastaanoton aikana, loput ajasta laite on syvässä lepotilassa). Yksinkertaisuus tekee laitteesta myös halvan. Toinen näkökohta, joka on pidettävä mielessä, on peittoalue. Miksi? On paljon helpompaa rakentaa ja käyttää herkkää vastaanotinta kuin herkkä vastaanotin ja tehokas lähetin sekä antureiden että keskusmoduulin kohdalla (tämä on tarpeen hyvän kaksisuuntaisen tiedonsiirron kannalta). Herkällä ja laadukkaalla vastaanottimella on mahdollista vastaanottaa tietoja pitkältä etäisyydeltä, mutta datan lähettäminen samalla etäisyydellä vaatii suurta päästötehoa, mikä aiheuttaa korkeita kustannuksia, sähkönkulutusta ja (älä unohda) mahdollisuutta ylittää laillinen suurin lähetysteho 433 MHz: n kaistalla. Käyttämällä keskinkertaista vastaanotinta, halpaa mutta korkealaatuista antennia (jopa DIY) ja halpoja lähettimiä laadukkaalla antennilla voimme saavuttaa erinomaisia tuloksia murto-osalla nykyisten langattomien anturiverkkojen hinnasta.
Vaihe 1: Teoreettiset näkökohdat
Ajatus langattoman anturiverkoston rakentamisesta ilman ja maaperän lämpötilan ja kosteuden seuraamiseksi kasvihuoneen eri alueilla tuli mieleeni jo kauan sitten, lähes 10 vuotta. Halusin rakentaa 1-johdinverkon ja käyttää 1-johtimista lämpötila- ja kosteusanturia. Valitettavasti 10 vuotta sitten kosteusanturit olivat harvinaisia ja kalliita (vaikka lämpötila -anturit olivat yleisiä), ja koska lankojen levittäminen koko kasvihuoneeseen ei näyttänyt vaihtoehdolta, luovuin ajatuksesta melko nopeasti.
Nyt tilanne on kuitenkin muuttunut radikaalisti. Pystymme löytämään halpoja ja laadukkaita antureita (lämpötila ja kosteus), ja meillä on myös halpoja lähettimiä ja vastaanottimia 433 MHz: n kaistalla. On vain yksi ongelma: jos meillä on enemmän antureita (sanotaan 20), kuinka ratkaamme törmäykset (muistakaa, että tämä on yksisuuntainen kommunikaatio), eli kahden tai useamman anturin päästöjen päällekkäisyys? Etsiessäni mahdollista ratkaisua törmäsin tähän erittäin mielenkiintoiseen paperiin:
Langattomat anturit lähentyvät satunnaistoimintojen perusteella - kirjoittaneet RAJBA, T. ja RAJBA, S.
ja
Yhteentörmäysten todennäköisyys langattomassa anturiverkossa satunnaislähetyksillä - RAJBA S. ja RAJBA. T
Periaatteessa kirjoittajat osoittavat meille, että törmäysten todennäköisyys langattomassa anturiverkossa voidaan laskea, jos paketit lähetetään tietyinä ajankohtina poissonisen (eksponentiaalisen) jakauman mukaan.
Ote yllä olevasta paperista luettelee tutkitun verkon ominaisuudet.
- melko suuri määrä anturilähetinyksiköitä N;
- anturilähetinyksiköt pysyvät täysin riippumattomina, eikä niiden kytkeminen päälle tai pois ei vaikuta verkon toimintaan;
- kaikki anturilähetinyksiköt (tai osa niistä) voivat olla liikkuvia edellyttäen, että ne sijaitsevat vastaanottoaseman radioalueella;
- hitaasti muuttuviin fyysisiin parametreihin kohdistetaan mittauksia, mikä tarkoittaa, että tietoja ei tarvitse lähettää kovin usein (esim. muutaman minuutin tai usean kymmenen minuutin välein);
- lähetys on yksisuuntaista, eli anturilähetinyksiköstä vastaanottopisteeseen T: n keskimääräisin aikavälein. Tiedot välitetään protokollassa osoitteessa ts kestoaika;
- mikä tahansa valittu anturi alkaa lähettää satunnaisesti Poisson -aikoina. PASTA: ta (Poisson Arrivals See Time Average) käytetään perustamaan koettimien lähettäminen Poisson -aikakausiin;
- kaikki anturilähetinyksiköt pysyvät satunnaisesti riippumattomina ja ne välittävät tiedot satunnaisesti valitulla ajanhetkellä ts kesto ja T: n keskimääräinen toistoaika;
- jos yksi tai useampi anturi aloittaa lähetyksen t: n protokollan aikanas kun kesto lähetetään toisesta anturista, tällaista tilannetta kutsutaan törmäykseksi. Törmäys tekee keskustukiaseman mahdottomaksi vastaanottamaan tiedot oikealla tavalla.
Se sopii melkein täydellisesti anturiverkkoon, jonka haluan testata …
Melkein.
En väitä ymmärtäneeni täysin paperin matematiikkaa, mutta esitettyjen tietojen ja johtopäätösten perusteella olen pystynyt ymmärtämään hieman mistä on kyse. Ainoa asia on, että paperissa käytetty arvo sai minut hieman huolestumaan:). Se on muuttuja ts - tiedonsiirron kesto, jonka oletetaan olevan 3,2 x 10-5 s. Kerättyjen tietojen lähetysaika olisi siis 3,2 me! Tätä ei voida tehdä 433 MHz: n kaistalla. Haluan ohjelmoida lähettimen anturit joko rcswitchin tai radioheadin avulla. Tutkiessani kahden kirjaston koodeja tulin siihen johtopäätökseen, että pienin lähetysaika olisi 20 ms, mikä on selvästi enemmän kuin arvo 3,2. 2,4 GHz: n lähettimillä on mahdollista ts aika on niin pieni … mutta se on toinen tarina.
Jos käytämme tämän artikkelin kirjoittajien ehdottamaa kaavaa, tulos on:
Lähtötiedot (esimerkki):
- Anturien lukumäärä N = 20;
- Tiedonsiirron kesto ts= 20x10-3 s (0,020 s)
- Keskimääräinen lähetysväli T = 180 s
Kaava:
Törmäyksen todennäköisyys T -aikavälillä on
jos otamme huomioon lähtötiedot, törmäyksen todennäköisyys T -aikavälillä on 0,043519
Tämä arvo, joka osoittaa 4,35 törmäyksen todennäköisyyden 100 mittausta kohden, on mielestäni varsin hyvä. Todennäköisyys voi parantua, jos nostamme keskimääräistä lähetysaikaa, joten 300s: n arvolla todennäköisyys olisi 0,026332 eli 2,6 törmäystä 100 mittausta kohden. Jos katsomme, että voimme odottaa pakettidatan katoamista joka tapauksessa järjestelmän käytön aikana (esimerkiksi sääolosuhteista riippuen), tämä luku on todella erinomainen.
Halusin simuloida tämän tyyppistä verkkoa, mutta myös eräänlaista suunnitteluohjelmaa, joten tein pienen ohjelman C: ssä, lähdekoodi löytyy githubista (myös käännetty binääri, joka toimii Windowsin komentorivillä - vapautus).
Syöttötiedot:
- sensor_number - verkon antureiden määrä;
- mittausten_numero - simuloitavien mittausten lukumäärä;
- keskimääräinen_siirto_intervalli -keskimääräinen aika peräkkäisten tiedonsiirtojen välillä;
- lähetyksen_aika - tiedonsiirron todellinen kesto.
Lähtö:
- laskettu enimmäismittausaika;
- luettelo kahden anturin välisistä törmäyksistä;
- törmäysten määrä;
- törmäysten teoreettinen todennäköisyys.
Tulokset ovat varsin mielenkiintoisia:)
Teoria riittää, en haluaisi vaatia enemmän teoreettista osaa, artikkelit ja lähdekoodi ovat melko kaunopuheisia, joten menen paremmin langattoman anturiverkon käytännön, tehokkaan toteutuksen ja testituloksiin.
Vaihe 2: Käytännön toteutus - laitteisto
Lähetin-antureita varten tarvitsemme seuraavia komponentteja:
- ATtiny85 -mikrokontrolleri 1,11 $;
- Integroitu piiripistorasia 8DIP 0.046 $;
- Lämpötila-/kosteusanturi DHT11 0,74 $;
- 433 MHz H34A -lähetinmoduuli 0,73 $;
- 4xAA paristopidike kytkimellä 1 $;
Yhteensä 3,63 $;
Testeissä käytetty vastaanotin on Arduino UNO (vain testausta varten) ja H3V4F -vastaanottomoduuli (0,66 $), jossa on halpa kaariantenni (0,32 $).
Anturilähettimen kaaviot
Lähetin-anturiyksiköt saavat virtaa 3xAA, 1,5V paristoilla (paristopidikkeen neljännessä osastossa on elektroninen kokoonpano). Kuten näet, lähettimen virtalähde ja lämpötila-kosteusanturi on kytketty mikro-ohjaimen PB0-napaan (lähetin ja anturi saavat virtaa, kun nasta on asetettu HIGH). Joten kun mikro-ohjain on syvässä lepotilassa, se voi saavuttaa 4,7 uA virrankulutuksen. Kun otetaan huomioon, että lähetin-anturin herätysaika olisi noin 3 sekuntia (mittaus, lähetys jne.) Ja keskimääräinen lähetysten välinen aika on 180 sekuntia (kuten esimerkki edellisessä luvussa), paristojen pitäisi kestää melko paljon. Joillakin laadukkailla alkaliparistoilla (esim. 2000 mAh) autonomia voi kestää yli 10 kuukautta omnicalculator.com -sivustolla laskettuna (jossa virran kokonaiskulutus on: anturi - 1,5 mA, lähetinmoduuli - 3,5 mA ja ATtiny85 -mikrokontrolleri - 5 mA, yhteensä 10 mA).
Alla olevassa kuvassa näkyy lähes valmis anturilähettimen kokoonpano.
Alla on kuva testivastaanotinyksiköstä.
Vaihe 3: Käytännön toteutus - Ohjelmisto
Attiny85-mikrokontrolleriin, joka on anturilähetinyksiköiden pääkomponentti, ladatun ohjelmiston tarkoituksena on lukea anturin antama data, muuntaa se lähetettäväksi radion kautta ja lähettää se Poisson-aikakehyksissä (eksponentiaalinen jakauma tai PASTA - Poisson Arrivals See Time Average). Lisäksi se yksinkertaisen toiminnon avulla valvoo paristojen tilaa ja antaa varoituksen, jos anturin tarvittavaa jännitettä ei enää ole. Lähdekoodi löytyy githubista. Testivastaanottimen koodi on hyvin yksinkertainen. Lähetän sen alla.
// muokattu rcswitch-kirjasto osoitteesta https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// koodi on muokattu versio esimerkeistä alkuperäisestä rcswitch-kirjastosta #include RCSwitch mySwitch = RCSwitch (); allekirjoittamaton pitkä data = 0; void setup () {Serial.begin (9600); mySwitch.enableRecept (0); // Vastaanotin keskeytyksessä 0 => joka on nasta #2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int kosteus = bitti Poistettu (data, 7, 1); // vähemmän merkitseviä 7 bittiä paikasta 1 - oikeanpuoleisin ensimmäinen bitti int lämpötila = bitExtracted (data, 7, 8); // seuraavat 7 bittiä paikasta 8 oikealle ja niin edelleen int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (data, 3, 16); // 3 bittiä - 8 pakettitunnusta 0-7 int sensor_id = bitExtracted (data, 6, 19); // 6 bittiä 64 anturitunnukselle - yhteensä 24 bittiä Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (lämpötila); Sarjajälki (","); Sarjajälki (kosteus); Sarja.println (); mySwitch.resetAvailable (); }} // koodi osoitteesta https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, int k, int p) {return (((((1 (p- 1)));}
Olen yrittänyt lisätä mahdollisimman monta kommenttia, jotta asia olisi helpompi ymmärtää.
Virheenkorjauksessa käytin ohjelmistokirjastoa ja attiny85 -kehityskorttia USBasp -ohjelmoijan kanssa (katso myös ohjeeni tästä). Sarjaliitäntä on muodostettu sarja -TTL -muuntimella (PL2303 -sirulla), joka on liitetty kehityskortin taivutettuihin nastoihin (3 ja 4) (katso alla oleva kuva). Kaikki tämä on ollut korvaamaton apu koodin täydentämisessä.
Vaihe 4: Testitulokset
Olen luonut viisi anturilähetinyksikköä, jotka keräävät ja lähettävät DHT11-antureiden mittaamia arvoja. Tallensin ja tallensin mittaukset testivastaanottimen ja pääteemulointiohjelman (foxterm) avulla kolmen päivän aikana. Valitsin opiskeluun 48 tunnin välin. Minua ei välttämättä kiinnostanut mitatut arvot (esimerkiksi anturi 2, se näyttää minulle vääriä arvoja), mutta törmäysten määrä. Lisäksi vastaanotin asetti anturit hyvin lähelle (4-5 m) muiden pakettien häviämisen syiden poistamiseksi. Testitulokset on tallennettu cvs -tiedostoon ja ladattu (katso alla olevaa tiedostoa). Latasin myös Excel -tiedoston tämän csv -tiedoston perusteella. Otin muutamia kuvakaappauksia näyttääkseni, kuinka törmäys näyttää (testeissäni tietysti), lisäsin kommentteja jokaiseen kuvakaappaukseen.
Saatat ihmetellä, miksi en käyttänyt tietojen latauspalvelua, esimerkiksi ThingSpeak. Tosiasia on, että minulla on monia tietueita, monia antureita ja tietoja, jotka tulevat usein epäsäännöllisin väliajoin, ja online -IoT -palvelut sallivat datan vain tietyn määrän antureita ja vain melko suurilla aikaväleillä. Ajattelen tulevaisuudessa asentaa ja konfiguroida oman IoT -palvelimen.
Lopulta 4598 mittausta 5 anturilähetinyksikössä (noin 920/anturi) johti yhteensä 5 törmäykseen 48 tunnin ajaksi (0,5435 törmäystä/100 mittausta). Jos teet jonkin verran laskutoimitusta (wsn_test -ohjelmaa käyttäen lähtötietoja: 5 anturia, keskimääräinen aika 180 s, lähetysaika 110 ms) törmäystodennäköisyys olisi 0,015185 (1,52 törmäystä/100 mittausta). Käytännön tulokset ovat vielä parempia kuin teoreettiset tulokset, eikö niin?:)
Joka tapauksessa myös 18 pakettia on kadonnut tänä aikana, joten törmäyksillä ei oikeastaan ole liikaa merkitystä tässä suhteessa. Testin pitäisi tietysti tapahtua pidemmän ajan kuluessa, jotta saadaan lopulliset tulokset, mutta mielestäni se on menestys myös näissä olosuhteissa ja vahvistaa täysin teoreettiset oletukset.
Vaihe 5: Viimeiset ajatukset
Välitön sovellus
Suuressa kasvihuoneessa kasvatetaan useita kasveja. Jos kastelu suoritetaan manuaalisesti ilman ilmaston seurantaa, ilman automaatiota, ilman tietorekistereitä, on olemassa kastelu- tai alijäämisriski ja myös veden kulutus on korkea, ei ole näyttöä veden kulutuksen optimoinnista, on olemassa riski viljelykasveille yleinen. Tämän välttämiseksi voimme käyttää langatonta anturiverkkoa:)
Lämpötila-anturit, ilmankosteusanturit, maaperän kosteusanturit voidaan sijoittaa ympärille kasvihuoneeseen, ja lähetettyjen tietojen avulla voidaan tehdä useita toimintoja: käynnistys-pysäytys-sähköventtiilit, jotka antavat veden virrata tarvittaessa, käynnistys-pysäytys sähköpuhaltimet lämpötilan alentamiseksi eri alueilla, käynnistä ja pysäytä lämmittimet tarpeen mukaan ja kaikki tiedot voidaan arkistoida tulevaa analyysiä varten. Järjestelmä voi myös tarjota web -käyttöliittymän, joka on käytettävissä kaikkialla, sekä sähköposti- tai tekstiviestihälytykset epänormaalin tilan sattuessa.
Mitä seuraavaksi?
- Testaus suuremmalla määrällä antureita;
- Reaaliaikainen testaus peittoalueella olevilla etäantureilla;
- Paikallisen IoT -palvelimen asentaminen ja määrittäminen (esimerkiksi Raspberry Pi: llä);
- Testaa myös lähetin (lähetin-vastaanotin) -antureilla 2,4 GHz: n taajuudella.
joten jatkoa …:)
VASTUUVAPAUSLAUSEKE: 433 MHz: n taajuuskaistan käyttö alueellasi saattaa olla radiotaajuusmääräysten alaista. Tarkista laillisuutesi ennen tämän projektin kokeilua
Toinen sija anturikilpailussa
Suositeltava:
Langaton AC -virranilmaisin: 7 vaihetta (kuvien kanssa)
Langaton AC -virtatunnistin: Kun tein edellisen Instructable -järjestelmän (helppo infrapuna -läheisyysanturi), tajusin muutamia asioita kahden transistorin käyttämisestä peräkkäin erittäin heikon signaalin vahvistamiseksi. Tässä opetusohjelmassa tarkennan tätä periaatetta, jota kutsutaan myös & quo
Magic Button 4k: 20USD BMPCC 4k (tai 6k) langaton kaukosäädin: 4 vaihetta (kuvien kanssa)
Magic Button 4k: 20USD BMPCC 4k (tai 6k) langaton kauko -ohjain: Monet ihmiset ovat pyytäneet minua kertomaan joitain tietoja BMPCC4k: n langattomasta ohjaimestani. Useimmat kysymykset koskivat bluetooth -ohjausta, joten mainitsen muutamia yksityiskohtia siitä. Oletan, että olet perehtynyt ESP32 Arduino -ympäristöihin
Langaton SD -kortinlukija [ESP8266]: 10 vaihetta (kuvien kanssa)
Langaton SD-kortinlukija [ESP8266]: USB: n piti olla universaali, ja päätavoitteena oli tehdä nopeasti vaihdettava ja erittäin helppokäyttöinen liitäntä muihin laitteisiin, mutta ajatus meni vuosien varrella. Näistä USB -porteista on niin monia erilaisia variantteja, mikä on niin turhauttavaa
DIY langaton energiansiirtojärjestelmä: 4 vaihetta (kuvien kanssa)
DIY langaton energiansiirtojärjestelmä: Tässä projektissa näytän sinulle, kuinka luoda sopiva käämi ja invertteripiiri langattomalle energiansiirtojärjestelmälle, joka voi helposti siirtää 20 W: n tehon. Aloitetaan
Langaton tiedonsiirto käyttämällä halpoja 433 MHz: n RF -moduuleja ja Pic -mikro -ohjaimia. Osa 2: 4 vaihetta (kuvilla)
Langaton tiedonsiirto käyttämällä halpoja 433 MHz: n RF -moduuleja ja Pic -mikro -ohjaimia. Osa 2: Tämän ohjeen ensimmäisessä osassa esittelin kuinka ohjelmoida PIC12F1822 käyttämällä MPLAB IDE- ja XC8 -kääntäjää yksinkertaisen merkkijonon lähettämiseksi langattomasti käyttämällä halpoja TX/RX 433MHz -moduuleja. kaapelimainos