玩转物联网人工智能小车:使用ESP32的GPIO控制智能小车运动(一)

摘要:本文更深入的讲述了GPIO的相关知识,并完成了导线连接工作,为下一步的软件开发做好了准备。

通用输入输出端口(GPIO:General Purpose Input/Output Port),在前面已经有了初步的介绍,本篇将进行更详细的阐述,希望大家能够了解GPIO端口是如何工作的。

通用输入输出端口的基本功能是:当GPIO工作在输入状态时,可以读取外部设备电平信号的高低,从而获得外部设备的工作状态,当GPIO工作在输出状态时,可以对外输出高低电平,从而实现对外部设备的控制。GPIO接口作为一种被广泛应用于嵌入式系统的接口技术。通常有以下一些特点。

1.可配置性:GPIO可以配置为输入或输出模式,以适应不同的应用需求。

2.可编程性:GPIO可以通过特定的编程语言(如C语言、Python等)进行编程,实现对外部设备的控制和数据处理。

3.高可靠性:GPIO具有较低的故障率和较高的抗干扰能力,适用于各种恶劣环境下的应用。

4.易于扩展:GPIO可以根据需要扩展更多的输入输出通道,满足不同规模的系统需求。

总的来说,GPIO具有通用性、数字信号、多功能、可编程性等特点,在嵌入式系统中发挥着重要作用。

对于嵌入式系统来说,每个芯片引脚都非常的珍贵,因此大部分的引脚都采用了端口复用技术,也就是除了上面所列举的基本的GPIO功能外,还可以用作其他功能,这在前面的引脚功能图中已经看到过了。ESP32的多路复用器,使设计人员可以灵活地更改芯片内部的GPIO引脚连接并将其路由到任何信号,这样在硬件设计、布线上会方便的多。

ESP32为每个GPIO端口提供了多种工作模式,所以在使用GPIO端口之前,必须要对端口进行必要的配置。需要配置的参数包括一下几个:

  1. GPIO的工作模式
  2. 设置是否需要上拉
  3. 设置是否需要下拉
  4. 设置GPIO中断的类型

在这里我们重点的关注一下GPIO的工作模式,其他几个参数暂时不做讲解,后边遇到的时候再详细的说明。GPIO的工作模式包括以下几个:

  • GPIO_MODE_INPUT:输入模式
  • GPIO_MODE_OUTPUT:输出模式
  • GPIO_MODE_OUTPUT_OD:开漏输出模式(如果外部或者内部不上拉电阻则无法输出高电平)
  • GPIO_MODE_INPUT_OUTPUT_OD:开漏输入输出模式
  • GPIO_MODE_INPUT_OUTPUT:输入输出模式
  • 我们用得最多的是输入模式和输出模式,这两种模式是对标准的数字信号进行读取和输出,输入用来获取外部设备的状态信号,输出则将自己的引脚设置成指定状态,是用来“通知”外部设备。输入模式可以用来检测按键是否按下,而输出模式则可以控制LED是否点亮,我们今天控制电动机是否旋转,以及旋转的方向,就是使用了GPIO最基本的输出模式。

    在了解了GPIO的工作原理和工作模式之后,还要再次的强调那些特殊的引脚,一定要确保安全再用,尽量不要使用:

    1. Strapping管脚:GPIO0、GPIO2、GPIO5、GPIO12(MTDI)和GPIO15 (MTDO)是Strapping管脚。
    2. SPI0/1:GPIO6-11和GPIO16-17通常连接到模组内集成的SPI flash和PSRAM,因此不能用于其他用途。
    3. JTAG:GPIO12-15通常用于在线调试。
    4. GPI:GPIO34-39只能设置为输入模式,不具备软件使能的上拉或下拉功能。
    5. TXD & RXD:GPIO1和GPIO3通常用于烧录和调试。

    接下来我们继续完成之前未完成的接线工作,然后再利用程序来控制小车的电动机运动起来。

    我们首先要接的线就是从L298N模块引出的GND线,将其插入到ESP32扩展板上的GND排针上。因为在调试阶段,我们的L298N模块和电机使用的是锂电池供电,而ESP32开发板则直接使用USB供电,只有将这两种供电的地连接起来,我们ESP32的GPIO口输出的信号才有回路,才能够起到控制的作用。所以,这根导线千万不要忘记接,否则你的电动机是不会运动起来的。

    然后,将IN1~IN8依次插入到ESP32模组可用GPIO对应的排针上。接好后的样子如下图所示。

    我具体的连接方法如下表所示:

    轮子

    L298N(OUT)

    L298N端口(IN)

    ESP32引脚

    左前轮

    OUT3

    IN3

    P26

    OUT4

    IN4

    P27

    左后轮

    OUT1

    IN1

    P32

    OUT2

    IN2

    P33

    右前轮

    OUT5

    IN5

    P25

    OUT6

    IN6

    P23

    右后轮

    OUT7

    IN7

    P22

    OUT8

    IN8

    P21

    后边的开发都是依据这个表的配置来进行的。配置不一致的请在开发中做适当的调整。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 玩转物联网人工智能小车:使用ESP32的GPIO控制智能小车运动(一)

    发表评论