Skocz do zawartości

Przesyłanie danych z/do Arduino - Wi-Fi vs bluetooth


Pomocna odpowiedź

Napisano

Cześć,
mam pytanie do Was. Tworze właśnie pojazd który w czasie przejazdu musi wysyłać gdzieś do aplikacji dane odnośnie swojej lokalizacji i aktualne odczyty czujników(musi do być robione cały czas bez przerw).

Zastanawiam się czy lepiej do tego zadania użyć modułu Bluetooh czy Wi-fi?

Dodatkowo ta aplikacja/serwer będzie wykonywać jakieś operacje na tych danych.

janiu, ile tych danych będzie, jakie środowisko, jak daleko będzie jeździł od tego "serwera"? Najłatwiej będzie wykorzystać BT, wystarczy nawet tani moduł - możesz go podłączyć pod UART i wysyłać informacje bezprzewodowo. Wszystko zależy jednak od szczegółów projektu.

1) Chciałbym cały czas wysyłać odczyty z enkoderów i co sekunde wysyłać odczyty z jakiegoś jednego czujnika temperatury.

2) Własnie z tego co wyczytałem to max zasieg HC-05 to 10m, czy jest opcja w jakiś sposób zwiększyc ten zasieg - jakiś lepszy moduł albo lepsza antena?

3) Z BT jeszcze za bardzo sie nie bawiłem ale przy testach modulu WI-FI ESP8266 miałem duże problemy z niezawodnoscia - często przerywało lub wgl nie dało się sparować czy z modułem BT jest szansa ze będzie mniej takich problemów?

4) Nie potrafie znalezc w google materiałów/instrukcji w jaki sposób napisać aplikacje/serwer która cały czas będzie odbierać informacje z BT. Czy robił ktoś z Was już coś takiego i czy ma jakieś żródło z którego czerpał informacje?

4) Nie potrafie znalezc w google materiałów/instrukcji w jaki sposób napisać aplikacje/serwer która cały czas będzie odbierać informacje z BT. Czy robił ktoś z Was już coś takiego i czy ma jakieś żródło z którego czerpał informacje?

Jeżeli dane będziesz wysyłał (z mikrokontrolera) nie binarnie, ale w formie czytelnej dla człowieka, to możesz wyświetlać dane w aplikacji przeznaczonej właśnie do wyświetlania danych przesyłanych przez port szeregowy (np. TeraTerm) (interfejs BT przy odpowiednim ustawieniu na komputerze jest widoczny jako port szeregowy)

4) Nie potrafie znalezc w google materiałów/instrukcji w jaki sposób napisać aplikacje/serwer która cały czas będzie odbierać informacje z BT. Czy robił ktoś z Was już coś takiego i czy ma jakieś żródło z którego czerpał informacje?

Jeżeli dane będziesz wysyłał (z mikrokontrolera) nie binarnie, ale w formie czytelnej dla człowieka, to możesz wyświetlać dane w aplikacji przeznaczonej właśnie do wyświetlania danych przesyłanych przez port szeregowy (np. TeraTerm) (interfejs BT przy odpowiednim ustawieniu na komputerze jest widoczny jako port szeregowy)

Tylko że ja potrzebuje zrobić jeszcze sporo operacji na tych danych, dlatego potrzebuje w jakiś sposób dostać te dane i w odpowiedni sposób je przeanalizowac więc samo wyświetlenie w kosnoli mi nie wiele da

Ja w takiej sytuacji rozważyłbym zastosowanie Qt (jest w nim klasa QSerialPort), ale pisanie wszystkiego ręcznie (i np. wykrywanie zgubionego bajtu) może być czasochłonne.

Możesz rozważyć zastosowanie ROSa. Na start dostajesz już rozwiązany problem pakowania/rozpakowywania danych (protokół rosserial) + w gratisie masz wyświetlanie danych na wykresach (np. rqt_plot), rejestrowanie ich i inne tego typu rzeczy.

