Talaan ng mga Nilalaman:

Mababang Gastos ng Wireless Sensor Network sa 433MHz Band: 5 Hakbang (na may Mga Larawan)
Mababang Gastos ng Wireless Sensor Network sa 433MHz Band: 5 Hakbang (na may Mga Larawan)

Video: Mababang Gastos ng Wireless Sensor Network sa 433MHz Band: 5 Hakbang (na may Mga Larawan)

Video: Mababang Gastos ng Wireless Sensor Network sa 433MHz Band: 5 Hakbang (na may Mga Larawan)
Video: The Perfect Wireless Home Security Camera? 2024, Nobyembre
Anonim
Mababang Gastos ng Wireless Sensor Network sa 433MHz Band
Mababang Gastos ng Wireless Sensor Network sa 433MHz Band

Maraming salamat kay Teresa Rajba sa mabait na pagbibigay sa akin ng kanyang pagtanggap na gumamit ng data mula sa kanilang mga pahayagan sa artikulong ito

* Sa imahe sa itaas - ang limang mga yunit ng nagpadala ng sensor na ginamit ko para sa pagsubok

Ano ang mga wireless sensor network?

Ang isang simpleng kahulugan ay: ang mga network ng wireless sensor ay tumutukoy sa isang pangkat ng mga elektronikong aparato na ipinamamahagi sa isang tiyak na lugar para sa pagsubaybay at pagrekord ng data sa kapaligiran, na wireless na ipinadala sa isang sentral na lokasyon upang maproseso at maiimbak.

Sa panahong ito ang Wireless Sensor Networks ay maaaring magamit sa maraming paraan, sa ibaba ay ilan lamang sa mga halimbawa:

  • Mga lugar ng pagsubaybay sa ekolohiya ng mga kagubatan, ilog, lawa, dagat at karagatan;
  • Posibilidad na alerto kung sakaling atake ng terorista, kemikal, biological, epidemya;
  • Mga system sa pagsubaybay para sa mga bata, matatanda, pasyente o taong may espesyal na pangangailangan;
  • Mga sistema ng pagsubaybay sa agrikultura at mga greenhouse;
  • Sistema ng pagsubaybay sa Pagtataya ng Panahon;
  • Pagsubaybay sa trapiko ng lungsod, mga paaralan, parke ng kotse;

At marami, maraming iba pang mga application.

Sa papel na ito nais kong ipakita ang mga resulta ng isang eksperimento sa mga wireless sensor network na ginamit para sa pagsubaybay sa data ng temperatura at halumigmig, na may isang mabagal at medyo mahuhulaan na pagkakaiba-iba. Para sa eksperimentong ito pinili ko na gumamit ng mga nagpadala ng sensor na binuo ko ng aking sarili gamit ang abot-kayang mga module. Ang tatanggap ay DIY din, ang komunikasyon ay unidirectional (sa 433 MHz radio band), nangangahulugan na ang mga sensor ay nagpapadala lamang ng data at ang gitnang lokasyon lamang ang natatanggap. Walang komunikasyon sa pagitan ng mga sensor at mula sa tatanggap hanggang sa mga sensor.

