Мазмұны:

433 МГц диапазонында төмен бағалы сымсыз сенсорлық желі: 5 қадам (суреттермен)
433 МГц диапазонында төмен бағалы сымсыз сенсорлық желі: 5 қадам (суреттермен)

Бейне: 433 МГц диапазонында төмен бағалы сымсыз сенсорлық желі: 5 қадам (суреттермен)

Бейне: 433 МГц диапазонында төмен бағалы сымсыз сенсорлық желі: 5 қадам (суреттермен)
Бейне: ПЕРЕДАТЧИК с ПРИЕМНИКОМ на 433 Мгц / Как работают и что могут / 2024, Қараша
Anonim
433 МГц диапазонында төмен сымсыз сенсорлық желі
433 МГц диапазонында төмен сымсыз сенсорлық желі

Тереза Раджбаға осы мақалада өз жарияланымдарындағы деректерді пайдалануға рұқсат бергені үшін үлкен рахмет

* Жоғарыдағы суретте - мен тестілеу үшін қолданған сенсор -жіберуші бес қондырғы

Сымсыз сенсорлық желілер дегеніміз не?

Қарапайым анықтама болар еді: сымсыз сенсорлық желілер өңделетін және сақталатын орталық орынға сымсыз түрде берілетін, экологиялық деректерді бақылау мен тіркеуге арналған белгілі бір аймақта таралған электронды құрылғылар тобын білдіреді.

Қазіргі уақытта сымсыз сенсорлық желілерді бірнеше жолмен қолдануға болады, төменде бірнеше мысал келтірілген:

  • Ормандарды, өзендерді, көлдерді, теңіздер мен мұхиттарды экологиялық қадағалау аймақтары;
  • Лаңкестік, химиялық, биологиялық, эпидемиялық шабуыл кезінде ескерту мүмкіндігі;
  • Балаларға, қарт адамдарға, науқастарға немесе ерекше қажеттіліктері бар адамдарға арналған бақылау жүйелері;
  • Ауыл шаруашылығы мен жылыжайлардағы бақылау жүйелері;
  • Ауа райы болжамының бақылау жүйесі;
  • Қала қозғалысын, мектептерді, автотұрақтарды бақылау;

Және басқа да көптеген қосымшалар.

Бұл жұмыста мен баяу және салыстырмалы түрде болжанатын вариациясы бар температура мен ылғалдылық деректерін бақылау үшін қолданылатын сымсыз сенсорлық желілермен жүргізілген эксперимент нәтижелерін көрсеткім келеді. Бұл эксперимент үшін мен қол жетімді модульдердің көмегімен өз қолыммен жасаған сенсор-жіберушілерді қолдануды жөн көрдім. Қабылдағыш сонымен қатар DIY болып табылады, байланыс бір бағытты (433 МГц радио диапазонында), яғни сенсорлар тек деректерді жібереді, ал орталық орын тек қабылдайды. Датчиктер мен қабылдағыштан датчиктер арасында байланыс жоқ.

Бірақ неге бірнеше таратқышты және тек бір қабылдағышты пайдалануды таңдадыңыз? Әрине, бірінші себеп - «қарапайым ету». Құрастыру неғұрлым қарапайым болса, оның істен шығу ықтималдығы соншалықты аз болады және ақаулар кезінде бір компоненттерді жөндеу және ауыстыру әлдеқайда оңай. Қуат шығыны да төмен, батареялар ұзақ қызмет етеді (сенсорлар бақылау мен қабылдау кезінде ғана жұмсалады, қалған уақытта құрылғы терең ұйқы режимінде болады). Қарапайым болғаны құрылғыны арзан етеді. Есте сақтаудың тағы бір аспектісі - қамту аймағы. Неге? Датчиктерде де, орталық модульде де сезімтал қабылдағыш пен қуатты таратқыш болудан гөрі сезімтал қабылдағышты құру мен қолдану әлдеқайда оңай (бұл екі жақты жақсы байланыс үшін қажет). Сезімтал және сапалы қабылдағышпен деректерді алыс қашықтықтан алуға болады, бірақ дәл сол қашықтыққа эмиссия жоғары эмиссиялық қуатты қажет етеді, бұл жоғары шығындармен, электр энергиясын тұтынумен және (ұмытпау керек) энергияны асып кету мүмкіндігімен бірге келеді. 433 МГц диапазонындағы заңды максималды таратқыш қуаты. Орташа сапалы қабылдағышты арзан, бірақ жоғары сапалы антеннамен (тіпті DIY) және сапалы антеннасы бар арзан таратқыштарды қолдана отырып, біз қолданыстағы сымсыз сенсорлық желілердің бағасының аз ғана бөлігінде тамаша нәтижеге қол жеткізе аламыз.

