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

Sterownik bluetooth - brak połącznia z komputerem

SirKamil90 09 Lut 2010 18:37 4270 10
REKLAMA
  • #1 7668847
    SirKamil90
    Poziom 14  
    Witam serdecznie,
    mam pewien problem, może go opiszę:

    Wykonuję sterownik bluetooth opublikowany w EdW 01/09, wykonałem już płytkę i wszystko zmontowałem, jednak układ nie zachowuje się do końca tak jak powinien. Generalnie program jest tak napisany do mikrokontrolera aby na początku wysłał do niego komendę AT zmieniającą domyślną nazwę (serial adaptor) na "bluester", jednak nazwa pozostaje niezmieniona po włączeniu układu. Drugi najważniejszy problem to brak połączenia między komputerem a układem sterownika, być może nie podchodzę do tego odpowiednio.

    Może mnie ktoś rozjaśnić w jaki sposób powinienem wykonać połączenie tak aby utworzyły się nowe porty COM? Gdybym miał taki port to mógłbym się komunikować ze sterownikiem na przykład przez hyperterminal.

    Proszę o pomoc

    Zdjęcia i zrzuty ekranu:
    Sterownik bluetooth - brak połącznia z komputerem Sterownik bluetooth - brak połącznia z komputerem Sterownik bluetooth - brak połącznia z komputerem Sterownik bluetooth - brak połącznia z komputerem Sterownik bluetooth - brak połącznia z komputerem



    Kod programu (BACOM):

    $regfile "m8def.dat"
    
    
    Rem ---------------------------Bluester--------
    
    
    
    Dim Stan As Integer , Znak As Byte , Konfig As Integer , I As Byte , Temp As Byte , K As Byte
    
    Config Portb = &B111101
    Portb = &B000010
    Config Portc = &B111111
    Portc = 0
    Config Portd = &B11111110
    Portd = &B00000001
    
    Config Watchdog = 1024
    Start Watchdog
    
    
    
    
    
    Reset Watchdog
    Print "A";
    Waitms 50
    Reset Watchdog
    Print "T";
    Waitms 50
    Print "N";
    Waitms 50
    Reset Watchdog
    Print "=";
    Waitms 50
    Print "B";
    Waitms 50
    Print "l";
    Waitms 50
    Print "u";
    Waitms 50
    Reset Watchdog
    Print "e";
    Waitms 50
    Print "s";
    Waitms 50
    Print "t";
    Waitms 50
    Print "e";
    Waitms 50
    Print "r"
    Waitms 200
    
    Reset Watchdog
    
    Stan = 0
    
    
    Gosub Ustaw
    
    If Pinb.1 = 0 Then
    Gosub Konfig
    End If
    
    Readeeprom Konfig , 0
    Gosub Main
    
    
    
    
    
    
    
    
    
    
    
    
    '=============================================
    Main:                                                       'POCZĄTEK - pętla główna
    Do
    K = Inkey()
    Reset Watchdog
    
    If K = 35 Then
    Do
    Reset Watchdog
    K = Inkey()
    Select Case K
    Case 37:
    Gosub Stan
    Case 48:
    Toggle Stan.0
    Case 49:
    Toggle Stan.1
    Case 50:
    Toggle Stan.2
    Case 51:
    Toggle Stan.3
    Case 52:
    Toggle Stan.4
    Case 53:
    Toggle Stan.5
    Case 54:
    Toggle Stan.6
    Case 55:
    Toggle Stan.7
    Case 56:
    Toggle Stan.8
    Case 57:
    Toggle Stan.9
    Case 100:
    Toggle Stan.14
    Case 101:
    Toggle Stan.11
    Case 102:
    Toggle Stan.13
    Case 103:
    Toggle Stan.12
    Case 104:
    Toggle Stan.10
    
    End Select
    
    Gosub Ustaw
    
    
    If K = 61 Then
    Gosub Stan_konfiguracji
    Gosub Ustaw
    Gosub Stan
    Exit Do
    End If
    
    K = 255
    Loop
    End If
    
    
    
    
    
    
    
    
    K = 255
    Loop
    Return                                                      'KONIEC - pętla główna
    '=============================================
    
    
    
    '#############################################
    Stan:
    Print "*";                                 'POCZĄTEK - przekazanie informacji o stanie poszczególnych wyjść
    For I = 0 To 15
    Reset Watchdog
    Print Stan.i;
    Next I
    Return                                      'KONIEC - przekazanie informacji o stanie poszczególnych wyjść
    '################################################
    
    Ustaw:
    
    For I = 0 To 3
    Reset Watchdog                               'POCZĄTEK -  ustawienie stanu wyjść
    Temp = I + 2
    Portb.temp = Stan.i
    Next I
    
    For I = 0 To 5
    Reset Watchdog
    Temp = I + 4
    Portc.i = Stan.temp
    Next I
    
    Portd.2 = Stan.10
    Portd.5 = Stan.11
    Portd.6 = Stan.12
    Portd.7 = Stan.13
    Portb.0 = Stan.14                              ' KONIEC - ustawienie stanu wyjść
    
    Return
    
    
    
    Konfig:
    
    
                               ' konfiguracja układu - (tryb monostabilny / bistablibny)
    Stan = &B0000001111111111
    Gosub Ustaw
    Waitms 200
    Reset Watchdog
    Stan = 0
    Gosub Ustaw
    Waitms 200
    Stan = &B0000001111111111
    Gosub Ustaw
    Waitms 200
    Reset Watchdog
    Stan = 0
    Gosub Ustaw
    Stan = &B0000001111111111
    Gosub Ustaw
    Waitms 200
    Stan = 0
    Gosub Ustaw
    Waitms 200
    Konfig = 0
    Do
    
    
     Reset Watchdog
    K = Inkey()
    If K = 35 Then
    
    
    
    Do
    Reset Watchdog
    K = Inkey()
    Select Case K
    Case 48:
    Toggle Stan.0
    Toggle Konfig.0
    Case 49:
    Toggle Stan.1
    Toggle Konfig.1
    Case 50:
    Toggle Stan.2
    Toggle Konfig.2
    Case 51:
    Toggle Stan.3
    Toggle Konfig.3
    Case 52:
    Toggle Stan.4
    Toggle Konfig.4
    Case 53:
    Toggle Stan.5
    Toggle Konfig.5
    Case 54:
    Toggle Stan.6
    Toggle Konfig.6
    Case 55:
    Toggle Stan.7
    Toggle Konfig.7
    Case 56:
    Toggle Stan.8
    Toggle Konfig.8
    Case 57:
    Toggle Stan.9
    Toggle Konfig.9
    End Select
    
    Gosub Ustaw
    
    If K = 61 Then
    Exit Do
    End If
    K = 255
    Loop
    
    
    
    End If
    If Pinb.1 = 0 Then
    Stan = 0
    Gosub Ustaw
    Writeeeprom Konfig , 0
    Exit Do
    End If
    K = 255
    Loop
    Return
    
    
    
    
    
    
    Stan_konfiguracji:
    Stan = Stan And Konfig
    Reset Watchdog
    Return
  • REKLAMA
  • #2 7670005
    sylwunia35
    Poziom 18  
    A ustawiłeś na zewnętrzny kwarc
    Dopisz :$baud = 9600,$crystal = 8000000
  • REKLAMA
  • #3 7670626
    SirKamil90
    Poziom 14  
    sylwunia35 napisał:
    A ustawiłeś na zewnętrzny kwarc
    Dopisz :$baud = 9600,$crystal = 8000000


    Tak, ustawiłem jednak ten fusebit za pomocą programatora w bascomie:

    Sterownik bluetooth - brak połącznia z komputerem
  • #4 7671410
    sylwunia35
    Poziom 18  
    Jest kolega pewien co do tych ustawień ja bym ustawił to tak:
    Sterownik bluetooth - brak połącznia z komputerem
    A dodałeś te dwie linijki programu:
    $crystal = 8000000
    $baud = 9600
    Czy sprawdziłeś przez hyperterminal czy procek coś wysyła do PC sądząc z programu powinien zaraz po starcie wysyłać A T itd. Sprawdź poprawność połączeń RX TX.
  • #5 7673475
    SirKamil90
    Poziom 14  
    Zmieniłem fusebit oraz dodałem dwie linijki z konfiguracją UART, połączenie linii RX i TX również jest prawidłowe, niestety bez zmian.

    Sterownik bluetooth - brak połącznia z komputerem

    Problem polega na tym że na hyperterminalu nie mam jak się połączyć z modułem, ponieważ nie utworzyły się nowe porty COM, w menadżerze urządzeń jest tylko jeden, COM1. Gdy w bluesoleil próbuję połączyć przez port szeregowy to wyskakuje komunikat:

    Sterownik bluetooth - brak połącznia z komputerem

    W jaki sposób mogę się połączyć z bluetoothem, tak aby utworzyły się wirtualne porty COM?
  • #6 7673733
    xury
    Specjalista automatyka domowa
    Czytał kolega datasheeta ?
    http://www.kamami.pl/dl/btm222_datasheet.pdf
    O programie się nie wypowiadam, bo nie ma prawa działać.
    Jak kolega poczyta tego datashita i poprawi kod to dalej pogadamy.

    A najlepiej na początek to podpiąć sam moduł przez jakiegoś max232 lub ftdi do komputera i pobawić się hyperterminalem.
    W datasheet jest napisana konfiguracja domyślna:
    Cytat:
    The factory settings of UART are as follows:
    􀁺 Baud rate: 19200 bps
    􀁺 Data bit: 8
    􀁺 Parity: none
    􀁺 Stop bit: 1
    􀁺 Flow control: H/W or none

    skąd bierzecie to 9600 to ja nie wiem
  • REKLAMA
  • #7 7674763
    SirKamil90
    Poziom 14  
    Rzeczywiście deklaracja prędkości przesyłu danych była zupełnie błędna, zmieniłem ją na odpowiednią, tak wygląda teraz początek programu:

    $regfile "m8def.dat"
    $crystal = 8000000
    $baud = 19200
    
    Rem ---------------------------Bluester------------------------
    
    
    
    Dim Stan As Integer , Znak As Byte , Konfig As Integer , I As Byte , Temp As Byte , K As Byte
    
    Config Portb = &B111101
    Portb = &B000010
    Config Portc = &B111111
    Portc = 0
    Config Portd = &B11111110
    Portd = &B00000001
    
    Config Watchdog = 1024
    Start Watchdog


    Jednak nadal nie ma jakiejkolwiek komunikacji, połączenia sprawdziłem już chyba 10 razy i wszystko jest ok. Przyznam się że wcześniej nie próbowałem używać RS232, ale czytałem o nim.

    Widzisz jakiś jeszcze błąd w układzie?
  • Pomocny post
    #8 7674966
    mirekk36
    Poziom 42  
    SirKamil90 --> podstawowy błąd jaki robisz to, to że próbujesz wysyłać jakieś polecenia AT do modułu BT ze strony procesora. Tzn teoretycznie można, ale w ogóle nie jest to konieczne ani potrzebne i większość ludzi brnie tak jak ty na początku w ślepą uliczkę.

    Radzę ci poczytaj ale bardzo uważnie te tematy:

    https://www.elektroda.pl/rtvforum/topic1536735.html

    https://www.elektroda.pl/rtvforum/topic1433390.html

    to ci powinno dużo wyjaśnić.

    W skrócie - Taki moduł konfiguruje się tylko raz (jeśli to w ogóle konieczne) ale trzeba się do niego łączyć nie przez Bluetooth - tylko do jego nóg Rx oraz Tx przez jakąś przejściówkę włączoną do kompa. Wtedy zadziała ci Hyperterminal oraz polecenia AT, którymi właśnie raz ustawisz sobie np nową NAZWĘ i ona będzie już na zawsze zapamiętana, zmienisz sobie prędkość na taką jaką będziesz chciał i ona będzie też raz na zawsze zapamiętana. TO WSZYSTKO !!!

    Potem gdy będziesz miał podłączonego procka i ustawionego na tą prędkość to wystarczy się DOPIERO wtedy połączyć od strony PCta za pomocą Bluetooth'a przez co zostanie nawiązane połączenie i od razu będziesz miał połączenie JAK KABEL tyle że radiowy do procka. I wtedy przez Virtualny ComPort utworzony przez twoje sterowniki BT w kompie będziesz mógł bez żadnych przeszkód - "gadać" ze swoim prockiem. Gdzie nie będą potrzebne żadne polecenia AT w takiej naprostszej i najczęściej używanej konfiguracji.

    Reszty - nauczysz się później ;)
  • REKLAMA
  • #9 7676160
    sylwunia35
    Poziom 18  
    A jak kolega próbując połączyć zamiast modułu procesor z komputerem przez hyperterminal to używa MAX232 i dla sprawdzenia połączenia zwierając jego wyjście TX RX te do procka to na ekranie ma echo naciśniętego klawisza klawiatury. Pytam tak dla jasności. A za pomyłkę z deklaracją prędkości przepraszam. Jednak mimo tej pomyłki powinny być jakieś "krzaki" na PC.
    Pozdrawiam
  • #10 7676908
    SirKamil90
    Poziom 14  
    Mirku, przeczytałem dokładnie dwa tematy które mi podałeś i tak jak zapewniałem dużo mi wyjaśniły. Myślę że mój problem leży po stronie sterownika bluetooth w komputerze, kupiłem na allegro za kilka złotych bluetooth (oznaczenie IBP22C-11-V2) i do niego był dołączony bluesoleil 2.3, po zainstalowaniu tego sterownika nie utworzyły się żadne nowe porty COM, więc nic dziwnego że nie mogłem się połączyć z modułem BTM222.

    Zainstalowałem najnowszą wersję bluesoleil 6.3 jednak nadal nie utworzyły się nowe porty COM, w menadżerze urządzeń jest tylko jedno LPT i jedno COM.
    Później odinstalowałem wszystkie sterowniki i pozwoliłem windowsowi zainstalować własne, jednak przez to w ogóle nie wykrywało BTM222.
    Mam windowsa 7, być może w tym jest problem. Możesz mi poradzić jaki sterownik mam zainstalować?

    Jeżeli chodzi o nazwę modułu - udało mi się ustawić odpowiednią, myślę że problemem była właśnie zła prędkość transmisji danych. Nazwa została ustawiona z poziomu mikrokontrolera, teraz już wiem że wystarczy ją tylko raz ustawić. W każdym razie to już jest duży krok że jest komunikacja BTM222-Atmega8, a czuje że jeżeli zainstaluje odpowiednie sterowniki na komputerze to wszystko ładnie ruszy.
  • #11 7676940
    mirekk36
    Poziom 42  
    SirKamil90 --> dużo i wszędzie się rozpisuję, że urządzenia BT w komputerach PC na sterwonikach kociego bluesoleil są do ...... bani delikatnie mówiąc.

    Dlatego jeśli już kupować BT/USB do PC-ta - to ja mogę zawsze śmiało polecić jeden pewny i sprawdzony w najgorszych bojach : D-Link DBT-122 ale zapewne czytałeś o tym w jednym z postów.

    Jeśli jednak nie możesz sobie pozwolić na zakup nowego urządzenia to nie pozostało ci nic innego właśnie jak szukanie innych wersji sterowników do swojego , albo jeszcze raz przekopanie się przez całą dokumentację twojego blu-solejlarza :( ..... powiem więcej, kiedyś - kiedyś - a było to baaardzo dawno temu gdy ja zaczynałem zabawy z butuftem - też próbowałem coś na blusolejlu - i też okazywało się, że przejściówka wykrywa mi ładnie telefon z BT - tyle że ............. badziewiarska przejściówka nie potrafiła za cholerę wykryć usługi SPP , a może w ogóle jej stos BT nie obsługiwał SPP ??? No i dlatego mi wtedy też nie tworzyły się nawet porty COM. Nie wiem, może jednak coś wtedy źle robiłem - koniec końców rzuciłem ją na dno Odry bo mieszkam w Szczecinie ;) i od tej pory używam już tylko przejściówek tych o których mówiłem wyżej albo takich które mają drivery i oprogramowanie firmy "Widcomm" - a o blusolejlarzu zapomniałem na wieki i omijam go zawsze dużym łukiem.
REKLAMA