Ngunit bakit ang pagpili na gumamit ng maraming mga transmiter at isang tatanggap lamang? Malinaw na ang unang dahilan ay "ginagawang simple". Ang mas simple ay ang pagtitipon, mas malamang na mabigo ito, at tiyak na mas madali itong ayusin at palitan ang mga solong sangkap sa kaso ng mga malfunction. Ang paggamit ng kuryente ay mas mababa din, ang mga baterya ay magtatagal (ang mga sensor ay kukonsumo lamang habang sinusubaybayan at tinatanggap, ang natitirang oras na ang aparato ay nasa malalim na mode sa pagtulog). Ang katotohanan na ito ay simple ay ginagawang mura din ang aparato. Ang isa pang aspeto na dapat tandaan ay ang saklaw na lugar. Bakit? Mas madaling bumuo at gumamit ng isang sensitibong tagatanggap kaysa magkaroon ng isang sensitibong tagatanggap at isang malakas na transmiter sa parehong mga sensor at gitnang modyul (kinakailangan ito para sa isang mahusay na komunikasyon sa bidirectional). Sa pamamagitan ng isang sensitibo at mahusay na kalidad na tatanggap posible na makatanggap ng data mula sa isang malayong distansya, ngunit ang emitting data para sa parehong distansya ay nangangailangan ng mataas na lakas ng paglabas at ito ay may mataas na gastos, pagkonsumo ng elektrisidad at (huwag nating kalimutan) ang posibilidad na lumampas sa ligal na maximum na lakas ng transmiter sa 433 MHz band. Sa pamamagitan ng paggamit ng isang medium-kalidad na tatanggap, mura ngunit may isang de-kalidad na antena (kahit DIY) at mga murang transmiter na may isang mahusay na kalidad na antena, makakamit natin ang mahusay na mga resulta sa isang maliit na bahagi ng gastos ng mga umiiral na mga wireless sensor network.

Hakbang 1: Mga Pagsasaalang-alang sa Teoretikal

Ang ideya ng pagbuo ng isang wireless sensor network para sa pagsubaybay sa temperatura at halumigmig ng hangin at lupa sa iba't ibang mga lugar ng isang greenhouse ay pumasok sa aking isipan noong una, halos 10 taon. Nais kong bumuo ng isang 1-wire network at upang magamit ang 1-wire na temperatura at mga sensor ng halumigmig. Sa kasamaang palad, 10 taon na ang nakakaraan ang mga sensor ng kahalumigmigan ay bihira at mahal (kahit na ang mga sensor ng temperatura ay laganap) at dahil ang pagkalat ng mga wire sa buong greenhouse ay tila hindi isang pagpipilian ay mabilis akong sumuko sa ideya.

Gayunpaman, ngayon ang sitwasyon ay radikal na nagbago. Nagagawa naming maghanap ng murang at mahusay na kalidad na mga sensor (temperatura at halumigmig), at mayroon din kaming pag-access sa mga murang transmiter at tatanggap sa 433 MHz band. Mayroon lamang isang problema: kung mayroon kaming higit pang mga sensor (sabihin nating 20) paano natin malulutas ang mga banggaan (mangyaring tandaan na ito ay isang one-way na komunikasyon), ibig sabihin, nag-o-overlap sa paglabas ng 2 o higit pang mga sensor? Habang naghahanap para sa isang posibleng solusyon ay natagpuan ko ang napaka-kagiliw-giliw na mga papel na ito:

Ang wireless sensor ay nagtatagpo ng cast batay sa random na pamamaraan ng pagpapatakbo - ng RAJBA, T. at RAJBA, S.

at

Ang posibilidad ng mga banggaan sa Wireless Sensor Network na may random na pagpapadala - ng RAJBA S. at RAJBA. T

Talaga, ipinakita sa amin ng mga may-akda na ang posibilidad ng mga banggaan sa isang wireless sensor network ay maaaring makalkula kung ang mga packet ay inilalabas sa ilang mga punto ng oras ayon sa isang pamamahagi ng poissonian (exponential).