1 -қадам: Теориялық ойлар

Жылыжайдың әр түрлі аймақтарындағы ауа мен топырақтың температурасы мен ылғалдылығын бақылау үшін сымсыз сенсорлық желіні құру идеясы менің ойымда бұрыннан, шамамен 10 жыл бұрын пайда болды. Мен 1 сымды желі құрғым келді және 1 сымды температура мен ылғалдылық сенсорларын қолданғым келді. Өкінішке орай, 10 жыл бұрын ылғалдылық датчиктері сирек және қымбат болды (температура сенсорлары кеңінен таралғанымен), сондықтан жылыжайға сымдарды тарату менің ойымнан тез бас тарттым.

Алайда, қазір жағдай түбегейлі өзгерді. Біз арзан және сапалы сенсорларды таба аламыз (температура мен ылғалдылық), сонымен қатар 433 МГц диапазонындағы арзан таратқыштар мен қабылдағыштарға қол жеткізе аламыз. Бір ғана мәселе бар: егер бізде сенсорлар көп болса (20 делік), соқтығысуды қалай шешеміз (бұл біржақты байланыс екенін есте сақтаңыз), яғни 2 немесе одан да көп датчиктердің эмиссиясын қайталайды? Мүмкін болатын шешімді іздеу кезінде мен өте қызықты құжаттарды кездестірдім:

Кездейсоқ операциялар процедурасына негізделген сымсыз сенсордың жинақталуы - RAJBA, T. және RAJBA, S.

және

Кездейсоқ жіберумен сымсыз сенсорлық желіде соқтығысу ықтималдығы - RAJBA S. мен RAJBA. Т.

Негізінде, авторлар сымсыз сенсорлық желіде соқтығысу ықтималдығын, егер пакеттер пуассондық (экспоненциалды) таралуға сәйкес белгілі бір уақыт нүктелерінде шығарылса, есептеуге болатынын көрсетеді.

Жоғарыда келтірілген қағаздан үзіндіде зерттелетін желінің сипаттамалары келтірілген.

  • сенсор-жіберуші қондырғылардың өте көп саны N;
  • сенсор-жіберуші қондырғылар толығымен тәуелсіз болып қалады және оларды қосу немесе өшіру желі жұмысына әсер етпейді;
  • барлық сенсор-жіберуші қондырғылар (немесе олардың бір бөлігі) қабылдау станциясының радио диапазонында орналасқан жағдайда жылжымалы болуы мүмкін;
  • баяу өзгеретін физикалық параметрлер өлшеуге жатады, бұл деректерді жиі жіберудің қажеті жоқ дегенді білдіреді (мысалы, әр бірнеше минут немесе бірнеше ондаған минут);
  • беріліс бір бағытты, яғни сенсорлық-жіберуші блоктан қабылдау нүктесіне дейін T орташа уақыт интервалында. Ақпарат t мекенжайындағы хаттамада беріледіб ұзақтығы;
  • кез келген таңдалған сенсор Пуассон уақытында кездейсоқ жібере бастайды. PASTA (Poisson Arrivals See Time Averages) Пуассон дәуірінде зондтарды жіберуді негіздеу үшін пайдаланылады;
  • сенсор-жіберуші барлық қондырғылар кездейсоқ тәуелсіз болып қалады және олар ақпаратты t кездегі кездейсоқ таңдалған сәтте жібередіб қайталанудың орташа ұзақтығы мен ұзақтығы;
  • егер t протоколы кезінде бір немесе бірнеше датчиктер беріле бастасаб ұзақтығы басқа сенсордан беріледі, мұндай жағдай соқтығысу деп аталады. Соқтығысу орталық базалық станцияға ақпаратты дұрыс қабылдауға мүмкіндік бермейді.

Бұл мен тексергім келетін сенсорлық желіге толық сәйкес келеді …

Дерлік.

