【问题标题】:ESP32-Cam: SD and camera use up all the pinsESP32-Cam:SD 和摄像头用完所有引脚
【发布时间】:2022-08-12 23:50:11
【问题描述】:
我需要做的就是拍照并在按下按钮时将其保存到 SD 卡中。但是只使用相机和 SD 卡,所有的 GPIO 引脚都用完了。有没有办法释放一个按钮?
SD:GPIO 2、4、12、13、14、15
相机:GPIO 0
串行:GPIO 1、3
这只剩下 GPIO 16,它似乎一直都是高电平。
#include \"esp_camera.h\"
#include \"Arduino.h\"
#include \"FS.h\"
#include \"SD_MMC.h\"
#define BTN 16
#define LED_BUILT_IN 33
int picCount = 0;
void setup() {
Serial.begin(115200);
pinMode(BTN, INPUT);
pinMode(LED_BUILT_IN, OUTPUT);
setupSD();
setupCamera();
}
void loop() {
if (digitalRead(BTN) == HIGH) {
digitalWrite(LED_BUILT_IN, HIGH);
takePicture();
digitalWrite(LED_BUILT_IN, LOW);
}
delay(50);
}
标签:
c++
arduino
esp32
gpio
【解决方案1】:
我设法在 ESP32 Cam 中添加了一个按钮和一个 I2C OLED 显示屏,以制作一个带有用户界面的延时相机。
我这样分配引脚:
我“借”了这些
P2-1 / GPIO4 - I2C 数据
P2-5 / GPIO13 - I2C 时钟
P2-6 / GPIO12 - 按钮
这些已经在原始设计中使用,如下所示:
P2-1 / GPIO4 用于闪光灯 LED - 我断开了 LED,因为我不需要它。您可以将其保持连接 - 更新显示屏时它会令人讨厌地闪烁,但如果需要,您可能仍会持续点亮;在为照片照明时不会更新显示屏。
该引脚还用于原始设计中的 SD 卡,该设计使用六根线来访问 SD 卡。我改为只使用三个,从而释放了这些引脚。
对于 SD 卡,我使用了 3 线模式,它使用:
P2-2 / GPIO2 - SD 卡 MISO / 数据 0
P2-3 / GPIO14 - SD 卡时钟
P2-4 / GPIO 15 - SD 卡 MOSI / 命令
这些已经在 ESP32Cam 板内部连接。上述引脚(GPIO4、GPIO13 和 GPIO12)也与 SD 卡相连,但如果 SD 卡在三线模式下使用,则不会造成任何伤害。
您还可以将 UART 0 TX 和 RX 引脚用于其他功能,当您想要对设备进行编程时会断开这些功能,然后在对设备进行编程后重新连接。
P1-2 / GPIO1 - UART TX
P1-3 / GPIO3 - UART RX
如果您将它们用作按钮,则在编程时不需要隔离它们的方法,但请确保在按钮上串联一个约 330 欧姆的电阻。否则在 UART 模式下不小心按下按钮会导致短路。
(编辑:抱歉,格式有点乱,我无法正确显示换行符,我得到双倍换行符或根本没有换行符)