Ang isang katas mula sa nabanggit na papel ay naglilista ng mga katangian ng pinag-aralan na network.

  • medyo isang bilang ng mga yunit ng sensor-sender N;
  • ang mga unit ng sensor-sender ay mananatiling ganap na independiyente at ang paglipat o pag-on sa kanila ay walang impluwensya sa operasyon ng network;
  • lahat ng mga yunit ng nagpadala ng sensor (o bahagi ng mga ito) ay maaaring maging mobile sa kondisyon na matatagpuan ang mga ito sa loob ng saklaw ng radyo ng tumatanggap na istasyon;
  • ang mabagal na pagbabago ng mga pisikal na parameter ay napapailalim sa mga sukat kung ano ang ibig sabihin na hindi na kailangang maipadala nang madalas ang data (hal. bawat ilang minuto o maraming dose-dosenang minuto);
  • ang paghahatid ay isang uri ng one-way, ibig sabihin, mula sa unit ng sensor-sender hanggang sa punto ng pagtanggap sa T average na agwat ng oras. Ang impormasyon ay naililipat sa protocol sa tp tagal ng panahon;
  • ang anumang napiling sensor ay nagsisimulang magpadala ng sapalaran sa mga oras ng Poisson. Ang PASTA (Poisson Arrivals See Time Averages) ay gagamitin upang bigyang katwiran ang pagpapadala ng mga probe sa Poisson epochs;
  • lahat ng mga yunit ng nagpadala ng sensor ay mananatiling sapalarang independiyente at ililipat nila ang impormasyon sa isang random na napiling sandali ng oras ng tp tagal at ng T average na oras ng pag-uulit;
  • kung ang isa o higit pang mga sensor ay nagsisimulang maglipat habang ang protokol ng tp ang tagal ay naililipat mula sa isa pang sensor, ang ganitong sitwasyon ay tinatawag na banggaan. Ginawang imposible ng banggaan para sa sentral na base station na makatanggap ng impormasyon sa isang tamang paraan.

Ito ay ganap na umaangkop sa sensor network na nais kong subukan …

Halos.

Hindi ko sinasabi na lubos kong naintindihan ang matematika sa papel, ngunit sa batayan ng ipinakita na data at sa mga konklusyon naiintindihan ko nang kaunti kung tungkol saan ito. Ang tanging bagay ay ang isang halagang ginamit sa papel na nag-alala ako nang kaunti:). Ito ang variable tp - tagal ng paghahatid ng data na ipinapalagay na 3.2x10-5 s. Kaya't ang oras ng paghahatid ng nakolektang data ay magiging 3.2 sa amin! Hindi ito magagawa sa 433 MHz band. Nais kong gamitin ang alinman sa rcswitch o sa radiohead upang mai-program ang mga transmitter sensor. Pag-aaral ng mga code ng dalawang aklatan, napagpasyahan kong ang pinakamaliit na oras ng paghahatid ay 20ms, na higit sa halaga ng 3.2 sa amin. Gamit ang mga 2.4 GHz transmiter, posible tp napakaliit ng oras … ngunit iyon ang isa pang kwento.

Kung ilalapat namin ang pormula na iminungkahi ng mga may-akda ng papel na ito ang resulta ay:

Paunang data (isang halimbawa):

  • Bilang ng mga sensor N = 20;
  • Tagal ng paghahatid ng data tp= 20x10-3 s (0.020s)
  • Karaniwang agwat ng paghahatid ng T = 180s

Ang formula:

Ang posibilidad ng pagkakabangga sa agwat ng T ay

Larawan
Larawan

kung isasaalang-alang natin ang paunang data ang posibilidad ng banggaan sa agwat ng T ay 0.043519

Ang halagang ito, na nagpapahiwatig ng posibilidad na magkaroon ng 4.35 na banggaan bawat 100 na sukat, sa palagay ko, ay napakahusay. Maaaring mapabuti ang posibilidad kung tataas natin ang average na oras ng paghahatid, kaya sa halagang 300s magkakaroon tayo ng posibilidad na 0.026332, ibig sabihin, 2.6 mga banggaan bawat 100 na sukat. Kung isasaalang-alang natin na maaari nating asahan ang pagkawala ng data ng packet sa panahon ng pagpapatakbo ng system (depende sa mga kondisyon ng panahon halimbawa) kung gayon ang numerong ito ay talagang mahusay.

Nais kong gumawa ng isang simulation ng ganitong uri ng network ngunit isang uri din ng isang katulong sa disenyo, kaya gumawa ako ng isang maliit na programa sa C, mahahanap mo ang source code sa github (isang pinagsamang binary na tumatakbo sa windows command line - pakawalan).

