esp32蓝牙控制LED灯
sonder 超大杯

前几个月买了esp32,想实现通过蓝牙来控制led灯,但是工作和琐碎的生活导致没时间也没精力去做,今天终于花时间实现了,记录一下

材料准备

  • esp32开发板
  • 杜邦线若干
  • LED灯
    通过淘宝购买,一共应该不超过30元,其中开发板16元,杜邦线几元钱,LED灯也是几元钱,可以说非常便宜

ESP32简单介绍

ESP32 性能稳定,具有低耗特性,而且带有wifi和蓝牙模块,可以说这个价格下非常好了。

ESP32的硬件介绍

这里贴一下乐鑫的官网

开发环境准备

  1. 安装VS code, 然后安装Espressif IDF和PlatformIO IDE插件
  2. 创建项目,选择ESP32的模块

具体这里不在详细描述,可参考网上的视频教程关键词:Vscode+Esp32

代码编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <Arduino.h>
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;

int state = 0;
int RGB_Blue = 2;
int RGB_RED = 4;
int RGB_GREEN = 15;

void setup()
{
Serial.begin(115200);
// BLEDevice::init("ESP32BLE");
SerialBT.begin("SONDER_xiaomi"); // 如果没有参数传入则默认是蓝牙名称是: "ESP32"
SerialBT.setPin("1234"); // 蓝牙连接的配对码
Serial.printf("BT initial ok and ready to pair. \r\n");
pinMode(RGB_RED, OUTPUT);
}

void loop()
{
if (Serial.available())
{
SerialBT.write(Serial.read());
}
if (SerialBT.available())
{
state = SerialBT.read();
if (state == '1')
{
Serial.printf("flash light \r\n");
digitalWrite(RGB_RED, HIGH);
delay(1000);
digitalWrite(RGB_RED, LOW);
delay(1000);
}
if (state == '2')
{
Serial.printf("turn on \r\n");
digitalWrite(RGB_RED, HIGH);
}
if (state == '0')
{
Serial.printf("turn off \r\n");
digitalWrite(RGB_RED, LOW);
}
}
delay(1);
}

以上就是控制LED灯的逻辑代码

踩的坑
1. 波特率的设置
2. 蓝牙的调试

总之就是一步一错,摸着石头过河,不过好歹算是实现了

遗留问题
1. 串口的中文乱码
2. 小程序蓝牙搜索不到(已解决)

这些遗留问题暂时没得到解决,等之后会再研究做补充

本人不是做嵌入式开发,所以过程极其缓慢,这里的记录仅做参考,其实主要是自己想记录一下,细节部分懒得写了。

  • 本文标题:esp32蓝牙控制LED灯
  • 本文作者:sonder
  • 创建时间:2022-06-21 20:44:53
  • 本文链接:https://sonderss.github.io/2022/06/21/esp32蓝牙控制LED灯/
 评论