
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47

Nagyon köszönöm Teresa Rajba -nak, hogy kedvesen elfogadta, hogy felhasználhatom a cikkükben szereplő publikációik adatait
* A fenti képen - az öt érzékelő -küldő egység, amelyeket a teszteléshez használtam
Mik azok a vezeték nélküli érzékelő hálózatok?
Egyszerű meghatározás lenne: a vezeték nélküli érzékelőhálózatok egy bizonyos területen elosztott elektronikus eszközök csoportjára vonatkoznak a környezeti adatok megfigyelésére és rögzítésére, amelyeket vezeték nélkül továbbítanak egy központi helyre feldolgozásra és tárolásra.
Manapság a vezeték nélküli érzékelőhálózatok többféleképpen is használhatók, az alábbiakban csak néhány példa látható:
- Az erdők, folyók, tavak, tengerek és óceánok ökológiai megfigyelésének területei;
- Riasztás lehetősége terrorista, vegyi, biológiai, járványos támadások esetén;
- Felügyeleti rendszerek gyermekek, idősek, betegek vagy speciális igényű emberek számára;
- Felügyeleti rendszerek a mezőgazdaságban és az üvegházakban;
- Időjárás-előrejelző rendszer;
- A városi forgalom, iskolák, parkolók felügyelete;
És sok -sok más alkalmazás.
Ebben a dolgozatban a hőmérséklet- és páratartalom -adatok megfigyelésére használt vezeték nélküli érzékelőhálózatokkal végzett kísérlet eredményeit szeretném bemutatni, lassú és viszonylag kiszámítható eltéréssel. Ehhez a kísérlethez úgy döntöttem, hogy olyan érzékelő-küldőket használok, amelyeket saját maga építettem megfizethető modulok használatával. A vevő is barkács, a kommunikáció egyirányú (a 433 MHz -es rádiósávon), vagyis az érzékelők csak az adatokat továbbítják, a központi hely pedig csak fogad. Nincs kommunikáció az érzékelők és a vevőegység között.
De miért érdemes több távadót és csak egy vevőt használni? Az első ok nyilvánvalóan az „egyszerűsítés” lenne. Minél egyszerűbb az összeszerelés, annál kevésbé valószínű, hogy meghibásodik, és minden bizonnyal sokkal könnyebb megjavítani és kicserélni az egyes alkatrészeket meghibásodás esetén. Az energiafogyasztás is alacsonyabb, az elemek tovább tartanak (az érzékelők csak felügyelet és vétel közben fogyasztanak, az idő többi részében a készülék mély alvó üzemmódban lesz). Az a tény, hogy egyszerű, a készüléket is olcsóvá teszi. Egy másik szempont, amelyet szem előtt kell tartani, a lefedettségi terület. Miért? Sokkal könnyebb érzékeny vevőt felépíteni és használni, mint érzékeny vevővel és erős adóval rendelkezni mind az érzékelőknél, mind a központi modulnál (ez szükséges a jó kétirányú kommunikációhoz). Egy érzékeny és jó minőségű vevőkészülékkel nagy távolságból is lehet adatokat fogadni, de az azonos távolságra történő adatkibocsátás nagy emissziós teljesítményt igényel, és ez magas költségekkel, villamosenergia-fogyasztással és (ne felejtsük el) a túllépés lehetőségével jár. törvényes maximális adó -teljesítmény a 433 MHz -es sávon. Közepes minőségű vevőkészülék, olcsó, de kiváló minőségű antennával (akár barkácsolás) és olcsó adók használatával, jó minőségű antennával kiváló eredményeket érhetünk el a meglévő vezeték nélküli érzékelőhálózatok költségeinek töredékéért.
1. lépés: Elméleti megfontolások
Régóta, majdnem 10 éve merült fel bennem az ötlet, hogy vezeték nélküli érzékelőhálózatot építsenek fel a levegő és a talaj hőmérsékletének és páratartalmának ellenőrzésére az üvegház különböző részein. Egyvezetékes hálózatot akartam kiépíteni, valamint 1 vezetékes hőmérséklet- és páratartalom-érzékelőket használni. Sajnos 10 évvel ezelőtt a páratartalom -érzékelők ritkák és drágák voltak (bár a hőmérséklet -érzékelők széles körben elterjedtek), és mivel a vezetékek szétszórása az üvegházban nem tűnt opciónak, elég gyorsan feladtam az ötletet.
Most azonban a helyzet gyökeresen megváltozott. Képesek vagyunk olcsó és jó minőségű érzékelőket találni (hőmérséklet és páratartalom), valamint olcsó távadókhoz és vevőkhöz is hozzáférünk a 433 MHz-es sávon. Csak egy probléma van: ha több érzékelőnk van (mondjuk 20), hogyan oldjuk meg az ütközéseket (kérjük, vegye figyelembe, hogy ez egyirányú kommunikáció), vagyis átfedésben van 2 vagy több érzékelő? A lehetséges megoldás keresése közben találkoztam ezzel a nagyon érdekes írással:
Vezeték nélküli szenzor konvergálás a véletlenszerű műveletek alapján - RAJBA, T. és RAJBA, S.
és
Az ütközések valószínűsége a vezeték nélküli érzékelő hálózatban véletlenszerű küldéssel - RAJBA S. és RAJBA. T
Alapvetően a szerzők megmutatják nekünk, hogy az ütközések valószínűsége egy vezeték nélküli szenzorhálózatban kiszámítható, ha a csomagokat bizonyos időpontokban bocsátják ki egy poisson (exponenciális) eloszlás szerint.
A fenti cikk kivonata felsorolja a vizsgált hálózat jellemzőit.
- meglehetősen nagy számú érzékelő-küldő egység N;
- az érzékelő-küldő egységek teljesen függetlenek maradnak, és be- vagy kikapcsolásuk nincs hatással a hálózat működésére;
- minden érzékelő-küldő egység (vagy azok egy része) mobil lehet, feltéve, hogy a vevőállomás rádióhatárán belül helyezkednek el;
- a lassan változó fizikai paramétereket méréseknek vetik alá, ami azt jelenti, hogy nincs szükség az adatok nagyon gyakori továbbítására (például néhány percenként vagy több tucat percenként);
- az átvitel egyirányú, azaz az érzékelő-adóegységtől a vevőpontig, T átlagos időintervallumokban. Az információkat a protokoll a to időtartam;
- bármelyik kiválasztott érzékelő véletlenszerűen kezd el továbbítani Poisson időpontokban. A PASTA -t (Poisson Arrivals See Time Average) használják a szondák Poisson -korszakokban történő küldésének igazolására;
- minden érzékelő-küldő egység véletlenszerűen független marad, és az információt egy véletlenszerűen kiválasztott t időpontban továbbítjao az ismétlés időtartama és T átlagos időtartama;
- ha egy vagy több érzékelő elkezdi az adást, miközben a protokoll a to időtartamot egy másik érzékelőről továbbítanak, az ilyen helyzetet ütközésnek nevezik. Az ütközés lehetetlenné teszi, hogy a központi bázisállomás megfelelő módon fogadja az információt.
Szinte tökéletesen illeszkedik a tesztelni kívánt érzékelőhálózathoz…
Majdnem.
Nem azt mondom, hogy teljesen megértettem a lap matematikáját, de a bemutatott adatok és a következtetések alapján sikerült egy kicsit megértenem, miről van szó. Az egyetlen dolog, hogy a papírban használt érték egy kicsit aggódni kezdett:). Ez a t változóo - az adatátvitel időtartama 3,2x10-5 s. Tehát az összegyűjtött adatok átviteli ideje 3,2 mi lenne! Ezt a 433 MHz -es sávon nem lehet megtenni. Vagy az rcswitch -et, vagy a rádiófejet szeretném használni az adó -érzékelők programozásához. A két könyvtár kódjait tanulmányozva arra a következtetésre jutottam, hogy a legkisebb átviteli idő 20 ms lenne, ami jóval meghaladja a 3,2 értéket. A 2,4 GHz -es távadókkal lehetséges to ilyen kicsi az idő … de ez egy másik történet.
Ha a cikk szerzői által javasolt képletet alkalmazzuk, az eredmény a következő lesz:
Kezdeti adatok (példa):
- Az érzékelők száma N = 20;
- Az adatátvitel időtartama to= 20x10-3 s (0,020 s)
- Átlagos átviteli intervallum T = 180 s
A képlet:
Az ütközés valószínűsége a T intervallumon az

