Obsah:
- Krok 1: Teoretické úvahy
- Krok 2: Praktická implementácia - hardvér
- Krok 3: Praktická implementácia - softvér
- Krok 4: Výsledky testu
- Krok 5: Záverečné myšlienky
Video: Nízkonákladová bezdrôtová senzorová sieť v pásme 433 MHz: 5 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Ďakujem Terese Rajbovej za láskavý súhlas s používaním údajov z ich publikácií v tomto článku
* Na obrázku vyššie - päť jednotiek snímača a odosielateľa, ktoré som použil na testovanie
Čo sú to bezdrôtové senzorové siete?
Jednoduchá definícia by bola: Bezdrôtové senzorové siete sa týkajú skupiny elektronických zariadení distribuovaných v určitej oblasti na monitorovanie a zaznamenávanie údajov o životnom prostredí, ktoré sa bezdrôtovo prenášajú do centrálneho umiestnenia, kde sa majú spracovať a uložiť.
V súčasnosti je možné bezdrôtové senzorové siete použiť niekoľkými spôsobmi, nižšie je len niekoľko príkladov:
- Oblasti ekologického dohľadu nad lesmi, riekami, jazerami, morami a oceánmi;
- Možnosť varovania v prípade teroristických, chemických, biologických, epidemických útokov;
- Monitorovacie systémy pre deti, starších ľudí, pacientov alebo ľudí so špeciálnymi potrebami;
- Dozorné systémy v poľnohospodárstve a skleníkoch;
- Monitorovací systém predpovedí počasia;
- Dohľad nad mestskou premávkou, školami, parkoviskami;
A mnoho, mnoho ďalších aplikácií.
V tomto príspevku chcem ukázať výsledky experimentu s bezdrôtovými senzorickými sieťami, ktoré boli použité na monitorovanie údajov o teplote a vlhkosti, s pomalými a relatívne predvídateľnými variáciami. Pre tento experiment som sa rozhodol použiť senzorové vysielače, ktoré som postavil sám pomocou cenovo dostupných modulov. Prijímač je tiež DIY, komunikácia je jednosmerná (v rádiovom pásme 433 MHz), to znamená, že senzory iba prenášajú údaje a centrálna poloha iba prijíma. Neexistuje žiadna komunikácia medzi senzormi a od prijímača k senzorom.
Prečo sa však rozhodnúť používať viac vysielačov a iba jeden prijímač? Prvým dôvodom by zrejme bolo „zjednodušenie“. Čím je montáž jednoduchšia, tým je menšia pravdepodobnosť, že zlyhá, a v prípade porúch je skutočne oveľa jednoduchšie opraviť a vymeniť jednotlivé komponenty. Nižšia je aj spotreba energie, batérie vydržia dlhšie (senzory budú spotrebovávať iba pri monitorovaní a prijímaní, zvyšok času bude zariadenie v režime hlbokého spánku). Vďaka tomu, že je zariadenie jednoduché, je aj lacné. Ďalším aspektom, ktorý je potrebné mať na pamäti, je oblasť pokrytia. Prečo? Je oveľa jednoduchšie postaviť a používať citlivý prijímač, ako mať citlivý prijímač a výkonný vysielač na senzoroch aj na centrálnom module (to je nevyhnutné pre dobrú obojsmernú komunikáciu). S citlivým a kvalitným prijímačom je možné prijímať údaje na veľkú vzdialenosť, ale vysielanie údajov na rovnakú vzdialenosť si vyžaduje vysoký emisný výkon, čo so sebou prináša vysoké náklady, spotrebu elektrickej energie a (nezabúdajme), že je možné prekročiť zákonný maximálny výkon vysielača v pásme 433 MHz. Použitím stredne kvalitného prijímača, lacného, ale s kvalitnou anténou (dokonca aj pre domácich majstrov) a lacných vysielačov s kvalitnou anténou, môžeme dosiahnuť vynikajúce výsledky za zlomok nákladov na existujúce bezdrôtové senzorové siete.
Krok 1: Teoretické úvahy
Myšlienka vybudovať bezdrôtovú senzorickú sieť na monitorovanie teploty a vlhkosti vzduchu a pôdy v rôznych oblastiach skleníka mi prišla na myseľ už dávno, takmer pred 10 rokmi. Chcel som vybudovať 1-vodičovú sieť a použiť 1-vodičové snímače teploty a vlhkosti. Pred 10 rokmi boli senzory vlhkosti bohužiaľ vzácne a drahé (aj keď teplotné senzory boli veľmi rozšírené) a keďže sa rozprestierajúce drôty po celom skleníku nezdali byť možnosťou, tejto myšlienky som sa celkom rýchlo vzdal.
Teraz sa však situácia radikálne zmenila. Sme schopní nájsť lacné a kvalitné snímače (teploty a vlhkosti) a taktiež máme prístup k lacným vysielačom a prijímačom v pásme 433 MHz. Existuje iba jeden problém: ak máme viac senzorov (povedzme 20), ako vyriešime kolízie (majte na pamäti, že ide o jednosmernú komunikáciu), tj. Prekrývajúce sa emisie 2 alebo viacerých senzorov? Pri hľadaní možného riešenia som narazil na tieto veľmi zaujímavé články:
Bezdrôtový senzor zbližuje obsadenie na základe postupu náhodných operácií - RAJBA, T. a RAJBA, S.
a
Pravdepodobnosť kolízií v bezdrôtovej senzorovej sieti s náhodným odosielaním - RAJBA S. a RAJBA. T
Autori nám v zásade ukazujú, že pravdepodobnosť kolízií v bezdrôtovej senzorovej sieti sa dá vypočítať, ak sú pakety vysielané v určitých časových bodoch podľa poissoniánskej (exponenciálnej) distribúcie.
Výňatok z vyššie uvedeného príspevku uvádza charakteristiky študovanej siete.
- pomerne veľký počet jednotiek snímača a snímača N;
- jednotky snímača a snímača zostávajú úplne nezávislé a ich zapnutie alebo vypnutie nemá žiadny vplyv na prevádzku siete;
- všetky jednotky snímača-vysielača (alebo ich časť) môžu byť mobilné za predpokladu, že sú umiestnené v rádiovom dosahu prijímacej stanice;
- pomaly sa meniace fyzikálne parametre sú podrobené meraniam, čo znamená, že nie je potrebné prenášať údaje veľmi často (napr. každých niekoľko minút alebo niekoľko desiatok minút);
- prenos je jednosmerný, to znamená z jednotky snímača a vysielača do bodu príjmu v priemerných časových intervaloch T. Informácie sa prenášajú v protokole na tp doba trvania;
- akýkoľvek vybraný snímač začne vysielať náhodne v Poissonových časoch. PASTA (Poissonove prílety pozri časové priemery) sa budú používať na zdôvodnenie odosielania sond v Poissonových epochách;
- všetky jednotky snímača-vysielača zostávajú náhodne nezávislé a budú prenášať informácie v náhodne zvolenom časovom okamihu tp trvanie a T priemerný čas opakovania;
- ak jeden alebo viac senzorov začne vysielať, zatiaľ čo protokol tp trvanie sa prenáša z iného senzora, takáto situácia sa nazýva kolízia. Kolízia znemožňuje centrálnej základňovej stanici prijímať informácie správnym spôsobom.
Takmer dokonale sa hodí k senzorovej sieti, ktorú chcem otestovať …
Skoro.
Nehovorím, že som úplne porozumel matematike v príspevku, ale na základe predložených údajov a záverov som mohol trochu porozumieť, o čo ide. Jediná vec je, že hodnota použitá v novinách ma trochu znepokojovala:). Je to premenná tp - trvanie prenosu údajov, ktoré sa predpokladá, že je 3,2 x 10-5 s. Čas prenosu zozbieraných údajov by teda bol 3,2 us! To sa nedá urobiť v pásme 433 MHz. Na programovanie senzorov vysielača chcem použiť buď rcswitch alebo radiohead. Pri štúdiu kódov týchto dvoch knižníc som dospel k záveru, že najmenší vysielací čas bude 20 ms, čo je výrazne nad hodnotou 3,2 nás. S vysielačmi 2,4 GHz je možné tp taký malý čas … ale to je iný príbeh.
Ak použijeme vzorec navrhnutý autormi tohto článku, výsledok bude:
Počiatočné údaje (príklad):
- Počet senzorov N = 20;
- Trvanie prenosu dát tp= 20x10-3 s (0,020 s)
- Priemerný prenosový interval T = 180 s
Vzorec:
Pravdepodobnosť kolízie na T intervale je
ak vezmeme do úvahy počiatočné údaje, pravdepodobnosť kolízie na T intervale bude 0,043519
Táto hodnota, ktorá naznačuje pravdepodobnosť 4,35 zrážok na 100 meraní, je podľa mňa celkom dobrá. Pravdepodobnosť by sa mohla zlepšiť, ak zvýšime priemerný čas prenosu, takže pri hodnote 300 s by sme mali pravdepodobnosť 0,026332, teda 2,6 kolízie na 100 meraní. Ak vezmeme do úvahy, že počas prevádzky systému môžeme napriek tomu očakávať stratu paketových dát (napríklad v závislosti od poveternostných podmienok), potom je toto číslo skutočne vynikajúce.
Chcel som urobiť simuláciu tohto typu siete, ale aj akýsi asistent dizajnu, a tak som urobil malý program v jazyku C, zdrojový kód nájdete na github (tiež skompilovaný binárny súbor, ktorý beží na príkazovom riadku systému Windows - uvoľnenie).
Vstupné Data:
- sensor_number - počet senzorov v sieti;
- merania_číslo - počet meraní na simuláciu;
- average_transmission_interval -priemerný čas medzi postupnými dátovými prenosmi;
- prenos_čas - efektívne trvanie prenosu údajov.
Výkon:
- vypočítaný maximálny čas merania;
- zoznam kolízií medzi dvoma senzormi;
- počet kolízií;
- teoretická pravdepodobnosť kolízií.
Výsledky sú veľmi zaujímavé:)
Dosť na teórii, nechcel by som viac trvať na teoretickej časti, články a zdrojový kód sú dosť veľavravné, preto radšej prejdem k praktickej a efektívnej implementácii bezdrôtovej senzorovej siete a k výsledkom testov.
Krok 2: Praktická implementácia - hardvér
Pre snímače vysielača budeme potrebovať nasledujúce komponenty:
- Mikrokontrolér ATtiny85 1,11 $;
- Zásuvka integrovaného obvodu 8DIP 0,046 $;
- Snímač teploty/vlhkosti DHT11 0,74 $;
- Vysielací modul 433 MHz H34A 0,73 $;
- Držiak batérie 4xAA s vypínačom 1 $;
Spolu 3,63 $;
Prijímač použitý na testy je Arduino UNO (iba na testovanie) a prijímací modul H3V4F (0,66 $) s lacnou oblúkovou anténou (0,32 $).
Schémy odosielateľa a senzora
Jednotky snímača a vysielača sú napájané batériami 3xAA, 1,5 V (vo štvrtom oddelení držiaka batérií je elektronická zostava). Ako vidíte, napájanie vysielača a snímač teploty a vlhkosti je pripojený k kolíku PB0 mikrokontroléra (vysielač a snímač sú napájané, keď je kolík nastavený na HIGH). Keď je mikrokontrolér v režime hlbokého spánku, môže dosiahnuť spotrebu prúdu 4,7uA. Ak vezmeme do úvahy, že doba prebudenia senzora vysielača by bola asi 3 s (meranie, prenos atď.) A priemerný čas medzi prenosmi 180 s (ako príklad v predchádzajúcej kapitole), batérie by mali dosť odolávať. Pri niektorých kvalitných alkalických batériách (tj. 2 000 mAh) môže autonómia trvať viac ako 10 mesiacov, ako sa vypočítava na stránke omnicalculator.com (kde je celková spotreba prúdu: snímač - 1,5 mA, modul vysielača - 3,5 mA a mikrokontrolér ATtiny85 - 5 mA, celkom 10 mA).
Na fotografii nižšie vidíte takmer hotovú zostavu snímača a vysielača.
Nasleduje fotografia jednotky testovacieho prijímača.
Krok 3: Praktická implementácia - softvér
Softvér nahraný do mikrokontroléra attiny85, hlavnej súčasti jednotiek odosielateľa senzorov, má za cieľ prečítať údaje poskytnuté snímačom, konvertovať ich na prenos rádiom a odoslať ich v Poissonových časových rámcoch (exponenciálna distribúcia alebo PASTA - Poissonove príchody Pozrite sa na časové priemery). Tiež pomocou jednoduchej funkcie monitoruje stav batérií a upozorní, ak už nie je k dispozícii požadované napätie pre snímač. Zdrojový kód je k dispozícii na github. Kód pre testovací prijímač je veľmi jednoduchý, zverejňujem ho nižšie.
// upravená knižnica rcswitch z https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// kód je upravená verzia z príkladov pôvodnej knižnice rcswitch #include RCSwitch mySwitch = RCSwitch (); dlhé údaje bez znamienka = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Prijímač pri prerušení 0 => to je pin #2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // výstup (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); vnútorná vlhkosť = bitVýťažnosť (údaje, 7, 1); // menej signifikantných 7 bitov od pozície 1 - prvý bit úplne vpravo int teplota = bitExtracted (data, 7, 8); // dalsich 7 bitov z pozicie 8 doprava a tak dalej int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (data, 3, 16); // 3bity - 8 ID paketov od 0 do 7 int sensor_id = bitExtracted (data, 6, 19); // 6bit pre 64 ID senzora - celkom 24 bitov Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (teplota); Serial.print (","); Serial.print (vlhkosť); Serial.println (); mySwitch.resetAvailable (); }} // kód z https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, int k, int p) {return ((((1 (p- 1)));}
Pokúsil som sa zahrnúť čo najviac komentárov, aby bola vec zrozumiteľnejšia.
Na ladenie som použil softvérovú knižnicu a vývojovú dosku attiny85 s programátorom USBasp (pozrite si aj moje pokyny k tomuto). Sériové prepojenie bolo vytvorené pomocou prevodníka Serial to TTL (s čipom PL2303) pripojeného k ohnutým kolíkom (3 a 4) vývojovej dosky (pozri obrázok nižšie). To všetko bolo neoceniteľnou pomocou pri dopĺňaní kódu.
Krok 4: Výsledky testu
Vytvoril som 5 jednotiek snímača a odosielateľa, ktoré zbierajú a odosielajú hodnoty namerané snímačmi DHT11. Počas troch dní som zaznamenával a ukladal merania pomocou testovacieho prijímača a programu emulácie terminálu (foxterm). Na štúdium som si vybral 48 -hodinový interval. Nezaujímali ma nevyhnutne namerané hodnoty (napríklad snímač 2 mi ukazuje nesprávne hodnoty), ale počet kolízií. Senzory boli navyše umiestnené veľmi blízko (vo vzdialenosti 4-5 m) od prijímača, aby sa odstránili ďalšie príčiny straty paketov. Výsledky testu boli uložené do súboru cvs a nahrané (pozrite sa na súbor nižšie). Na základe tohto súboru CSV som tiež nahral súbor programu Excel. Urobil som niekoľko snímok obrazovky, aby som vám ukázal, ako kolízia vyzerá (v mojich testoch samozrejme), ku každej snímke obrazovky som tiež pridal komentáre.
Môžete sa čudovať, prečo som nepoužil napríklad službu ThingSpeak na načítanie údajov. Faktom je, že mám veľa záznamov, mnoho senzorov a údajov, ktoré prichádzajú často v nepravidelných intervaloch, a online služby internetu vecí umožňujú údaje iba pri určitom počte senzorov a iba v dosť veľkých intervaloch. Uvažujem v budúcnosti o inštalácii a konfigurácii vlastného servera IoT.
Nakoniec 4598 meraní na 5 jednotkách snímača-odosielateľa (približne 920 na senzor) viedlo k celkovému počtu 5 zrážok počas 48 hodín (0,5435 zrážok/100 meraní). Vykonanie určitej matematiky (pomocou programu wsn_test s počiatočnými údajmi: 5 senzorov, priemerný čas 180 s, prenosový čas 110 ms) pravdepodobnosť kolízie by bola 0,015185 (1,52 kolízií/100 meraní). Praktické výsledky sú ešte lepšie ako teoretické, však?:)
V každom prípade je v tomto období tiež stratených 18 paketov, takže na kolíziách v tomto ohľade príliš nezáleží. Test by samozrejme mal prebiehať dlhší čas, aby sa dosiahli čo najpresvedčivejšie výsledky, ale podľa mňa je úspech aj za týchto podmienok a plne potvrdzuje teoretické predpoklady.
Krok 5: Záverečné myšlienky
Okamžitá aplikácia
Vo veľkom skleníku sa pestuje niekoľko plodín. Ak je zavlažovanie vyrobené ručne bez monitorovania klímy, bez akejkoľvek automatizácie, bez záznamov údajov, existuje riziko nadmerného alebo nedostatočného zavlažovania a tiež je vysoká spotreba vody, neexistujú dôkazy o optimalizácii spotreby vody, existuje riziko pre plodiny v generál. Aby sme tomu zabránili, môžeme použiť bezdrôtovú senzorickú sieť:)
Teplotné snímače, snímače vlhkosti vzduchu, snímače vlhkosti pôdy môžu byť umiestnené všade v skleníku a pomocou prenášaných údajov je možné vykonať niekoľko činností: elektrické ventily štart-stop, ktoré umožňujú prietoku vody tam, kde je to potrebné, elektrické ventilátory štart-stop na zníženie teploty v rôznych oblastiach podľa potreby spustite a zastavte ohrievače a všetky údaje môžete archivovať pre budúcu analýzu. Systém môže tiež poskytovať webové rozhranie, ktoré je prístupné všade, a e -mailové alebo SMS alarmy v prípade abnormálneho stavu.
Čo bude ďalej?
- Testovanie s väčším počtom senzorov;
- Testovanie v reálnom čase pomocou diaľkových senzorov v oblasti pokrytia;
- Inštalácia a konfigurácia lokálneho servera IoT (napríklad na Raspberry Pi);
- Testuje sa aj so snímačmi vysielača (transceivera) na frekvencii 2,4 GHz.
takže … pokračovanie …:)
UPOZORNENIE: Používanie frekvenčného pásma 433 MHz vo vašej oblasti môže podliehať predpisom o rádiových frekvenciách. Pred vyskúšaním tohto projektu skontrolujte svoju zákonnosť
Druhé miesto v súťaži senzorov
Odporúča:
Meteostanica DIY a senzorová stanica WiFi: 7 krokov (s obrázkami)
DIY meteorologická stanica a WiFi senzorová stanica: V tomto projekte vám ukážem, ako vytvoriť meteorologickú stanicu spolu so senzorovou stanicou WiFi. Senzorická stanica meria údaje o miestnej teplote a vlhkosti a odosiela ich prostredníctvom WiFi do meteorologickej stanice. Meteostanica potom zobrazí t
Nízkonákladová biotlačiareň: 13 krokov (s obrázkami)
Nízko nákladová biotlačiareň: Sme výskumným tímom vedeným pod úrovňou kvality v UC Davis. Sme súčasťou skupiny BioInnovation Group, ktorá pôsobí v laboratóriu TEAM Molecular Prototyping and BioInnovation Lab (poradcovia Dr. Marc Facciotti a Andrew Yao, M.S.). Laboratórium spája študentov
Sieť senzorových staníc na ovládanie osvetlenia a zabezpečenia: 5 krokov (s obrázkami)
Sieť senzorických staníc na ovládanie osvetlenia a zabezpečenia: S touto sieťou senzorových staníc nakonfigurovanou v režime master/slave budete môcť ovládať osvetlenie a zabezpečenie vo svojom dome. Tieto senzorové stanice (v tomto projekte Node01, Node02) sú pripojené k hlavnej stanici (Node00) pripojenej k
Bezdrôtová komunikácia pomocou lacných RF modulov 433 MHz a obrazových mikrokontrolérov. Časť 2: 4 kroky (s obrázkami)
Bezdrôtová komunikácia pomocou lacných RF modulov 433 MHz a obrazových mikrokontrolérov. Časť 2: V prvej časti tohto návodu som predviedol, ako naprogramovať PIC12F1822 pomocou kompilátora MPLAB IDE a XC8 tak, aby sa jednoduchý reťazec odoslal bezdrôtovo pomocou lacných modulov TX/RX 433 MHz. Modul prijímača bol pripojený cez USB k UART TTL káblová reklama
Nasnímajte svetlo pomocou NES Zapper (RF 433 MHz): 6 krokov (s obrázkami)
Strieľajte na svetlá pomocou zapaľovača NES (RF 433 MHz): Prečo zhasínajte svetlá pomocou vypínača, ak na ne môžete strieľať zariadením NES Zapper! Keď som v hlave objavil tento nápad, už som postavil laserové svetlo v starom zlomenom NES Zapperi. Páčilo sa mi to viac, preto som laserové svetlo nahradil týmto. Ideálny pre