一起玩儿物联网人工智能小车(ESP32)——13. 用ESP32的GPIO控制智能小车运动起来(一)

news2024/9/23 1:37:52

摘要:本文更深入的讲述了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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1335641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 比 C语言增加的新特性 3 之 命名空间namespace

1. 命名空间 1.1 命名空间 又称为“名字空间”,在内存(全局)中取一块区域并对其进行命名 实际例子: 同一个班级,两个同姓的人,例如:张三和张三,其中一个张三座位是在讲台右边&am…

公开100GB数据,日产汽车遭勒索组织“撕票”

Bleeping Computer 网站消息,Akira 勒索软件团伙声称成功入侵了日本汽车制造商日产汽车澳大利亚分公司的内部网络系统。 12 月 22 日,Akira 勒索软件团伙在其泄漏博客上添加了一个新的“受害者”,并表示其成员从日产汽车制造商的内部网络系统…

docker的一些思考

1.docker是啥? 2.镜像执行流程 3.一些疑惑和解答 1. 2.

软件测试面试--说一个印象最深的bug?

其实,面试官并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是: 1.了解你平时工作中的测试能力 所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执行测试用…

【隐私保护】使用Python从文本中删除个人信息:第一部分

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

销售如何挖掘客户?有哪些方法?

在当今竞争激烈的市场环境中,客户资源的挖掘已经成为企业生存和发展的关键。销售人员需要掌握一定的技巧和方法,以有效地发掘潜在客户,提高销售业绩。以下分享一些挖掘客户的常用方法,帮助销售人员更好地开展业务。 一、了解客户需…

matlab附加功能管理器安装蓝牙工具箱

由于最近需要做蓝牙仿真方面的东西,需要用到matlab的蓝牙工具箱,根据官网例子输入: commSupportPackageCheck(BLUETOOTH);检测是否包含该工具箱,结果出现: 点击Add-On-Explorer出现: 网上搜索发现这是因为…

麦肯锡产品经理问题解决流程终极指南

您是否想知道世界上最成功的产品经理如何始终如一地提供不仅满足而且超出预期的解决方案?秘密可能就在于世界上最负盛名的咨询公司之一麦肯锡公司所磨练的方法论。本文深入探讨了麦肯锡的问题解决流程,该流程专为希望提升水平的产品经理量身定制。 01. 麦…

周末两个比赛3个小题

周末安洵和nctf,因为不是学生也没报名拿附件作了一把。 安洵/pwn/side_channel , initiate 安洵的题很好,唯一的问题是把几乎所有的,有没有必要的都放了远程,而且服务器很差,好多题不是不会而是连不上。 这个题估计…

vivado 多周期路径与时钟相移

多周期路径与时钟相移 有时,必须在具有相同时钟域的两个时钟域之间定义定时约束时钟周期,但两个时钟之间的相移。在这些情况下,理解正时引擎使用的默认设置和保持关系。如果没有仔细调整两个时钟之间的相移可能导致两个时钟间的逻辑约束过大…

13.TCP/IP协议

1.TCP/IP协议是什么 TCP/IP协议不仅仅指的是TCP和IP两个协议,二十指由FTP、SMTP、TCP、UDP、IP等等协议构成的协议簇。 TCP/IP协议是一系列规则的统称,他们定义了消息在网络间进行传输的规则。是供已连接互联网的设备进行通信的通信规则 2.TCP/IP协议的…

走进数字金融峰会,为金融科技数字化赋能

12月20—21日,FSIDigital数字金融峰会在上海圆满召开。本次峰会包含InsurDigital数字保险峰会和B&SDigital数字银行与证券峰会2场平行峰会;吸引了近600位来自保险、银行、证券以及金融科技等行业的领导者和专家齐聚一堂,共同探讨金融业数…

宝塔面板Linux服务器CentOS 7数据库mysql5.6升级至5.7版本教程

近段时间很多会员问系统更新较慢,也打算上几个好的系统,但几个系统系统只支持MYSQL5.7版本,服务器一直使用较低的MYSQL5.6版本,为了测试几个最新的系统打算让5.6和5.7并存使用,参考了多个文档感觉这种并存问题会很多。…

STM32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件

资料下载: https://download.csdn.net/download/vvoennvv/88658447 一、概述 关于IAP的原理和Ymodem协议,本文不做任何论述,本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级,以及bootloader和主程序两个工程的配置…

UGUI Panel的显示和隐藏优化

unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢? 可能大家一般开启/关闭界面的方法就是直接SetActive吧。这样做通常是可以的,简答快速地解决…

多播ip地址配置和通信理解

经常有朋友问,为什么相同局域网的ip需要相同网段,为什么组播的网段可以不同? 比如: 在您的局域网(192.168.1.0/24 网段)中设置多播组时,您可以选择一个在本地网络范围内尚未使用的多播组地址。…

【Java中序列化的原理是什么(解析)】

🍁序列化的原理是什么? 🍁典型-----解析🍁拓展知识仓🍁Serializable 和 Externalizable 接门有何不同? 🍁如果序列化后的文件或者原始类被篡改,还能被反序列化吗?🍁serialVersionU…

电路设计(7)——窗口比较器的multism仿真

1.功能设计 构建一个窗口比较器的电路,在输入电压大于3.5v,小于0.8v时,蜂鸣器报警,输入电压在0.8v到3.5v之间时,不报警。 整体电路如下: 2.设计思路 在输入端,采取电阻分压的方式,输…

2024年最新Python爬虫入门『最强教程』新鲜出炉!

近年来,大数据成为业界与学术界最火热的话题之一,数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 爬虫能干什么呢?一…

11-GraalVM元原生时代的Java虚拟机

文章目录 GraalVM诞生的背景Java在微服务/云原生时代的困境事实矛盾 问题根源Java离不开虚拟机 解决方案革命派保守派 GraalVM入门GraalVM特征GraalVM下载和安装GraalVM下载win10安装及配置linux安装及配置 GraalVM初体验(Linux)多语言开发(了解即可、官网有Demo)GraalCompiler…