Input data:

  • sensor_number - ang bilang ng mga sensor sa network;
  • mga pagsukat_number - bilang ng mga pagsukat upang gayahin;
  • average_transmission_interval -average na oras sa pagitan ng sunud-sunod na paghahatid ng data;
  • transmission_time - ang mabisang tagal ng paghahatid ng data.

Output:

  • ang kinakalkula na maximum na oras ng pagsukat;
  • ang listahan ng mga banggaan sa pagitan ng dalawang sensor;
  • bilang ng mga banggaan;
  • teoretikal na posibilidad ng mga banggaan.

Ang mga resulta ay medyo kawili-wili:)

Sapat na sa teorya, hindi ko nais na igiit ang higit sa teoretikal na bahagi, ang mga artikulo at ang source code ay lubos na mahusay, kaya mas mabuti na pumunta ako sa praktikal, mabisang pagpapatupad ng wireless sensor network at sa mga resulta ng pagsubok.

Hakbang 2: Praktikal na Pagpapatupad - ang Hardware

Para sa mga transmitter-sensor kakailanganin namin ang mga sumusunod na sangkap:

  • ATtiny85 microcontroller 1.11 $;
  • Pinagsamang circuit socket 8DIP 0.046 $;
  • Temperatura / Humidity sensor DHT11 0.74 $;
  • 433MHz H34A transmitter module 0.73 $;
  • 4xAA na may hawak ng baterya na may switch na $ 1;

Kabuuang 3.63 $;

Ang tatanggap na ginamit para sa mga pagsubok ay isang Arduino UNO (para lamang sa pagsubok) at isang module ng pagtanggap ng H3V4F (0.66 $) na may murang arc antena (0.32 $).

Mga iskema ng nagpadala ng sensor

Larawan
Larawan

Ang mga unit ng transmitter-sensor ay pinalakas ng 3xAA, 1.5v na baterya (sa ika-apat na kompartimento ng may hawak ng baterya ay mayroong elektronikong pagpupulong). Tulad ng nakikita mo ang suplay ng kuryente ng transmiter at ang sensor ng temperatura-halumigmig ay nakakabit sa PB0 pin ng microcontroller (ang transmitter at sensor ay pinalakas kapag ang pin ay nakatakda sa TAAS). Kaya't kapag ang microcontroller ay nasa deep-sleep mode, maaari itong maabot ang isang 4.7uA kasalukuyang pagkonsumo. Isinasaalang-alang na ang oras ng paggising ng transmitter-sensor ay magiging tungkol sa 3s (pagsukat, paghahatid atbp.) At ang average na oras sa pagitan ng mga pagpapadala ng 180 (tulad ng halimbawa sa nakaraang kabanata), ang mga baterya ay dapat na labanan nang marami. Na may ilang mahusay na kalidad na mga baterya ng alkalina (ibig sabihin, 2000 mah), ang awtonomiya ay maaaring higit sa 10 buwan na kinakalkula sa omnicalculator.com (kung saan ang kabuuang kasalukuyang pagkonsumo ay: sensor - 1.5mA, transmitter module - 3.5mA at ATtiny85 microcontroller - 5mA, kabuuang 10mA).

Sa larawan sa ibaba makikita mo ang halos tapos na pagpupulong ng sensor-sender.

Larawan
Larawan

Nasa ibaba ang larawan ng unit ng pagsubok na tatanggap.

Larawan
Larawan

Hakbang 3: Praktikal na Pagpapatupad - Software

