Pracuję nad projektem opartym na komunikacji bezprzewodowej i szukam najlepszej alternatywy. Są to wymagania projektowe:
- Jest łatwy w obsłudze z Arduino
- Działa w małym zasięgu (najwyżej 5-6 metrów)
- Zużywa mało energii - najmniej możliwej
- Urządzenia nie mogą kolidować ze sobą
- Nie musi być w czasie rzeczywistym, opóźnienie może być rzędu setek milisekund
- Ogólnie rzecz biorąc, urządzenia nie są w zasięgu wzroku (co oznacza, że IR i podobne rozwiązania nie będą działać)
Scenariusz jest następujący:
Około 10 urządzeń w tym samym pokoju, komunikujących się ze sobą, wysyłających od czasu do czasu krótkie (maksymalnie 30 znaków) wiadomości przez kilka godzin (bez wymiany baterii).
Najlepsze, co mogłem znaleźć, to Bluetooth (szczególnie BLE), głównie dlatego, że istnieje kilka gotowych modułów Arduino + Bluetooth i obiecująca etykieta „Low Energy” (co najwyżej połowa zużycia energii przez normalny Bluetooth), ale Uwielbiam otrzymywać opinie od osób z większym doświadczeniem w tej dziedzinie.
Odpowiedzi:
Spójrz na linię transceiverów XBee . Istnieją różne typy w zależności od zasięgu transmisji i żądanej mocy znamionowej.
Urządzenia te łączą się również z projektami Arduino prawie trywialnie. Te
Serial
marki biblioteczne używać sprzętu UART AVR, który jest bezpośrednio kompatybilny z pin Rx z XBee. Należy również pamiętać, że nie są potrzebne przełączniki poziomu, ponieważ styk XBee Rx / Tx działa z napięciem 5 V.Należy jednak pamiętać , że XBee musi być zasilany napięciem 3,3 V, dlatego można zastosować prosty regulator napięcia LDO 3,3 V.
źródło
„Najlepsze” jest trudne do zdefiniowania, ale przyjrzałbym się urządzeniu nadawczo-odbiorczemu IEEE 802.15.4.
Użyłem MRF24J40MA do projektu ( https://github.com/briksoftware/gradusnik ). Możesz spróbować sprawdzić, czy jest tam jakiś kod, którego możesz użyć. Projekt dotyczy PIC, ale wiele rzeczy jest w rzeczywistości niezależnych od platformy (szczególnie inne projekty, od których to zależy).
Moduł zużywa około 20mA w rx / tx, czyli niewiele. Jednak, aby uzyskać długi czas pracy baterii, musisz przełączyć moduł w tryb uśpienia przez większość czasu. W tym celu można użyć sieci z włączoną sygnalizacją, przy czym jedno urządzenie działa jako koordynator. Moduł zużywa trochę µA w trybie uśpienia (sprawdź dokładne dane w arkuszu danych)
Jedynym problemem związanym z interfejsem Arduino jest to, że potrzebujesz przekładni poziomu 5-> 3.3 (jeśli Arduino nadal używa napięcia 5v).
Innym popularnym transceiverem dla protokołu IEEE 802.15.4 jest moduł XBee, ale jest znacznie droższy.
źródło
Nie uważam tego za problem z siecią bezprzewodową, ale raczej za problem z protokołem.
Jeśli nazwą gry jest oszczędzanie baterii i jeśli jedno urządzenie może, poprzez odpowiednie programowanie, przyjąć rolę tymczasowego „mistrza”, wówczas każdemu urządzeniu można przypisać szczelinę czasową. Po dokonaniu alokacji tymczasowy element nadrzędny może powrócić do roli elementu równorzędnego, ale ważne jest to, że utworzono strukturę przedziałów czasowych i wszyscy partnerzy dokonali zakupu w tej strukturze.
Co to robi? Posiadanie szczeliny czasowej oznacza, że możesz wyłączyć radio na setki milisekund i obudzić się, aby sprawdzić, czy trwa transmisja przeznaczona do odbioru. Kiedy peer się budzi, musi poczekać, aby sprawdzić, czy któryś z pozostałych 8 peerów wysyła do niego wiadomość. Czas ma kluczowe znaczenie, ale jeśli chcesz mieć długi czas pracy baterii, skoncentruj się na protokole. Ta odpowiedź to tylko pomysł. Przedział czasowy budzenia zostanie podzielony na 8 innych szczelin, które każdy z pozostałych 8 elementów równorzędnych jest przydzielony do transmisji, a jeśli jeden transmituje, inni mogą najpierw posłuchać, aby sprawdzić, czy mogą transmitować. Coś takiego: -
„Następny” slot pozwala nowym członkom dołączyć do grupy.
Nadajniki-odbiorniki o niskiej mocy są powszechnym miejscem, więc nie zamierzam się tym zajmować.
źródło
Wypróbuj tanie moduły TXRX 433 MHz. przydają się i można je łatwo łączyć z arduino. Używam ich do moich osobistych hobby robotyki.
źródło
Ciekawe, dlaczego nie wspomniano o bezprzewodowym module nadawczo-odbiorczym NRF24L01 2,4 GHz? Jest to jednostka o niskiej mocy, którą można przełączyć w tryb gotowości, aby uzyskać jeszcze niższy pobór. Działa przy napięciu 3,3 V, więc można użyć albo arduino o niskiej mocy, albo rozdzielacza, a co najważniejsze, jest dość tanie?
Oto strona produktu nRF24L01 + wraz z instrukcją nRF24L01 zawierającą informacje na temat łączenia jednego z Arduino wraz z przykładowym kodem.
źródło
RFM12B przychodzi na myśl ...
http://www.hoperf.com/rf/fsk_module/RFM12B.htm
Niektóre funkcje:
Interfejs komunikacyjny SPI powinien być sprawiedliwie skonfigurowany z Arduino.
Model RFM12B-S2 sprzedaje się obecnie za mniej niż 7 USD.
źródło