Skocz do zawartości

Problem z HC-06


Artur1598

Pomocna odpowiedź

Cześć. Właśnie korzystam z modułu bluetooth HC-06 podłączonego do Arduino UNO i mam z nim jeden problem, bo jak działa wysyłanie danych z aplikacji na Arduino (sterowanie np. autkiem) to niestety nie działa komunikacja ze strony Arduino. To znaczy, że aplikacja nie szczytuje mi informacji podanych z Arduino. 
Zrobiłem projekt na podstawie filmu z yt: https://www.youtube.com/watch?v=8DOg8onUvks
w celu sprawdzenia działania modułu, i jak mogę sterować serwomechanizmem to niestety jak naciskam przyciski (informacja o stanie przycisku wyświetla się na monitorze portu szeregowego) to nie wyświetla mi się ona na telefonie. 
Kod zamieszam poniżej:

#include <Servo.h>
Servo myServo;

void setup() 
{
Serial.begin(9600);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(13, OUTPUT);
myServo.attach(10);
}

char cmd[100];
byte cmdIndex;
boolean prz1, prz2, prz1_old = true, prz2_old = true;

void exeCmd()
{
  if (cmd[0] == 's')
  {
    unsigned int val = atof(cmd+2);
    myServo.write(val);
  }
}

void loop() 
{
  if (Serial.available() > 0)
  {
    char c = (char)Serial.read();
    if (c == '\n')
    {
      cmd[cmdIndex] = 0;
      exeCmd();
      cmdIndex = 0;
    } else {
      cmd[cmdIndex] = c;
      if (cmdIndex < 99) cmdIndex++;
    }
  }

  prz1 = digitalRead(8);
  prz2 = digitalRead(9);

  if (prz1 != prz1_old)
  {
    prz1_old = prz1;
    if(prz1)
    {
      Serial.println("a 0\n"); // wysyłanie danych na monitor portu szeregowego kiedy przycis jest nie załączony
    } else {
      Serial.print("a 1\n"); // wysyłanie danych na monitor portu szeregowego kiedy przycis jest załączony
    }
  }

  if (prz2 != prz2_old)
  {
    prz2_old = prz2;
    if(prz2)
    {
      Serial.println("b 0\n"); // wysyłanie danych na monitor portu szeregowego kiedy przycis jest nie załączony
    } else {
      Serial.print("b 1\n"); // wysyłanie danych na monitor portu szeregowego kiedy przycis jest załączony
    }
  }

  
}

Sam moduł HC-06 podłączyłem za pomocą dzielnika napięcia i na krzyż (TX/RX). A w samej aplikacji także wszystko zostało poprawnie ustawione, ponieważ slajder działa i mogę bez problemu sterować serwomechanizmem.  

I zatem mam pytanie, czy robię coś źle (wiem że coś robię źle, bo jak bym robił prawidłowo to by działało 😅), czy jest coś o czym nie wiem przez co własnie nie mogę zrealizować komunikacji ze strony Arduino? 

Z góry dziękuje za pomoc.

92110400_214954463101664_1104852733141188608_n.png

92408274_544589796491637_5882274590264131584_n.jpg

Link do komentarza
Share on other sites

Fotografie, które załączyłeś są nieczytelne. Dzielnik napięcia dajesz tylko na TX Arduino, jeśli w ogóle, wszystkie moduły HC-05 i HC-06, które miałem działają bez problemu na logice 5V. Już lepiej dać konwerter poziomów, wtedy sygnały z 3V również są podnoszone do 5V na odbiorniku Atmegi.

Kolejna sprawa  to UNO ma tylko 1 UART i jest podłączony do portu USB. Do komunikacji z innymi elementami pozostaje softserial na innych pinach lub użycie płytki, która ma więcej sprzętowych (Leonardo, MICRO, MEGA). To czasami może działać, są rezystory 1k między UNO i USB, ale nie musi.

 

Link do komentarza
Share on other sites

@kaczakat Tak wiec co mi doradzasz zrobić ? 


Już kiedyś próbowałem dać piny RX i TX bezpośrednio, ale niestety doszło do uszkodzenia płytki, więc wolę zawsze dawać dzielnik (dzielnik jest na pinie Tx, ze strony UNO). 

Widziałem też jak piny Tx i Rxz modułu zostały podłączone na piny 2 i 3. Czy w przypadku UNO także powinienem tak podstąpić ? Nie jest potrzeba do tego dedykowana biblioteka ?  

Link do komentarza
Share on other sites

Tak, używasz biblioteki softserial i wtedy piny dowolne wolne, na 9600baud powinna działać bez problemu. Dzielnik napięcia zabezpiecza przed uszkodzeniem, ale jedynie obniża napięcie modułowi HC do poziomu 3V, nie podbija w drugą stronę do 5V dla UNO, choć oczywiście zwykle to działa, tak samo jak zwykle nic nie uszkadzałem podłączając HC bezpośrednio do 5V. Oczywiście są różne moduły HC. Pewne działanie jest wtedy gdy poziomy logiczne są niższe od 1/3 i wyższe od 2/3 Vcc, pośrednie poziomy dają pewną dozę niepewności.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.