ESP32开发板引脚介绍【附有引脚使用实例】

ESP32开发板引脚介绍


在这里插入图片描述

🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮
ESP32连接MQ Sensor实现气味反应
🔗 https://blog.csdn.net/ws15168689087/article/details/131365573
ESP32连接云服务器【WebSocket】
🔗 https://blog.csdn.net/ws15168689087/article/details/131406163
个人云服务器搭建MQTT服务器
🔗 https://blog.csdn.net/ws15168689087/article/details/131571433
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
🔗 https://blog.csdn.net/ws15168689087/article/details/131627595


👨‍🏫内容1:背景


ESP32-WROOM-32
👉ESP32 是一款由 Espressif Systems 开发的低功耗、高性能、可扩展的嵌入式微控制器,可用于构建各种物联网 (IoT) 应用。ESP32 芯片基于 ARM Cortex-M 内核,具有 32 位地址空间,支持 Wi-Fi、蓝牙和其他无线连接,以及多种外设接口,如 GPIO、定时器、PWM、串口等。

在这里插入图片描述

🌸🌸🌸🌷🌷🌷💐💐💐🌷🌷🌷🌸🌸🌸

👨‍⚖️内容2:限制类引脚


1️⃣Strapping 引脚:
在这里插入图片描述
👉在硬件上要注意使用外接模块时不能将GPIO12拉高,否则将导致ESP32启动异常。还有一些GPIO在启动或重置时其状态更改为高或者输出PWM信号,在使用时需要注意。

2️⃣集成在ESP-WROOM-32 的 SPI flash 引脚:
🎈GPIO 6 到 GPIO 11 在一些 ESP32 开发板中公开。但是,这些引脚连接到 ESP-WROOM-32 芯片上的集成 SPI 闪存,不推荐用于其他用途。所以,不要在你的项目中使用这些引脚:⬇️

在这里插入图片描述

3️⃣仅输入引脚:
🎈GPIO 34 到 39 是 GPI – 仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:⬇️
在这里插入图片描述
➡️这些引脚都是ESP32用于引导加载程序或者烧录模式/在大多数内置USB/Serial的开发板上,不需要担心这些引脚的状态,开发板会把这些引脚设置为正确的状态,以便使用烧录或启动模式。
➡️但是,如果你有外设连接到这些引脚上,当你在尝试上传新代码、用新固件烧写ESP32或重置电路板时可能会遇到麻烦,例如不明原因的错误和失败。可能是因为这些外设阻止ESP32进入正确的模式。
➡️所以以上的引脚 不建议在项目中使用。

🌻🌻🌻🌼🌼🌼🌺🌺🌺🌼🌼🌼🌻🌻🌻

👨‍💻内容3:ESP32 周边设备


🎯ESP32 周边设备:
在这里插入图片描述

1️⃣18 个模数转换器 (ADC) 通道
👉ESP32 有 18 x 12 位 ADC 输入通道(而ESP8266 只有 1x 10 位 ADC)。这些是可用作 ADC 和相应通道的 GPIO:
👉与某些数字外设(PWM、软件 SPI 和 I2C)不同,ADC 引脚是固定的,即您必须使用具有 ADC 功能的预定义 GPIO 引脚,并且不能在软件中对其进行配置。但是,您必须了解一些限制。
👉尽管 ESP32 有 18 个通道的 ADC,但并非所有 ADC 引脚都可供用户使用。在 8 个 ADC1 通道中,只有 6 个可用(ACD1_CH0 和 ACD1_CH3 到 ACD1_CH7),而 ADC1_CH1 和 ADC1_CH2 不可用(即使引脚在 ESP32 开发板中没有暴露)。
👀来到ADC2,就有些复杂了。当您使用 ESP32 的 Wi-Fi 时,Wi-Fi Driver 使用 ADC2 Peripheral。因此,只有在未启动 Wi-Fi 驱动程序时才能使用 ADC2。
🤷‍♂️即使您正在使用 ADC2(假设未使用 Wi-Fi),所有引脚也并非随时可用,因为与 ADC2 相关的一些引脚用于其他重要目的(引导绑定)。

在这里插入图片描述
🙇ADC 输入通道具有 12 位分辨率。这意味着您可以获得范围从 0 到 4095 的模拟读数,其中 0 对应于 0V,4095 对应于 3.3V。您还可以在代码和 ADC 范围上设置通道的分辨率。
🎃ESP32 ADC 引脚没有线性行为。您可能无法区分 0 和 0.1V,或 3.2 和 3.3V。使用 ADC 引脚时需要牢记这一点。您将获得类似于下图所示的行为。



🏆使用实例🏆
🏅这里插入一个我在使用时犯过的一个问题
🎳当时我使用了A16引脚【ACD2组】实现了气味传感器的数据反应
⛳相关的代码很简单,当我收集的代码融入到MQTT发布的代码中时,有关的收集数据则一直显示为0
🏓其实这就是因为ACD2组在启动WIFI时产生了冲突,换成ACD1组就可以了
在这里插入图片描述

2️⃣4组SPI接口
🎽默认情况下,可以用的SPI的引脚映射是:⬇️
在这里插入图片描述
🏉SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
🏉芯片的管脚上只占用四根线。
➡️MISO: 主器件数据输出,从器件数据输入。
➡️MOSI:主器件数据输入,从器件数据输出。
➡️SCK: 时钟信号,由主设备控制发出。
➡️NSS(CS): 从设备选择信号,由主设备控制。当NSS为低电平则选中从器件。

