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录音并通过豆包转文字,都打通了

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

相关推荐
一切皆是因缘际会3 小时前
从概率拟合到内生心智:2026 下一代 AI 架构演进与落地实践
人工智能·深度学习·算法·架构
科研前沿3 小时前
镜像视界 CameraGraph™+多智能体:构建自感知自决策的全域空间认知网络技术方案
大数据·运维·人工智能·数码相机·计算机视觉
爱学习的张大3 小时前
具身智能论文问答(2):Diffusion Policy
人工智能
AI科技星3 小时前
全域数学·72分册·射影原本 无穷维射影几何卷细化子目录【乖乖数学】
人工智能·线性代数·算法·机器学习·数学建模·数据挖掘·量子计算
Chef_Chen3 小时前
论文解读:MemOS首次把记忆变成大模型的一等公民资源,Scaling Law迎来第三条曲线
人工智能·agent·memory
风落无尘4 小时前
《智能重生:从垃圾堆到AI工程师》——第四章 变化的艺术
人工智能·线性代数·算法
发哥来了4 小时前
AI视频生成模型选型指南:五大核心维度对比评测
大数据·人工智能·机器学习·ai·aigc
发哥来了4 小时前
AI驱动生产线的实际落地:一个东莞厂商的技术选型实录
大数据·人工智能·机器学习·ai·aigc
AC赳赳老秦4 小时前
知识产权辅助:用 OpenClaw 批量生成专利交底书 / 软著申请材料,自动校验格式与内容合规性
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
AI科技4 小时前
原因大揭秘:为什么别人的编曲伴奏做得又快又好,2026年度甄选5款AI编曲软件汇总
人工智能