janiu, w czym przeszkadza Ci format tekstowy? Skoro możesz dane odebrać przez TeraTerm to równie dobrze możesz je odebrać programem do analizy danych. Format tekstowy wiele spraw ułatwia, zaczynając od testowania, a kończąc na specjalnym traktowaniu niektórych znaków przez niektóre programy lub biblioteki. Ceną za te ułatwienia jest wolniejszy transfer, albo raczej większa ilość danych do przesłania. Jednak czytając Twoje pytania proponowałbym zacząć od formatu tekstowego, a dopiero jak uznasz że jest za mało wydajny przejść na binarny. W obu przypadkach musisz wiedzieć jak dane odebrać i co z nimi zrobić, więc może zacznij od tego?

Dzięki wielkie, jakoś to mysle ogarnę a czy ktos mogłby jeszcze mi pomóc z reszta spraw:

1) Chciałbym cały czas wysyłać odczyty z enkoderów i co sekunde wysyłać odczyty z jakiegoś jednego czujnika temperatury.

2) Własnie z tego co wyczytałem to max zasieg HC-05 to 10m, czy jest opcja w jakiś sposób zwiększyc ten zasieg - jakiś lepszy moduł albo lepsza antena?

3) Z BT jeszcze za bardzo sie nie bawiłem ale przy testach modulu WI-FI ESP8266 miałem duże problemy z niezawodnoscia - często przerywało lub wgl nie dało się sparować czy z modułem BT jest szansa ze będzie mniej takich problemów?

Ja tu widzę wiele problemów lecz dwa moim zdaniem najważniejsze:

1. Jak się komunikować?

2. Jak przetworzyć otrzymane dane?

Jeśli chodzi o pkt. pierwszy to wybór BT lub WiFi jest naturalnym wyborem. Tutaj niestety dotykają nas problemy zasięgu. Na zasięg ma wpływ wiele czynników poczynając od wykorzystywanego pasma (kanału), obecności zakłóceń (np. inne sieci WiFi), lokalizacji Access Pointa, przeszkody na drodze sygnału itp. Generalnie BT i WiFi (poza stanadardami 5GHz) pracują na 2,4GHz więc problemy są podobne - im większa częstotliwość tym generalnie zasięg mniejszy. Nie mniej na potrzeby "rozruchu" ja bym został przy np. WiFi. Byłoby to wygodne gdyż sieć LAN daje Ci dwa dobrze Ci pewnie znane narzędzia protokół TCP (niezawodny lecz wolniejszy) lub UDP (szybszy lecz nie gwarantuje poprawności transmisji). Piszesz o ESP8266 a ten moduł umożliwia komunikację za pomocą obydwu wspomnianych protokołów.

Jeśli chodzi o odbiór i przetworzenie danych to i tu masz wiele możliwości zależnie od Twoich umiejętności programistycznych. Możesz napisać swój program korzystający z tzw. socketów, który dane będzie odbierał, możesz użyć gotowych aplikacji lub wykorzystać np. serwer HTTP. W Linuxie jest to jeden z podstawowych serwerów i znajdziesz ich wiele, Apache, lighttpd.....W Windows także zainstalujesz XAMPA, który nie tylko oferuje Ci Apacha, ale także bazę danych MySQL ( z narzędziem do administracji phpMySQLAdmin) no i PHP. Za pomocą PHP w łatwy sposób przetworzysz odebrane dane, zapiszesz do bazy i zwizualizujesz za pomocą strony WWW. Do tego to właściwie musisz znać tylko metody POST i GET protokołu HTTP + podstawy HTML.

Problemy z zasięgiem, zrywaniem połączeń itp. możesz starać się zminimalizować na drodze programowej np. w ESP8266.

Pozdrawiam,

Tak pomyliłem się, a w zasadzie wypowiedziałem się mało precyzyjnie. Pisząc, że ESP8266 wspiera obydwa protokoły miałem oczywiście na myśli UDP i TCP. . Jak mówiłem (pisałem) na początek wykorzystałbym WiFi., ale BT to także 2,4GHz.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...