• 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
Problem z komendami "AT" w programowaniu modułu BT na Ardu IDE
#1
Cześć, że jest to mój pierwszy post na tym forum tak że witam wszystkich użytkowników bardzo serdecznie.

Co to samego tematu...
Przerabiam tracker modelarski tak aby komunikował się z radiem modelarskim (TX) które wysyłał informacje telemetryczne do Trackera poprzez moduł BT (RX).

Zarówno nadawanie jak i odbieranie odbywać się a za pomocą modułów BT HM-10 (oryginały)

Problem pojawił się podczas programowania tych modułów BT gdy tylko chciałem zmienić ich prędkość przesyłu danych z 9600 na 115200.
Po wpisaniu komendy AT+BADU4 w oknie dialogowym Adru pokazało się że komenda została zatwierdzona.
Przepiąłem na USB TTL drugi moduł BT w którym również zmieniłem prędkość na 115200 po czy chciałem je z sobą sparować poprzez przypisanie adresu jednego z modułów, wiadomo o co chodzi...
Niestety po tych operacjach przeprowadzonych na modułach (obydwa) nie działają, nie reagują na komendy AT.
Jedyne gdzie widać jakąkolwiek komunikację to gdy podepnę moduł BT pod USB TTL i otworzę okno dialogowe w IDE i chcę się połączyć za pomocą telefonu i widnieje komunikat: OK+CONNOK+LOS�.
Działa to tylko na jednym module przy prędkości 1200, gdy ją zmienię na wyższą/inna są nieczytelne znaki...
Drugi moduł nie reaguje nawet na próbę połączenia przez BT z telefonem, miga tylko czerwony led.

Na koniec dodam że próbowałem wykonywać różne operację takie jak podłączanie rezystora 2K do GND i 1K do RX bezowocnie...

Nie mam żadnych pomysłów co poszło nie tak i czy można to jeszcze uratować, może macie jakieś pomysły jak to ożywić?

PS: próbowałem również komend typu "AT+DEFLAUT, AT+HELP, AT+RESET" niestety efekt ten sam, czyli nic nie działa.

Dziekuję Smile
 
Odpowiedź
#2
Parowałeś je wcześniej? Bo to jest trochę nietypowe i niekoniecznie telefon je zobaczy.
Kiedyś miałem taki moduł, ale nie mam pojęcia czy "oryginalny", więc może dlatego pod AT+baud4 miałem prędkość domyślną modułu 9600.
Oczywiście żadna komenda Ci nie zadziała, dopóki nie dowiesz się, na jaką faktycznie prędkość ustawiłeś te moduły, testuj różne.
Nie wiem jakiej reakcji oczekujesz po sparowaniu slava z telefonem, jeśli faktycznie to Ci się udaje.
Kiedyś komuś opisywałem działanie mojego modułu HM-10 i zapisałem sobie w pamiętniczku, może coś się przyda:
Kod:
nowy ustawiony jest na SLAVE w przy szybkosci 9600, reaguje na WYSłANIE komendy AT z LR (musi być oba: \r\n). Czyli nie wpisujemy, tylko wysyłamy całą komendę na raz.
sLAWE (NOWY TEż) MIGA I OCZEKUJE NA POłąCZENIE
MASTER (PO PRZESTAWIENIU) NIE MIGA, RAZ TYLKO PRZY PODłACZENIU ZASILANIA.

