Skocz do zawartości

HC-06 nie odpowiada w STM32


Xenon02

Pomocna odpowiedź

Witam !

Mam problem z Bluetoothem w STM32, korzystam aktualnie z płytki Nucleo-L073RZ oraz z modułu HC-06. 
Bluetooth nie jest do niczego podłączony ponieważ miga dioda, i próbowałem wysłać komendę AT przez UARTA do płytki HC-06. 

Żadna kombinacja nie dawała rezultatów, zmieniając Bound Rate'a z 9600 na większa nic nie dawało, zmieniłem domyślne no pull up no pull down na ->  pull up i to też nic nie dało, oraz połączyłem to tak ja na obrazku  : 

https://www.martyncurrey.com/arduino-and-hc-06-zs-040/

Czyli dodałem dzielnik do RX bo wiem że tam 5V nie mogę podać. Ale z dzielnikiem jak i bez też ten sam efekt 

Oto kod do wysłania komendy AT, nawet jak wyślę samo AT bez \r\n też nie działa

 

// Send AT command to HC-06
	      char atCommand[] = "AT\r\n";
	      HAL_UART_Transmit(&huart2, (uint8_t *)atCommand, sizeof(atCommand)-1, 500);

	      // Add a delay to allow time for the HC-06 to process the command
	      HAL_Delay(1000);

	      // Handle the response from HC-06 (you may need to implement a function to receive and process data)
	      // For simplicity, you can use a blocking receive function like HAL_UART_Receive.

	      // Example of receiving response
	      HAL_UART_Receive(&huart2, (uint8_t *)response, sizeof(response)-1, 500);
	      response[sizeof(response)-1] = '\0'; // Null-terminate the string
	      printf("%s --\n", response);

Tutaj ustawienie tego co mam w UART :

 

static void MX_USART2_UART_Init(void)
{

  /* USER CODE BEGIN USART2_Init 0 */

  /* USER CODE END USART2_Init 0 */

  /* USER CODE BEGIN USART2_Init 1 */

  /* USER CODE END USART2_Init 1 */
  huart2.Instance = USART2;
  huart2.Init.BaudRate = 9600;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART2_Init 2 */

  /* USER CODE END USART2_Init 2 */

}



Dodatkowa informacja jak dam HAL_MAX_Delay zamiast 500 albo inne wartości to utknął gdzieś w sprawdzaniu czy nie przekroczył tego czasu czyli tam gdzieś w HAL_Error. I już kompletnie nie wiem o co chodzi. 

Link do komentarza
Share on other sites

Z tego co pamiętam, i na szybko znalazłem:

1. Sprawdź na 100% czy potrzebujesz dzielników napięcia, moja wersja hc ma 3.3V na UART, STM tez ma 3.3, więc same kabelki wystarczą

2. Baudrate do trybu AT to 38400.

3. Żeby wejść w tryb AT musiałem zdaje się przy starcie modułu albo jakiś przycisk przytrzymać albo któryś pin wysterować (masa albo +VCC, teraz nie pamiętam)

Link do komentarza
Share on other sites

W przykładzie dzielnik napięcia miałeś przy podłączeniu do NANO, który pracuje na 5V, STM32 ma logikę 3.3V tak samo jak logika HC-06 i żaden dzielnik napięcia nie jest potrzebny. I to nie jest tak, że możesz sobie testować z/lub nie, trzeba wiedzieć co się robi, bo jakby faktycznie był potrzebny to uszkodzeniu pinu już nic więcej nie zrobisz.

Najprościej test z komendą AT wykonać na terminalu PC z konwerterem UART/USB, nie będziesz miał wątpliwości czy twój program działa czy nie.

Kupiłem sobie jeden HC-06 do testów, HC-05 odpowiadały komendami AT tylko ze znakami NL/CR, a HC-06 tylko bez tych znaków. Ale jak się zachowuje moduł zależeć będzie jaki ma tam firmware wgrany. Są różne komendy do ustawienia prędkości w obu modułach, nie wzoruj się na tych dla HC-05.

Tu jest opis różnic https://www.instructables.com/AT-command-mode-of-HC-05-Bluetooth-module/   i na końcu kilka komend AT dla HC-06.

Jak w terminalu potwierdzisz, że moduł BT działa, jaką ma prędkość (mój miał 9600) i jaki styl wysłania AT mu pasuje, to wtedy wróć do swojego programu.

Link do komentarza
Share on other sites

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

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.