Ang software na na-upload na tumatakbo sa attiny85 microcontroller, ang pangunahing bahagi ng mga unit ng nagpadala ng sensor, ay may layunin na basahin ang data na ibinigay ng sensor, i-convert ito upang maipasa ng radyo, at ihatid ito sa loob ng mga time frame ng Poisson (exponential pamamahagi o PASTA - Poisson Arrivals Tingnan ang Mga Oras ng Oras). Gayundin, sa pamamagitan ng paggamit ng isang simpleng pagpapaandar, sinusubaybayan nito ang katayuan ng mga baterya at nagbibigay ng isang babala kung ang kinakailangang boltahe para sa sensor ay hindi na ibinigay. Magagamit ang source code sa github. Ang code para sa tagatanggap ng pagsubok ay napaka-simple na nai-post ko ito sa ibaba.

// binago ang rcswitch library mula sa https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// ang code ay isang nabagong bersyon mula sa mga halimbawa ng orihinal na rcswitch library # isama ang RCSwitch mySwitch = RCSwitch (); unsigned mahabang data = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Receiver on interrupt 0 => that is pin # 2} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // output (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int halumigmig = bitExtracted (data, 7, 1); // mas mababa signifiant 7bits mula sa posisyon 1 - pinaka-kanan unang temperatura ng int = = Kinuha (data, 7, 8); // susunod na 7bits mula sa posisyon 8 hanggang kanan at iba pa sa int v_min = bitExtracted (data, 1, 15); int packet_id = bitExtracted (data, 3, 16); // 3bits - 8 packet id's mula 0 hanggang 7 int sensor_id = bitExtracted (data, 6, 19); // 6bit for 64 sensor ID's - total 24 bits Serial.print (sensor_id); Serial.print (","); Serial.print (packet_id); Serial.print (","); Serial.print (temperatura); Serial.print (","); Serial.print (halumigmig); Serial.println (); mySwitch.resetAvailable (); }} // code mula sa https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (unsigned long number, int k, int p) {return (((1 (p - 1)));}

Sinubukan kong magsama ng maraming mga puna hangga't maaari upang gawing mas madaling maunawaan ang bagay.

Para sa pag-debug ginamit ko ang softwareserial library at ang attiny85 development board kasama ang USBasp programmer (tingnan din ang aking itinuturo tungkol dito). Ang serial link ay nagawa sa Serial to TTL converter (na may PL2303 chip) na konektado sa mga baluktot na pin (3 at 4) ng development board (tingnan ang larawan sa ibaba). Ang lahat ng ito ay naging isang napakahalagang tulong upang makumpleto ang code.

Larawan
Larawan

Hakbang 4: Mga Resulta sa Pagsubok

Mga Resulta sa Pagsubok
Mga Resulta sa Pagsubok
Mga Resulta sa Pagsubok
Mga Resulta sa Pagsubok

Lumikha ako ng 5 mga unit ng nagpadala ng sensor na nangongolekta at nagpapadala ng mga halagang sinusukat ng mga sensor ng DHT11. Naitala ko at nai-save ang mga sukat, sa tulong ng tagatanggap ng pagsubok at isang programa ng pagtulad sa terminal (foxterm), sa loob ng tatlong araw. Pinili ko ang isang 48 oras na agwat para sa pag-aaral. Hindi ko kinakailangang interesado sa mga sinusukat na halaga (sensor 2, halimbawa, ipinapakita sa akin ang mga maling halaga) ngunit sa bilang ng mga banggaan. Bilang karagdagan, ang mga sensor ay inilagay ng napakalapit (sa 4-5 m) ng tatanggap upang maalis ang iba pang mga sanhi ng pagkawala ng mga packet. Ang mga resulta sa pagsubok ay nai-save sa isang cvs file at na-upload (tingnan ang file sa ibaba). Nag-upload din ako ng isang excel file batay sa csv file na ito. Kumuha ako ng ilang mga screenshot upang ipakita sa iyo kung paano ang isang banggaan (sa aking mga pagsubok syempre), nagdagdag din ako ng mga komento sa bawat screenshot.