ha figyelembe vesszük a kezdeti adatokat, az ütközés valószínűsége a T intervallumon 0,043519 lesz
Ez az érték, amely 100 mérésenként 4,35 ütközés valószínűségét jelzi, véleményem szerint elég jó. A valószínűség javulhat, ha növeljük az átlagos átviteli időt, így 300s értéknél 0,026332 valószínűséggel rendelkeznénk, azaz 2,6 ütközés 100 mérésenként. Ha figyelembe vesszük, hogy a rendszer működése során (például az időjárási viszonyoktól függően) mindenképpen számíthatunk csomagkapcsolt adatvesztésre, akkor ez a szám valóban kiváló.
Szerettem volna szimulálni ezt a típusú hálózatot, de egyfajta tervezési asszisztenst is, ezért készítettem egy kis programot C -ben, a forráskód megtalálható a githubon (szintén egy fordított bináris, amely a Windows parancssorában fut - kiadás).
Beviteli adat:
- sensor_number - a hálózaton lévő érzékelők száma;
- mérések_száma - a szimulálandó mérések száma;
- átlagos_átviteli_intervallum -átlagos idő az egymást követő adatátvitelek között;
- transfer_time - az adatátvitel tényleges időtartama.
Kimenet:
- a számított maximális mérési idő;
- a két érzékelő közötti ütközések listája;
- ütközések száma;
- az ütközések elméleti valószínűsége.
Az eredmények nagyon érdekesek:)
Elég az elméletből, nem szeretnék többet ragaszkodni az elméleti részhez, a cikkek és a forráskód elég beszédes, ezért inkább a vezeték nélküli érzékelőhálózat gyakorlati, hatékony megvalósítására és a teszteredményekre térnék rá.
2. lépés: Gyakorlati megvalósítás - a hardver
Az adó-érzékelőkhöz a következő alkatrészekre lesz szükségünk:
- ATtiny85 mikrokontroller 1,11 $;
- Integrált áramkör aljzat 8DIP 0.046 $;
- Hőmérséklet/páratartalom érzékelő DHT11 0,74 $;
- 433 MHz -es H34A adómodul 0,73 $;
- 4xAA elemtartó kapcsolóval 1 $;
Összesen 3,63 $;
A tesztekhez használt vevőegység egy Arduino UNO (csak tesztelésre) és egy H3V4F vevőmodul (0,66 $) olcsó ívantennával (0,32 $).
Érzékelő-adó vázlatok

