logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega168 + BTM222 + Windows7

ljmp 21 Lut 2011 20:16 2679 13
REKLAMA
  • #1 9184321
    ljmp
    Poziom 14  
    Witam szanownych forumowiczów.

    Temat pracy z modułami BTM był wałkowany setki razy ale nigdy nie natrafiłem na opinie dotyczące osiąganych prędkości i niezawodności transmisji. Otóż chcialbym wypowiedzieć się w tym temacie. Zrobiłem układ testujący prostą komunikację uC ATmegi168 z programem napisanym w Visual C++, na systemie operacyjnym Windows7, poprzez Bluetooth, za pomocą BTM222, i testowałem jakie faktycznie prędkości można z tego uzyskać. Niestety po zakończonych testach moje uczucia co do tego modułu pozostają mieszane.

    Program na mikrokontroler miał za zadanie wysłać 1000000 bajtów z jakąś zadaną prędkością, a program na komputer miał je odbierać i zliczać ich ilość. Zacząłęm od niskich prędkosci, rzędu 9600b/s i ku mojemu zdziwieniu komputer zaczął gubić bajty, zwiększenie buforu dla portu COM rozwiązało ten problem. Można z tego wywnioskować że Windows nie przykłada zbytniej uwagi do obsługi urządzeń Bluetooth. I tak do prędkości 38400b/s nie napotkałem żadnych więcej komplikacji. Dalsze zwiększanie prędkości wiązało się z utratą ogromnej ilości danych oraz z dużymi opóźnieniami w odpowiedzi, przy prędkości 57600bitów/sek. komputer potrafił odebrać zaledwie 90% wysłanych danych, natomiast przy prostych testach wysłania 10000bajtów z mikroprocesora odebranie zajmowało 2-3sek., co wydaje się absurdalne bo podczas odbierania widziałem jak licznik zlicza i co jakiś czas zatrzymuje się na chilę a potem dalej liczy podczas gdy mikroprocesor już dużo dużo wcześniej zdążył wysłać cały pakiet. Testy z prędkością 115200bitów/sek. wypadły jeszcze gorzej, komputer potrafił odebrać zaledwie 55-60% wysłanych danych z pakietu miliona bajtów. Natomiast jeżeli zdecydowałem się wysyłać paczki po 1000B co kilka ms odbierał bez problemu. Testy wyższych prędkości były niemożliwe bo o ile producent deklaruje możliwość pracy z prędkością 460800bitów/sek. o tyle próba otworzenia wirtualnego portu w windowise z prędkością wyższą niż 115200bitów/sek. kończy się niepowodzeniem.

    Dla ścisłości przeprowadzałem takie same testy z przejściówką USB na FT232RL i przy prędkości 1,25Mbitów/sek. i wysyłanych pakietach 1000000bajtów, i nie zgubił ani jednego bajtu, także nie można winić za to programu, który napisałem w Visualu (limit 1,25MBit/sek wynikał z zastosowanego kwarcu 20MHz).

    Moja opinia o BTM222 jest taka że jest to dobre urządzenie do pracy gdzie nie jest wymagana duża ilość danych do przesyłania oraz gdzie są dopuszczalne duże opóźnienia w transmisji. Najprawdopodobniej problemy z gubionymi danymi nie tkwiąw samym module BTM tylko w systemie operacyjnym, który nie oddaje dużych zasobów urządzeniom Bluetooth, widać to było po zapełniającym się buforze podczas gdy licznik danych stał w miejscu.

    Ciekawi mnie czy ktoś z was robił podobne testy i czy napotkałtakie problemy oraz czy udało się mu je rozwiązać.
  • REKLAMA
  • #2 9186481
    mirekk36
    Poziom 42  
    Tak, 90% moich projektów które wykonuję w oparciu o moduły BTM-222 (a samych modułów tego typu przeszło już kilkaset prze moje łapki i dalej do klientów) są całkowitym zaprzeczeniem tego co tutaj kolega wypisuje.

    Nie będę już używał słowa, że to są wręcz bzdury - bo może kolega jest początkującym programistą/elektronikiem i stąd takie dziwaczne wnioski.

    Bardzo często u początkujących winę za ich niepowodzenia ponoszą najszybciej a to mikrokontrolery, które producent źle wykonał, a to fabryka, która wypuściła uszkodzone buble, a to moduły, które są gorszej jakości, a to .... to, a to siamto.... a to owamto.

    A na dowód swoich tez najczęściej właśnie stawiają takie porównania jak ty robisz , że skoro coś działa z czymś innym a z tym nie działa - no to chyba jasne że mój program jest OK ;) ..... sorki ale masakryczne podejście.

    Ja najczęściej wykorzystuję osobiście prędkość 115200 gdy korzystam z modulików BTM-222 (albo BTM-112). Gubienie danych w windows ????? toż to jakieś kuriozalne określenie i nieporozumienie genetyczne. ;) Windows nie ma z tym nic wspólnego - no chyba że jest już aż tak zrąbany ;)

    Owszem wiadomym jest , że modułu BTM wykorzystują przesyłanie pakietowe (ale jest to robione w tle i programista nie musi się o to martwić) jedyną niedogodnością jest to, że transmisja jest dla takiej samej ilości danych przez BTM w porównaniu do kabla nieco wolniejsza szczególnie przy większych prędkościach 115200 bo są małe przerwy między pakietami.

    Tylko żebyś zaraz nie wysnuł z tego wniosku, że ta pakietowość powoduje jakieś błędy ;) bo jak pisałem to działa w tle na drodze radiowej BT.

    Teraz powiem ci ważną rzecz i pewien przykład zastosowania, który w przypadku występowania takich dziwolągowatych błędów, całkowicie dyskfalifikowałby takie zastosowanie.

    Otóż w 90% przypadków używam BTM-a do np podmiany wsadu/firmware w prockach w swoich urządzeniach u klientów. Zawsze mam to ustawione na 115200 ;) ..... co więcej , z tego powodu, że transmisja ZAWSZE jest BEZBŁĘDNA to nawet nie muszę stosować jakiegoś własnego sprawdzania ramek czy sum kontrolnych ;)

    Chcesz to sprawdzić? to proszę masz taką możliwość, zassaj sobie program MkBootloader ze stronki:

    http://atnel.pl/oprogramowanie-pc/mkbootloader

    i przetestuj jego działanie ..... i podaj mi przykłady kiedy nie zadziała z BT albo kiedy będą przerwane transmisje, albo kiedy będzie źle załadowany wsad, kiedy urządzenie nie wystartuje po załadowaniu wsadu itp. (jeśli u ciebie jak piszesz "Windows gubi" coś tam - to szybko musisz nauczyć się co to znaczy programowanie w oparciu o wielowątkowość, co to są priorytety czasowe dla aplikacji i innych wątków - może wtedy zrozumiesz skąd biorą ci się takie zjawiska, i że są całkiem normalne - tylko trzeba wiedzieć jak pisać soft na PC)

    Dzięki temu jeszcze, że nie muszę sam sprawdzać dodatkowo programowo transmisji bo jest ona tak PEWNA !!! to sam kod Bootloadera w procku mógł osiągnąć tak minimalne rozmiary jak 256słów !!!

    TYLKO !!!! ..... pamiętaj, że:

    1. musisz mieć podłączoną antenkę do BTM'a
    2. jeśli chcesz działać na odlegościach większych niż 10m ale mniejszyc niż kilkadziesiąt metrów to musisz użyć zarówno BTM-222 ale także przejściówki USB/BT która ma możliwość pracy na odległość większą niż 10m (czyli taką do 100m)!!!!
    3. antena - jeśli jest samoróbką (kawałek drucika) a ja takie tylko stosuję musi być wyliczona a nie dobrany jakiś tam kawałek drucika na oko. MUSI ona być 1/4 wave czyli mieć długość 3cm w takim przypadku (ale wcześniej działało mi także 1/2 wave czyli 6cm) Jak to obliczać ???? na tej stronce którą podałem masz prosty programik do zassania za free , który ci na to pozwoli
    4. jeśli stosujesz fabrycznie produkowane antenki - to sprawdź czy wszystko z nimi jest dobrze.

    Bo jeśli chcesz komunikacji przez BT na jakieś duuuuuże odległości to zapomnij o BT i spróbuj używać innych modułów radiowych, BT nie jest po to żeby bić rekordy odległości. To ma hmmmm MUSI działać stabilnie w określonych warunkach. Poczytaj sobie o standardzie CLASS1/CLASS2.

    Nie będę już wspominał o szeregu innych zastosowań BT w moich urządzeniach łącznie z komunikacją z komputerem PC. NIGDY w życiu nie przychyliłbym się ani w 0.1% do tych "rewelacji", które opisałeś.

    I nie mów, że na elektrodzie nie było na ten temat pisane. Bo ja osobiście w wielu wątkach pisałem i często odpowiadałem ludziom na takie pytania i problemy. Zawsze się okazywało, że po napisaniu poprawnie oprogramowania zaczynało wszystko działać

    hmmmmm...... to tyle ;)
  • #3 9189707
    ljmp
    Poziom 14  
    Kolego mirekk36.

    Zanim zaczniesz zganiać na brak wiedzy w dziedzinie i tym podobne rzeczy najpierw dokładnie przeczytaj post bo odpowiedziałeśna zupełnie inne pytanie niż było postawione.

    Moje problemy wiązały się z odbieraniem danych przez komputer, natomiast wgrywanie danych przez bootloader to jest wysyłanie danych, z czym w opisywanej aplikacji nie miałem najmniejszego problemu.

    Problem rozwiązałem i okazało się, że przyczyną był... włączony moduł Wi-Fi który "gryzł" się z Bluetooth. Po wyłaczeniu Wi-Fi nie miałem najmniejszych problemów z pracąnawet na najwyższych prędkościach.

    Trudno teraz stwierdzić czy "gryzienie się" Wi-Fi i Bluetooth występuje na płaszczyźnie komunikacji radiowej, czy teżna przydzielaniu zasobów sprzętowych przez windows (Wi-Fi i BT zintegrowane na jednej karcie).

    A swoja drogą dziwi mnie że Tobie jako tak doświadczonemu użytkownikowi modułów BTM (w końcu setki projektów) nie pojawiły się wcześniej takie problemy.

    /zdravim
  • #4 9189927
    hotdog
    Poziom 26  
    Ogólnie moim zdaniem moduł jest Ok, nie ma z nim problemu. W prawdzie osobiście wykorzystałem go w 3 projektach, łącznie w ilości około 50 sztuk.

    Żaden z modułów nie działał nie poprawnie przy włączonym wi-fi (a jest ono de facto cały czas włączone). Przez moduł aktualizowałem soft z CRC przy 115200 i nie było problemu.

    Natomiast na początku jak się nimi bawiłem udało mi się 2 uwalić. Jeden z nich miał bardzo mały zasięg (około 30 cm), więc może Twój też jest uszkodzony...

    Więc taki Hint - sprawdź z innym modułem...
  • REKLAMA
  • #5 9190004
    mirekk36
    Poziom 42  
    Ty mnie źle zrozumiałeś, nie zarzucam ci żadnego braku wiedzy bo cię nie znam, chyba przewrażliwiony jesteś.

    Za to nigdy nie ukrywam, tego że drażni mnie to, gdy ktoś kto programuje obojętnie na jakim poziomie wiedzy - zwala winę na sprzęt. I proszę - zgodnie z tym co napisałem okazało się co sam przyznajesz że nie jest jednak winny BTM-222

    Co cię dziwi z tym, że mnie nic się nie zdażyło takiego z BTM'em ???? A czemu miało się zdarzyć? Czy skoro tobie się zdarzyło to i wszystkim zaraz musi? znowy wysnuwasz zbyt daleko idące wnioski.

    Nie będę mówił że to nie mogło mieć wpływu bo ani nie siedzę u ciebie w kompie itp i może masz rację. Ja za to na co dzień wręcz używam transmisji BT w sąsiedztwie Wi-Fi (routery, karty sieciowe itp) .... jeszcze ani razu nie zdażyło mi się żeby to się gryzło. ..... co nie oznacza jeszcze raz powtarzam, że nie miało prawa się u ciebie zdażyć.

    Poza tym sam przeczytaj sobie uważnie co napisałeś wyżej:
    ljmp napisał:

    Moja opinia o BTM222 jest taka że jest to dobre urządzenie do pracy gdzie nie jest wymagana duża ilość danych do przesyłania oraz gdzie są dopuszczalne duże opóźnienia w transmisji. Najprawdopodobniej problemy z gubionymi danymi nie tkwiąw samym module BTM tylko w systemie operacyjnym, który nie oddaje dużych zasobów urządzeniom Bluetooth, widać to było po zapełniającym się buforze podczas gdy licznik danych stał w miejscu..


    Czyli z jednej strony jedziesz równo po biednych BTM'kach ;) że niby takie są BE, a z drugiej strony (no sorry) ale wypisujesz hmmm żeby delikatnie powiedzieć bzdurki na temat systemu, który rzekomo nie oddaje dużych zasobów urządzeniom BT. No i jak na takiej podstawie nie oceniać kogoś jako początkującego programistę na PC ??? Bez urazy - bo to że ktoś jest początkujący nie jest chyba obraźliwe prawda ?

    A odnośnie zakłóceń BTM'a swojego to nawet nie raczyłeś napisać jaką masz antenę do niego i dalej brniesz w kolejne teorie właśnie o Wi-Fi leką ręką.

    Ja zauważyłem w takim użytkowaniu zakłócenia gdy jednocześnie na platwofmie robocika używałem i BTM-222 oraz kamerkę na 2,4GHz. Tyle że zakłócenia to były w przekazie obrazu z kamerki bo BTM-222 tzn transmisja z nim działała jak brzytwa bez żadnych zakłóceń.

    Zanim więc ty zaczniesz się obrażać i mówić że nie piszę na temat to jednak postaraj się spokojnie podyskutować. Jeśli chcesz to służę radą w ramach mojego doświadczenia z BTM'ami nie ma problemu.
  • REKLAMA
  • #6 9190245
    ljmp
    Poziom 14  
    Aktualnie posiadam 3cm kawałek drutu zgodnie z zaleceniami z wcześniejszego postu ale próbowałem z drutami o różnej długości (6 i 12cm), w każdym bądź razie nie mam żadnej oryginalnej anteny na wypróbowanie.

    Dodano po 3 [minuty]:

    Dodam tylko że z zasięgiem nie ma problemu, próbowałem do 10m i działa tak samo jak przy notebooku.
  • #7 9190326
    mirekk36
    Poziom 42  
    No ok to jak do 10m to te 3cm powinny spokojnie wystarczyć, ja testowałem na takiej antence nawet ok 15-20m i to po drodze z dwoma ścianami betonowymi ;) .... nadal ładnie śmigało. Dodam, że w pomieszczeniu gdzie był komputer z którym się łączyłem stał router Wi-Fi.

    Czy mam rozumieć, że jak znowu włączasz WiFi w lapku i jednocześnie BT to znowu masz problemy z transmisją ? czy tam tylko odbiorem danych?
  • #8 9190387
    ljmp
    Poziom 14  
    Tylko z odbiorem danych przez komputer, więc sądze że to nie będzie problem interferencji radiowych bo jeśli by był to z wysyłaniem też byłby problem. Myślę że może to być coś z obsługą karty sieciowej przez system, w końcu Wi-Fi i Bluetooth mam zintegrowane, może system nie przydziela dużych zasobów dla BT, sam nie wiem.
  • #9 9190399
    mirekk36
    Poziom 42  
    Spróbuj odebrać sobie dane przez jakiś terminal czy inny tego typu program i wtedy sprawdź. Bo Bluetooth to raczej albo działa albo nie działa. Nie ma stanów pośrednich, że np gubi dane lub błędnie je przesyła. Transmisja powinna co najwyżej się totalnie spowolnić albo przerwać a nie powodować stratę danych.

    Jak to zrobisz jakimś terminalem (np pobieranie danych do pliku) to potem sobie go przejrzysz i sprawdzisz czy tym razem się coś pogubiło. Jeśli nie to jednak będziesz musiał pogrzebać w swojej aplikacji.
  • #10 9190700
    hotdog
    Poziom 26  
    Być może rzeczywiście Wi-Fi tutaj zakłóca fizycznie sygnał, spróbuj dodać jakieś odstępy między danymi. Zrób sobie badania, w taki sposób, że wysyłasz np 1k (lub mniej) danych ciągiem i robisz kilka ms przerwy. Zobaczy czy się to poprawia i przy ilu ms Masz pewna, bezbłędną transmisję.

    Wysyłasz prawie jednego MB ciągiem, zapewne bez żadnych odstępów. W sumie przy wysłaniu tylu danych ciągiem, być może BTM, nie nadąża retramsitować pakietów, do których nie dostał ACK, a tutaj następne dane nadchodzą i buforek się kończy.

    BT i Wi-Fi działają w tym samym paśmie 2.4GHz, mimo to każde urządzenie ma swoje kanały o jakiejś tam szerekości. Wiem że w Wi-Fi możesz sobie zmienić kanal, nie wiem czy BTM (i ogólnie standard BT) na to pozwala, ale po pokombinowaniu tutaj też może się dużo poprawić.

    Pozdrawiam
  • REKLAMA
  • #11 9191372
    ljmp
    Poziom 14  
    Próbowałem już wcześniej tak jak kolega hotdog powiedział i faktycznie poprawiło się przy wysyłaniu paczkami w odstępach czasowych. Ale gdybym miałstosować takie rozwiązanie to lepiej ustawić prędkość na 38400b/s i wysyłać ciągiem, bo z taką prędkościąnie mam problemów, a wyjdzie szybciej niż wysyłanie paczkami.

    A co do tego że wyzyłam 1000000B ciągiem, faktyczie bez odstępów, to teoretycznie nie powinno sprawić problemów z buforem, gdyż bufor ustawiłem na 1000000B, więc nawet gdyby program się nie wyrabiał z odbiorem danych to zawsze jest bufor. Miałem także zrobiony pogdląd zarówno ilości odebranych danych jak i użycia buforu i użycie buforu nie jest zbyt duże, widać jak się zapełnia i co 100ms program odczytuje bufor, ale sątakie momenty, że bufor jest odczytany na 0 i ani bufor anie licznik odebranych danych się nie zmieniają.
  • #12 9191562
    hotdog
    Poziom 26  
    buforów po drodze jest kilka. Ja piszę o tym buforze w BT na który nie masz wpływu, a kolega o tym w sterownikach Windowsowych. BT wysyła dane paczkami co za tym idzie buforuje je w swojej pamięci (paczki i dane). Gdy nowe dane nadchodzą, a te które są obecnie w pamięci nie zostały jeszcze potwierdzone jako odebrane, bufor się zapełnia coraz bardziej, aż w końcu BT musi je dump'ować.
  • #13 9192965
    ljmp
    Poziom 14  
    A więc problem całkowicie rozwiązany. Przyczyna jest wręcz niewiarygodna bo należało ustawić odpowiednią konfigurację karty Wi-Fi. W opcjach menedżera urządzeń w module Wi-Fi jest taka zakładka: Bluetooth Collaboration i jako wartość należało ustawić: Disabled.

    A na dodatek powiem że udało mi się nawet pracować na najwyższej możliwej prędkości BT222 czyli 460,8kbps bez żadnego problemu, z modułem wystawionym trzy pokoje dalej i 3cm antenką z drutu telefonicznego :D.

    W tym momencie należy się zwrot honoru dla modułu BTM222 za to że podejrzewałem iż te problemy wynikają z jego winy. Sam moduł pracuje bez najmniejszych zastrzeżeń przy każdej możliwej prędkości do zasięgu ok 10m., bo dalej już nie testowałem, w trybie slave.

    /pozdraviam
  • #14 9193007
    mirekk36
    Poziom 42  
    ljmp napisał:

    W tym momencie należy się zwrot honoru dla modułu BTM222


    No to ja się z takiego obrotu sprawy bardzo cieszę

    ljmp napisał:
    za to że podejrzewałem iż te problemy wynikają z jego winy. Sam moduł pracuje bez najmniejszych zastrzeżeń przy każdej możliwej prędkości do zasięgu ok 10m., bo dalej już nie testowałem, w trybie slave.


    Dodam tylko, że ta 3cm to bardzo dobra antenka ponieważ ma prawidłowe dopasowanie i wbrew pozorom (zresztą jak widać na najnowszych testach kolegi) wcale nie trzeba kupować tych specjalizowanych antenek ;)
REKLAMA