• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak zacząć z Xbee Bluetooth?
#1
Witam, 
Jakiś czas temu stworzyłem robota, który sam jeździ i omija przeszkody. Działa super. 
Chcę sterować nim przez telefon by jeździł.

Posiadam płytkę Romeo V2-All in one Controller, która posiada socket XBee.

Kupiłem na aliexpress XBee Bluetooth HC-05: 
https://pl.aliexpress.com/item/Bluetooth...Title=true

Nie mogę znaleźć żadnego podobnego projektu wykorzystujące moje części. Czy mogę prosić o pomoc?
Nie wiem nawet jak zacząć. Ponoć trzeba podłączyć się i zmienić ustawienia tego odbiornika HC-05.

Próbowałem pisać prosty program wykorzystujący program na androidizie by włączyć diodę LED, ale nie działa. Gdy komunikuję się z arduino przez kabel, UART i wpisuję np. 0 to diod się zapalają.

Prosto mówiąc, nie umiem zrobić by ten odbiornik bluetooth zadział. 

Z góry dziękuję za pomoc.
 
Odpowiedź
#2
A telefon odnajduje ten moduł?
Bo jeśli odnajduje, to powinieneś bez problemu się z nim połączyć.
Jeśli aplikacja na androida coś wyśle, to Arduino odbiera to na porcie szeregowym, więc funkcja korzystająca z tych danych powinna wyglądać jakoś tak:
Kod:
 String dane;
       if (Serial.available() > 0) {
               dane = Serial.read();
            if (dane==jakiś_napis) wykonaj zadanie; // na przykład zapal diodę
       }
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Okej niejasno napisałem.

1. Podłączam kablem USB układ do komputera i wgrywam KOD,  po którym jak dostanie dane wejściowe "1" zapali diodę.
2. Łącze się telefonem z modułem bluetooth. Łączy się normalnie.
3. Odpalam aplikacje, która po wciśnięciu przycisku wysyła "1" do arduino.
4. Nic się nie dzieje.
5. Cały czas jest podłączony kablem USB.
6. Rozpoczynam komunikację UART i wpisuję w konsoli programu arduino "1" - dioda się zapala normalnie

Nie wiem gdzie leży problem. Próbowałem też na własnym zasilaniu i także to nie działa.

Dodaję kod, który obecnie używam do jazdy moim robotem. -
https://drive.google.com/drive/folders/1...sp=sharing
 
Odpowiedź
#4
Weź sobie adapter/przejściówkę USB/UART na 3.3V, np. na FTDI (zwykle czerwona płytka na USB MINI). Podłącz ją do PC, podłącz do niej moduł BT i zobacz własnymi oczętami co ona odbiera jak wyślesz coś z telefonu. Oczywiście z prędkością taką samą jak definiujesz w Arduino. Jak Arduino odbiera dane z UART, to nie powinno być różnicy z BT. Tyle że BT może być skonfigurowany na inną prędkość i to ewentualnie trzeba zmienić (o ile program na Androida czegoś jeszcze nie namieszał).
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#5
BT jest dobrze skonfigurowany skoro mam linijkę w kodzie.

void setup() {
initMotor();
Serial.begin(9600); --- taka sama wartość w komputerze, a w telefonie nie znalazłem żadnych ustawien w aplikacji do zmiany prędkosci transmisji
}

W opisie tego BT jest napisane, że można go skonfigurować za pomocą komend. Domyślnie jest ustawiony na slave a może być też master. Nie wiem jak to działa :/
 
Odpowiedź
#6
To co opisałem jest właśnie potrzebne do potwierdzenia, czy masz dobrze skonfigurowane. Jak nie masz przejściówki to pozostaje po kolei wpisywać tu różne wartości zamiast 9600 i sprawdzać kiedy zadziała. Najczęściej to będzie 9600, 38400 lub 115200, ale inne też są możliwe.
Zresztą w opisie na ali jest:
"Bluetooth Bee Bluetooth wireless module using XBEE design, compact size, compatible with XBEE expansion base for a variety of 3.3V microcontroller systems, modules can use the AT command set master-slave mode, baud rate, pairing password, the user information, default baud rate: 38400, default slave mode, the pairing 1234."
Także masz źle, zmień 9600 na 38400.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#7
Zmieniłem i nic nie dało.
Mam pytanie. Czy komenda- Serial.read(); nie monitoruje tylko portu microusb??? W sensie kod działa mi idealnie gdy robot jest podłączony do komputera kablem i w konsoli programu arduino wpisuję odpowiednie wartości.
Czy to nie powinno być podłączone z jakimś pinem, by z niego zczytywać przychodzące dane czy coś w tym stylu?

Znalazłem też taki poradnik.
https://www.14core.com/wiring-programmin...on-module/

Ale gdy wpisuję kod zawarty poniżej i go kompiluje to wyskakuje błąd:
Błąd kompilacji dla płytki Arduino Leonardo.
 
Odpowiedź
#8
No zasadniczo, w tej płytce, Serial jest zarezerwowany dla portu USB. Jak chcesz czytać z pinów RX i TX, to musisz korzystać z funkcji Serial1.read()
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#9
Witam serdecznie,
DZIAŁA
Pomogło:
-ustawienie transmisji na 9600. Serial1.begin(9600);
-ustawienie komendy z 1: Serial1.read();

Teraz mogę jeździć robotem po domu jak mi się nudziWink) Dziękuję wszystkim.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości