Ардуино үшін бірнеше сымсыз сенсорлар

Мен 12 датчикті Arduino-ға сымсыз қосылуға қалай қосуға болатынын ойлаймын. Сенсорлар Arduino-дан шамамен 10 фут болады. Олар Arduino-ге 100 мс-250 миль мөлшерінде бір байт деректерін ұйымдастырылған түрде жіберу керек.

  • Мен MQTT мен Pubsubclient-ті зерттедім, бірақ Arduino-ның брокерін құруға мүмкіндік таба алмадым және менің өтінімім үшін өте тиімсіз деп айтылды.
  • Мен NRF24L01-ге қарап шықтым, бірақ бұл деректерді ұйымдасқан түрде алу үшін тек 6 құбырмен шектеледі.
  • Xbee-ті зерттедім, бірақ деректердің жылдамдығына сәйкес келе алмайтындығын айтты.

Басқа ұсыныстар да бағаланады ... рахмет.

1
Сіз оны тек бір құбырды пайдалана отырып NRF24L01 көмегімен жасай аласыз. Сұрау пакетінде түйіннің нөмірін қосу арқылы деректердің әрбір түйініне белсенді түрде сұраныс жасау оңай болар еді, бірақ сіз оларды түйін нөмірімен сәйкестендіре аласыз, сәл әр түрлі немесе кездейсоқ аралығымен жібере аласыз және әрқайсысында оқу нөмірін қоюыңыз мүмкін пакетте де әр оқылымды бір-бірден көп жібере алады, сондықтан олар екі қабаттасып жатқан хабарларға қатысты кез-келген қақтығыстың болуын қамтамасыз етеді.
қосылды автор rossp, көзі
Крис, мұны істеу үшін Arduino кодының қандай да бір мысалы бар ма, әлде клиентті де, сервер жағын да көрсететін сілтеме көрсететін көрсеткіш бар ма еді? Бұл ең қарапайым шешім сияқты болуы мүмкін ... Менің түпнұсқалық постымда айтылғандай, әр сенсор тікелей ардуиноға сымды болып келеді. Рақмет сізге!
қосылды автор Ant's, көзі
Сіз жұмыс істеп жүрсіз бе? Мен 512 Гц деректер беру жылдамдығымен төрт сенсордан сымсыз деректерді қалай алуды іздеймін (әр сенсор үшін және бір мезгілде)? Рақмет сізге.
қосылды автор tarastar42, көзі

3 жауаптар

Мен nRF24L01 ұсынамын.

Сізге бір түйінге бір құбыр қажет емес - тек бір құбыр.

Әрбір құбыр түтікке жауап беретін адрес болып табылады - бірнеше түтіктер сізде бір түйінде бірнеше мекен-жай болуы мүмкін (бүркеншік секілді), бірақ әр түйінге бір мекен-жайды және сол арқылы бір түйіннің бір түйінін қажет етеді.

Ауқым жеткілікті емес (антенна нұсқасымен жүздеген метрді проблема туғыза алмадым), ал бағасы өте төмен емес.

2
қосылды

WiFi арқылы UDP пакетін жіберу оңай болуы мүмкін. Бұл «қосылыссыз» протокол үшін қосымша пакеттік төлемдер жоқ: OPEN, ешқандай ACK/NAK, CLOSE және т.б. жоқ. Қосымша байттар үшін қосымша шығындар өте аз, сондықтан 2 байтты немесе тіпті 100 байттар, ол өткізу қабілетіне қатты әсер етпейді.

Егер байтты «бумаға» шығара алсаңыз, бұл тіпті жақсы болар еді. Мысалы, әр түйінге 8 байт жібере аласыз ба? Егер болмаса, WiFi жылдамдығы бір байттық UDP пакетін көп кешіктірусіз өтуге мүмкіндік беруі керек. Ресивердің кешіктірілуінің қандай екенін білесіз бе? Желіге кіру уақытына байланысты (яғни ауаға қанша уақыт кететініне байланысты) пакеттермен бірге орташа кідірісін төмендетуге болады.

Ролл-сіздің өзіңіздің көзқарасыңыз, шикі радиожурналғы таратқышты/қабылдағышты VirtualWire сияқты нәрсемен пайдалану болып табылады. «Шеберлерден» тиісті синхрондау кезінде, құлдардың әрқайсысы өздерінің уақытша слоттары болуы мүмкін, ол соқтығысудан (желіге қол жеткізу уақытын төмендетеді)

1
қосылды
WIFI сіз мұны жасамас бұрын қол жетімді-нүкте түрін орнату туралы көптеген тізімді қосады. Мүмкін, оны қарастырудың негізі артықшылықтар болмайды (баламалармен салыстырғанда өте қолайсыз), бірақ ESP8266 тақтасының сенсорлық түйіндер ретінде дайын, арзан қолжетімділігі, онда плакат орналастырылатын Arduino стиліндегі бағдарламамен жұмыс істей алады. Ол сондай-ақ сенсорлық хаб ретінде жұмыс істей алады, ал қажет болған жағдайда AP - қолданыстағы Arduino компаниясымен бірге немесе оны алмастырады.
қосылды автор rossp, көзі

NRF24L01 пайдаланыңыз. Соқтығысуды болдырмау үшін датчиктерді сұрауға болады (Chris ұсынған пікірде). Орнату: Әр сенсордың бірегей мекен-жайы болады. Орталық блок сұрауды жібереді және сенсор түйіні оған жауап береді. Орталық бөлік әртүрлі мекен-жайға ие болады және барлық датчиктер осы мекен-жайға жібереді. Сондай-ақ, жауапты оралу үшін деректерді қолдануға болады.

  • Central node (Addr0) -> Sensor 1 (Addr1): Request
  • Sensor 1 (Addr1) -> Central node (Addr0): Response, sensor data
  • Central node (Addr0) -> Sensor 2 (Addr2): Request
  • Sensor 2 (Addr2) -> Central node (Addr0): Response, sensor data
  • Central node (Addr0) -> Sensor 3 (Addr3): Request
  • Sensor 3 (Addr3) -> Central node (Addr0): Response, sensor data
  • ...
1
қосылды
Шындығында бұл жерде болып жатқандардың бәрі бір-бірімен байланыс болып табылады, тек хабтың кез-келген түйінмен алмасуы бар. Сіз туралы ойлануыңыз керек нәрсе болса да, жауапты күтудің ұзақтығы, келесі түйінді сынап көрмес бұрын.
қосылды автор rossp, көзі
Уақыт өте көп болады, оны пайдаланудың ең жақсы стратегиясы қандай?
қосылды автор rossp, көзі
Барлығыңызға рахмет. Мен Arduino бағдарламалаумен ғана айналысамын. Мұны істеу үшін сілтеме немесе мысал бола ма? Мен тапқан барлық мысалдар тек бір-бірімен байланыс орнатады.
қосылды автор Ant's, көзі
Ахх ... түсіндім. Кешігу/күту уақытының қандай түрі тән бола алады? Мен тіпті 250 миладимдегі деректерімді қанағаттандыра аламын ба? Яғни, 250 мс-ге дейін барлық 12 сенсордан оқуға тура келеді
қосылды автор Ant's, көзі
Сенсорды қалай қосу керек? тікелей I2C арқылы nRF24L01 трансиверге, ал басқа трансивер микроконтроллера соңында? Әрбір соңында микроконтроллер қажет емес пе?
қосылды автор brianlmerritt, көзі