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

BTM-222 / BTM-112 fakty i mity (poradnik)

mirekk36 21 Wrz 2009 12:58 102171 252
  • #1 7041334
    mirekk36
    Poziom 42  
    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:
       PRINT A
       delay_ms 25
       PRINT T
       delay_ms 25
       PRINT I
       delay_ms 25
       PRINT ?
       delay_ms 25
       PRINT 13 ---- 0x0D czyli znak ENTER


    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

    linia1: ATI? ENTER
    linia2: F/W VERSION: v4.22 ENTER




    b. 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 ENTER


    tu w odpowiedzi dostaniemy tylko:

    w odpowiedzi przy włączonym ECHO otrzymamy

    linia1: ENTER
    linia2: F/W VERSION: v4.22 ENTER


    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
  • #2 7041429
    zdebel
    Poziom 15  
    Ja miałbym pytanie, czy istnieje możliwość wykorzystania części analogowej tego modułu?
  • #3 7041681
    michalko12
    Specjalista - Mikrokontrolery
    Wspomniałeś o BTM-330, ale te chyba nie mają SPP.
  • #4 7041752
    mirekk36
    Poziom 42  
    zdebel --> piszę tylko n/t wykorzystania RS232 - bo tylko to bardzo dokładnie posprawdzałem. Niestety wydaje się, że żadne inne rzeczy nie są w tych dwóch modułach BTM-222/112 dostępne poza RS232. Nie ma zresztą żadnego skrawka dokumentacji jak można byłoby się dobierać do innej transmisji niż RS232. A i ona jest okrojona jak widać do tylko Rx i Tx. Więc należy przyjąć z 99% pewnością, że w/w moduły nadają się tylko do RS232 i już

    michalko12 ---> w dataszecie jest napisane że posiada opcję "UART or USB Host Interface" - tyle że nie ma żadnego opisu poleceń AT. Jednak spokojnie można spróbować tych poleceń, które są przewidziane dla BTM222/112 - pewnie są takie same
  • #5 7042201
    michalko12
    Specjalista - Mikrokontrolery
    Może się mylę, ale myślę że źle kombinujesz. W BTM330 zaimplementowany jest tylko protokół HCI, na podstawie tego protokołu możesz stworzyć sobie profil SPP i inne. Nie wiem tylko gdzie się podpina komendy AT, czy są one częścią profilu SPP czy może jest to już np profil DUN, który jest pod SPP. To że jest UART czy USB nie oznacza że można wysyłać do niego komendy AT, tylko to że musi się jakoś komunikować ze światem zewnętrznym, w tym przypadku za pomocą protokołu HCI. Bluetooth to nie tylko emulacja portu szeregowego, to jest cały dobrze zdefiniowany standard jak USB czy HDMI.

    Core_V21__EDR.zip
  • #6 7042495
    mirekk36
    Poziom 42  
    michalko12 napisał:
    Może się mylę, ale myślę że źle kombinujesz.


    wyraźnie napisałem w pierwszym poście tego tematu:

    mirekk36 napisał:

    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


    jak więc widzisz temat ten głównie dotyczy BTM-222 i BTM112 o innych wyraziłem się w trybie przypuszczającym i ew użyłem określenia iż trzeba by było sobie sprawdzić co i jak z używaniem poleceń AT .... zamiast gdybać. Dwa powyższe moduły sprawdziłem pod tym względem "od podszewki" dlatego się wypowiadam z pełną odpowiedzialnością za to co mówię.
  • #7 7043207
    michalko12
    Specjalista - Mikrokontrolery
    A ja tylko napisałem że z tym zapewne i z
    Cytat:
    w dataszecie jest napisane,
    że posiada opcję "UART or USB Host Interface" - tyle że nie ma żadnego opisu poleceń
    AT. Jednak spokojnie można spróbować tych poleceń, które są przewidziane dla
    BTM222/112 - pewnie są takie same

    mylisz się i sprostowałem dlaczego. Trzeba było w ogóle nie wspominać o innych
    modułach ewentualnie podkreślić że ten moduł może nie być kompatybilny, bo uwierz mi
    że część ludzi poszła by za tym zapewne i kupiła ten moduł chociażby z tego
    względu że jest tańszy i mniejszy, a tak teraz dobrze się zastanowią zanim go kupią.
  • #8 7074631
    marex85
    Poziom 11  
    Schemat z którego korzystam
    BTM-222 / BTM-112 fakty i mity (poradnik)

    od razu mówię ze max3232 ma 16nóżek do 15 mam podłączoną masę a do 16 zasilanie 3,3V miedzy 15 a 16 jest kondensator 100nF który był dobierany wg datasheet zresztą jak pozostałe kondensatory.

    Ogólnie rzecz biorąc wszystko było sprawdzone to co wysyłam linią TxD to samo odbieram linią RxD przed maxem jak i za maxem jeżeli

    domyśle parametry btm zostały ustawione w moim terminalu i nadal to samo
  • #10 7094355
    poczitamagoczi
    Poziom 14  
    Chociaż nie ma specjalnych podstawek pod btm222 - można obejść problem i zastosować mini goldpiny - raster 1,27mm. Oczywiście mocowanie takie musi być odpowiednio sztywne dlatego najlepiej zastosowań połączenie przewlekane a jeżeli mamy płytkę jednostronną goldpiny łamane.

    W moim projekcie zastosowałem równiej rozwiązanie z anteną w laminacie - 62mm na razie testowałem na odległości 50 m i działa ;)

    BTM-222 / BTM-112 fakty i mity (poradnik)

    BTM-222 / BTM-112 fakty i mity (poradnik)

    Teraz mam jeszcze jeden problem z komunikacją między btm 220 a laptopem z wbudowanym BT. Wszystko mam skonfigurowane poprawnie moduł odpowiada na komendy ate0, atz0, atn=... ale kiedy rozpoczynam połączenie szeregowe przez komputer, procek nie odbiera CONECT, a ja na komputerze mogę tylko odbierać znaki a wysyłanie nie działa ... Miał ktoś podobny problem?
  • #11 7106165
    waldektele
    Poziom 10  
    Witam,
    czy za pomocą modulów BTM-222 , BTM-112 mozna w jakis sposób przesylać video z kamery w czasie realnym?
  • #12 7107986
    levi_pl
    Poziom 11  
    waldektele napisał:
    Witam,
    czy za pomocą modulów BTM-222 , BTM-112 mozna w jakis sposób przesylać video z kamery w czasie realnym?


    W czasie rzeczywistym można przesyłać cyfrowy sygnał o ile strumień nie przekracza przepustowości kanału.

    Jeśli zadajesz takie pytanie to odpowiedź dla Ciebie może brzmieć tylko nie, dlatego że rozwiązanie problemów, które napotkasz po drodze będzie bardzo trudne, zbyt trudne.

    Nikt nie stosuje BT do tych celów. Co prawda jest profil audio, który można by wykorzystać do strumieniowania dowolnych danych ale to raczej zadanie dla bardzo doświadczonych elektroników/informatyków.

    Do tego dochodzi praktyczny aspekt możliwości użycia profilu audio w BTM czy wykorzystania profilu portu szeregowego do tego celu.
  • #13 7109232
    Grizzly16
    Poziom 14  
    możesz spróbować zmusić go do pracy z mca-25 (więcej info w google i na elektrodzie).
  • #14 7109846
    Konto nie istnieje
    Poziom 1  
  • #15 7144433
    przemo.t
    Poziom 27  
    Witam
    Powiedzcie mi proszę jak zmusić ten moduł do pracy jako MASTER.
    Wysyłam ATR0 dostaje OK,
    Sprawdzam konfigurację poprzez ATI1 i dostaje informację że moduł pracuje aktualnie jako MASTER -> ATR=0

    Teraz wypadałoby poszukać jakies inne urządzenie, więc wpisuję ATF? i dostaję ERROR, ATF też daje ERROR.
    Echo oczywiście wyłączone, a moduł konfiguruje z kompa wpisując znak po znaku z klawiatury, więc za szybko z pewnością nie jest ;-)
    Dodam że jako slave chodzi elegancko i ruszył z kopa ;-)

    Należy jeszcze o czymś pamiętać przełączając moduł w MASTER?
  • #16 7155512
    mirekk36
    Poziom 42  
    Koledzy - wystarczy sięgnąć po szukajkę na elektrodzie, bo właśnie na elektrodzie już kiedyś wypowiedział się kolega:

    tom_ny napisał:
    W necie udało mi się znaleźć opis jak zmusić moduł do działania w trybie master. Jest tak:
    ATR0 - przechodzimy do trybu master
    AT01 - wyłączenie auto-connection (bez tego ATF? nie działa)
    ATF? - wyszukanie urządzeń w pobliżu. w wyniku otrzymamy listę urządzeń.
    ATAx - połączenie z wybranym urządzeniem, gdzie x to jego numer zwrócony przez ATF?

    Po połączeniu, aby przejść do trybu komend wpisujemy +++. Połączenie przerywa się komendą ATH (nota katalogowa o tym milczy). Komendą ATO powraca się do trybu danych (o tym też).


    dlatego tutaj już tego nie opisywałem.

    poza tym:

    tom_ny napisał:
    Znalazłem jeszcze takie rzeczy, o których datasheet nic nie mówi:
    - komenda ATI1 - wypisuje aktualne ustawienia i tam jest opis komend:
    - ATCx - wł/wył flow-control (x=0 wyłączenie)
    - ATSx - wł/wył auto-powerdown of rs232 driver (x=0 wyłączenie)
    - ATXy - wł/wył sprawdzania sekwencji '+++' (jeżeli to się wyłączy (y=0) to nie możliwe jest przejście do trybu komend podczas połączenia).
  • #17 7155569
    przemo.t
    Poziom 27  
    Serdeczne dzięki ;-)
  • #18 7155577
    kamyczek
    Poziom 38  
    Szanowni koledzy czy ktoś testował zasięg modułów w terenie otwartym i czasy opóźnień. Chcę użyć modułów btm-222 do sterowania urządzeniem ,które wymaga minimalnego opóźnienia na linii sygnałowej a odległość miedzy odbiornikiem i nadajnikiem to 100m. Interesuje mnie wysłanie jednego bajtu i odbiór jednego bajtu.
  • #19 7155687
    mirekk36
    Poziom 42  
    a jakie miałoby być to minimalne opóźnienie?

    generalnie jeśli czały czas utrzymywać 2 moduły w połączeniu (czyli gdy są non stop połączone) to przy przesyłaniu małych paczek informacji a szczególnie kilku bajtów nie masz żadnych opóźnień

    jednak jeśli na czas transmisji będzie miało być nawiązywane połączenie - no to już tak różowo nie będzie - tą sekundę czy kilka będzie trzeba poczekać - aż moduły się skomunikują i ustalą kanał transmisyjny
  • #20 7157562
    kamyczek
    Poziom 38  
    bez opóźnień działa tylko transmisja przewodowa każda inna ubrana w BT GSM czy cokolwiek innego jest obarczone opóźnieniem które potrzebne jest do przetworzenia sygnału w ramkę BT i z ramki w sygnał analogowy ...
  • #21 7157898
    mirekk36
    Poziom 42  
    dokładnie tak jak mówisz - z tego powodu (gdy robiłem sobie bootloader dla avr) to transmitowanie tego samego wsadu po kablu i po BT - dosyć sporo różniło się w czasie - tzn im więcej danych tym więcej przestojów - na budowanie paczki. Dlatego napisałem, że przy transmisji niewielkiej ilości danych co jakiś czas to sumaryczne opóźnienie będzie prawie pomijalne.

    z tym , że to "prawie" zależy - jak pytałem poprzednio o jakie opóźnienia tobie chodzi? (ale tego nie napisałeś) .....
  • #22 7158245
    kamyczek
    Poziom 38  
    Moduł ma działać jako marker sygnalizujący przekroczenie pewnej płaszczyzny przez obiekt poruszający się z dość duża prędkością ok 100km/h powodować zmianie kierunku ruchu tego obiektu na przeciwny i tu zaczyna się problem bo opóźnienie rzędu 0,1s to 2,77m tam i z powrotem czyli 5,54m czyli dość sporo...
  • #23 7159171
    przemo.t
    Poziom 27  
    Jeśli prędkośc obiektu jest stała to czujnik przekroczenia płaszczyzny możesz umieścić wcześniej niż jej koniec... przy opóźnieniu 0,1s to tak jak podajesz 2,77m wcześniej, wówczas obiekt zatrzymie się na końcu płaszczyzny mimo opóźnienia.

    Oczywiście nie można tego zastosować dla każdej sytuacji, ale więcej szczegółów nie podałeś.

    Mały OT sie zrobił. ;-)
  • #24 7159815
    kamyczek
    Poziom 38  
    Co do OT to prędkość jest różna więc trzeba będzie zrobić pomiar w module slave zmostkować rx i tx zasilić go i postawić 100m od odbiornika na atmelku napisać program który wysyła bajt i mierzy czas od momentu wysłania bajtu do zgłoszenia przerwania o odebraniu takiego samego. i będzie wiadomo otrzymaną wartość podzielić przez dwa i po problemie
  • #25 7162254
    wader_669
    Poziom 28  
    levi_pl napisał:
    Co prawda jest profil audio, który można by wykorzystać do strumieniowania dowolnych danych ale to raczej zadanie dla bardzo doświadczonych elektroników/informatyków.


    Komus udalo sie przeslac dzwiek? albo wie ktos moze jak to osiagnac?
    Wiadomo potrzebne sa kodery i enkodery, pytanie czy mozna takie kosci kupic (tak jak np. enkoder mp3) czy nikt nie produkuje czegos takiego i konieczne jest uzycie jakiegos arma ktory by tym wszystkim sie zajal.
    Troche przeszukalem neta i jest bardzo malo informacji na ten temat.
  • #26 7162302
    Konto nie istnieje
    Poziom 1  
  • #27 7162395
    wader_669
    Poziom 28  
    nie, to byl przyklad, bo ostatnio robilem mp3 na avr i udalo mi sie dostac enkoder mp3. Pytanie jest czy sa gotowe kodery i enkodery dzwieku, ktore nadawaly by sie do tych modulow BT?
  • #28 7162546
    Konto nie istnieje
    Poziom 1  
  • #29 7163265
    przemo.t
    Poziom 27  
    Zainteresujcie się BTM-730 - stworzony do przesyłania dźwięku. Niestety brak szczegółowych informacji w necie jak go wysterować, a wątpię żeby tor audio ruszył tak ot...
    Producent w odpowiedzi na prośbę także przesyła tylko PDF którego można znaleźć w sieci.
  • #30 7405527
    radzu
    Poziom 13  
    Mam poważny problem z btm-222, moje połączenie to:

    [FT232]<------->[BTM-222]

    [FT232] - płytka wtykana do USB, ft232, diody sygnalizujące transmisję, zasilanie ustawione na 3,3V, wykonana termotransferem ale bardzo udana działa z innymi urządzeniami i nigdy nie było problemów.

    <-----> połączenie taśmą, 5 żył, VCC(3,3V), RST, GND, RxD,TxD

    [BTM-222] - płytka przystosowana do umieszczenia w płycie głównej robota, na pokładzie znajduje się BTM-222, gniazdo antenowe, kondensator 100n na zasilaniu i złącze do płyty, płytka robiona na frezarce lutowane profesjonalną stacją i z użyciem topnika

    Całość połączona tak że BTM jest zasilany i tx z rx są skrzyżowane.

    A problem jest taki że za cholery nie umiem się porozumieć z BTM żeby go ustawić i umieścić w robocie.

    Próbowałem już Hyper Terminala i 2 innych Terminali, wysyłałem + pojedynczo i trójkami, dając entery/sendy i nie dając, zmieniając ustawienia wysyłanych znaków i moduł mi nie odpowiedział jak dotąd ani jednym znakiem.

    Połączenie jest na 100% sprawdzone i dobre, wszystkie luty są pewne, po złączeniu Tx z Rx w module jest echo.

    Mam już bardzo duże podejrzenie że moduł jest uszkodzony bo całość wykonania jest zrobiona całkiem profesjonalnie i nie mam już pomysłu.

    Ktoś ma jeszcze jakiś pomysł/radę co robię nie tak ?
REKLAMA