Skocz do zawartości

HC5 bluetooth + Arduino - problem z komunikacją


merinum

Pomocna odpowiedź

witam

szanowni Państwo, mam pewien dylemat nad którym już siedzę od dwóch dni i jestem w miejscu. podłączyłem moduł HC5 bluetooth do arduino uno i jest problem: ardunino nie czyta tego co jest wysyłane z HC5 do niego.

po załączeniu monitora w arduino wszystko idzie ok - co jest wpisane w monitorze pojawia się w konsoli na telefonie, zas wpisując cokolwiek na konsoli telefonu nie pojawia mi się na monitorze ardunio. dodatko, by sprawdzić czy wszystko jest ok z HC5 zmostkowałem RX z TX i po wpisaniu na konsoli w telefonie linie mi się powtarzają więc domniemywam, że wszystko jest ok, tylko już nie mam komunikacji wyjściowej z HC5 na arduino. do testu używam poniższego kodu - bardzo proszę byście mnie nakierowali na miejsce, w którym robię coś źle bo jak chodzi o mnie to wszystkie koncepcje, które wpadły mi do głowy by to rozwiązać już mi sie skończyły 🙂

 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup()
{
 Serial.begin(9600);
 mySerial.begin(9600);
}
void loop()
{
 if (mySerial.available())
 Serial.write(mySerial.read());
 if (Serial.available())
 mySerial.write(Serial.read());
}

 

Link do komentarza
Share on other sites

Wszystko jest tu poprawne i wszystko działa. Więc, o ile nie pomyliłeś przewodów, to nie wiem, może to, co masz na telefonie, nie wyświetla znaków w miarę przychodzenia tylko czeka na inny znak nowego wiersza niż ten wysyłany przez konsolkę Arduino? Spróbować można np.:

  if (Serial.available()) {
    int r = Serial.read();
    mySerial.write(r);
    if (r == 10)
      mySerial.write(13);   
  }

Poprawka: krzywo czytam. Nie w tę stronę masz problem. A konsola Arduino pokazuje każdy pojedynczy przychodzący znak, więc w tę stronę nie byłoby problemu.

Edytowano przez trainee
Link do komentarza
Share on other sites

problem mam taki, że to co wpisuję w konsoli telefonu wyświetla się w konsoli telefonu, a nie jest widocze w monitorze arduino. nie wiem czy to ma znaczenie, ale testuję to na Leonardo ... już mnie to męczy, ale nie ma co się poddawać .....

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

Dla pewności zerknąłem na pinout w Leonardo, mając jakąś myśl, że może tam dla odmiany te piny wchodzą w konflikt z szeregowym do konsoli. Ale nie, nic podobnego. Sam mam tylko Uno i mam też ten Bluetooth i by nie być gołosłownym, podłączyłem, wkleiłem Twój kod, działa. Przy założeniu, że używasz w Leonardo konsoli szeregowej po USB podłączonym do płytki, to wszystko wygląda dobrze.

Link do komentarza
Share on other sites

Serial1 to jak podłączysz jakiś terminal do pinów 0 i 1. I jeżeli, notabene, używasz po stronie komputera tego szeregowego portu, który idzie po kabelku USB, to możesz Bluetooth podłączyć do 0 i 1 i używać Serial1 zamiast SoftwareSerial. Ale to tylko możesz. To w żaden sposób nie powinno wpływać na to czy Twój kod działa.

Jest jeszcze jedna umiarkowanie prawdopodobna możliwość. Ten Bluetooth jest 3,3V, a Arduino 5V. W teorii jego wyjście powinno wystarczyć na wejście pinu Arduino, chyba że coś mu niedomaga z zasilaniem (do czego podłączyłeś jego Vcc?). Jeśli chodzi o poprawne podłączanie Arduino i modułu to powinno się to robić przez konwerter poziomów.

Link do komentarza
Share on other sites

robiłem testy zarówno na 5V jak i na Vin i efekt ten sam, może faktycznie obniżyć mu napięcie, ale z drugiej strony pytanie dlaczego działa bez problemu sygnałowka z arduino

Link do komentarza
Share on other sites

5V to ten poprawny wybór wyprowadzenia by zasilić ten moduł, bo on potrzebuje zasilania w zakresie 3,6-6V. A Vin może dać i 12V. Także tu się wszystko zgadza. Wyjście z Arduino idzie o większym napięciu do modułu niż powinno. Jest ryzyko uszkodzenia modułu, nie powinno się tak robić, jako minimum można by zastosować dzielnik napięcia w tę stronę dla zabezpieczenia. A co do wyjścia z Bluetooth w kierunku Arduino - ten "idealny" stan wysoki dla Arduino to niby 5V, ale stan wysoki ma zakres, nie wiem ile to jest dla Atmegi w Leonardo, bo dla tej w Uno stan wysoki wejściowy zaczyna się od 3V. No i teraz zważywszy, że w urządzeniu 3,3V stan wysoki wyjściowy może mieć tylko 2,4V, to taki Bluetooth może wystawić Ci taką "jedynkę" na wyjściu, że Arduino jej nie potraktuje jako jedynki.

Link do komentarza
Share on other sites

Tak jeszcze na marginesie dodam, że do Uno podłączałem tę zabawkę bez konwertera, licząc się z ryzykiem "moja strata". W każdym razie w moim wypadku nie było problemów z odczytam po stronie Arduino stanu z Bluetooth.

Link do komentarza
Share on other sites

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.