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

AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16

Kertoip95 05 Wrz 2014 14:22 5181 25
  • #1 13936156
    Kertoip95
    Poziom 10  
    Chcę sterować robotem za pomocą telefonu z Androidem przez bluetooth. Program na telefon zrobiłem przez MIT App Inventor 2 i wygląda tak:

    AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16

    Działanie jest proste, ma wysłać do modułu BT HC-05 znak "a". Połączenie przebiega prawidłowo, moduł jest znajdowany przez telefon i sparowany.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Po odebraniu znaku silnik powinien się kręcić ale tak nie jest. Co jest nie tak?
  • #2 13936234
    mickpr
    Poziom 39  
    Nie powinieneś czasem odczytywać UDR tylko raz?
    http://www.atmel.com/Images/doc2466.pdf
    Strona 145:
    Cytat:
    A second Buffer Register has been added. The two Buffer Registers operate as a circular
    FIFO buffer. Therefore the UDR must only be read once for each incoming data!


    Popraw main i sprawdź:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 13936309
    Kertoip95
    Poziom 10  
    Niestety dalej brak reakcji. Dodam jeszcze, że przed połączeniem z telefonem modułowy led mruga z dużą częstotliwością, a po następują dwa szybkie mrugnięcia co ok. 2s.
  • #4 13936322
    mickpr
    Poziom 39  
    Czy w ogóle coś odbierasz? Podłącz moduł przez przejściówkę do PC-ta i sprawdź co odbierasz.
  • #5 13936357
    Kertoip95
    Poziom 10  
    Nie mam przejściówki, dlatego chciałem zrobić to wprost na uC. Dla pewności, że to nie wina znaku przesłałem 0 ale sytuacja się powtórzyła i teraz nie wiem czy to wina BT, podłączenia czy programu. Wygląda na to, że muszę zrobić przejściówkę.
  • #6 13937026
    mickpr
    Poziom 39  
    Napisz sobie kod, który sprawdzi - gdy odbierzesz cokolwiek przez UART, niech ci np. zapali diodę LED.
    Będziesz przynajmniej wiedział, czy moduł coś ci zwraca.

    Podziel się też z nami schematem podłączenia modułu do Atmegi.
    Nie wiem czy to istotne (nigdy go nie używałem) i czy konieczne, ale podciągałeś linie RX/TX do Vcc? - tak jak tutaj: http://www.mlodedrwale.pl/2013/07/05/tani-modul-bluetooth-cz1/
    Nie masz zamienionych RX z TX?
    W jaki sposób skonfigurowałeś moduł?
  • #7 13937554
    Kertoip95
    Poziom 10  
    Moduł jest podłączony przez konwerter stanów logicznych aby Atmega mogła odebrać sygnał (BT działa na 3.3V). Wszystko sprawdzałem 10 razy jeszcze przed zrobieniem płytki i 10 razy po, na 99.9% podłączenie jest dobre.
    Nie podciągałem do Vcc.
    Nie konfigurowałem modułu, są ustawienia fabryczne.

    Jutro podłączę wszystko na płytce stykowej i dam znać o rezultatach. Sprawdzę też z podciągnięciem do Vcc. A jeżeli niezbędna będzie konfiguracja to chyba najlepiej będzie zaczekać na przejściówkę do PC.
  • Pomocny post
    #8 13937789
    mickpr
    Poziom 39  
    Ja właśnie myślę, że nie trafiłeś z prędkością transmisji. Być może wszystko inne jest okej. *)
    W dokumentacji HC-05 piszą o dwóch prędkościach domyslnych - to jest 9600 i 38400 - w Twoim przypadku ustawiłeś sobie bez skonfigurowania moduł na 19200.
    Tak BTW - jaki masz kwarc? Z jaką częstotliwością skonfigurowałeś Atmegę?

    *) Czy na pewno procedura inicjacji USART tak wygląda - jak napisałeś?
  • #9 13937933
    Kertoip95
    Poziom 10  
    Kod wygląda teraz tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Staram się brać informacje z datasheetu wieć powinno być ok ale pewności nigdy nie ma.
  • #10 13938215
    jony15
    Poziom 24  
    Po pierwsze spraw ( kup pożycz ) przejściówkę z usb na rs232 ( ttl ), podłącz nią do HC-05. Sprawdź sam HC05 z jaką prędkością pracuje i czy odbiera cokolwiek z telefonu. Później podłącz przejściówkę do avr-a i z komputera wyślij znak "a"; zobacz czy avr zareaguje.
  • #11 13938313
    Kertoip95
    Poziom 10  
    To chyba będzie najlepsze rozwiązanie, w następnym tygodniu będę miał przejściówkę i jeżeli dalej będą problemy dam znać w temacie. Dzięki za pomoc.
  • #12 13952988
    Kertoip95
    Poziom 10  
    Mam już przejściówkę i nowe problemy. Moduł nie reaguje na komendy AT, nie odbiera też znaków z programu. Sterowniki do przejściówki aktualne. Oczywiście podłączenie TXD -> RXD.

    Wrzucam zdjęcia z programu i elementów. Moduł BT podłączam pod 3.3V.
    AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16
  • #13 13953311
    BlueDraco
    Specjalista - Mikrokontrolery
    Jaka jest domyślna szybkość transmisji dla tego modułu? Z czego go zasilasz? Schemat?
  • #14 13953354
    encore
    Poziom 19  
    Żeby wejść w tryb komend AT musisz pin STATE przez podaniem napięcia podpiąć pod "+" albo GND, sprawdź to w dokumentacji modułu. Ponadto terminal musi być ustawiony na odpowiednią prędkość transmisji.
  • #15 13953434
    jony15
    Poziom 24  
    Pokombinuj ( nie pamiętam dokładnie jak było z HC-06 ) duże, małe litery przy pisaniu komend i lub wyłączenie "entera" na końcu komendy.
  • #16 13954394
    Kertoip95
    Poziom 10  
    Podłączyłem przejściówkę TXD->RXD, żeby sprawdzić czy odbiorę znak przez nią wysyłany. I nic.

    AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16
  • #17 13954399
    dondu
    Moderator na urlopie...
    Pokaż okna ustawienia bluetooth.
    Jak miga dioda na HC-05?

    Cytat:
    KEY: PIN34, for entering to the AT mode.

    AT Mode 1: After power on, it can enter the AT
    mode by triggering PIN34 with high level. Then
    the baud rate for setting AT command is equal to
    the baud rate in communication, for example:
    9600.

    AT mode 2: First set the PIN34 as high level, or
    while on powering the module set the PIN34 to be
    high level, the Baud rate used here is 38400 bps.

    Notice: All AT commands can be operated only
    when the PIN34 is at high level. Only part of the
    AT commands can be used if PIN34 doesn’t keep
    the high level after entering to the AT mode.

  • #18 13954719
    Kertoip95
    Poziom 10  
    Po licznych próbach, wreszcie jest jakiś rezultat. PIN34 podłączony pod 3.3V. Wpisałem komendę AT+NAME=XXXXX żeby sprawdzić czy może jest jakiś odbiór. Na ekranie nie pokazał się komunikat zwrotny (zła konfiguracja Realterm?) ale po sprawdzeniu nazwy na telefonie zaszła zmiana. Komunikacja działa na 9600.

    Po podłączeniu dioda miga z dużą częstotliwością. Przy innym podłączeniu migała równo co 2s ale nie znalazłem nic na ten temat w datasheecie.

    Działa na Way2.

    Cytat:
    Enter to AT mode:
    Way1: Supply power to module and input high level to PIN34 at the same time, the module will enter to
    AT mode with the baud rate-38400.
    Way2: In the first step, supply power to module; In the second step, input high level to PIN34. Then the
    module will enter to AT mode with the baud rate-9600. Way1 is recommended.
    Command structure: all command should end up with “\r\n” (Hex: 0X0D X0A) as the terminator.


    Sprawdzałem też programem Device Monitoring Studio i z portu wychodzą dane ale nic do niego nie wraca. Nawet przy komendach AT nie pokazuje się OK.

    /edit

    Wysyłając z Realterma dane, telefon je odbiera ale nadając je nie ma efektu tzn. moduł odbiera dane linią RXD, wysyła do telefonu ale linia TXD modułu nie chce nic wysłać.
  • #19 13960231
    Malpeczka159
    Poziom 11  
    Miałem ten sam problem ostatnio z tym modułem tylko używam arduino. Chodzi na programowym serialu na 9600. Musi być tylko podłączony pin WAKEUP i włączony NL i CR w serial monitorze. Reaguje na komendy AT bez problemu.
  • #20 13965136
    Kertoip95
    Poziom 10  
    Próbowałem już chyba wszystkiego i dalej nic. Konwerter stanów logicznych też na wypadek gdyby przejściówka nie obsługiwała TXD i RXD na 3.3V. Przeszukałem cały anglojęzyczny internet i sporo osób miało ten sam problem ale też nie mogli sobie z tym poradzić. Niestety muszę kupić nowy moduł.
  • #22 13965292
    Kertoip95
    Poziom 10  
    Tak, nie odbieram żadnych danych od modułu ale moduł je odbiera, a nawet wysyła np do telefonu.
  • #23 13965380
    dondu
    Moderator na urlopie...
    Uporządkujmy więc:

    1. Jeśli HC-05 ma na pokładzie regulator napięcia 3,3V (ma?) korzystać musisz z zewnętrznego zasilania 5V.
    2. Sygnały TX oraz RX podłącz do konwertera poziomów i następnie do adaptera RS-232 na USB (chyba że masz taki, który toleruje 3,3V). Tylko podłącz je właściwie bo inaczej nie będzie transmisji.
    3. podłącz PIN34 do 3,3V.
    4. uruchom Realterm ustaw na 38400bps i COM odpowiedni dla adaptera RS-232.
    5. W Realterm w zakładce SEND w części EOL zaznacz +CR oraz +LF począwszy od góry.
    6. Włącz zasilanie HC-05 - dioda na HC-05 powinna migać z f=2Hz
    7. Wyślij Realterm-em komendę AT
    8. poinformuj co otrzymałeś.

    Jeżeli nie będzie działać zrób zdjęcia całego tak przygotowanego układu, by można było to sprawdzić. Dodaj także zrzuty ekranów Realterm zakładek Port i Send.
  • #24 13965493
    Kertoip95
    Poziom 10  
    1. Nie ma regulatora napięcia.
    6. Wg datasheetu tak ma być ale dioda miga co 2s tzn. wyłącza się na 2s i na 2s włącza. Z tego co przeczytałem wynika, że wtedy jest włączony AT mode. Jest jeszcze druga metoda z podłączeniem PIN34 do GND, a po włączeniu modułu podłączenie PIN34 do 3.3V. Wtedy jest to 2Hz. Spróbowałem obu opcji, i obu na różnych baud rate ale nic się nie pokazuje. Innym nawet gdy mieli źle ustawione baud pokazywały się chociaż "krzaczki".

    Dodam, że moduł reaguje na komendy AT, przynajmniej na jedną, mogę zmienić jego nazwę.

    Zamieszczam zdjęcia ale z racji, że mało z nich widać dołączam rysunek.

    AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16 AVR/Atmega16/C - Połączenie bluetooth HC-05 i Atmega16
  • #25 13965525
    dondu
    Moderator na urlopie...
    Czyli robisz wszystko prawidłowo.

    Dziwne natomiast jest to:
    Kertoip95 napisał:
    Dodam, że moduł reaguje na komendy AT, przynajmniej na jedną, mogę zmienić jego nazwę.

    więc ostatnia deska ratunku pin RESET.
  • #26 13965570
    Kertoip95
    Poziom 10  
    Do tego wszystkiego się teraz spalił... No nic, widocznie trafił mi się uszkodzony albo sam go jakoś niechcący uszkodziłem. Mimo wszystko dzięki wszystkim za pomoc.

    Pozdrawiam, Kertoip95.
REKLAMA