回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(233)---ESP32-S3 UNO基础的SPP蓝牙通信 简单

头像 驴友花雕 2024.10.24 7 0

 

06.jpg

ESP32-S3 UNO 开发板是基于 ESP32-S3-WROOM-1-N16R8 微控制器的扩展板,基于 Arduino 开发板架构。凭借 2.4GHz Wi-Fi 和集成蓝牙 5.0 等高级功能,它为开发各种项目提供了一个强大的平台。ESP32-S3 UNO 配备 16MB 闪存和 8MB RAM,特别适用于物联网 (IoT)、机器人和其他工程项目的复杂应用。该开发板支持 Python 和 C 等流行的编程语言,可以在 Arduino IDE 开发环境中轻松编程和使用。该板的高级功能,包括对多种通信协议的支持和高处理能力,使其成为专业工程师和开发人员的理想工具。

 

00 (2).jpg
00.jpg

ESP32 SPP(Serial Port Profile)是一种基于蓝牙的经典蓝牙串口通信协议,它允许设备之间通过蓝牙进行串口数据传输。在ESP32中,SPP功能可以通过软件协议栈实现,使得ESP32可以作为一个蓝牙串口服务器或客户端与其他蓝牙设备进行通信。

1、Arduino
Arduino 是一种开源硬件和软件平台,用于制作电子项目和物联网(IoT)设备。它包括一个开发板和一套编程环境,使用户可以通过简单的代码来控制各种电子元件。

2、ESP32
ESP32 是由 Espressif Systems 设计的一款单片机(SoC),集成了 Wi-Fi 和蓝牙功能。它广泛应用于移动设备、可穿戴设备和物联网(IoT)应用。ESP32 提供丰富的外设接口和高性能,非常适合开发各种嵌入式系统。

3、SPP(Serial Port Profile)
SPP(Serial Port Profile) 是蓝牙协议中的一种,它模拟了传统的 RS-232(UART)串行连接。通过 SPP,ESP32 可以通过蓝牙与其他设备进行数据传输,就像通过串行端口一样。

4、Arduino ESP32 SPP
Arduino ESP32 SPP 指的是使用 Arduino 开发环境在 ESP32 上实现蓝牙串行端口协议(SPP)。通过这种方式,你可以编写代码来控制 ESP32 的蓝牙功能,使其能够与其他蓝牙设备进行通信。

5、全面详细的科学解释
1)Arduino 开发环境:Arduino 提供了一套开发环境,包括编译器、IDE(集成开发环境)和各种库,使用户可以通过简单的代码来控制硬件。
2)ESP32 硬件:ESP32 是一款集成了 Wi-Fi 和蓝牙的单片机,具有多个 GPIO 引脚、ADC、DAC、PWM 等功能,适用于各种嵌入式系统开发。
3)SPP 协议:SPP 是蓝牙协议中的一种,通过模拟 RS-232 串行连接,实现无线数据传输。SPP 通常用于替代传统的串行端口,使设备可以通过蓝牙进行通信。
4)Arduino ESP32 SPP 应用:通过 Arduino 开发环境在 ESP32 上实现 SPP,可以编写代码来初始化蓝牙、发现服务、建立连接、发送和接收数据。这种应用广泛用于物联网设备、远程控制和数据传输等场景。

 

03.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+WiFi+蓝牙5.0+45个GPIO
 {花雕动手做}项目之十六:ESP32-S3 UNO基础的SPP蓝牙通信

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+WiFi+蓝牙5.0+45个GPIO
  {花雕动手做}项目之十六:ESP32-S3 UNO基础的SPP蓝牙通信
*/

#include <BluetoothSerial.h>

BluetoothSerial SerialBT; // 创建一个BluetoothSerial对象

void setup() {
  Serial.begin(115200); // 初始化串口通信,波特率设置为115200
  SerialBT.begin("ESP32_SPP"); // 设置蓝牙名称为 "ESP32_BT"
  Serial.println("设备已启动,现在您可以与蓝牙设备配对!");
}

void loop() {
  // 如果串口有数据可读,则通过蓝牙发送
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  // 如果蓝牙有数据可读,则通过串口发送
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
}

在手机端打开蓝牙,连接ESP32_SPP

 

80-r.jpg

打开《蓝牙串口 SPP》app,连接ESP32_SPP,发送和接收信息

 

80-1.jpg

实验串口返回情况

 

80.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+WiFi+蓝牙5.0+45个GPIO
 {花雕动手做}项目之十七:ESP32-S3 UNO的SPP蓝牙连接状态指示

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+WiFi+蓝牙5.0+45个GPIO
  {花雕动手做}项目之十七:ESP32-S3 UNO的SPP蓝牙连接状态指示
*/

#include <BluetoothSerial.h>

BluetoothSerial SerialBT;
bool connected = false;

void setup() {
    Serial.begin(115200);
    SerialBT.begin("ESP32_SPP");
    Serial.println("蓝牙已初始化,设备名称: ESP32_SPP");
}

void loop() {
    if (SerialBT.hasClient()) { // 检查是否有客户端连接
        if (!connected) {
            Serial.println("设备已连接");
            connected = true;
        }
    } else {
        if (connected) {
            Serial.println("设备已断开连接");
            connected = false;
        }
    }

    if (SerialBT.available()) {
        String message = SerialBT.readString();
        Serial.print("接收到数据: ");
        Serial.println(message);
    }
}

打开《蓝牙串口 SPP》app,连接ESP32_SPP,发送信息

 

80-2.jpg

实验串口返回情况

 

80-3.jpg

实验场景图

 

13-1.jpg

评论

user-avatar
icon 他的勋章
    展开更多