Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART

02 Aug 2016 11:51 2151 9
  • Level 9  
    Witam.

    Na wstępie wspomnę że z problemem walczę już ponad tydzień i dopiero dziś uzbrojony w wiedzę i całą armię linków z internetu Link1,Link2,Link3 odważę się zadać pytanie do najtęższych umysłów w tym kraju ;-)

    Posiadam płytkę testową z kursu "dla początkujących"
    Link5

    Jest tu zamontowany procesor Attiny2313. Komunikuję się bez problemu z procesorem za pomocą terminala oraz przejściówki COM Tx Rx po krzyżu. Napisałem już kilka programów komunikujących się VB Net <-> BASCOM.
    Jakiś czas temu wpadłem na pomysł napisania aplikacji na androida (.app) Tu jako łącze wymiany danych będzie moduł bluetooth [BT] HC-05.

    [ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART

    Moduł wydaje się być sprawny sprzętowo:
    - nawiązuje połączenie zarówno z BT w komputerze jak i z aplikacjami android (dioda zwalniai miga co 2 sekundy podwójnie)
    - jeżeli wcisnę przycisk na HC-05 dioda sygnalizuje wejście w tryb AT (miga co 2 sekundy pojedynczo)
    - połączyłem ze sobą na HC-05 RX i Tx. Wysłany znak(i) zwraca prawidłowo do terminala PC.

    PROBLEMY

    1) Wysyłam (baud=9600) z terminala Realterm "SendNumbers" liczbę "75". Cały czas mam połączony na HC-05 Tx z Rx w odpowiedzi w terminalu otrzymuję prawidłowo literę "K" natomiast na wyświetlaczu LCD na płytce testowej jako wyświetla się nieprawidłowa wartość "90"

    Przykłady:
    wysyłam 65(A) na LCD 95
    wysyłam 70(F) na LCD 46
    wysyłam 75(K) na LCD 90
    wysyłam 80(P) na LCD 5
    wysyłam 84(T) na LCD 21
    wysyłam 85(U) na LCD 85 <--- tu się zgadza
    wysyłam 90(Z) na LCD 99


    [ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART


    Listing 1 [Kod BASCOM]
    Code: vbnet
    Log in, to see the code


    Skoro po złączeniu Rx z Tx na HC-05 otrzymuję prawidłowe znaki podejrzewam że problem jest na poziomie płytki(procesora). Co może być przyczyną tej różnicy znaków ? Wspomnę raz jeszcze że komunikacja za pośrednictwem terminala i przejściówki RS232 działa bez zarzutów.

    Może różnica prędkości baud. Według producenta jest to 9600 ale chciałem odczytać za pomocą komendy AT ale tu też napotkałem problemy.

    2) Wchodząc w tryb AT nie jestem wstanie skomunikować się z modułem HC-05
    Próbowałem połączeń baud=38400 (według producenta) jak i baud=9600 ale brak połączenia

    [ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART

    Próbowałem także połączyć końcówki z przejściówki RS232 (oczywiście krzyżowo) by skomunikować się "po kablu" z modułem HC-05 niestety w tej sytuacji po podłączeniu zasilania lampka na HC-05 nie świeci. Zaczyna mrugać dopiero gdy odłączę od nóżki HC-05 Tx lub Rx, wtedy dioda mruga tak jak w przypadku oczekiwania na połączenie (szybko migająca dioda).

    Mi już zabrakło pomysłów-może ktoś podpowie mi gdzie robię błąd.

    Pozdrawiam
  • User removed account  
  • Level 9  
    Dzięki za info ;-) ale listę kroków przeanalizowałem n-razy z linków zamieszczonych na początku wpisu. Teraz wiem że u Ciebie działa a u mnie nadal nie.
    Co do zmiennych też próbowałem wcześniej z tą opcją by wykorzystać Byte. Właściwie cały czas tak robiłem na końcu zamieniłem na integer - gdy pomysły się wyczerpały.
    Co do F1 w BASCOM wolę tą wersję z linku HELP BASCOM PL ;-)

    Jakieś pomysły dlaczego płytka błędnie odczytuje wysłane znaki?
  • User removed account  
  • Level 9  
    Wgrałem Twój program do swojego attiny2313 pozostawiając jedynie swój $crystal = 4000000

    Wynik jest następujący: wysyłam
    Send_Numbers 75 lub Send_ASCII K a na wyświetlaczu otrzymuję Z

    Przykłady:
    wys. A otrzymana na LCD: _
    wys. B otrzymana na LCD: /
    wys. C otrzymana na LCD: ^
    wys. E otrzymana na LCD: ]
    wys. M otrzymana na LCD: Y
    wys. O otrzymana na LCD: X

    AD2
    Co do trybu AT. Podłączam kable z przejściówki COM i HC05 się nie świeci dopiero gdy odłączę kabel Rx lub Tx na 1 sek. dioda zaczyna migać (szybko). Ale w tej sytuacji nie mogę wejść już w tryb AT bo na moim HC05 działa jedynie sposób przy bootowaniu z prędkością baud=38400 (teoretycznie bo nigdy jeszcze nie udało mi się w tym trybie wysłać komendy) ale dioda sygnalizuje właśnie tryb AT.
  • User removed account  
  • Level 9  
    Zrobiłem już chyba wszystkie możliwe testy i konfiguracje. Nie mogę spać - przez to :idea:
    Gdy połączę Tx z Rx i wyślę stringi np. z terminala w telefonie wraca dokładnie to samo. Sprawdziłem napięcia na module HC-05 i tu niepokojąca mnie sprawa

    Tx 3.29V (czyli prawie idealne 3.3V)
    Rx 0.1V (tak mam być czy też powinno być 3.3 V?)

    Foto Tx
    [ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART

    Foto Rx
    [ATMEL/attiny2313] - komunikacja modułu bluetooth HC-05 z UART
  • User removed account  
  • Level 36  
    Ja bym kolego podłączył analizator ttl nawet taki z ale***o za 50pln . W ustawieniach masz coś spaprane Bit stopu, parzystości, albo coś innego . Pamiętam że kiedyś bascom miał jakiś problem z wysłaniem wartości 0 i jej odebraniem . czy tu tak jest nie mam pojęcia ,ale sprawdź poza tym zrób pauzy między każdym wysyłanym bajtem może robisz to za szybko i moduł nie nadąża realizować komend ...
  • Level 9  
    Nareszcie udało mi się rozwiązać problem (po przeczytaniu mądrej książki).
    Słowa kluczowe:
    UART sprzętowy - do którego podpiąłem HC-05 i to nie działało !!!

    UART wirtualny - ręczne zdeklarowanie portów w kodzie. Te porty są oczywiście inne niż te, które obsługują UART sprzętowy. Po podłączeniu HC-05 poprawnie działa komunikacja: wyślij(print) <=> odbierz(inkey,waitkey)

    Pozdrawiam.