Мен қағаздағы математиканы толық түсіндім деп айтпаймын, бірақ берілген мәліметтер мен тұжырымдар негізінде мен бұл туралы не екенін түсіндім. Жалғыз нәрсе, қағазда қолданылған құндылық мені біраз алаңдатты:). Бұл t айнымалысыб - 3,2х10 деп есептелетін деректерді беру ұзақтығы-5 с. Осылайша, жиналған деректерді беру уақыты 3,2 бізді құрайды! Бұл 433 МГц диапазонында жасалмайды. Мен таратқыш сенсорларын бағдарламалау үшін rcswitch немесе radiohead қолданғым келеді. Екі кітапхананың кодтарын зерттей отырып, мен хабарлаудың ең кіші уақыты 20 мс болатындығына сенімдіміз, бұл біздегі 3,2 мәннен жоғары. 2,4 ГГц таратқыштармен мүмкін tб уақыт өте кішкентай … бірақ бұл басқа әңгіме.

Егер біз осы мақаланың авторлары ұсынған формуланы қолдансақ, нәтиже келесідей болады:

Алғашқы мәліметтер (мысал):

  • Датчиктер саны N = 20;
  • Деректерді беру ұзақтығы tб= 20х10-3 с (0,020 секунд)
  • Орташа беру аралығы T = 180с

Формула:

Т интервалында соқтығысу ықтималдығы

Кескін
Кескін

егер бастапқы деректерді ескерсек, T интервалында соқтығысу ықтималдығы 0,043519 болады

Бұл 100 өлшемге 4,35 соқтығысу ықтималдығын көрсететін мән, менің ойымша, өте жақсы. Егер таратудың орташа уақытын арттырсақ, ықтималдылық жақсаруы мүмкін, сондықтан 300с мәнінде бізде 0,026332 ықтималдығы болады, яғни 100 өлшеуге 2,6 соқтығысу. Егер біз жүйе жұмысы кезінде пакеттік деректердің жоғалуын күте аламыз деп ойласақ (мысалы, ауа райы жағдайына байланысты), онда бұл сан өте жақсы.

Мен желінің осы түрін модельдеуді, сонымен қатар дизайнерлік көмекшіні жасағым келді, сондықтан мен C -де шағын бағдарлама жасадым, сіз бастапқы кодты github -дан таба аласыз (сонымен қатар Windows командалық жолында жұмыс істейтін жинақталған екілік файл - шығару).

Деректерді енгізу:

  • sensor_number - желідегі датчиктер саны;
  • өлшеулер_нөмірі - модельдеуге арналған өлшемдер саны;
  • average_transmission_interval -деректерді дәйекті беру арасындағы орташа уақыт;
  • беру_ уақыты - деректерді берудің тиімді ұзақтығы.

Шығу:

  • есептелген максималды өлшеу уақыты;
  • екі сенсордың соқтығысу тізімі;
  • қақтығыстар саны;
  • соқтығысудың теориялық ықтималдығы.

Нәтижелер өте қызықты:)

Теория жеткілікті болса да, мен теориялық бөлімге көбірек тоқталғым келмейді, мақалалар мен бастапқы код өте түсінікті, сондықтан мен сымсыз сенсорлық желінің практикалық, тиімді енгізілуіне және тест нәтижелеріне жүгінген жөн.

2 -қадам: практикалық іске асыру - аппараттық құрал

Сенсорлар үшін бізге келесі компоненттер қажет:

  • ATtiny85 микроконтроллері 1.11 $;
  • Интегралды схемалық розетка 8DIP 0.046 $;
  • DHT11 температура/ылғалдылық сенсоры 0,74 $;
  • 433МГц H34A таратқыш модулі 0,73 $;
  • 4хАА батарея ұстағы 1 $ ауыстырып қосқышымен;

Барлығы 3,63 $;

Сынақтар үшін қолданылатын ресивер - Arduino UNO (тек тестілеу үшін) және H3V4F қабылдау модулі (0,66 $) арзан доғалы антеннасы бар (0,32 доллар).

Сенсор-жіберуші схемасы

Кескін
Кескін

Таратқыш-сенсорлық қондырғылар 3xAA, 1,5В батареялармен жабдықталған (батарея ұстағышының төртінші бөлімінде электронды жинақ бар). Көріп отырғаныңыздай, таратқыштың қоректену көзі мен температура мен ылғалдылық сенсоры микроконтроллердің PB0 түйреуішіне қосылады (таратқыш пен сенсор түйреуіш ЖОҒАРЫ күйге орнатылғанда қосылады). Микроконтроллер ұйқы режимінде болғанда, ол 4.7uA ток тұтынуына жетуі мүмкін. Таратқыш-сенсордың ояту уақыты шамамен 3 с болатынын ескерсек (өлшеу, беру және т.б.) және 180-ші жылдардағы беріліс арасындағы орташа уақыт (алдыңғы тараудағы мысал ретінде), аккумуляторлар біршама төзімді болуы керек. Кейбір сапалы сілтілі батареялармен (яғни 2000 мАч) автономия omnicalculator.com сайтында есептелгендей 10 айдан асуы мүмкін (мұнда токтың жалпы шығыны: сенсор - 1,5мА, таратқыш модулі - 3,5мА және ATtiny85 микроконтроллері - 5мА, барлығы 10мА)).

