本帖最后由 Maker_kun 于 2024-9-6 21:01 编辑
ESP32自带蓝牙功能,通过无线蓝牙即可与手机进行通讯,通过手机发出的指令即可控制,为方便演示,通过简单指令控制步进电机正反转运动
蓝牙指令 |
运动状态 |
备注 |
指令A |
正转运动 |
蓝牙发送“A” |
指令B |
反转运动 |
蓝牙发送“B” |
程序代码
打开案例库
案例程序代码,在此基础进行修改
代码
#include "BluetoothSerial.h"
String device_name = "ESP32-BT-Slave";
// Check if Bluetooth is available
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
// Check Serial Port Profile
#if !defined(CONFIG_BT_SPP_ENABLED)
#error Serial Port Profile for Bluetooth is not available or not enabled. It is only available for the ESP32 chip.
#endif
const int stepPin=13; //步进引脚
const int dirPin=12; //方向引脚
const int enPin=14; //使能引脚
char BT_date;//蓝牙接收字符串
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin(device_name); //Bluetooth device name
//SerialBT.deleteAllBondedDevices(); // Uncomment this to delete paired devices; Must be called after begin
Serial.printf("The device with name \"%s\" is started.\nNow you can pair it with Bluetooth!\n", device_name.c_str());
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(enPin,OUTPUT);
digitalWrite(enPin,HIGH); //打开使能
digitalWrite(dirPin,HIGH); //控制转动方向
}
void loop() {
int i;//控制转动步数
i=3000;
if (SerialBT.available())
{
BT_date=SerialBT.read();
}
if (BT_date==0x41)
{
SerialBT.write(BT_date);
BT_date=0x00;//清楚数据
digitalWrite(enPin,LOW); //打开电机使能
digitalWrite(dirPin,HIGH); //正转
while(i)
{
i--;
digitalWrite(stepPin,HIGH);
delayMicroseconds(100);
digitalWrite(stepPin,LOW);
delayMicroseconds(100);
}
}
if (BT_date==0x42)
{
SerialBT.write(BT_date);
BT_date=0x00;//清楚数据
digitalWrite(dirPin,LOW); //正转
digitalWrite(enPin,LOW); //打开电机使能
while(i)
{
i--;
digitalWrite(stepPin,HIGH);
delayMicroseconds(100);
digitalWrite(stepPin,LOW);
delayMicroseconds(100);
}
}
else
{
digitalWrite(enPin,HIGH); //关闭电机使能
}
delay(20);
}
实物演示:
使用的蓝牙APP叫作SPP蓝牙串口助手,可以自定义发送字符串内容,有快捷键操作,很方便
视频演示
微型步进电机滑台控制
蓝牙控制步进电机运动1
步进电机控制
蓝牙控制步进电机运动2