Az adó-érzékelő egységek 3xAA, 1,5V elemekkel működnek (az elemtartó negyedik rekeszében található az elektronikus szerelvény). Amint látható, az adó tápellátása és a hőmérséklet-páratartalom érzékelő a mikrokontroller PB0 érintkezőjéhez van csatlakoztatva (az adó és az érzékelő áram alatt van, ha a csap HIGH). Tehát amikor a mikrokontroller mély alvó üzemmódban van, elérheti a 4,7uA áramfelvételt. Figyelembe véve, hogy az adó-érzékelő ébredési ideje körülbelül 3 másodperc (mérés, átvitel stb.), És az átvitel közötti átlagos idő 180 másodperc (mint például az előző fejezetben), az elemeknek elég soknak kell ellenállniuk. Néhány jó minőségű alkáli elem (pl. 2000 mAh) esetén az autonómia több mint 10 hónap lehet, mint az omnicalculator.com oldalon (ahol a teljes áramfelvétel: érzékelő - 1,5 mA, adómodul - 3,5 mA és ATtiny85 mikrokontroller - 5 mA, összesen 10 mA).
Az alábbi fotón láthatja a szinte kész érzékelő-küldő szerelvényt.

Az alábbiakban a teszt vevőegység fényképe látható.

3. lépés: Gyakorlati megvalósítás - Szoftver
Az attiny85 mikrokontrollerre, az érzékelő-küldő egységek fő összetevőjére futtatott szoftver célja, hogy kiolvassa az érzékelő által szolgáltatott adatokat, átalakítsa azokat rádión keresztül továbbítandó és Poisson időkereteken belül továbbítsa (exponenciális eloszlás ill. PASTA - Poisson érkezések Lásd időátlagok). Ezenkívül egy egyszerű funkció használatával felügyeli az elemek állapotát, és figyelmeztetést ad, ha az érzékelőhöz szükséges feszültség már nem biztosított. A forráskód elérhető a githubon. A tesztvevő kódja nagyon egyszerű, az alábbiakban közzéteszem.
// módosított rcswitch könyvtár a https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// a kód az eredeti rcswitch könyvtár példáiból származó módosított verzió #include RCSwitch mySwitch = RCSwitch (); előjel nélküli hosszú adat = 0; void setup () {Serial.begin (9600); mySwitch.enableRecept (0); // Vevő a megszakításnál 0 => ami a #2 számú pin} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int páratartalom = bitKivont (adatok, 7, 1); // kevésbé szignifikáns 7 bit az 1. pozícióból - a jobb szélső első bit int hőmérséklet = bitExtracted (adatok, 7, 8); // következő 7 bit a 8. pozícióból jobbra és így tovább int v_min = bitExtracted (adatok, 1, 15); int packet_id = bitExtracted (adatok, 3, 16); // 3 bit - 8 csomag azonosító 0 -tól 7 -ig int sensor_id = bitExtracted (adatok, 6, 19); // 6 bites 64 érzékelőazonosítóhoz - összesen 24 bit Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (hőmérséklet); Soros.nyomtatás (","); Soros.nyomtatás (páratartalom); Sorozat.println (); mySwitch.resetAvailable (); }} // kód a https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, int k, int p) {return ((((1 (p- 1)));}
Igyekeztem minél több megjegyzést beírni, hogy könnyebben megértsük a dolgot.
Hibakereséshez a szoftveres könyvtárat és az attiny85 fejlesztőlapot használtam az USBasp programozóval (lásd még az ezzel kapcsolatos utasításomat). A soros kapcsolat Serial to TTL átalakítóval jött létre (PL2303 chipvel), amely a fejlesztőlap hajlított csapjaihoz (3 és 4) csatlakozik (lásd az alábbi képet). Mindez felbecsülhetetlenül sokat segített a kód kitöltésében.