Dzisiaj się bawiłem takim modułem i Google mnie tu zaprowadziło, więc odpiszę bo mi już działa. Robiłem to z rok temu, a dzisiaj mnie jakoś zamuliło, nie działa i nie działa. Na telefonie należy zainstalować HMBLE Terminal z GOOGLE PLAY STORE, czyli "normalnie", nie paruje się jak inne urządzenia BT z menu telefonu, telefon nawet go nie widzi, tylko właśnie przez BLE Terminal. Trzeba dać connect, dopiero wtedy robi wyszukiwanie W PROGRAMIE, parowanie i można się bawić.   Telefon wiekowy S4, także na każdym "dzisiejszym" powinno działać.
Drugi sposób już z PC, to po prostu jeden moduł się robi jako master, drugi slave podłączamy np. do Arduino. Master dajemy do PC przez konwerter USB-UART. Połączenie między modułami działa OK, nawiązanie połączenia z komputera z W7, który niby ma BT4.0 nie działa. Mój laptop w przeciwieństwie do telefonu wykrywa moduł BT, ale nie umie się sparować. Moduły między sobą parują się bez problemu. Komendy do wszystkiego można uzyskać wysyłając AT+HELP.   Jest inny zestaw komend dla modułu MASTER i inny dla SLAVE.
Komendy AT też działają specyficznie, nie można ich wpisywać, trzeba je wysłać jako linię tekstu znakiem \n\r, czy w takiej kolejności  czy \r\n nie wiem,  ale terminal Arduino radzi sobie OK, wielkość liter bez znaczenia. Komendami AT można gadać ze SLAVE gdy nie jest sparowany.
Moduły, które akurat ja mam działają zasilane 3-5V i z logiką 3-5V. Także polecam.

zapytanie o NAME to AT+NAME
Wszystko po tym traktuje jako ustawienie NAME

ustawienie baudrate
AT+baud4
1---1200
2---2400
3---4800
4---9600
5---19200
6---38400
7---57600
8---115200
9---230400
default:4---9600

3-4800
4-9600

8-115200
9-230000
OK
********************************************************************
* Command             Description                       *
* ---------------------------------------------------------------- *
* AT                  Check if the command terminal work normally  *
* AT+RESET            Software reboot                   *
* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
* AT+HELP             List all the commands                   *
* AT+NAME             Get/Set local device name                    *
* AT+PIN              Get/Set pin code for pairing                 *
* AT+PASS             Get/Set pin code for pairing                 *
* AT+BAUD             Get/Set baud rate                           *
* AT+LADDR            Get local bluetooth address           *
* AT+ADDR             Get local bluetooth address           *
* AT+DEFAULT          Restore factory default               *
* AT+RENEW            Restore factory default               *
* AT+STATE            Get current state                   *
* AT+PWRM             Get/Set power on mode(low power)            *
* AT+POWE             Get/Set RF transmit power            *
* AT+SLEEP            Sleep mode                            *
* AT+ROLE             Get/Set current role.                       *
* AT+PARI             Get/Set UART parity bit.                     *
* AT+STOP             Get/Set UART stop bit.                       *
* AT+START            System start working.               *
* AT+IMME             System wait for command when power on.       *
* AT+IBEA             Switch iBeacon mode.                       *
* AT+IBE0             Set iBeacon UUID 0.                           *
* AT+IBE1             Set iBeacon UUID 1.                           *
* AT+IBE2             Set iBeacon UUID 2.                           *
* AT+IBE3             Set iBeacon UUID 3.                           *
* AT+MARJ             Set iBeacon MARJ .                           *
* AT+MINO             Set iBeacon MINO .                           *
* AT+MEA              Set iBeacon MEA .                           *
* AT+NOTI             Notify connection event .                    *
* AT+UUID             Get/Set system SERVER_UUID .                   *
* AT+CHAR             Get/Set system CHAR_UUID .                   *
* -----------------------------------------------------------------*
* Note: (M) = The command support slave mode only.            *
* For more information, please visit http://www.bolutek.com        *
* Copyright@2013 www.bolutek.com. All rights reserved.           *
********************************************************************
+ROLE=0
+ROLE=1
OK
+ROLE=1
+RESET
OK
+ROLE=1
********************************************************************
* Command             Description                       *
* ---------------------------------------------------------------- *
* AT                  Check if the command terminal work normally  *
* AT+RESET            Software reboot                   *
* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
* AT+HELP             List all the commands                   *
* AT+NAME             Get/Set local device name                    *
* AT+PIN              Get/Set pin code for pairing                 *
* AT+BAUD             Get/Set baud rate                           *
* AT+LADDR            Get local bluetooth address           *
* AT+ADDR             Get local bluetooth address           *
* AT+DEFAULT          Restore factory default               *
* AT+RENEW            Restore factory default               *
* AT+STATE            Get current state                   *
* AT+PWRM             Get/Set power on mode(low power)            *
* AT+POWE             Get/Set RF transmit power            *
* AT+SLEEP            Sleep mode                            *
* AT+ROLE             Get/Set current role.                       *
* AT+PARI             Get/Set UART parity bit.                     *
* AT+STOP             Get/Set UART stop bit.                       *
* AT+INQ              Search slave model                           *
* AT+SHOW             Show the searched slave model.               *
* AT+CONN             Connect the index slave model.               *
* AT+IMME             System wait for command when power on.       *
* AT+START            System start working.               *
* AT+UUID             Get/Set system SERVER_UUID .                   *
* AT+CHAR             Get/Set system CHAR_UUID .                   *
* -----------------------------------------------------------------*
* Note: (M) = The command support master mode only.                *
* Copyright@2013 www.bolutek.com. All rights reserved.           *
********************************************************************