Maaari kang magtaka kung bakit hindi ako gumamit ng isang serbisyo ng data loader halimbawa ng ThingSpeak. Ang totoo ay mayroon akong maraming mga talaan, maraming mga sensor at data na dumarating madalas sa hindi regular na mga agwat, at pinapayagan lamang ng mga serbisyo sa online na IoT ang data sa isang tiyak na bilang ng mga sensor at sa malalaking agwat lamang. Iniisip ko sa hinaharap na mag-install at mag-configure ng aking sariling IoT server.

Sa huli, 4598 na pagsukat sa 5 mga yunit ng nagpadala ng sensor (aprox. 920 / sensor) ay nagresulta sa isang kabuuang 5 mga banggaan para sa isang panahon ng 48 na oras (0.5435 mga banggaan / 100 mga pagsukat). Ang paggawa ng ilang matematika (gamit ang wsn_test program na may paunang data: 5 mga sensor, average na oras ng 180s, oras ng paghahatid na 110 ms) posibilidad sa pagbangga ay 0.015185 (1.52 mga banggaan / 100 na pagsukat). Ang mga praktikal na resulta ay mas mahusay pagkatapos ng mga teoretikal na resulta hindi ba?:)

Larawan
Larawan

Gayunpaman mayroon ding 18 mga packet na nawala sa panahong ito, kaya't ang mga banggaan ay hindi masyadong mahalaga sa bagay na ito. Siyempre ang pagsubok ay dapat maganap sa isang mas mahabang panahon upang makuha ang pinaka-kapani-paniwalang mga resulta ngunit sa palagay ko ay isang tagumpay kahit sa mga kundisyong ito at ganap na kinukumpirma ang mga palagay sa teoretikal.

Hakbang 5: Pangwakas na Mga Saloobin

Agad na aplikasyon

Sa isang malaking greenhouse maraming mga pananim ang lumago. Kung ang patubig ay manu-manong ginawa nang walang pagsubaybay sa klima, nang walang anumang pag-aautomat, nang walang mga tala ng data ay may panganib na higit o sa ilalim ng patubig at mataas din ang pagkonsumo ng tubig, walang katibayan para sa pag-optimize sa pagkonsumo ng tubig, may panganib para sa mga pananim sa pangkalahatan. Upang maiwasan ito, maaari kaming gumamit ng isang wireless sensor network:)

Ang mga sensor ng temperatura, mga sensor ng kahalumigmigan ng hangin, mga sensor ng kahalumigmigan ng lupa ay maaaring mailagay sa buong paligid sa greenhouse at sa tulong ng naihatid na data maraming mga pagkilos ang maaaring gawin: start-stop electric valves para sa pagpapaalam sa daloy ng tubig kung saan kinakailangan, start-stop electric fan upang mabawasan ang temperatura sa iba't ibang lugar, mga start-stop heater kung kinakailangan at lahat ng data ay maaaring mai-archive para sa pagtatasa sa hinaharap. Gayundin, maaaring magbigay ang system ng isang web interface na naa-access saanman at mga alarma sa email o SMS sakaling hindi normal na kondisyon.

Anong susunod?

  • Pagsubok na may isang mas malaking bilang ng mga sensor;
  • Pagsubok sa real-time na may mga remote sensor sa saklaw na lugar;
  • Pag-install at pag-configure ng isang lokal na IoT server (sa isang halimbawa ng Raspberry Pi);
  • Mga pagsubok din sa transmitter (transceiver) -sensor sa 2.4Ghz.

kaya … na ipagpatuloy …:)

DISCLAIMER: Ang paggamit ng 433MHz frequency band sa iyong rehiyon ay maaaring napapailalim sa mga regulasyon sa dalas ng radyo. Mangyaring suriin ang iyong legalidad bago subukan ang proyektong ito

Paligsahan sa Mga Sensor
Paligsahan sa Mga Sensor
Paligsahan sa Mga Sensor
Paligsahan sa Mga Sensor

Runner Up sa Paligsahan sa Mga Sensor

Inirerekumendang: