一、引言
ESP32-CAM 是一款集成了 ESP32 芯片和摄像头模块的开发板,广泛应用于物联网(IoT)项目,尤其是图像处理和机器视觉应用。尽管 ESP32-CAM 功能强大,但其引脚数量有限,且部分引脚在特定模式下有特定用途,这给引脚的灵活使用带来了一定挑战。本文将详细分析 ESP32-CAM 的引脚功能,探讨如何在下载程序后空出引脚以扩展更多功能。
二、下载模式与引脚使用
ESP32-CAM 没有内置的 USB 端口,因此需要额外的硬件来下载程序。常见的下载方式有使用 FTDI 适配器。
-
使用 FTDI 适配器:
-
接线方式如下:
-
FTDI 的 TX 连接到 ESP32-CAM 的 RX (GPIO 3)
-
FTDI 的 RX 连接到 ESP32-CAM 的 TX (GPIO 1)
-
FTDI 的 GND 连接到 ESP32-CAM 的 GND
-
FTDI 的 3.3V 连接到 ESP32-CAM 的 3.3V
-
FTDI 的 DTR 通过一个 10kΩ 电阻(测试可以不用)连接到 ESP32-CAM 的 GPIO 0
-
-
下载程序时,需要将 GPIO 0 拉低(连接到 GND),使 ESP32-CAM 进入下载模式。下载完成后,断开 GPIO 0 与 GND 的连接,引脚被拉回高电平,进而重启开发板。
-
使用Arduino IDE一定要选择ESP32 Wrover Module。
-
三、扩展功能实现
1. 点灯、按键
2. 连接外部传感器: 使用 GPIO 2/3/12 作为通用输入输出引脚,连接温度传感器、湿度传感器、超声波测距等。
3. 控制外部设备:使用GPIO 2/3/12作为控制信号,控制继电器或电机。
4. 连接OLED:使用GPIO 14/15,电压3.3V和接地。
四、示例代码
#include <Wire.h>
#include "SH1106Wire.h"
const int I2C_DISPLAY_ADDRESS=0x3c;
const int SDA_PIN = 15;
const int SCL_PIN = 14;
// 定义超声波模块引脚
#define TrigPin 12
#define EchoPin 13
SH1106Wire display(I2C_DISPLAY_ADDRESS, SDA_PIN, SCL_PIN);
float Value_cm;
void setup(){
display.init();
display.flipScreenVertically();//翻转
// 初始化超声波模块引脚
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop(){
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
Value_cm = float( pulseIn(EchoPin, HIGH) * 17 )/1000;
display.clear(); // 清空屏幕
display.setFont(ArialMT_Plain_16);
//display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 1, "Distance:");
display.drawString(3, 20, String(Value_cm));
display.drawString(60, 20, "cm");
display.display();
}
五、总结
ESP32-CAM 是一款功能强大的开发板,但其引脚数量有限且部分引脚有特定用途。通过合理使用 ESP32-CAM-MB 编程器或 FTDI 适配器,可以在下载程序后空出引脚,从而扩展更多功能。在设计项目时,需要特别注意引脚的使用限制,避免影响模块的正常启动和运行。通过合理规划和使用引脚,可以充分发挥 ESP32-CAM 的潜力,实现丰富的物联网应用。