********************************************************************
* Command             Description                       *
* ---------------------------------------------------------------- *
* AT                  Check if the command terminal work normally  *
* AT+RESET            Software reboot                   *
* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
* AT+HELP             List all the commands                   *
* AT+NAME             Get/Set local device name                    *
* AT+PIN              Get/Set pin code for pairing                 *
* AT+PASS             Get/Set pin code for pairing                 *
* AT+BAUD             Get/Set baud rate                           *
* AT+LADDR            Get local bluetooth address           *
* AT+ADDR             Get local bluetooth address           *
* AT+DEFAULT          Restore factory default               *
* AT+RENEW            Restore factory default               *
* AT+STATE            Get current state                   *
* AT+PWRM             Get/Set power on mode(low power)            *
* AT+POWE             Get/Set RF transmit power            *
* AT+SLEEP            Sleep mode                            *
* AT+ROLE             Get/Set current role.                       *
* AT+PARI             Get/Set UART parity bit.                     *
* AT+STOP             Get/Set UART stop bit.                       *
* AT+START            System start working.               *
* AT+IMME             System wait for command when power on.       *
* AT+IBEA             Switch iBeacon mode.                       *
* AT+IBE0             Set iBeacon UUID 0.                           *
* AT+IBE1             Set iBeacon UUID 1.                           *
* AT+IBE2             Set iBeacon UUID 2.                           *
* AT+IBE3             Set iBeacon UUID 3.                           *
* AT+MARJ             Set iBeacon MARJ .                           *
* AT+MINO             Set iBeacon MINO .                           *
* AT+MEA              Set iBeacon MEA .                           *
* AT+NOTI             Notify connection event .                    *
* AT+UUID             Get/Set system SERVER_UUID .                   *
* AT+CHAR             Get/Set system CHAR_UUID .                   *
* -----------------------------------------------------------------*
* Note: (M) = The command support slave mode only.            *
* For more information, please visit http://www.bolutek.com        *
* Copyright@2013 www.bolutek.com. All rights reserved.           *
********************************************************************
Można jeszcze wgrać inny soft, jest to opisane gdzieś w internetach, może nawet ten sam, to wiadomo, będzie jak nowy.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
Dzięki za podpowiedzi...

Oczywiście prędkości sprawdzałem wszystkie dostępne rozwijając i wybierając po kolei, na każdej prędkości próbowałem komendy "AT".
Niestety nie ma żadnej reakcji i to mnie zastanawia,

"Nie wiem jakiej reakcji oczekujesz po sparowaniu slava z telefonem, jeśli faktycznie to Ci się udaje."
Nie próbuję parować modułów HM-10 z telefonem, napisałem że jedyne co działa jak próbuję połączyć telefon z modułem to mam na prędkości 1200 i tylko na niej info "OK+CONNOK+LOS�"

