跳到主要内容

【Bluetooth】蓝牙

介绍

是什么

蓝牙(Bluetooth)是一种短距离无线通信技术,工作在 2.4GHz ISM 频段(2.402-2.480 GHz),主要用于设备间的低功耗数据交换(如耳机、键盘、IoT设备)

核心特性

  • 短距离通信:通常 1-100 米(Class 1 强信号可达100m,Class 2 约10m)。

  • 低功耗(BLE):适合电池供电设备(如手环)。

  • 点对点 & 广播模式:支持设备间直连(P2P)或广播数据(信标)。

  • 抗干扰:采用 FHSS(跳频扩频),减少WiFi/微波炉干扰。

工作模式

模式简称功能典型应用
经典模式BR/EDR高速数据传输,稳定连接蓝牙耳机、音响、键盘
低功耗模式BLE超低功耗,间歇性通信智能手环、Beacon、IoT传感器
双模(BR+BLE)Dual Mode同时支持经典模式和BLE智能手机、平板电脑

关键函数

  • void begin(String name) 初始化蓝牙模块,设置设备名称

  • void end() 停止蓝牙串口,释放资源

  • int available() 得到可以读取数据量

  • size_t write(uint8_t byte) 发送一个字节

  • println() 蓝牙输出并换行

经典蓝牙实验

发送数据

  • 通过蓝牙每1秒发送一次 "Hello World"

  • 代码

   #include <Arduino.h>
#include <BluetoothSerial.h>

BluetoothSerial SerialBT; //初始化蓝牙模块

void setup()
{
SerialBT.begin("ESP32实验"); //设置设备名称
}

void loop()
{

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

接收数据

  • 接收数据并打印到串口

  • 代码

    #include <Arduino.h>
#include <BluetoothSerial.h>

BluetoothSerial SerialBT; //初始化蓝牙模块

void setup()
{
SerialBT.begin("ESP32实验"); //设置设备名称
}

void loop()
{
if (SerialBT.available()) //如果有数据
{
int length = SerialBT.available(); //得到可以读取数据量
char buffer[length]; //定义缓冲区
SerialBT.readBytes(buffer, length); //读取数据
for (int i = 0; i < length; i++)
{
SerialBT.print(buffer[i]); //打印数据
}
SerialBT.println(); //换行
}
delay(1000);
}