4. lépés: Vizsgálati eredmények


Létrehoztam 5 érzékelő-küldő egységet, amelyek gyűjtik és küldik a DHT11 érzékelők által mért értékeket. Méréseket rögzítettem és mentettem a tesztvevő és egy terminál -emulációs program (foxterm) segítségével három nap alatt. A tanuláshoz 48 órás intervallumot választottam. Engem nem feltétlenül a mért értékek érdekeltek (például a 2. szenzor rossz értékeket mutat nekem), hanem az ütközések száma. Ezenkívül az érzékelőket nagyon közel (4-5 m-re) helyezte el a vevő, hogy megszüntesse a csomagvesztés egyéb okait. A teszteredményeket elmentették egy cvs fájlba, és feltöltötték (nézze meg az alábbi fájlt). Feltöltöttem egy excel fájlt is ezen a csv fájlon alapulva. Készítettem néhány képernyőképet, hogy megmutassam, hogyan néz ki az ütközés (természetesen a tesztjeim során), megjegyzéseket is fűztem minden egyes képernyőképhez.
Lehet, hogy vajon miért nem használtam adatbetöltő szolgáltatást, például a ThingSpeak szolgáltatást. Az a tény, hogy sok rekordom van, sok érzékelő és adat gyakran szabálytalan időközönként érkezik, és az online IoT -szolgáltatások csak bizonyos számú érzékelőnél és csak meglehetősen nagy időközönként tesznek lehetővé adatokat. A jövőben arra gondolok, hogy telepítem és konfigurálom saját IoT szerveremet.
Végül 4598 mérés 5 érzékelő-küldő egységen (kb. 920/érzékelő) összesen 5 ütközést eredményezett 48 órán keresztül (0,5435 ütközés/100 mérés). Ha valamilyen matematikát végez (a wsn_test program segítségével, kezdeti adatokkal: 5 érzékelő, átlagos idő 180 másodperc, átviteli idő 110 ms), az ütközés valószínűsége 0,015185 (1,52 ütközés/100 mérés). A gyakorlati eredmények még jobbak, mint az elméleti eredmények, nem?:)