Próbuję sparować moduły razem tak aby wysyłały dane z mastera na slave i tylko to.
Oczywiście zależy mi na prędkości 115200 i stąd pojawiły się problemy, po zmianie tylko prędkości.

Moduły są oryginalne bo porównywałem elementy SMD jak i same nadruki na PCB aby wybrać jakość a nie taniość.
Latam modelami RC na dalekie dystanse i potrzebuję aby Radio wysyłało dane telemetryczne takie jak GPS poprzez moduł BT (HM-10), do modułu BT (HM-10) na trakerze który ustawia anteny która nakierowuje się same na model samolotu który jest w powietrzu (Tracker MFD Crossbow mini).
Do tego potrzebuję tej konstrukcji/komunikacji, telefon nie ma z tym nic wspólnego, posłużył jako przyrząd do "testów".

"Można jeszcze wgrać inny soft, jest to opisane gdzieś w internetach, może nawet ten sam, to wiadomo, będzie jak nowy."
Chętnie to uczynię o ile operacja nie jest zbytnio zakręcona...

Pozdro.
 
Odpowiedź
#4
"Chętnie to uczynię o ile operacja nie jest zbytnio zakręcona... "
Niestety jest zakręcona, wieki temu to robiłem, kojarzę moduł UART FTDI, CC2541hm10v540.bin, ccloader jako programik, szukaj po tych hasłach, jest jakiś szkic do Arduino, montowałem jakiś zestaw pogo pin by nie lutować, tylko wgrać to złączem na docisk. Nie pamiętam czy można to zrobić z modułem, który już nie gada.
Pokazałem Ci te zapiski tylko by uwypuklić, że nie wiadomo co tam masz za firmware, jakie ma funkcje i komendy, trzeba to było sprawdzić poleceniem help.
Mam parę tych modułów kupionych tylko do testów.
Tak w ogóle to polecam HC-05, działają w master/slave, jak coś się zapomni lub zamota to można go uruchomić awaryjnie z prędkością 38k i przestawić, szczególnie te moduły 6 pin i z przyciskiem.
Jedyną ich zaletą była cena, można je było kupić <2$ gdy HC-05 kosztował 4$, nie zauważyłem większego zasięgu, mniejszego zużycia prądu, a kompatybilność z różnymi urządzeniami była fatalna.
Teraz rzuciłem okiem na Allegro i cenowo sytuacja jest odwrotna, HC-05 z wysyłką smart widzę za 18,69zł, a HM-10 za 30, porównywalni sprzedawcy z opinią >99% i wysyłką smart.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#5
Dzięki.

Poddaję się z oryginalnymi HM-10 i idą w kont... Posiadam HC-05 ale postanowiłem że wykonam parowanie na nie oryginalnych HM-10 które gdzieś tam miałem.
Zmieniłem BAUD na 115200 i sparowałem je z sobą.
Po podaniu zasilania na jeden jak i drugi moduł BT zapala się led światłem ciągłym co oznacza "connected".
Bynajmniej tak pokazuje mi Ardu IDE gdy podłączę moduł przez USB-TTL/BT a do drugiego BT dam dam tylko zasilanie 5V.

Wszystko fajnie ale nie ma komunikacji między modułami pomimo sparowania i połączenia ich z sobą.

Dzisiaj przeprowadziłem test polegający na sprawdzeniu wysyłanych pakietów danych z radia RC bezpośrednio do USB-TTL / Ardu IDE... W oknie dialogowym pokazały sie wątki odbieranych pakietów danych, więc wszystko gra.

Natomiast jak podłączam pod radio RC moduł BT i drugi BT pod USB TTL to w oknie dialogowym ARDU IDE mam ciszę i tylko komunikat "connected"

