Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję

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

Autor Wiadomość
janiu 



Posty: 15
Wysłany: 13-01-2018, 16:21   Przesyłanie danych z/do Arduino - Wi-Fi vs bluetooth

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.

Popularny artykuł » DJI Phantom 2 + gimbal + GoPro + FPV - Pierwsze wrażenia


Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 8506
Pomógł: 126 razy
Otrzymał 526 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 13-01-2018, 20:43   

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.


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
janiu 



Posty: 15
Wysłany: 14-01-2018, 12:13   

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?

Postaw piwo autorowi tego posta
 
 
Lukaszm 



Posty: 625
Pomógł: 27 razy
Otrzymał 29 piw(a)
Skąd: Warszawa
Programuję w:
C, C++, MATLAB
Wysłany: 14-01-2018, 13:01   

Cytat:
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)

Warto przeczytać » OpenCV - #2 - Wykrywanie obiektów


Postaw piwo autorowi tego posta
 
 
janiu 



Posty: 15
Wysłany: 14-01-2018, 13:22   

Lukaszm napisał/a:
Cytat:
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

Postaw piwo autorowi tego posta
 
 
Lukaszm 



Posty: 625
Pomógł: 27 razy
Otrzymał 29 piw(a)
Skąd: Warszawa
Programuję w:
C, C++, MATLAB
Wysłany: 14-01-2018, 14:09   

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.

Postaw piwo autorowi tego posta
 
 
Elvis 



Posty: 1729
Pomógł: 105 razy
Otrzymał 300 piw(a)
Skąd: wawa
Programuję w:
C, asm
Wysłany: 14-01-2018, 14:19   

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?

Postaw piwo autorowi tego posta
 
 
janiu 



Posty: 15
Wysłany: 14-01-2018, 23:48   

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?

Postaw piwo autorowi tego posta
 
 
Belferek 



Posty: 144
Pomógł: 5 razy
Otrzymał 9 piw(a)
Wysłany: 15-01-2018, 16:29   

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,

Ostatnio zmieniony przez Belferek 15-01-2018, 16:32, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
ethanak 




Posty: 380
Pomógł: 21 razy
Otrzymał 26 piw(a)
Programuję w:
C, C++
Wysłany: 15-01-2018, 18:14   

W kwestii formalnej: ESP8266 ma wifi, ale nie bt. BT ma dopiero ESP32.

Postaw piwo autorowi tego posta
 
 
Belferek 



Posty: 144
Pomógł: 5 razy
Otrzymał 9 piw(a)
Wysłany: 15-01-2018, 18:22   

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.

Ostatnio zmieniony przez Belferek 15-01-2018, 18:54, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Poszukuję kogoś z A... Atmega - problem z b... Arduino Mega pliki d... Arduino ATmega 328-k...
lub przeszukaj forum po wybranych tagach: arduino, bluetooth, danych, przesylanie, vs, wifi, zdo


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki