一起玩儿物联网人工智能小车(ESP32)——13. 用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 |

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

相关推荐
Amy187021118231 分钟前
中线安防保护器,也叫终端电气综合治理保护设备为现代生活筑起安全防线
人工智能·安全·智慧城市
CV-杨帆2 分钟前
论文阅读:ACL 2024 Stealthy Attack on Large Language Model based Recommendation
论文阅读·人工智能·语言模型
飞哥数智坊2 分钟前
AI 编程太混乱?我的3个实践,防止代码失控
人工智能·ai编程
NMGWAP5 分钟前
AI辅助编程:软件工程的终结还是进化新阶段?
人工智能·软件工程
zhao32668575114 分钟前
海外代理IP平台Top3评测:LoongProxy、神龙动态IP、IPIPGO哪家更适合你?
服务器·网络·tcp/ip
云边云科技24 分钟前
企业跨区域组网新解:SD-WAN技术打造安全稳定网络体系
运维·网络·人工智能·安全·边缘计算
pingao14137826 分钟前
PG-210-HI 山洪预警系统呼叫端:筑牢山区应急预警 “安全防线”
大数据·人工智能·科技
chenzhiyuan201831 分钟前
YOLO + OpenPLC + ARMxy:工业智能化视觉识别、边缘计算、工业控制的“三位一体”解决方案
人工智能·yolo·边缘计算
XMZH0304241 分钟前
网络编程;TCP控制机械臂;UDP文件传输;0910;ps今天没写出来
网络·tcp/ip·udp
大千AI助手1 小时前
粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
人工智能·算法·优化算法·pso·粒子群优化