Pytanie, czy trzeba jakoś wystartować z jakąś komendą aby transmisja danych ruszyła czy powinno się to odbywać automatycznie?

Zamieszczam zdjęcia z różnymi konfiguracjami w których widać jak zostało połączone wszystko z sobą, zarówno bezpośrednie podłączenie radia RC z USB TTL jak i Radio RC i moduł BT do modułu BT i USB TTL/ARDU IDE.

Smile


Załączone pliki Miniatury
                   
 
Odpowiedź
#6
Ja mam chyba inną wersję, u mnie to wygląda tak, że łączy się tylko na komendy AT, transmisja działa, nie umiem z niej wrócić inaczej niż odłączając zasilanie, po rozłączeniu zasilania nic automatycznie się nie łączy z powrotem:
Kod:
19:41:20.223 -> OK
19:41:38.395 -> ********************************************************************
19:41:38.497 -> * Command             Description                       *
19:41:38.599 -> * ---------------------------------------------------------------- *
19:41:38.701 -> * AT                  Check if the command terminal work normally  *
19:41:38.803 -> * AT+RESET            Software reboot                   *
19:41:38.871 -> * AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
19:41:39.007 -> * AT+HELP             List all the commands                   *
19:41:39.109 -> * AT+NAME             Get/Set local device name                    *
19:41:39.177 -> * AT+PIN              Get/Set pin code for pairing                 *
19:41:39.312 -> * AT+PASS             Get/Set pin code for pairing                 *
19:41:39.380 -> * AT+BAUD             Get/Set baud rate                           *
19:41:39.482 -> * AT+LADDR            Get local bluetooth address           *
19:41:39.584 -> * AT+ADDR             Get local bluetooth address           *
19:41:39.686 -> * AT+DEFAULT          Restore factory default               *
19:41:39.788 -> * AT+RENEW            Restore factory default               *
19:41:39.890 -> * AT+STATE            Get current state                   *
19:41:39.991 -> * AT+PWRM             Get/Set power on mode(low power)            *
19:41:40.093 -> * AT+POWE             Get/Set RF transmit power            *
19:41:40.194 -> * AT+SLEEP            Sleep mode                            *
19:41:40.296 -> * AT+ROLE             Get/Set current role.                       *
19:41:40.398 -> * AT+PARI             Get/Set UART parity bit.                     *
19:41:40.500 -> * AT+STOP             Get/Set UART stop bit.                       *
19:41:40.602 -> * AT+START            System start working.               *
19:41:40.670 -> * AT+IMME             System wait for command when power on.       *
19:41:40.806 -> * AT+IBEA             Switch iBeacon mode.                       *
19:41:40.908 -> * AT+IBE0             Set iBeacon UUID 0.                           *
19:41:40.976 -> * AT+IBE1             Set iBeacon UUID 1.                           *
19:41:41.112 -> * AT+IBE2             Set iBeacon UUID 2.                           *
19:41:41.213 -> * AT+IBE3             Set iBeacon UUID 3.                           *
19:41:41.281 -> * AT+MARJ             Set iBeacon MARJ .                           *
19:41:41.383 -> * AT+MINO             Set iBeacon MINO .                           *
19:41:41.485 -> * AT+MEA              Set iBeacon MEA .                           *
19:41:41.587 -> * AT+NOTI             Notify connection event .                    *
19:41:41.689 -> * AT+UUID             Get/Set system SERVER_UUID .                   *
19:41:41.791 -> * AT+CHAR             Get/Set system CHAR_UUID .                   *
19:41:41.893 -> * -----------------------------------------------------------------*
19:41:41.995 -> * Note: (M) = The command support slave mode only.            *
19:41:42.063 -> * For more information, please visit http://www.bolutek.com        *
19:41:42.131 -> * Copyright@2013 www.bolutek.com. All rights reserved.           *
19:41:42.199 -> ********************************************************************
19:42:16.070 -> +BAUD=4
19:43:29.145 -> +ROLE=0
19:43:35.801 -> ERROR=103
19:43:56.516 -> +ROLE=1
19:43:56.516 -> OK
19:45:08.133 -> +RESET
19:45:08.133 -> OK
19:45:15.569 -> OK
19:45:20.022 -> ********************************************************************
19:45:20.124 -> * Command             Description                       *
19:45:20.192 -> * ---------------------------------------------------------------- *
19:45:20.327 -> * AT                  Check if the command terminal work normally  *
19:45:20.428 -> * AT+RESET            Software reboot                   *
19:45:20.496 -> * AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
19:45:20.598 -> * AT+HELP             List all the commands                   *
19:45:20.733 -> * AT+NAME             Get/Set local device name                    *
19:45:20.801 -> * AT+PIN              Get/Set pin code for pairing                 *
19:45:20.903 -> * AT+BAUD             Get/Set baud rate                           *
19:45:21.005 -> * AT+LADDR            Get local bluetooth address           *
19:45:21.107 -> * AT+ADDR             Get local bluetooth address           *
19:45:21.208 -> * AT+DEFAULT          Restore factory default               *
19:45:21.310 -> * AT+RENEW            Restore factory default               *
19:45:21.412 -> * AT+STATE            Get current state                   *
19:45:21.515 -> * AT+PWRM             Get/Set power on mode(low power)            *
19:45:21.617 -> * AT+POWE             Get/Set RF transmit power            *
19:45:21.718 -> * AT+SLEEP            Sleep mode                            *
19:45:21.820 -> * AT+ROLE             Get/Set current role.                       *
19:45:21.922 -> * AT+PARI             Get/Set UART parity bit.                     *
19:45:22.024 -> * AT+STOP             Get/Set UART stop bit.                       *
19:45:22.126 -> * AT+INQ              Search slave model                           *
19:45:22.228 -> * AT+SHOW             Show the searched slave model.               *
19:45:22.296 -> * AT+CONN             Connect the index slave model.               *
19:45:22.398 -> * AT+IMME             System wait for command when power on.       *
19:45:22.534 -> * AT+START            System start working.               *
19:45:22.602 -> * AT+UUID             Get/Set system SERVER_UUID .                   *
19:45:22.704 -> * AT+CHAR             Get/Set system CHAR_UUID .                   *
19:45:22.805 -> * -----------------------------------------------------------------*
19:45:22.906 -> * Note: (M) = The command support master mode only.                *
19:45:23.008 -> * Copyright@2013 www.bolutek.com. All rights reserved.           *
19:45:23.110 -> ********************************************************************
19:45:40.266 -> OK
19:45:40.266 -> +INQS
19:45:40.368 -> +INQ:1 0x00158300A9CA
19:45:44.274 -> +INQE
19:45:44.274 -> Devices Found 1

19:46:38.947 -> Device1

19:46:38.947 -> 0x00158300A9CA
19:46:55.734 -> +Connecting  0x00158300A9CA
19:46:55.904 -> +Connected  0x00158300A9CA
19:48:05.664 -> nadawanie ze slave 115200 na Master 9600
19:48:25.734 ->
Kod:
19:45:44.274 -> Devices Found 1

19:46:38.947 -> Device1

19:46:38.947 -> 0x00158300A9CA
19:46:55.734 -> +Connecting  0x00158300A9CA
19:46:55.904 -> +Connected  0x00158300A9CA
19:48:05.664 -> nadawanie ze slave 115200 na Master 9600
19:48:25.734 ->
Kod:
+VERSION=Firmware V3.0.6,Bluetooth V4.0 LE

Oczywiście wpadłem na to, że pinem EN można wyłaczyć działanie modułu, co go właściwie resetuje, bo stan jest jak po odłączeniu zasilania, nie łączy się, ale w ten sposób już dałoby się dość prosto zasterować go z uC, wyszukać ten czy inny slave, połączyć, pogadać, zresetować stan pinem IO uC i nawiązać inne połączenie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości