Skocz do zawartości

HC5 bluetooth + Arduino - problem z komunikacją


Pomocna odpowiedź

Napisano

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());
}

 

(edytowany)

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

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ć .....

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.

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.

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

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.

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...