Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATMEGA 328P i HC-05-brak komunkacji między modułami. Arduino ISP

21 Kwi 2018 21:57 342 14
  • Poziom 6  
    Hej wszystkim,
    Chciałbym za pomocą apki w telefonie sterować diodami podłączonymi pod piny PWM.
    Podłączenie w załączniku.
    Program wgrywa się prawidłowo (sprawdziłem po prostu czy jak podam stan wysoki na jakiś pin do się zaświeci-działa)
    Korzystam z aplikacji Serial Bluetooth Terminal. Aplikacja łączy się.Dostaję zwrotną informację "HC-05 connected"
    W kodzie zauważycie linijkę która sprawdza czy piny modułu i uC wspópracują i niestety nie wchodzi w ifa tylko w elsa
    Kod: actionscript
    Zaloguj się, aby zobaczyć kod

    Niestety używając programatora nie mogę korzystać z monitora portu szeregowego, żeby sprawdzić czy na 100% nie otrzymuje informacji.
    Wpisując w aplikacje 97 lub inna która powinna zaświecić diodę i nie się nie dzieje.
  • Użytkownik usunął konto  
  • Poziom 6  
    Tak, standardowo z 5V, moduł toleruje do 6V. Mam płytkę Arduino Leonardo i komunikacja była bezbłędna z takim samym podłączeniem. Czy w sposób mniej inwazyjny dla portfela mogę zobaczyć jak wygląda komunikacja TX-RX między tymi dwoma urządzeniami?
  • Poziom 32  
    Przy takiej ilości delay, aż dziwne by było, gdyby uC robił coś innego niż czekał i blokował wykonywanie innych instrukcji, to po pierwsze, po drugie czytasz z serial bajt po bajcie (Serial.read), zatem w przypadku otrzymania na serialu np "liczby" 97 otrzymasz dwa bajty reprezentujące kod ascii dla 9 i 7 odpowiednio 57 i 55, zatem warunek if(data==97) nigdy nie będzie spełniony, jak również kolejne zapisane w ten sposób.

    Musisz czytać to inaczej, czyli zapisać to do zmiennej typu char dodając kolejne znaki aż napotkasz znak końca linii czyli '\n'.

    Poniżej pierwszy lepszy kod z Przykładów z Arduino :

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 6  
    Ok, ale to wszystko działało na Arduino Leonardo, po za tym czemu po włączeniu wszystkie uC wchodzi w instrukcję else, oznacza to że serial nie jest available?
  • Poziom 32  
    Jeżeli nie ma nic w buforze to jest <=0 i dlatego masz to co jest w else. Jednak zwracam uwagę na mnogość delay, które blokują np. odczyt serial w czasie, gdy są aktywne i wszystkie instrukcje czekają na zakończenie delay.

    Pozdr
    Sławek
  • Poziom 6  
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Mam taki kod i w aplikacji wpisywałem 99, literkę "c", kod jest źle czy jak to wygląda?
  • Poziom 32  
    Zrób sobie tak :

    Kod: c
    Zaloguj się, aby zobaczyć kod


    cmd to cały ciąg tablicy char, cmd[0] to pierwszy znak tablicy który porównujesz, możesz zrobić tak np.

    Kod: c
    Zaloguj się, aby zobaczyć kod
    wtedy wielkość litery jest nieważna. Przy char ciąg określa się w ' ' a nie "", zwróć na to uwagę

    W powyższym przykładzie ważne jest, aby otrzymany ciąg był zakończony znakiem końca linii, a wiec terminal na telefonie musi mieć taką możliwość, raczej wszystkie to mają, w razie czego, możesz dopisać na końcu wysyłanego stringu \n.

    Pozdr
    Sławek
  • Poziom 6  
    Czy dobrze myślę mając kod jak poniżej, jeśli w aplikacji wpiszę literę a,b,c lub d to jakaś dioda zapali się i już nie zgaśnie?Po za tym kontrolna dioda na pinie 2 będzie migała, a tak nie jest ciągle miga kontrolna dioda.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jak pracowaliśmy na module Arduino Leonardo pojawiał się problem Serial/Serial1 ale po zmianie na poprawne Seriale działało. Tutaj mamy tylko jeden Serial? Na Atmedze wyrzuca błąd że Serial1 is not declared on this scope.
  • Użytkownik usunął konto  
  • Poziom 6  
    Mając taki kod wpisując obojętnie jaką wartość zapala mi się dioda na pinie 10. Wkurzony zacząłem wpisywać różne losowe ciąg liczb i uwaga po wpisaniu ciągu ^!^1## kilka razy pod rząd zapaliła mi się kilka razy dioda na pinie 10 a ostatni raz na pinie 9. Mam problem z konwersją liczb. uC nie odbiera tego w ASCII a jak chce coś zobaczyć na apce, żeby wyświetliło coś to każdy wyświetlany znak jest zastąpiony znakiem zapytania w rombie.
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 32  
    A na pewno masz baud na HC-05 ustawiony na 9600 ? bo krzaczki wskazują na to, źe prędkości są różne.
    Z tego co pamietam, to domyślnie ma on 38400. Podłącz sie bezpośrednio do HC-05 z jakiegosc terminala na kompie i za pomoca komend AT sprawdź prędkość.

    Pozdr
  • Poziom 6  
    Chciałem pracować w trybie AT na Arduino Leonardo. Podłączenie elementów jest ok (zgodnie z instrukcja z tego linku: http://blog.nettigo.pl/2014/konfiguracja-modulu-bluetooth-hc-05/ , ale pojawia się problem z kodem. Mam coś takiego:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    i po włączeniu monitora portu szeregowego mam na ekranie tylko napis "Enter AT commands:", wpisywanie czegokolwiek nic nie zmienia. W czym tkwi problem? Dodam, że kod skopiowałem ze strony, z której korzystałem próbując przełączyć się w tryb komend, a jedyne co zmodyfikowałem to dodanie Serial1 (podobnie miałem wiele wersji pierwszych linijek w obu ifa-ach ale żadna z nich nie dała oczekiwanego rezultatu).
  • Poziom 32  
    Masz konwerter USB <-> UART ? jeżeli tak, to podłącz do HC-05 i wtedy wejdź w tryb AT np. z terminala Arduino lub jakiegoś innego.

    Pozdr
  • Poziom 6  
    Nie mam, ale próbowałem się połączyć w tryb komend AT za pomocą pinu ENABLE. Niestety nie dostaję żadnej odpowiedzi z bluetootha. Zauważyłem też, że na płytce Arduino Leonardo nie świeci się dioda RX, co znaczy, że działa komunikacja tylko w jedną stronę. Poniżej wklejam kod:

    Kod: c
    Zaloguj się, aby zobaczyć kod