ESP32-S3在ardinuo上如何与手机进行蓝牙互传?现在来教你!

电子说

1.3w人已加入

描述

先简单介绍一下:

ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC),支持2.4GHz Wi-Fi和低功耗蓝牙(Bluetooth LE)无线通信。芯片集成了高性能的Xtensa32位LX7双核处理器、超低功耗协处理器、Wi-Fi 基带、蓝牙基带、RF模块以及外设。 

来看esp32 S3的配置

蓝牙

支持 IEEE 802.11b/g/n 协议
在 2.4 GHz 频带支持 20 MHz 和 40 MHz 频宽
支持 1T1R 模式,数据速率高达 150 Mbps
低功耗蓝牙 (Bluetooth LE):Bluetooth 5、Bluetooth mesh
高功率模式 (20 dBm)
速率支持 125 Kbps、500 Kbps、1 Mbps、2 Mbps
广播扩展 (Advertising Extensions)
多广播 (Multiple Advertisement Sets)
信道选择 (Channel Selection Algorithm #2)
Wi-Fi 与蓝牙共存,共用同一个天线
Xtensa 32位 LX7双核处理器,主频高达 240MHz
 45 × GPIO 口

蓝牙

管脚介绍

蓝牙

此资料为esp32s3的datasheet 可以添加一下我的微信(xinsousou)来向我免费索取哦~

Arduino IDE设置

打开Arduino IDE。

在“工具”菜单中选择“开发板” -> “ESP32 Dev Module”。(注意:可能需要安装ESP32的板管理器URL,具体步骤参考ESP32的官方文档)

选择正确的串行端口和上传速度。

示例代码

 

cpp
#include     
BluetoothSerial SerialBT;   
void setup() {    
Serial.begin(115200);    // 初始化蓝牙并设置设备名称和PIN码(可选)    
SerialBT.begin("ESP32-S3-Bluetooth", true);    
Serial.println("Bluetooth device started");  
}    
void loop()
 {    // 从串口接收数据并发送到蓝牙    
if (Serial.available()) {      
	char received = Serial.read();      
	SerialBT.write(received);   
}      // 从蓝牙接收数据并发送到串口    
if (SerialBT.available()) {      
	char received = SerialBT.read();      
	Serial.write(received);    
}      // 延迟以减少处理压力    
delay(10);  
}

 

如果你想让它叫唤起来的话。。。。。

  在ESP32-S3 Arduino环境中,如果你想在连接蓝牙后实现亮流水灯并蜂鸣的效果,且不使用外部设备(如额外的LED条或复杂的驱动威廉希尔官方网站 ),你可以使用ESP32-S3板载的LED(如果有的话,通常是内置的LED,如用于指示程序运行的LED)和GPIO引脚连接一个LED及一个无源蜂鸣器。我们将使用GPIO引脚来控制额外的LED来模拟流水灯效果。

以下是一个基本的示例代码,用于在ESP32-S3连接蓝牙后,通过蓝牙接收信号(或简单地按时间间隔)来控制GPIO引脚上的LED形成流水灯效果,并同时驱动无源蜂鸣器发声。

首先,你需要连接一个LED和一个无源蜂鸣器到ESP32-S3的GPIO引脚。这里我们LED连接到GPIO 2,蜂鸣器连接到GPIO 13,并都通过适当的电阻连接到GND以限制电流。

 

cpp
#include     
BluetoothSerial SerialBT;    
#define LED_PIN_1 2    // 第一个LED连接的GPIO引脚  
#define LED_PIN_2 14   // 假设我们再连接一个LED到GPIO 14以模拟流水灯效果(可选)  
#define BUZZER_PIN 13  // 蜂鸣器连接的GPIO引脚    // 流水灯LED数组(可以扩展以包含更多LED)  
int ledPins[] = {LED_PIN_1, LED_PIN_2};  
int numLEDs = sizeof(ledPins) / sizeof(ledPins[0]);    
unsigned long previousMillis = 0;        // 上次执行时间  
const long interval = 500;               // 流水灯间隔时间,单位毫秒    
void setup() {    Serial.begin(115200);    // 初始化蓝牙    
SerialBT.begin("ESP32-S3-Bluetooth");    
Serial.println("Bluetooth device started");      // 初始化LED和蜂鸣器引脚为输出    
for (int i = 0; i < numLEDs; i++) 
{      
pinMode(ledPins[i], OUTPUT);    
}    
pinMode(BUZZER_PIN, OUTPUT);  
}    
void loop() {    // 从蓝牙接收数据(这里不直接处理,但你可以根据需要添加代码)      // 流水灯效果    
unsigned long currentMillis = millis();    
if (currentMillis - previousMillis >= interval) {      
previousMillis = currentMillis;        // 关闭所有LED      
for (int i = 0; i < numLEDs; i++) {        
digitalWrite(ledPins[i], LOW);      }        // 点亮下一个LED(循环点亮)      
static int currentLed = 0;      digitalWrite(ledPins[currentLed], HIGH);      
currentLed = (currentLed + 1) % numLEDs;        // 也可以在这里添加驱动蜂鸣器的代码,比如每次流水灯变化时让蜂鸣器响一下      
digitalWrite(BUZZER_PIN, HIGH);      
delay(50); // 蜂鸣器响50毫秒      
digitalWrite(BUZZER_PIN, LOW);    }      // 注意:这里我们没有直接从蓝牙接收信号来控制流水灯,    
// 但你可以通过监听SerialBT.available()并在接收到特定命令时改变流水灯的行为。  
}

 

使用步骤

上传代码:将ESP32-S3开发板连接到电脑,并在Arduino IDE中上传上述代码。

连接蓝牙

在手机上启用蓝牙

打开手机设置,进入蓝牙设置界面。

确保蓝牙功能已开启,并设置为可被发现或可见。

 搜索并连接ESP32

在手机的蓝牙设置中,搜索可用的蓝牙设备。

找到ESP32的蓝牙名称(在ESP32的代码中设置),并点击连接。

如果ESP32的蓝牙模块需要配对码(PIN码),请在手机上输入相应的配对码。这个配对码可能在ESP32的代码中预设,或者是在连接过程中由ESP32动态生成的。

数据通信

在Arduino IDE的串口监视器中发送数据,这些数据将被发送到已连接的手机。

在手机上使用蓝牙通信应用(如蓝牙终端或类似应用)发送数据到ESP32-S3,这些数据将在串口监视器中显示。

注意事项

确保ESP32-S3和手机在同一蓝牙频道上。

蓝牙通信的可靠性和距离可能会受到环境和其他无线设备的影响。

蓝牙名称和密码(如果设置了)应与手机中显示的一致。

通过以上步骤,能够使用ESP32-S3与手机通过蓝牙进行基本的数据传输。

为了支持您的项目开发需求,我们特别准备了详尽的开发资料(有例程)。若您对此感兴趣,并希望获得这些宝贵的资源以助力您的项目进展,欢迎添加我的微信(限前50位)xinsousou。我将免费为您发送这些资料,希望能为您的开发工作带来便利与启发,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分