第四章:ESP32零基础教学 - 4.2继电器、舵机与L298N电机

一、硬件准备

  • ESP32开发板

  • 5V继电器模块

  • 9g微型舵机(SG90)

  • L298N电机驱动模块

  • DC电机(6-12V)

  • 面包板与杜邦线

  • 外部电源(用于电机供电)


二、继电器控制

接线说明

继电器引脚ESP32引脚
VCC5V
GNDGND
INGPIO23

代码实现

#define RELAY_PIN 23  // 继电器信号引脚

void setup() {
  pinMode(RELAY_PIN, OUTPUT);  // 设置引脚为输出模式
}

void controlRelay(bool state) {
  /**
   * 控制继电器开关
   * @param state: true-开启, false-关闭
   */
  digitalWrite(RELAY_PIN, state ? HIGH : LOW);
}

// 使用示例
void loop() {
  controlRelay(true);   // 打开继电器
  delay(2000);
  controlRelay(false);  // 关闭继电器
  delay(2000);
}

三、舵机控制(PWM)

接线说明

舵机引脚ESP32引脚
红色(VCC)5V
棕色(GND)GND
橙色(SIG)GPIO13

代码实现

#include <ESP32Servo.h>

#define SERVO_PIN 13
Servo myServo;  // 创建舵机对象

void setup() {
  myServo.attach(SERVO_PIN);  // 初始化舵机
}

void setServoAngle(int angle) {
  /**
   * 设置舵机角度
   * @param angle: 0-180度
   */
  angle = constrain(angle, 0, 180);  // 限制角度范围
  myServo.write(angle);              // 写入角度值
}

// 使用示例
void loop() {
  setServoAngle(0);    // 转到0度位置
  delay(1000);
  setServoAngle(90);   // 转到中间位置
  delay(1000);
  setServoAngle(180);  // 转到180度位置
  delay(1000);
}

四、L298N电机控制

接线说明

L298N引脚ESP32引脚
ENAGPIO12(PWM)
IN1GPIO14
IN2GPIO27
12V供电外部电源正极
GND外部电源负极

代码实现

#define ENA_PIN 12   // PWM使能引脚
#define IN1_PIN 14   // 方向控制1
#define IN2_PIN 27   // 方向控制2
const int PWM_CHANNEL = 0;  // 使用PWM通道0
const int PWM_FREQ = 1000;  // PWM频率1kHz
const int PWM_RES = 8;      // 8位分辨率(0-255)

void setup() {
  // 初始化GPIO
  pinMode(IN1_PIN, OUTPUT);
  pinMode(IN2_PIN, OUTPUT);
  
  // 配置PWM通道
  ledcSetup(PWM_CHANNEL, PWM_FREQ, PWM_RES);
  ledcAttachPin(ENA_PIN, PWM_CHANNEL);
}

void controlMotor(int speed, bool direction) {
  /**
   * 控制电机运动
   * @param speed: 0-255的PWM值
   * @param direction: true-正转, false-反转
   */
  speed = constrain(speed, 0, 255);
  digitalWrite(IN1_PIN, direction ? HIGH : LOW);
  digitalWrite(IN2_PIN, direction ? LOW : HIGH);
  ledcWrite(PWM_CHANNEL, speed);  // 输出PWM信号
}

// 使用示例
void loop() {
  controlMotor(200, true);  // 正转中等速度
  delay(2000);
  controlMotor(0, true);    // 停止
  delay(1000);
  controlMotor(200, false); // 反转中等速度
  delay(2000);
}

五、系统集成与优化建议

1. 电源管理建议

  • 使用独立电源为电机供电

  • 添加1000μF电容滤波

  • 确保共地连接

2. 扩展功能

// 组合控制示例
void complexControl() {
  // 打开继电器供电
  controlRelay(true);
  
  // 舵机转到45度
  setServoAngle(45);
  
  // 电机低速正转
  controlMotor(100, true);
  
  delay(3000);
  
  // 停止所有设备
  controlRelay(false);
  controlMotor(0, true);
  setServoAngle(90);
}

3. 注意事项

  1. 避免同时开启多个大电流设备

  2. PWM频率不宜过高(建议500Hz-3kHz)

  3. 确保散热良好

  4. 先接线后上电

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙大大L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值