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ć.
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ć.