Skocz do zawartości

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


janiu

Pomocna odpowiedź

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.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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,

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.