ESP32-S3-CAM:豆包语音识别文字后控制小车(五)——认识L298N驱动模块

在淘宝上看了下硬件选型,小车好像比较普遍都是用L298N来驱动,但是一个L198N只能控制两个电机,后来发现有那种一个驱动模块控制四个电机的模块。

L198N上接线都要用螺丝拧紧,所以必须要准备个小螺丝刀。。。。

1、认识L298N

网上学习了L298N的介绍,L298N介绍视频

out1和out2 控制电机1,控制信号由IN1和IN2来控制,IN信号就是后面可以通过ESP32板子传递信号的地方,旁边的ENA是控制转速的,默认是有个帽子套住的,这个时候就是默认全速,作为初学者,这里我买来的驱动模块我没动它,后面需要用的时候再揭开。

out3和out4 控制电机2,控制信号也就由IN3和IN4控制。

这个方向依次是12V输入,GND接地和5V输出

12V输入是给L298N供电用的,电压范围可以是6V到20V好像,我在淘宝买的套餐里是四个5号电池用的电池仓,连起来是10V

GND接地,这个和芯片的GND共同接地

5V输出的意思是,通过L298N还可以向外输出5V电压,但是这里要注意,如果本身12V输入那里电压就不高,这里的输出是很不稳定的,我用电池仓10V供电的时候发现这个5V 输出连ESP32芯片都带不动。

再来看看背面

L298N上面有个高高的黑色立起来的散热槽,我刚开始是好奇,这玩意干啥用的,豆包了一下。

最后看下具体电机IN对应的信号是怎么正转,怎么反转,这个部分的截图都是从视频中截图的,尊重视频作者劳动成果哈。

2、供电并接电机

连电机的时候就要注意,为了防止接反,电机同一个方向的接线要对应上,

比如下图中,两个电机的左边和右边接线要分别对应好,比如左边电机的左侧接线接到L298N的OUT1了,那右边电机左侧接线就要接到OUT3,右边分别对应OUT2和4,这样接好以后才不会出现左边电机前进,右边电机后退的尴尬。

然后我们接一个电机:

电池仓供电,我在正极电路上接了个开关,好控制供电,便于后面插线拔线的时候好断电,

这个刚开始没想到,刚开始学L298N的时候,总是担心接错线,怕烧了,后来才淘宝买了个开关。

红色线接L298N的12V输入,黑色负极接中间GND接地。

只接一个电机,OUT1和OUT2可以随意接,接上后通电,其实电机并不会转动。

点击转动是要靠前面提到的 IN1到4来输出信号的,我这里接的OUT1和OUT2,对应的信号就是IN1和IN2,用一根线一头连接上IN1,然后一头连接到 电机转速控制的信号区,就能动了,相当于输出了控制信号,注意接到IN3和4是没反应的,因为那个是负责输出信号的。

找一根 一公一母的杜邦线,母的那头(没有针那头。。。懂的都懂吧)插入到L298N中

公的那头(有针那头)可以搭到其他位置,比如用帽子套起来的 控制转速的区域,只要接触上,

电机就会转了,轮子也就跟着转了。

相信再连接一个电机,就简单了,同样的操作,要注意接线配对,前面提到过。

到此,L298N就基本了解差不多了,接下来是接芯片控制电机转动。

3、L298N接ESP32-S3-CAM板子

接线:

  1. 板子的GND和电池仓负极一起接L298N的GND共地,这里尤其要注意
  2. 板子本身用USB来供电或者用充电宝来单独供电
  3. IN1和IN2对应的公口插入芯片对应的GPIO口对应的面包板的位置

橙色线 IN1 接 G17;灰色线 IN2接 G18

由于当前我们没有接摄像头,所以暂时用G17和18两个口,具体哪些口可以用

参见:ESP32-S3-CAM:认识引脚

接好的硬件图如下,接线前L298N先断电。

完整接线后的图

板子的GND和电池仓负极一起接L298N的GND共地,这里尤其要注意

上图中是 亮黄色的线和L298N的GND连接,电池仓负极也一起共地。

4、写控制程序

让kimi写一段代码

提示词:

我现在用ESP32-S3-CAM接L298N驱动模块,IN1和IN2分别接如了G17和18两个口,帮我写一段代码,在Ardunio IDE里运行,当我在终端输入1的时候,就前进,输入0 就后退

代码如下:

cpp 复制代码
// ESP32-S3-CAM + L298N 电机驱动控制
// IN1 -> GPIO17, IN2 -> GPIO18

#define IN1 17  // L298N IN1 接 GPIO17
#define IN2 18  // L298N IN2 接 GPIO18

void setup() {
  Serial.begin(115200);
  
  // 设置GPIO为输出模式
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  
  // 初始状态:停止
  stopMotor();
  
  Serial.println("ESP32-S3 L298N 电机控制已启动");
  Serial.println("命令: 1=前进, 0=后退, s=停止");
}

void loop() {
  if (Serial.available() > 0) {
    char cmd = Serial.read();
    
    // 处理换行符和回车符,只处理有效命令
    if (cmd == '\n' || cmd == '\r') return;
    
    switch (cmd) {
      case '1':
        forward();
        Serial.println("→ 前进");
        break;
        
      case '0':
        backward();
        Serial.println("← 后退");
        break;
        
      case 's':
      case 'S':
        stopMotor();
        Serial.println("■ 停止");
        break;
        
      default:
        Serial.println("未知命令,使用: 1=前进, 0=后退, s=停止");
    }
  }
}

// 前进:IN1高电平,IN2低电平
void forward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
}

// 后退:IN1低电平,IN2高电平
void backward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
}

// 停止:两个引脚都低电平(或都高电平实现刹车)
void stopMotor() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
}

在终端输入1 ,轮子就往前转了,注意看代码,输入1,给IN1写入的HIGH高电平,就是1,IN2输入的是低电平0,就和前面第一部分表格里的控制信号对应起来了。

车轮转动

到此,电机驱动车轮,通过mic录音并通过豆包转文字,都打通了

下一步,把这两个串起来,语音控制小车前进和后退。

相关推荐
俊哥V2 小时前
每日 AI 研究简报 · 2026-04-14
人工智能·ai
紧固视界2 小时前
汽车紧固件最新技术趋势解析:2026上海紧固件专业展有哪些看点
大数据·人工智能·汽车·紧固件·上海紧固件展·上海紧固件专业展
刘佬GEO2 小时前
本地门店做 GEO 的起步顺序:第一步先做什么?
大数据·网络·人工智能·搜索引擎·ai
kcuwu.2 小时前
AI完整发展史内容
人工智能·提示词工程
人工智能AI技术2 小时前
智能体边界控制:禁止越权、防止危险操作
人工智能
东离与糖宝2 小时前
智能体评测基础:能力、稳定性、安全性评估标准
人工智能
莱昂纳多迪卡普利奥2 小时前
LLM工程化实践——Prompt Engineering(一)
人工智能·prompt
Satellite-GNSS2 小时前
AI Agent(智能体)全知识体系详解(从入门到精通,彻底理清脉络)
人工智能·agent
一叶知秋yyds2 小时前
大语言模型LLM完整技术解析从训练到应用
人工智能·语言模型·自然语言处理