Egyébként is 18 csomag veszett el ebben az időszakban, így az ütközések valójában nem sokat számítanak ebből a szempontból. Természetesen a tesztet hosszabb időn keresztül kell elvégezni, hogy a legmeggyőzőbb eredményeket érjük el, de véleményem szerint még ilyen körülmények között is sikeres, és teljes mértékben megerősíti az elméleti feltételezéseket.
5. lépés: Utolsó gondolatok
Azonnali alkalmazás
Egy nagy üvegházban több növényt termesztenek. Ha az öntözést manuálisan, klímafelügyelet nélkül, automatizálás nélkül, adatrögzítés nélkül, fennáll az öntözés túl- vagy aluljárásának veszélye, és a vízfogyasztás is magas, nincs bizonyíték a vízfogyasztás optimalizálására, fennáll a veszély a növényekre Tábornok. Ennek elkerülése érdekében használhatunk vezeték nélküli érzékelőhálózatot:)
Hőmérséklet-érzékelők, levegő-páratartalom-érzékelők, talajnedvesség-érzékelők helyezhetők el az üvegházban, és a továbbított adatok segítségével több művelet is elvégezhető: start-stop elektromos szelepek a víz áramlásához, ahol szükséges, start-stop elektromos ventilátorok a hőmérséklet csökkentésére a különböző területeken, szükség szerint indítsa el és állítsa le a fűtőberendezéseket, és minden adat archiválható legyen a későbbi elemzéshez. Ezenkívül a rendszer biztosíthat egy webes felületet, amely mindenhol elérhető, és e -mail vagy SMS riasztásokat rendellenes állapot esetén.
Mi a következő lépés?
- Tesztelés nagyobb számú érzékelővel;
- Valós idejű tesztelés távoli érzékelőkkel a lefedettségi területen;
- Helyi IoT szerver telepítése és konfigurálása (például Raspberry Pi -n);
- Tesztelnek adó (adó-vevő) érzékelőkkel is 2,4 GHz-en.
szóval … folytatás …:)
NYILATKOZAT: A régió 433 MHz -es frekvenciasávjának használata rádiófrekvenciás előírások hatálya alá tartozhat. Kérjük, ellenőrizze törvényességét, mielőtt kipróbálná ezt a projektet


Második hely az érzékelők versenyében
Ajánlott:
Vezeték nélküli Arduino robot a HC12 vezeték nélküli modul használatával: 7 lépés

Vezeték nélküli Arduino robot a HC12 vezeték nélküli modul használatával: Hé srácok, üdv újra. Korábbi hozzászólásomban elmagyaráztam, hogy mi az a H -híd áramkör, az L293D motorvezérlő IC, a malackalapú L293D motorvezérlő IC a nagyáramú motorvezérlők vezetéséhez, és hogyan tervezheti meg és készítheti el saját L293D motorvezérlő tábláját
Távirányítású autó - Vezeték nélküli vezeték nélküli Xbox 360 vezérlővel: 5 lépés

Távirányítású autó - vezérelhető a vezeték nélküli Xbox 360 vezérlő használatával: Ezek az utasítások saját távirányítású autó létrehozásához, vezeték nélküli Xbox 360 vezérlővel vezérelhetők
Vezeték nélküli kommunikáció olcsó 433 MHz -es RF modulok és Pic mikrovezérlők használatával. 2. rész: 4 lépés (képekkel)

Vezeték nélküli kommunikáció olcsó 433 MHz -es RF modulok és Pic mikrovezérlők használatával. 2. rész: Ennek az oktatóanyagnak az első részében bemutattam, hogyan kell programozni egy PIC12F1822 -t MPLAB IDE és XC8 fordító segítségével, hogy egy egyszerű karakterláncot küldjünk vezeték nélkül, olcsó TX/RX 433 MHz -es modulokkal. A vevőmodult USB -n keresztül UART TTL -hez csatlakoztattuk kábelhirdetés
Ötven méter hatótávolságú vezeték nélküli hozzáférési pont TP Link WN7200ND USB vezeték nélküli adapterrel Raspbian Stretch -en: 6 lépés

Ötven méter hatótávolságú vezeték nélküli hozzáférési pont TP Link WN7200ND USB vezeték nélküli adapterrel a Raspbian Stretch -en: A Raspberry Pi kiválóan alkalmas biztonságos vezeték nélküli hozzáférési pontok létrehozására, de nem rendelkezik jó hatótávolsággal, TP Link WN7200ND USB vezeték nélküli adaptert használtam annak kiterjesztéséhez. Szeretném megosztani, hogyan kell csinálniMiért akarok málna pi -t használni router helyett? T
DIY vezeték nélküli mikrofon vezeték nélküli gitárrendszerhez: 4 lépés

DIY Wireless Mic to Wireless Guitar System: Néztem néhány videót és néhány zenekart, és szinte közülük vezeték nélküli rendszert használ a gitáron. Megőrülök, mozogok, sétálok, és azt csinálok, amit akarnak, anélkül, hogy a zsinórt használnám, ezért arról álmodozom, hogy lesz egy .. De .. nekem ez most túl drága, ezért erre jutottam