這個程式是用作連接 A2DP(Advanced Audio Distribution Profile)設置裝置,ESP32 連接藍牙裝置後,便可以由 ESP32 開發板播放音樂,雖然音源由 ESP32 隨機產生,一定是噪聲,並非真正的音樂,接收後在幻響神州(i-MU)的羊眉吐氣藍牙音箱(I-Sheep Bluetooth Speaker),也會是噪聲,但祇要有聲音產生,便可以證明成功,這個範例程式是放在 esp_idf/examples/Bluetooth/ a2dp_source。
ESP32 藍牙(Bluetooth)A2DP Source 程式 |
開發環境:ESP32 Windows Toolchain 20181001 版本
燒寫程式:FLASH_DOWNLOAD_TOOLS_v3.6.4
原程式版本:ESP32 ESP-IDF V3.3-beat1-136
原程式:esp_idf/examples/Bluetooth/ a2dp_source
程式:DIY-ESP32-100_04_BT_a2dp_source_i-sheep-20190106
ESP32 藍牙(Bluetooth)A2DP Source 掃描程式:
static void
filter_inquiry_scan_result(esp_bt_gap_cb_param_t *param)
{
char bda_str[18];
uint32_t cod = 0;
int32_t rssi = -129; // invalid value
uint8_t *eir = NULL;
esp_bt_gap_dev_prop_t *p;
ESP_LOGI(BT_AV_TAG, "Scanned device:
%s", bda2str(param->disc_res.bda, bda_str, 18));
for (int i = 0; i <
param->disc_res.num_prop; i++) {
p = param->disc_res.prop + i;
switch (p->type) {
case ESP_BT_GAP_DEV_PROP_COD:
cod = *(uint32_t *)(p->val);
ESP_LOGI(BT_AV_TAG, "--Class
of Device: 0x%x", cod);
break;
case ESP_BT_GAP_DEV_PROP_RSSI:
rssi = *(int8_t *)(p->val);
ESP_LOGI(BT_AV_TAG, "--RSSI:
%d", rssi);
break;
case ESP_BT_GAP_DEV_PROP_EIR:
eir = (uint8_t *)(p->val);
break;
case ESP_BT_GAP_DEV_PROP_BDNAME:
default:
break;
}
}
// Search for device with MAJOR service
class as "rendering" in COD
if (!esp_bt_gap_is_valid_cod(cod) ||
!(esp_bt_gap_get_cod_srvc(cod)
& ESP_BT_COD_SRVC_RENDERING)) {
return;
}
// Search for device named "i-sheep"
in its extended inqury response
if (eir) {
get_name_from_eir(eir, s_peer_bdname,
NULL);
if (strcmp((char *)s_peer_bdname,
"i-sheep") != 0) {
return;
}
ESP_LOGI(BT_AV_TAG, "Found a
target device, address %s, name %s", bda_str, s_peer_bdname);
s_a2d_state =
APP_AV_STATE_DISCOVERED;
memcpy(s_peer_bda,
param->disc_res.bda, ESP_BD_ADDR_LEN);
ESP_LOGI(BT_AV_TAG, "Cancel device
discovery ...");
esp_bt_gap_cancel_discovery();
}
}
|
程式成功編譯,便將 bin 檔案燒錄到 ESP32 模組,完成後重置 ESP32 模組,開啓 ESPlorer ESPlorer v0.2.0-rc6 作串口輸出顯示。
ESP32 開發板藍牙掃描 i-sheep 音箱設備 |
ESP32 開發板開始播放音樂到 i-sheep 音箱設備 |
Slave Bluetooth 設備名稱: i-sheep
2019年 1月 20日 天氣報告
氣溫:20.7度 @ 18:40
相對濕度:百分之 76%
天氣:大致多雲
沒有留言:
張貼留言