A mi się udało nawiązać komunikacja w odległości grubo ponad 100m na otwartej przestrzeni. Używałem BTM222 i laptopa z Bluetooth na USB też klasy 1 (100m). BTM222 jako slave. Zauważyłem, że jeżeli btm222 nie leży na ziemi, a na wysokości głowy to można nawiązać komunikacje na większej odległości.
Używałem anten smd dostępnych w sklepie Maritex. Pytka zgodnie z zaleceniami producenta, w sklepie sa dostępne pdfy na ten temat. W sumie to plytka byla zrobiona na partyzanta, byle tylko się trzymal modul i antena na czas testow.
Zamierzam kupić zestaw Atmega8L i btm-122, aby stworzyć komunikacje uC <-> telefon komórkowy (komendy AT). Telefon będzie inicjował połączenie.
Nie mogę znaleźć odpowiedzi na poniższe pytania:
1. Czy po podłączeniu telefonu btm-122 zasygnalizuje połączenie i przekaże jakąś komendę AT do uC??
2. Czy może ktoś podać schemat całego podłączenia tych komponentów (wiem że trzeba połączyć rxd - do txd i txd - do rxd) co z resztą wejść ?
3. Wyczytałem, że często występują problemy z połączeniem telefonu z btm (Telefon widzi btm ale w nim nie ma żadnej usługi do której może się połączyć) spotkał się ktoś z takim problemem??
Właśnie zaczynam przygodę z uC wiec proszę o wyrozumiałość.
1. Tak. Po nawiązaniu połączenia BTM wyśle do atmegi info: CONNECT XX-YY-ZZZZ, gdzie XYZ to numer modułu bluetooth, z którym nawiązano połączenie. Podobnie ma się sprawa z zerwaniem połączenia.
2. Schematy przewijają się w sieci, ale szukaj raczej pod BTM222. Podszukaj na google: http://images.google.pl/images?ndsp=18&um=1&hl=pl&lr=&q=btm222&start=0&sa=N Nawet w tym wątku był schemat.
3. Mi to się udało zrealizować. BTM udostępnia tylko jedną usługę i z nią należy nawiązać połączenie. Wcześniej należy odpowiednio skonfigurować moduł, żeby czekał na połączenie. Ale faktycznie pewne problemy są, gdy BTM próbuje nawiązać połączenie z komórką (komórka jest serwerem). Pisałem o tym na http://forum.midlety.net/viewtopic.php?p=2147. Gdzie ty czytałeś o takich problemach?
Może spowodowane jest to faktem, że w projekcie nie używali weryfikacji kodem pin (został on wyłączony w module BTM), więc większość telefonów nie chciało się połączyć ze względu na brak zabezpieczenia.
zrobiłem sobie układzik na BTM - 112 i działa we wszystkie strony zarówno jako master i slave bez najmniejszych problemów.
tylko teraz np chciałbym połączyć go z komórką ale taką starszą która nie ma żadnego systemu - udostępnia tylko taka komórka np swój port COM jak się ją podłączy do kompa i dzięki temu można wysyłać SMSy, dzwonić itp
jednak gdy próbuję nawiązać połączenie z komórką modułem BTM który jest w trybie master to:
1. oczywiście połączenie zostaje ładnie nawiązane
2. komórka pyta czy zautoryzować nadchodzące połączenie (oczywiście wcześniej ją sparowałem i moduł BT widnieje na jej liście urządzeń)
3. następuje połączenie z komórką bo mam CONNECT
ale to wszystko - w tym momencie gdy próbuję tak jak z PC'ta wysłać jakieś polecenie AT - dowolne - to połączenie zostaje od razu zerwane - dlaczego?
wcześniej któryś kolega pisał o podobnym zachowaniu w przypadku midletów, ale mi jak wspominałem na początku chodziłoby o dobranie się do modemu GSM komórki, do kótrego można się dobrać gdy paruję ją z komputerem. Wprawdzie w komputerze pojawiają mi się ze 2-3 usługi jakie oferuje komórka - i zapewne komputerowy soft BT jakoś je rozpoznaje - ale jak????
czy komuś udało się to zrobić poprzez jakiś tego typu moduł BT (nie ważne czy BTM112 czy BTM222 czy inny) ?
To, co opisujesz jest teoretycznie możliwe, ale niestety większość, choć nie wszystkie telefony po podłączeniu(telefon jako slave) przez profil SPP czekają na „komendy systemowe”, które wysyła aplikacja do komunikacji z telefonem napisana przez producenta telefonu. Jeśli dowiesz się, co trzeba wysłać można powiedzieć, że przejmiesz „kontrole nad telefonem” i zrobisz z nim wtedy, co zechcesz.
Innym sposobem jest zajrzenie w specyfikacje Bluetooth z której wynika że:
-każde urządzenie bluetooth obsługuje konkretne profile
-połączenia modemowe wykorzystują profil Dial-up Networking który wywodzi się z profilu SPP
Jeśli dwa urządzenia obsługują ten sam profil można się komunikować i po problemie ale moduł BTM-222 posiada tylko profil SPP z komendami AT i nie posiada profilu Dial-up Networking . Teoretycznie moduły BTM są programowalne i można zmienić firmware ale praktycznie zagłębiając się dalej należy posiadać odpowiednią aplikacje BlueLab która jest płatna więcej informacji można znaleźć na http://www.csrsupport.com/
Istnieje jeszcze alternatywa wykorzystać modułu BTM-330 z dostępem do HCI a następnie zaimplementowanie programowo SPP i Dial-up Networking. Niestety implementacja tych profili nie jest dostępna dla wszystkich więcej informacji http://www.bluetooth.com.
Można spróbować również napisać MIDlet, który obsługuje GPRS a przetworzone dane wysyłać po SPP do modułu jednak w tym przypadku zalecane jest, aby komórka była w trybie Master.
Wracając do kwestii komunikacji AtMegi i modułu BTM-222 (przez UART) działających pod różnymi napięciami to ja, jako że słabo się na elektronice znam poprostu zasilam moduł BTM-222 na 3,6 V (co jest dopuszczalnym napięciem zasilania wg. datasheetu i jednocześnie jest to napięcie większe od 70 % VCC Atmegi, więc musi być interpretowane jako stan wysoki) a napięcie to uzyskuje poprzez obniżenie napięcia 5V dwiema diodami prostowniczymi (5V - 2*0,7V = 3,6V).
Z kolei komunikacja Atmega -> Moduł idzie przez dzielnik napięcia składający się z rezystorów 470R i 1K, co obniża napięcie 5V bodajże do poziomu lekko poniżej 3,6V, dzięki czemu nie ma mowy o "uwaleniu" wejścia (RXD) modułu zbyt dużym napięciem logiki.
Planuje zrobić bezprzewodową komunikację w oparciu właśnie o moduły BTM-222.
Z jednej strony z modułem BTM-222 będzie pracować panel operatorski AVR-TLCD-128CAN zawierający ATmege128 pracującą na 3.3V. Tu jak rozumiem poziomy napięć są OK?
Z grugiej strony zaś ma być ATmega32 z podpiętym BTM-222. Tu planuję konwersję napięć zaproponowaną następująco: Link.
Czy takie rozwiązanie będzie poprawnie funkcjonowało? Poprawcie mnie jeśli się mylę lub zaproponujcie poprawne rozwiązanie. Z góry dzięki.
tak będzie to poprawnie pracować - tylko to dopasowanie na tych tranzystorkach może czasem zawodzić przy większych prędkościach - nie lepiej zrobić takiego czegoś? - ja to stosuję i działa świetnie:
(oczywiście płytka tutaj w wielkim powiększeniu bo jest na prawdę miniaturowa - niewiele większa od samego modułu , który w tym przypadku siedzi pod spodem - na warstwie bottom (kolor niebieski) dlatego może słabo to tutaj widać)
to wprawdzie zastosowałem do BTM-112 ale równie dobrze można do BTM-222 - teraz właśnie pod ten drugi przerabiam tę przejścióweczkę.
Przy okazji dzięki stabilizatorom 3,3V (które można dostać w TME) masz gotowe i prawidłowe napięcie 3,3V - a konwersja jest na bramkach - dzięki czemu duże prędkości transmisji są jej nie straszne
Rozwiązanie wydaje się ciekawe, a skoro piszesz ze działa to tym bardziej. Pytanie gdzie te układy 74AC14D można dostać i w jakiej cenie? Szukałem w najpopularniejszych sklepach prowadzących sprzedaż wysyłkową i znalazłem jedynie 1 z ceną na tel.
Ja planuję zrobienie przejściówki z wyprowadzonymi wszystkimi pinami wykonaną jak poniżej
Będzie ona stanowić moduł włączany do głównej płytki, gdzie będzie znajdował się już stabilizator na 3.3V. Brakowało mi jedynie konwersji poziomów napięć.
Interesuje mnie jeszcze do jakiej prędkości transmisji przedstawione przeze mnie w poprzednim poście rozwiązanie będzie działać stabilnie?
goblin00 --> zastanów się tylko czy jak już zrobisz tę swoją przejściówkę to czy warto tych milion ścieżek rysować??? na tym module działają tylko te sygnały które są na moim schemacie - reszta jest głucha jak pień i na 100% nie da rady ich w żaden sposób wykorzystać. Ja też na początku taką sobie zrobiłem - bo myślałem pokombinuję sobie troszkę z tym modułem - a tu wielka kicha - nawet przy łączu RS232 - które jako jedyne na szczęście działa - nie działają już piny CTS i DTR !!!
(wiem co mówię) bo strasznie się zawiodłem na braku DTR i CTS - taaaak bardzo ich potrzebowałem)
co do pytania - do jakiej prędkości będzie to stabilnie działać to nie wiem - trzeba popróbować - na pewno 9600 pójdzie, 19200 pewnie też - może i większe ale 115200 to już się obawiam że będzie lipa
a scalak ? te bramki not? ja wszystko kupuję w tme.pl tam znajdziesz wszystkie elementy
Co do wyprowadzania wszystkich pinów to masz rację. Ja wcześniej myślałem raczej o zastosowaniu tej przejściówki również w innych aplikacjach i stąd te wyprowadzenia. Dopiero zaczynam przygodę z BTM-222.
Nie wiem czy przypadkiem nie chodziło Ci o sygnały CTS i RTS. Jeśli tak to ja mam je u siebie zwarte. Co to jest DTR? Jedyne co mi sę kojarzy to Dokumentacja Techniczno-Ruchowa.
W TME znalazłem układ 74AC14 nie wiem czy różni się on i jeśli tak to jak bardzo od 74AC14D.
A jeśli chodzi o sklep to polecam Maritex.com.pl jest dużo tańszy, chociażby nawet jeśli chodzi o te modułu BTM-222, poza tym mają niemal wszystko czego potrzebuje w przeciwieństwie do TME.
Nie wiem czy przypadkiem nie chodziło Ci o sygnały CTS i RTS. Jeśli tak to ja mam je u siebie zwarte. Co to jest DTR? Jedyne co mi sę kojarzy to Dokumentacja Techniczno-Ruchowa.
ooo matko boska - sorki mam nadzieję że się nie obrazisz ale chyba tak dla jaj napisałeś rozwinięcie tego skrótu DTR hahahaha o mało co nie spadłem z krzesła - dokumentacja techniczno-ruchowa hahahahaha
DTR - Data Terminal Ready ale to trza poczytać o standardzie RS232
a to zwarcie to możesz sobie podarować bo czy będziesz miał zwarte czy rozwarte to układ i tak będzie dokładnie tak samo działał. To tak jakbyś zwierał inne piny - nieaktywne. Ale to zwarcie CTS i DTR - pokutuje widzę w necie - odkąd na jakiejś stronce zagranicznej ktoś wypuścił schemacik z takim połączeniem
a odnośnie tego scalaka to może być
i przy okazji sam sobie rzucę okiem na te ceny w maritexie - zainteresowałeś mnie tą informacją
Bez urazy oczywiście No widzisz patrzyłem na swój schemat i datasheet od BTMa dlatego też moje myśli poszły w inną strone
Doszedłem do wniosku że twój sposób będzie tutaj najlepszy więc raczej zastosuje ten układ 74AC14, tym bardziej, że jak piszesz nie będzie problemów z transmisją, a pozatym sama prostora rozwiązania i do tego cena jest zadowalająca
Panowie. Ja już się trochę gubię.
Mam proste pytanko.
Czy jak podłączę BTM-112 do zasilania bez połączenia z UARTem uC (samo zasilanie do BTM-112), to czy powinienem wykryć go (BTM-112) jako urządzenie Bluetooth na laptopie np. ?
Pozdrawiam
Witam.
Owszem, układ jest wykrywany po podłączeniu zasilania. Z PDFa wynika, że jego domyslną nazwą jest "Serial Adaptor", a po wykryciu podaje tylko jego adres , podczas gdy inne wykryte urządzenia wyświetlane są z ich nazwą. Spróbuję nadać mu jakąś nazwę i zobaczyć czy coś się zmieni...
Pozdrawiam.
Dodano po 4 [godziny] 29 [minuty]:
Witam.
Mam prośbę do kolegi mirekk36. Widzę, że koledze udało się uruchomić już kilka sztuk BTM-112.
Mam problem z nawiązaniem komunikacji z modułem. Może odpowiedzi na kilka pytań rozjaśnią nieco sytuację.
1. Próbowałem nadać nazwę modułowi. Jednak nie było żadnej reakcji. W dalszym ciągu wyświetlana była domyślna nazwa "Serial Adaptor"?
Opiszę jak nadałen nazwę (mam nadzieję, że źle to robiłem i dlatego nie działa )
koledzy elektronicy - Adamus_s - trzeba uważnie czytać - przecież tak na prawdę jak się przeczyta dokładnie i uważnie cały ten temat, który już ktoś dawno założył to z pełnym powodzeniem można uruchomić i odpalić ze 100 egzemplarzy tych BT-112 czy BT-222
ale ok - ja postaram się jeszcze raz powtórzyć pewne rzeczy (ostatni )
1. jeśli chcesz wydawać jakiekolwiek polecenia typu AT do tego modułu - to nie przez virtualny port COM, który zostaje utworzony przez sterownik BT w komputerze !!! tyle o tym już było
2. ludziska - polecenia AT - no skoro są AT - to oznacza, że należy dodać przed opisywanym rozkazem przedrostek AT, mogą to także być małe literki
3. polecenia AT - jak już wpiszemy całą linię to trzeba zakończyć znakiem ENTER !!! - $0D
4. Po wydaniu poleceń AT otrzymujemy zwykle odpowiedź z urządzenia. Najczęściej otrzymujemy odpowiedzi: OK lub ERROR - chyba nie muszę tłumaczyć co one oznaczają - ale musi się zawsze jakaś odpowiedź pojawić (no prawie zawsze ale mniejsza o to teraz)
5. Należy uważnie czytać PDF'a w którym są opisane polecenia AT obojętnie do jakiego urządzenia. Ty chcesz tu zmienić nazwę a wysyłasz do urządzenia jakieś bzdury (bez czytania PDF'a) i dziwisz się, że urządzenie nie zmieniło nazwy. Ja gdy pierwszy raz wziąłem tę notę PDF do ręki to zobacyzłem tam odnośnie zmiany nazwy coś takiego:
i gdy to przeczytałem to wydałem polecenie:
Quote:
ATN=BT MIREK ENTER
(tylko chyba nie muszę tłumaczyć że zamiast tego ENTER wysłałem jeden znak o kodzie $0D)
w odpowiedzi otrzymałem OK
aby sprawdzić czy dobrze zmieniła się nazwa skorzystałem z tego samego fragmentu tabelki - choć tu wdarł się mały błąd ponieważ napisano:
Quote:
D? Inquire the device name
a powinno być :
Quote:
N? Inquire the device name
ale jak ktoś pracuje już nie od dziś z poleceniami AT to wie, że zwykle podanie jako parametru znaku zapytania powoduje odczytanie ustawionej odpowiedzi. W związku a tym wydałem polecenie:
Quote:
ATN? ENTER
i w odpowiedzi otrzymałem
Quote:
BT MIREK
OK
....... a ty co? po przeczytaniu tego samego wysyłasz:
Quote:
ATNID
a gdzie znak = ???????????
a gdzie znak ENTER czyli $0D ???????????
w ogóle to proponuję się zastanowić najpierw w jaki sposób ma być wykorzystywane BT we własnym układzie.
1. czy ma być SLAVE i łączyć się z komputerem PC ???
2. czy ma być MASTER i łączyć się z innym typu SLAVE
tak czy inaczej, najpierw warto podłączyć takie urządzenie za pomocą jego własnych nóg o symbolach Rx oraz Tx do jakiegoś istniejącego i działającego portu COM w komputerze i tam dokonać całych wstępnych ustawień - a nie bawić się nimi na początku z poziomu procka. Jak już będzie się wiedziało dokładnie co i jak - to potem można sobie te polecenia konfiguracyjne wszyć do kodu procka
ja przede wszystkim ja już mam używać na gotowo urządzenie to:
1. wyłączam echo żeby mi niepotrzebnie nie bruździło i nie przeszkadzało
2. ustawiam urządzenie głównie w trybie slave (można określić jedno urządzenie które będzie miało prawo gadać z tym SLAVE - no ale takie zabezpieczenia w warunkach amatorskiego wykorzystania to przerost formy nad treścią)
3. ustawiam prędkość na jakiej chcę działać - zwykle 115200
gdy jednak ktoś na upartego chce to wykorzystywać jako master to trzeba przejść też oddzielną dodatkową procedurę inicjalizacyjną. Już jej tu nie będę opisywał - bo była podana w tym temacie
pozdr
Dodano po 2 [minuty]:
aha - pytałeś jeszcze czy za pomocą komend AT można ustawić numer portu COM w kompie - a co ma piernik do wiatraka - komendy AT są od ustawiania parametrów pracy urządzenia. A wirtualny port w komputerze zakłada dla ciebie nie to konfigurowane urządzenie - ale twoja przejściówka USB/BT - i to w czeluściach jej oprogramowania/ustawień - czasem (jeśli to jest dobry soft np firmy Widcom) można sobie ustawić dowolny numerek COM - tzn przydzielić
Bardzo jestem wdzięczny koledze za pomoc, ale nie wiem na jakiej podstawie twierdzisz, że nie czytałem PDFa.
Piszesz, że powinienem wydać polecenie
Quote:
ATN=NAZWA ENTER
wszystko jasne
Ja wysyłam komendę z uC po UART i w dalszym ciągu nie bardzo wiem jak wysłać komendę "ATN=NAZWA ENTER" - czy mam wysłać najpierw znak "A" potem "T" itd... zauważ, że ja wysyłam każdy znak osobno i nie wiem jak ma wyglądać ta składnia? Chodzi mi o przykład tylko.
Pozdrawiam
czyli razem w powyższym przypadku wysyłasz 10 znaków
ale nie rozumiem za bardzo w czym ty cały czas widzisz problem ? nigdy w życiu nie wysyłałeś nic przez RS232 ??
czym się różni dla ciebie wysłanie z terminala na PC
ATN=NAZWA
od wysłania tego z procesora ???
że niby co? gdzieś się wpisuje znaki AT - a z procesora to już nie?
piszesz że ty wysyłasz każdy znak osobno - a co to za różnica czy osobno czy nie osobno ?
co to znaczy wg ciebie wysłanie kilku znaków nie osobno ???? bo to to już jakaś dziwna sprawa
jedni piszą program który wysyła cały łańcuch inni piszą program który wysyła po kolei znaki z łańcucha. Jednak wysłanie całego łańcucha/stringa - także w środku polega na wysłaniu tych znaków po kolei
nie - nie - proszę tylko już kolejny raz nie pytaj jak masz wysłać te znaki ..... jak coś dalej nie tak - to proponuję najpierw poćwiczyć prostą transmisję RS232 a potem brać się za to
proponuję ci wszystko sobie poustawiać co trzeba właśnie tą drogą - przez terminal z PC (te ustawienia później same nie znikną ani sie nie przestawią)
dzięki czemu w procku będziesz już mógł sobie tylko nadawać i odbierać
musisz jednak pamiętać, że bezpośrednio po nawiązaniu połączenia moduł wyśle ci do procka łańcuch tekstowy "CONNECT xxxxxxx" że nawiązano połączenie - tak więc procedura inicjalizacji już samej transmisji będzie trwała obojętnie w jakim trybie - niecu dłużej niż przy zwykłym połączeniu przez jakiś kabel.
Mam jeszcze pytanko. Ustawiłem nazwę swojego modułu. Nazwa została ustawiona prawidłowo. Sprawdzam ją komendą ATN? ENTER. Dlaczego zatem nazwa ta nie jest widoczna gdy skanuję otoczenie Bluetooth w moim laptopie. Widać natomiast domyślną nazwę urządzenia "Serial Adaptor".
Pozdrawiam