🤿ESP32集成了4组SPI外设。
➡️SPI0和SPI1在内部用于访问ESP32所连接的闪存。两个控制器共享相同的SPI总线信号,并且有一个仲裁器来确定哪个可以访问该总线。
➡️SPI2和SPI3是通用SPI控制器,有时分别称为HSPI和VSPI。它们向用户开放。SPI2和SPI3具有独立的总线信号,分别具有相同的名称。每条总线具有3条CS线,最多能控制6个SPI从设备。
🥊需要注意的是,HSPI和VSPI并不是网友们认为的high-speed SPI 和Very High-speed SPI,这是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。

3️⃣I2C 通讯协议
🥏ESP32默认的I2C引脚为:
➡️GPIO 21 (SDA)
➡️GPIO 22 (SCL)
其实在ESP32中任何引脚都可以定义为SDA或SCL,但不到逼不得已不推荐这么做。
可在Arduino IDE 中使用以下语句配置其它引脚为SDA或SCL⬇️
Wire.begin(SDA, SCL);

4️⃣PWM
🎠ESP32 PWM 控制器主要设计用于控制 LED 的强度,但它也可用于生成其他目的的 PWM 信号。它有16个通道,可以产生独立的PWM波形。
🔅ESP32 PWM 控制器有 8 个高速通道和 8 个低速通道,我们总共有 16 个通道。它们根据速度分为两组。每组有 4 个定时器/8 个通道。这意味着每两个通道共享同一个定时器。因此,我们无法独立控制每对通道的 PWM 频率。⬇️

在这里插入图片描述
🚸所有可以作为输出的引脚都可以用作 PWM 引脚(GPIO 34 到 39 不能产生 PWM)。
要设置 PWM 信号,您需要在代码中定义这些参数:
➡️信号的频率
➡️占空比
➡️脉宽调制通道
➡️要输出信号的 GPIO

5️⃣电容式触控 GPIO
🎉ESP32 有 10 个内部电容式触摸传感器。它们可以感知任何带电荷的物体的变化,比如人体皮肤。因此,他们可以检测用手指触摸 GPIO 时引起的变化。这些引脚可以轻松集成到电容式焊盘中并取代机械按钮。电容式触控引脚还可用于将 ESP32 从深度睡眠中唤醒
这些内部触摸传感器连接到这些 GPIO:
T0 (GPIO 4)
T1 (GPIO 0)
T2 (GPIO 2)
T3 (GPIO 15)
T4 (GPIO 13)
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)
T9 (GPIO 32)

6️⃣RTC GPIO
🎉ESP32 上有 RTC GPIO 支持。当 ESP32 处于深度睡眠时,可以使用路由到 RTC 低功耗子系统的 GPIO。当超低功耗 (ULP) 协处理器运行时,这些 RTC GPIO 可用于将 ESP32 从深度睡眠中唤醒。以下 GPIO 可用作外部唤醒源⬇️
RTC_GPIO0 (GPIO36)
RTC_GPIO3 (GPIO39)
RTC_GPIO4 (GPIO34)
RTC_GPIO5 (GPIO35)
RTC_GPIO6 (GPIO25)
RTC_GPIO7 (GPIO26)
RTC_GPIO8 (GPIO33)
RTC_GPIO9 (GPIO32)
RTC_GPIO10 (GPIO4)
RTC_GPIO11 (GPIO0)
RTC_GPIO12 (GPIO2)
RTC_GPIO13 (GPIO15)
RTC_GPIO14 (GPIO13)
RTC_GPIO15 (GPIO12)
RTC_GPIO16 (GPIO14)
RTC_GPIO17 (GPIO27)

7️⃣其他
在这里插入图片描述
在这里插入图片描述

🌸🌸🌸🌷🌷🌷💐💐💐🌷🌷🌷🌸🌸🌸

🍉文末备注 👨‍🏫


🎃备注
🐱本文有关引脚的介绍主要是引用了凌顺实验室的ESP32引脚介绍文章
🐶大家想要了解更多可以点下下方链接跳转观看
➡️ESP32引脚介绍

在这里插入图片描述

  • 55
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 58
    评论
ESP32开发是一款功能强大的物联网开发,它集成了Wi-Fi和蓝牙功能,并且具有丰富的GPIO,可以用于控制各种外部设备,包括舵机。 舵机是一种常用的电机,用于控制机械装置的角度。它通常由一个电机和一个内置的反馈机制组成,可以精确地控制角度位置。 要使用ESP32开发控制舵机,你需要连接舵机到ESP32的GPIO,并编写相应的代码来控制舵机的角度。 以下是一般的步骤: 1. 硬件连接:将舵机的信号线连接到ESP32的一个GPIO。同时,将舵机的电源线连接到适当的电源(通常是5V),并将舵机的地线连接到ESP32的地线。 2. 软件编程:使用适当的开发环境(如Arduino IDE)编写代码来控制舵机。你可以使用ESP32的PWM功能来生成适当的脉冲信号,以控制舵机的角度。 以下是一个简单的示例代码,使用ESP32的Arduino库来控制舵机: ```cpp #include <Servo.h> Servo myservo; // 创建一个舵机对象 void setup() { myservo.attach(2); // 将舵机连接到GPIO2 } void loop() { myservo.write(90); // 设置舵机角度为90度 delay(1000); // 等待1秒 myservo.write(0); // 设置舵机角度为0度 delay(1000); // 等待1秒 } ``` 在上面的示例中,我们使用Servo库来控制舵机。首先,在`setup()`函数中,我们将舵机连接到GPIO2。然后,在`loop()`函数中,我们设置舵机的角度为90度,等待1秒,然后设置角度为0度,再等待1秒。这样就可以实现舵机的简单控制。 以上是一个简单的示例,你可以根据具体的舵机型号和需求进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失散多年的哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值