Төмендегі суретте сіз дерлік дайын сенсор-жіберуші қондырғысын көре аласыз.

Кескін
Кескін

Төменде тест қабылдағыш блогының фотосуреті берілген.

Кескін
Кескін

3 -қадам: Практикалық іске асыру - БҚ

Сенсор-жіберуші қондырғылардың негізгі компоненті attiny85 микроконтроллеріне жүктелген бағдарламалық қамтамасыз ету сенсор берген деректерді оқуға, оны радио арқылы түрлендіруге және Пуассон уақыт аралығында жіберуге (экспоненциалды тарату немесе ПАСТА - Пуассонның келуі Орташа уақытты қараңыз). Сондай -ақ, қарапайым функцияны қолдана отырып, ол батареялардың күйін бақылайды және егер сенсорға кернеу берілмесе, ескерту береді. Бастапқы код github -те қол жетімді. Сынақ қабылдағышының коды өте қарапайым, мен оны төменде орналастырамын.

// https://github.com/Martin-Laclaustra/rc-switch/tree/protocollessreceiver// ішінен rcswitch кітапханасы өзгертілді, бұл бастапқы rcswitch кітапханасының мысалдарынан өзгертілген нұсқа #include RCSwitch mySwitch = RCSwitch (); қол қойылмаған ұзақ деректер = 0; void setup () {Serial.begin (9600); mySwitch.enableReceive (0); // Қабылдағыш 0 үзілісінде => бұл № 2 түйін} void loop () {if (mySwitch.available ()) {unsigned long data = mySwitch.getReceivedValue (); // шығару (mySwitch.getReceivedValue (), mySwitch.getReceivedBitlength (), mySwitch.getReceivedDelay (), mySwitch.getReceivedRawdata (), mySwitch.getReceivedProtocol ()); int ылғалдылығы = bitExtracted (деректер, 7, 1); // 1 -позициядан 7 бит аз мән - бірінші оң жақтағы температура int = bitExtracted (деректер, 7, 8); // келесі 8 бит 8 -позициядан оңға қарай және т.б. int v_min = bitExtracted (деректер, 1, 15); int packet_id = bitExtracted (деректер, 3, 16); // 3 бит - 8 пакеттің идентификаторы 0 -ден 7 -ге дейін int sensor_id = bitExtracted (деректер, 6, 19); // 6 биттік 64 сенсор идентификаторы үшін - барлығы 24 биттік Serial.print (sensor_id); Serial.print («,»); Serial.print (packet_id); Serial.print («,»); Serial.print (температура); Serial.print («,»); Serial.print (ылғалдылық); Serial.println (); mySwitch.resetAvailable (); }} // https://www.geeksforgeeks.org/extract-k-bits-given-position-number/ int bitExtracted (белгісіз ұзын сан, int k, int p) {коды (((1 (p- 1)));}

Мен түсінікті болу үшін мүмкіндігінше көп түсініктеме беруге тырыстым.

Түзету үшін мен USBasp бағдарламашысымен бағдарламалық қамтамасыз ету кітапханасын және attiny85 әзірлеу тақтасын қолдандым (бұл туралы нұсқаулықты қараңыз). Сериялық сілтеме әзірлеу тақтасының иілген түйреуіштеріне (3 және 4) қосылған (төмендегі суретті қараңыз) Serial to TTL түрлендіргішімен (PL2303 чипі бар) жасалған. Мұның бәрі кодты толтыруға баға жетпес көмек болды.

Кескін
Кескін

4 -қадам: тест нәтижелері

Тест нәтижелері
Тест нәтижелері
Тест нәтижелері
Тест нәтижелері

