前几个月买了esp32,想实现通过蓝牙来控制led灯,但是工作和琐碎的生活导致没时间也没精力去做,今天终于花时间实现了,记录一下
材料准备
- esp32开发板
- 杜邦线若干
- LED灯
通过淘宝购买,一共应该不超过30元,其中开发板16元,杜邦线几元钱,LED灯也是几元钱,可以说非常便宜
ESP32简单介绍
ESP32 性能稳定,具有低耗特性,而且带有wifi和蓝牙模块,可以说这个价格下非常好了。
ESP32的硬件介绍
这里贴一下乐鑫的官网
开发环境准备
- 安装VS code, 然后安装Espressif IDF和PlatformIO IDE插件
- 创建项目,选择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); SerialBT.begin("SONDER_xiaomi"); 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. 小程序蓝牙搜索不到(已解决)
这些遗留问题暂时没得到解决,等之后会再研究做补充
本人不是做嵌入式开发,所以过程极其缓慢,这里的记录仅做参考,其实主要是自己想记录一下,细节部分懒得写了。