Как считывать аналоговое значение на ESP32-CAM с включенным считывателем SD-карт?

Я использую модуль ESP32-Cam для проекта, для которого мне нужны как SD-карта, так и камера. Согласно этой странице, единственными контактами, которые не используются ни камерой, ни устройством чтения SD-карт, являются GPIO0, GPIO2 и GPIO16. Тем не менее, мне нужно прочитать аналоговое значение, которое возможно только с контактами 12-15, 2 и 4, как указано на форумах Arduino, которые все используются устройством чтения SD-карт.

Однако я наткнулся на способ заставить SD-ридер оставить вывод GPIO4, а именно инициализировать его с помощью

SD_MMC.begin("/sdcard", true);

Теперь фонарик больше не загорается при доступе к SD-карте, а это значит, что выхода на GPIO4 больше нет. Однако он по-прежнему не позволяет мне считывать вывод после инициализации SD-карты. Я также попытался "преобразовать" контакт в GPIO через

pinMode(4, FUNCTION_3);

но это не имело никакого значения.

Итак, мой вопрос: как можно использовать вывод 4 для считывания аналоговых значений, сохраняя при этом работоспособность устройства чтения SD-карт? А если это невозможно, есть ли другой способ считывания аналогового значения в ESP32-CAM?

, 👍2


1 ответ


Лучший ответ:

1

Согласно схеме и примечаниям к контактам, я не думаю, что вы можете использовать GPIO4 в качестве входа АЦП (его можно использовать как вывод GPIO, и технически он может быть сконфигурирован как вывод АЦП), но на нем есть подтягивающий резистор 47k, что делает его невозможным для использования как вход АЦП.

В зависимости от ваших навыков подключения оборудования, одной из альтернатив является использование внешнего чипа АЦП с интерфейсом i2c (например, MCP3221) и подключение его к TWI_SCL и TWI_SDA, но эти контакты доступны только на cam-разъеме, а не на выводах заголовка.

,

Спасибо. В итоге я использовал FTP вместо SD-карты, что дало мне "много" цифровых контактов. Затем я подключил к двум из них микросхему ADC-i2c - как было предложено., @Klaus Meier