Мен DHT11 датчиктерімен өлшенетін мәндерді жинайтын және жіберетін 5 сенсорлық-жіберуші қондырғыны құрдым. Мен үш күн ішінде тест қабылдағыш пен терминалды эмуляция бағдарламасының (фокстерм) көмегімен өлшеуді жаздым және сақтадым. Мен оқу үшін 48 сағаттық интервал таңдадым. Мені міндетті түрде өлшенген мәндер қызықтырмады (сенсор 2, мысалы, ол маған дұрыс емес мәндерді көрсетеді), бірақ соқтығысулар саны. Сонымен қатар, датчиктер пакеттің жоғалуының басқа себептерін жою үшін қабылдағышпен өте жақын (4-5 м қашықтықта) орналастырылған. Тест нәтижелері cvs файлына сақталды және жүктелді (төмендегі файлды қараңыз). Мен сонымен қатар осы csv файлына негізделген excel файлын жүктедім. Мен соқтығысудың қалай болатынын көрсету үшін бірнеше скриншоттар алдым (әрине менің сынақтарымда), мен әр скриншотқа түсініктеме қостым.

Неліктен мен ThingSpeak сияқты деректерді жүктеу қызметін пайдаланбадым деп ойлайтын шығарсыз. Менде көптеген жазбалар бар, көптеген сенсорлар мен деректер тұрақты емес аралықта келеді, ал Интернеттегі IoT қызметтері сенсорлардың белгілі бір санында және өте үлкен аралықта деректерді жіберуге мүмкіндік береді. Мен болашақта жеке IoT серверімді орнатуды және конфигурациялауды ойлаймын.

Соңында 5 датчик-жіберуші қондырғыдағы 4598 өлшеулер (шамамен 920/сенсор) 48 сағат ішінде барлығы 5 соқтығысуға әкелді (0,5435 соқтығысу/100 өлшеу). Кейбір математиканы орындау (wsn_test бағдарламасын бастапқы деректермен: 5 датчик, орташа уақыт 180с, беру уақыты 110 мс) соқтығысу ықтималдығы 0,015185 (1,52 соқтығысу/100 өлшеу) болады. Практикалық нәтижелер теориялық нәтижелерден де жақсы емес пе?:)

Кескін
Кескін

Қалай болғанда да, бұл кезеңде 18 пакет жоғалды, сондықтан соқтығысудың бұл тұрғыда маңызы жоқ. Әрине, нәтиже алу үшін тест ұзақ уақыт бойы жүргізілуі керек, бірақ менің ойымша, бұл жағдайда да табысты және теориялық болжамдарды толық растайды.

5 -қадам: Қорытынды ойлар

Шұғыл өтініш

Үлкен жылыжайда бірнеше дақылдар өсіріледі. Егер суару қолмен жасалса, ешқандай климаттық мониторингсіз, ешқандай автоматтандырусыз, деректер жазбалары жоқ суару немесе суару қаупі бар, сонымен қатар су шығыны жоғары болса, суды тұтынуды оңтайландыруға ешқандай дәлел жоқ, егістікке қауіп бар. жалпы Бұған жол бермеу үшін біз сымсыз сенсорлық желіні қолдана аламыз:)

Температура сенсорлары, ауа ылғалдылығы сенсорлары, топырақ ылғалдылығы сенсорлары жылыжайдың айналасына орналастырылуы мүмкін және берілген мәліметтердің көмегімен бірнеше әрекеттерді жасауға болады: қажет жерге су ағуына мүмкіндік беретін старт-ток электр клапандары, сөндіруші-электр желдеткіштері. әр түрлі аймақтардағы температураны төмендету үшін қажет болған жағдайда жылытқыштарды іске қосыңыз және барлық деректерді болашақ талдау үшін мұрағаттауға болады. Сондай -ақ, жүйе барлық жерде қол жетімді веб -интерфейсті және қалыпты емес жағдайда электрондық поштаны немесе SMS дабылын ұсына алады.

Келесі не?

  • Сенсорлардың көп санымен тестілеу;
  • Қамту аймағында қашықтағы датчиктермен нақты уақытта тестілеу;
  • Жергілікті IoT серверін орнату және конфигурациялау (мысалы, Raspberry Pi -де);
  • Сондай-ақ, 2,4 ГГц-тегі таратқыш-сенсормен тестілеу.

сондықтан … жалғасы бар:)

ЕСКЕРТУ: Өз аймағыңыздағы 433 МГц жиілік диапазонын пайдалану радио жиілік ережелеріне сәйкес болуы мүмкін. Бұл жобаны бастамас бұрын заңдылығыңызды тексеріңіз

Сенсорлар сайысы
Сенсорлар сайысы
Сенсорлар сайысы
Сенсорлар сайысы

Сенсорлар байқауында екінші орын

Ұсынылған: