ESP32 Bluetooth. Перенаправление последовательного вывода - PullRequest
0 голосов
/ 23 октября 2019

У меня есть плата разработчика ESP32, к которой я подключил акселерометр MMA8451, который выводит данные через последовательный порт. Есть ли простой способ вывести данные на последовательный приемник Bluetooth на телефоне Android? В части кода я использую операторы Serial.print. Есть ли эквивалент Bluetooth?

// Read the 'raw' data in 14-bit counts
  mma.read();
  Serial.print("X:\t"); Serial.print(mma.x); 
  Serial.print("\tY:\t"); Serial.print(mma.y); 
  Serial.print("\tZ:\t"); Serial.print(mma.z); 
  Serial.println();

1 Ответ

1 голос
/ 04 ноября 2019

Я нашел это с некоторым быстрым поиском . Или, если вы хотите использовать ESP32-idf .

Мне кажется, что есть две возможности. Вы можете использовать библиотеку Arduino BluetoothSerial или демонстрационную версию ESP-IDF SPP GATT CLIENT

Решения Arduino выглядят примерно как this :

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  SerialBT.begin("ESP32");
}

void loop() {

  SerialBT.println("Hello World");
  delay(1000);
}

Версия ESP-IDF немного сложнее , но это код для отправки периодического сердцебиения с использованием API Bluetooth:

#ifdef SUPPORT_HEARTBEAT
void spp_heart_beat_task(void * arg)
{
    uint16_t cmd_id;

    for(;;) {
        vTaskDelay(50 / portTICK_PERIOD_MS);
        if(xQueueReceive(cmd_heartbeat_queue, &cmd_id, portMAX_DELAY)) {
            while(1){
                if((is_connect == true) && (db != NULL) && ((db+SPP_IDX_SPP_HEARTBEAT_VAL)->properties & (ESP_GATT_CHAR_PROP_BIT_WRITE_NR | ESP_GATT_CHAR_PROP_BIT_WRITE))){
                    esp_ble_gattc_write_char( spp_gattc_if,
                                              spp_conn_id,
                                              (db+SPP_IDX_SPP_HEARTBEAT_VAL)->attribute_handle,
                                              sizeof(heartbeat_s),
                                              (uint8_t *)heartbeat_s,
                                              ESP_GATT_WRITE_TYPE_RSP,
                                              ESP_GATT_AUTH_REQ_NONE);
                    vTaskDelay(5000 / portTICK_PERIOD_MS);
                }else{
                    ESP_LOGI(GATTC_TAG,"disconnect\n");
                    break;
                }
            }
        }
    }
}
#endif
...