Witam,
Mnóstwo ludzi ma problemy z uruchomieniem i wykorzystaniem zakupionych modułów BlueTooth z serii BTM-222 , BTM-112 ale podobnie sprawa ma się zapewne z BTM-330/730
Postanowiłem w kilku punktach podać kilka faktów oraz rozwiać niektóre mity, które krążą wśród wielu amatorów tychże modułów.
FAKTY:
1. Przykładowe sposoby podłączania takich modułów prezentuję w tym temacie:
https://www.elektroda.pl/rtvforum/topic1414894.html
(moduły te działają na żywo i zawsze bardzo dobrze się sprawdzają) Zastosowałem od razu konwersję napięć - dzięki czemu można je używać bez problemu w swoich systemach uC zasilanych z +5V
2. Moduły umożliwiają bezproblemową pracę jeśli chodzi o przesyłanie danych RS232 - jednak do dyspozycji są tylko i wyłącznie sygnały Rx oraz Tx (pomimo to, że w dataszecie widać iż są także RTS i CTS. Niestety te dwa piny są w żaden sposób nieaktywne i łączenie ich ze sobą czy też próby ich wykorzystania zawsze spełzną na niczym - nic nie dadzą. Można więc sobie wszelkie próby ich wykorzystania podarować)
3. Moduły potrafią na 100% pracować z każdą z prędkości od najniższej 4800 do 115200 (wyższych nie testowałem więc się nie wypowiadam - ale podejrzewam, że też nie ma problemów)
4. Niestety, ponieważ transmisja odbywa się za pomocą przesyłania pakietów danych, to występują pewne minimalne opóźnienia w związku z czym np łatwo dostrzec, iż próba przesłania np 1000 bajtów po zwykłym kablu z prędkością 115200 odbędzie się jeśli chodzi o łączny czas nieco szybciej niż gdy przesyłamy przez moduły. Sprawdzałem to podczas użytkowania swojego Bootloadera dla procków AVR
https://www.elektroda.pl/rtvforum/topic1343484.html
który umożliwia transmisję wsadu do uC także drogą radiową poprzez takie moduły . Pomimo lekkiego spowolnienia - i tak całość spełnia wszystkie oczekiwania - gdyż pozbywamy się uciążliwych kabli
5. Moduły można wykorzystać zarówno w trybie SLAVE jak i MASTER bez żadnych problemów. Na pewno obydwa tryby działają!
6. Aby wykorzystywać moduły najlepiej dokonać jeden raz ich konfiguracji podłączając je do jakiegoś portu COM w PC (oczywiście trzeba sobie dopasować sygnały a jeśli korzystamy z przejściówki np USB/RS232 na FTDI - to od razu możemy podłączać Rx i Tx)
Zamiast "bawić" się w próby ustawiania ich parametrów za każdym razem gdy włączamy swoje urządzenie. Niektórzy walczą z tym jak z wiatrakami - niepotrzenie. Gdy raz dokona się konfiguracji - zostaje ona zapamiętana w module na amen.
7. Polecam w pierwszych krokach konfigurowania takiego modułu - poza oczywiście ustaleniem takich podstawowych parametrów pracy jak prędkość (domyślna jest 19200) czy rodzaj ramki itp - ustawić odpowiednio ECHO - tzn - wyłączyć je poleceniem ATE0 . Dlaczego ???? jest wyraźny związek pomiędzy czasem jaki potrzeba na dokonywanie przerw pomiędzy wysyłaniem poszczególnych znaków poleceń typu AT do modułu - jeśli są one potrzebne koniecznie.
8. Polecenia AT do modułu - zwykle są potrzebne tylko gdy pracuje on w trybie MASTER - wtedy też aby nawiązać połączenie trzeba wysłać komendę ATA, lub gdy trzeba sprawdzić urządzenia SLAVE w pobliżu itp itp
9. Rzeczywiście wysyłanie poleceń typu AT do tych modułów trzeba odpowiednio zorganizować. To znaczy - trzeba najlepiej napisać sobie swoją funkcję/procedurę, która będzie je wysyłać w ten sposób, że pomiędzy wysłaniem każdego znaku zrobi małą przerwę czasową. Jakie muszą być te przerwy???? tu kłania się właśnie wyłączenie ECHA o czym była mowa powyżej w pkt.7. Otóż gdy ECHO jest wyłączone to przerwy pomiędzy wysyłanymi znakami do modułu muszą wynosić minimalnie 4-5ms. Ale jeśli używa się ECHA (bo z jakichś powodów ktoś uznaje to za konieczne) to wtedy ten czas przerwy pomiędzy wysyłaniem kolejnych znaków musi już być minimalnie ok 25ms !!!
przykładowo - chcemy wysłać polecenie ATI , które w odpowiedzi poda nam wersję firmware (zaprezentuje urządzenie). W uproszczeniu trzeba to zrobić tak:
a. gdy ECHO włączone:
powyżej - nie jest to przykład w żadnym konkretnym języku - więc trzeba go sobie dostosować wg potrzeb. Np pierwszą linię w BASCOMIE trzeba by było napisać PRINT "A", drugą linię Waitms 25 a ostatnią PRINT Chr(13);
a w języku C każdy chyba sobie z tym poradzi?
w odpowiedzi przy włączonym ECHO otrzymamy
b. gdy ECHO wyłączone:
tu w odpowiedzi dostaniemy tylko:
w odpowiedzi przy włączonym ECHO otrzymamy
10. Generalnie aby zakupiony moduł jak najszybciej uruchomić w trybie SLAVE z własnym procesorem: podłączamy go najlepiej do portu COM w PC, następnie dokonujemy jego ustawień z poziomu terminala w PC - takich jak prędkość, ew PIN , ECHO itp. Zostają one raz na zawsze zapamiętane i możemy wtedy moduł podłączyć do naszego procka za pomoca linii Rx oraz Tx. Później we własnym oprogramowaniu do BT na swoim PC - trzeba znaleźć ten moduł w otoczeniu i nawiązać z nim połączenie nawet przez terminal - poprzez utworzony wirtualny port COM. TO WSZYSTKO - od razu będzie działać bez najmniejszych problemów! (trzeba tylko pamiętać, że gdy jakies urządzenie MASTER podłącza się do naszego SLAVE - to procek w momencie podłączenia odbierze pierwszy komunikat z modułu "CONNECTED XXXXXXX" - który mówi nam, że moduł właśnie nawiązał połączenie z MASTEREM, którego MACadres = XXXXXXX. Podobie jest przy odłączeniu się MASTERA - tyle że komunikat to "DISCONNECT XXXXXXX"
-----------------------------------------
MITY:
1. nie jest prawdą jakoby trzeba było dawać jakieś gigantyczne opóźnienia między wysyłanymi znakami - niektórzy piszą nawet o czasie = 1sekunda - bzdura!
2. nie jest prawdą , że za każdym razem po włączeniu modułu - trzeba go konfigurować za pomocą poleceń AT
3. nie jest prawdą , że można wykorzystywać sygnały takie jak CTS czy RTS
4. nie jest prawdą, że nie można uruchomić tych modułów w trybie MASTER lub, że nie chcą one wykrywać urządzeń które widać w pobliżu
5. nie jest prawdą, że trudno się uruchamia te moduły do pracy z własnym uC
6. różnice pomiędzy modułami BTM-222 oraz BTM-112 nie polegają na tym, że jedne są gorsze a drugie lepsze - po prostu pracują one zgodnie ze specyfikacją Class1 i Class2 - która mówi o możliwości ich maksymalnego zasięgu.
7. Nie prawdą jest, że nowe wersje modułów o symbolu BTM-220A sprzedawane zamiast BTM-222 przez dostawców - są niezgodne. To dokładnie te same moduły i tak samo się z nimi postępuje.
--------------------------------------------------------------------------
jeśli ktoś ma coś ciekawego i sprawdzonego do dodania to zapraszam. Może ten temat będzie służył za bazę podstawowej wiedzy dla wszystkich, którzy po raz pierwszy zabierają się za wykorzystanie takich modułów
Mnóstwo ludzi ma problemy z uruchomieniem i wykorzystaniem zakupionych modułów BlueTooth z serii BTM-222 , BTM-112 ale podobnie sprawa ma się zapewne z BTM-330/730
Postanowiłem w kilku punktach podać kilka faktów oraz rozwiać niektóre mity, które krążą wśród wielu amatorów tychże modułów.
FAKTY:
1. Przykładowe sposoby podłączania takich modułów prezentuję w tym temacie:
https://www.elektroda.pl/rtvforum/topic1414894.html
(moduły te działają na żywo i zawsze bardzo dobrze się sprawdzają) Zastosowałem od razu konwersję napięć - dzięki czemu można je używać bez problemu w swoich systemach uC zasilanych z +5V
2. Moduły umożliwiają bezproblemową pracę jeśli chodzi o przesyłanie danych RS232 - jednak do dyspozycji są tylko i wyłącznie sygnały Rx oraz Tx (pomimo to, że w dataszecie widać iż są także RTS i CTS. Niestety te dwa piny są w żaden sposób nieaktywne i łączenie ich ze sobą czy też próby ich wykorzystania zawsze spełzną na niczym - nic nie dadzą. Można więc sobie wszelkie próby ich wykorzystania podarować)
3. Moduły potrafią na 100% pracować z każdą z prędkości od najniższej 4800 do 115200 (wyższych nie testowałem więc się nie wypowiadam - ale podejrzewam, że też nie ma problemów)
4. Niestety, ponieważ transmisja odbywa się za pomocą przesyłania pakietów danych, to występują pewne minimalne opóźnienia w związku z czym np łatwo dostrzec, iż próba przesłania np 1000 bajtów po zwykłym kablu z prędkością 115200 odbędzie się jeśli chodzi o łączny czas nieco szybciej niż gdy przesyłamy przez moduły. Sprawdzałem to podczas użytkowania swojego Bootloadera dla procków AVR
https://www.elektroda.pl/rtvforum/topic1343484.html
który umożliwia transmisję wsadu do uC także drogą radiową poprzez takie moduły . Pomimo lekkiego spowolnienia - i tak całość spełnia wszystkie oczekiwania - gdyż pozbywamy się uciążliwych kabli
5. Moduły można wykorzystać zarówno w trybie SLAVE jak i MASTER bez żadnych problemów. Na pewno obydwa tryby działają!
6. Aby wykorzystywać moduły najlepiej dokonać jeden raz ich konfiguracji podłączając je do jakiegoś portu COM w PC (oczywiście trzeba sobie dopasować sygnały a jeśli korzystamy z przejściówki np USB/RS232 na FTDI - to od razu możemy podłączać Rx i Tx)
Zamiast "bawić" się w próby ustawiania ich parametrów za każdym razem gdy włączamy swoje urządzenie. Niektórzy walczą z tym jak z wiatrakami - niepotrzenie. Gdy raz dokona się konfiguracji - zostaje ona zapamiętana w module na amen.
7. Polecam w pierwszych krokach konfigurowania takiego modułu - poza oczywiście ustaleniem takich podstawowych parametrów pracy jak prędkość (domyślna jest 19200) czy rodzaj ramki itp - ustawić odpowiednio ECHO - tzn - wyłączyć je poleceniem ATE0 . Dlaczego ???? jest wyraźny związek pomiędzy czasem jaki potrzeba na dokonywanie przerw pomiędzy wysyłaniem poszczególnych znaków poleceń typu AT do modułu - jeśli są one potrzebne koniecznie.
8. Polecenia AT do modułu - zwykle są potrzebne tylko gdy pracuje on w trybie MASTER - wtedy też aby nawiązać połączenie trzeba wysłać komendę ATA, lub gdy trzeba sprawdzić urządzenia SLAVE w pobliżu itp itp
9. Rzeczywiście wysyłanie poleceń typu AT do tych modułów trzeba odpowiednio zorganizować. To znaczy - trzeba najlepiej napisać sobie swoją funkcję/procedurę, która będzie je wysyłać w ten sposób, że pomiędzy wysłaniem każdego znaku zrobi małą przerwę czasową. Jakie muszą być te przerwy???? tu kłania się właśnie wyłączenie ECHA o czym była mowa powyżej w pkt.7. Otóż gdy ECHO jest wyłączone to przerwy pomiędzy wysyłanymi znakami do modułu muszą wynosić minimalnie 4-5ms. Ale jeśli używa się ECHA (bo z jakichś powodów ktoś uznaje to za konieczne) to wtedy ten czas przerwy pomiędzy wysyłaniem kolejnych znaków musi już być minimalnie ok 25ms !!!
przykładowo - chcemy wysłać polecenie ATI , które w odpowiedzi poda nam wersję firmware (zaprezentuje urządzenie). W uproszczeniu trzeba to zrobić tak:
a. gdy ECHO włączone:
PRINT A
delay_ms 25
PRINT T
delay_ms 25
PRINT I
delay_ms 25
PRINT ?
delay_ms 25
PRINT 13 ---- 0x0D czyli znak ENTERpowyżej - nie jest to przykład w żadnym konkretnym języku - więc trzeba go sobie dostosować wg potrzeb. Np pierwszą linię w BASCOMIE trzeba by było napisać PRINT "A", drugą linię Waitms 25 a ostatnią PRINT Chr(13);
a w języku C każdy chyba sobie z tym poradzi?
w odpowiedzi przy włączonym ECHO otrzymamy
linia1: ATI? ENTER
linia2: F/W VERSION: v4.22 ENTERb. gdy ECHO wyłączone:
PRINT A
delay_ms 5
PRINT T
delay_ms 5
PRINT I
delay_ms 5
PRINT ?
delay_ms 5
PRINT 13 ---- 0x0D czyli znak ENTERtu w odpowiedzi dostaniemy tylko:
w odpowiedzi przy włączonym ECHO otrzymamy
linia1: ENTER
linia2: F/W VERSION: v4.22 ENTER10. Generalnie aby zakupiony moduł jak najszybciej uruchomić w trybie SLAVE z własnym procesorem: podłączamy go najlepiej do portu COM w PC, następnie dokonujemy jego ustawień z poziomu terminala w PC - takich jak prędkość, ew PIN , ECHO itp. Zostają one raz na zawsze zapamiętane i możemy wtedy moduł podłączyć do naszego procka za pomoca linii Rx oraz Tx. Później we własnym oprogramowaniu do BT na swoim PC - trzeba znaleźć ten moduł w otoczeniu i nawiązać z nim połączenie nawet przez terminal - poprzez utworzony wirtualny port COM. TO WSZYSTKO - od razu będzie działać bez najmniejszych problemów! (trzeba tylko pamiętać, że gdy jakies urządzenie MASTER podłącza się do naszego SLAVE - to procek w momencie podłączenia odbierze pierwszy komunikat z modułu "CONNECTED XXXXXXX" - który mówi nam, że moduł właśnie nawiązał połączenie z MASTEREM, którego MACadres = XXXXXXX. Podobie jest przy odłączeniu się MASTERA - tyle że komunikat to "DISCONNECT XXXXXXX"
-----------------------------------------
MITY:
1. nie jest prawdą jakoby trzeba było dawać jakieś gigantyczne opóźnienia między wysyłanymi znakami - niektórzy piszą nawet o czasie = 1sekunda - bzdura!
2. nie jest prawdą , że za każdym razem po włączeniu modułu - trzeba go konfigurować za pomocą poleceń AT
3. nie jest prawdą , że można wykorzystywać sygnały takie jak CTS czy RTS
4. nie jest prawdą, że nie można uruchomić tych modułów w trybie MASTER lub, że nie chcą one wykrywać urządzeń które widać w pobliżu
5. nie jest prawdą, że trudno się uruchamia te moduły do pracy z własnym uC
6. różnice pomiędzy modułami BTM-222 oraz BTM-112 nie polegają na tym, że jedne są gorsze a drugie lepsze - po prostu pracują one zgodnie ze specyfikacją Class1 i Class2 - która mówi o możliwości ich maksymalnego zasięgu.
7. Nie prawdą jest, że nowe wersje modułów o symbolu BTM-220A sprzedawane zamiast BTM-222 przez dostawców - są niezgodne. To dokładnie te same moduły i tak samo się z nimi postępuje.
--------------------------------------------------------------------------
jeśli ktoś ma coś ciekawego i sprawdzonego do dodania to zapraszam. Może ten temat będzie służył za bazę podstawowej wiedzy dla wszystkich, którzy po raz pierwszy zabierają się za wykorzystanie takich modułów
