Şimdi Ara

STM32F103 Nucleo ile Bluetooth & Uart Bağlantısı

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
672
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar, bir tasarım ödevim var. STM32 Kullanarak BT bağlantısı ile DC motor kontrol edeceğim. Keil MDK V5. ve CubeMx kullanıyorum.

    Öncelikle Bluetooth bağlantısı kullanarak Bluetooth modülüne bir dizi göndermeyi ve bu diziyi bilgisayardaki seri port okuma programlarından okumayı hedefledim.

    USART ayarlarını ve pin bağlantılarını CubeMx üzerinden ayarladıktan sonra Keil'da küçük bir program yazdım. Buna göre STM32 Nucleo'nun USART2'sini kullanıp, A2 (Tx) ve A3 (Rx) pinleri ile haberleşme yapacaktım. Kodda bunları ayarladım.

    Tabii ki Bluetooth bağlantılarını ayarladım. HC06 modülü kullanıyorum. 5V ile besliyorum. Modülün Tx'ine işlemcinin Rx'ini, Rx'ine ise işlemcinin Tx'ini bağladım. Ancak tuhaf bir hatayla karşılaştım: Bluetooth'tan veri okuyamadım ve STM'in bağlandığı porttan veri okuyabildiğimi gördüm. Neyi kaçırıyorum? Bağlantılarımı defalarca kontrol ettim. Acaba komutum Rx ve Tx pinlerini kullanmamı sağlamıyor mu?

    Keil main Kodu:

    void SystemClock_Config(void);


    int main(void)
    {

    HAL_Init();


    SystemClock_Config();




    MX_GPIO_Init();
    MX_USART2_UART_Init();



    while (1)
    {
    if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)==0){
    char mes[] = "hello\r\n";
    HAL_UART_Transmit(&huart2, (uint8_t*)mes, strlen(mes), 1000);
    HAL_Delay(1000);
    }
    else
    {
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    HAL_Delay(100);
    }
    }


    }

    Keil USART Kodu:

    #include "usart.h"

    #include "gpio.h"


    UART_HandleTypeDef huart2;



    void MX_USART2_UART_Init(void)
    {

    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;
    if (HAL_UART_Init(&huart2) != HAL_OK)
    {
    _Error_Handler(__FILE__, __LINE__);
    }

    }

    void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
    {

    GPIO_InitTypeDef GPIO_InitStruct;
    if(uartHandle->Instance==USART2)
    {

    __HAL_RCC_USART2_CLK_ENABLE();

    /**USART2 GPIO Configuration
    PA2 ------> USART2_TX
    PA3 ------> USART2_RX
    */
    GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    }
    }

    void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
    {

    if(uartHandle->Instance==USART2)
    {

    __HAL_RCC_USART2_CLK_DISABLE();

    /**USART2 GPIO Configuration
    PA2 ------> USART2_TX
    PA3 ------> USART2_RX
    */
    HAL_GPIO_DeInit(GPIOA, USART_TX_Pin|USART_RX_Pin);


    }
    }

    Kolay gelsin, iyi forumlar...

    (kod için kullandığım kaynak:https://www.dmcinfo.com/latest-thinking/blog/id/9372/nucleo-uart-tutorial)







  • Konuştuğum bir arkadaşım Bluetooth modülünü bilgisayara seri port olarak kaydetmemin gerektiğini söyledi. Ancak aygıt yöneticisinde Bluetooth modülü HC'nin gelen ve giden seri portları yer alıyor. Baud rateleri kontrol ettim.

    Modülde sorun olmadığını teyit etmek için STM32'nin seri port çıkışlarını Arduino'nunkine bağladım ve seri port okuyucudan değerleri okumaya çalıştım. Okuyamadım :D Yine COM5'ten yani STM'in bağlı olduğu kablodan haberleşme gerçekleştirildiğini gördüm.
  • Hem yazayim hem guncellenmis olsun konu. Kablodan veri aktarmamin nedeni Nucleo'nun usb portunun UART2'de olmasiymis. UART1'de yaptigimda da pinlerden bir sey okuyamadim. Arduino ile baglanti yaptim. Ama porta bir sey gelmedi. Bugun nucleo'nun cikisini laboratuarda gozlemleyecegim bir voltaj dengesizligi olabilir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.