Começando com ESP32-CAM

Olá boa noite,

Comprei uma ESP32-CAM junto de um FTDI para conectar em meu computador para começar meu projeto, ainda estou aprendendo como utilizá-la e me surgiu uma dúvida, qual a função de utilizar config.pin e porque colocar em todas as entradas do ESP32 ? Maioria dos programas tutoriais fazem isso, segue o exemplo.

camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;

E outra tem alguns programas que colocam uma numeração acima da quantidade de pinos existentes no ESP32 como esse:

#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22
#define PART_BOUNDARY "123456789000000000000987654321"

Desculpe se for uma dúvida boba ,estou começando e está um pouco difícil de entender.
Desde já obrigado!

A diretriz #define é usada pelo compilador como uma espécie de alias. Funciona mais ou menos assim:

#define Y2_GPIO_NUM 5 é a mesma coisa que dizer:
"onde houver Y2_GPIO_NUM substitua por 5"

Desse modo, quando o programa traz mais embaixo:

config.pin_d0 = Y2_GPIO_NUM;

o que está sendo compilado na verdade é:

config.pin_d0 = 5;

A associação dos pinos é necessária como setup da placa e como os pinos podem variar de uma placa para outra, se você troca a placa, altera apenas os #define, não precisa alterar cada linha do programa que faz referência aquele pino.

Olá boa noite ,

Obrigado por responder, compreendi a parte do #define ,mas como existe um pino -1? e um pino 32? sendo que existem 16 pinos no ESP32.

E sobre o config ,qual a utilidade dele ? é tipo um pinMode?

Sobre as entradas TX e RX da ESP32-CAM , há alguma necessidade de utilizá-las ? entendo que seja de entrada e saída mas qual a diferença das demais ? nunca utilizei elas em projetos no arduino

Desde já, obrigado pela resposta.

Na placa ESP32 CAM existem 16 pinos disponíveis para conexão, mas o microcontrolador ESP32 tem 39 pinos ao todo. Parte deles é usada em outras aplicações e não é disponibilizada para uso, como no caso dessa placa.

Veja que várias GPIOs não têm pinos correspondentes, porque elas são internamente destinadas ao uso da câmera.

Note que as GPIOs 2,4,12,13,14 e 15 aparecem em pinos, mas elas são para uso do SD card. Então se você estiver usando o SD card, não pode conectar nada nesses pinos.

O config é o que vai associar cada GPIO a cada função que ele vai realizar. Nesse caso, às conexões da câmera (veja novamente a figura).

Os pinos TX e RX são usados para comunicação serial. São pouco usados nos ESP porque o microcontrolador já tem Bluetooth e Wi-fi. É muito mais fácil nesse caso usar o Bluetooth ou o wi-fi para transmitir dados do que ficar conectando coisas por fios. No Arduino UNO por exemplo, você pode usar as portas TX e RX para conectar um módulo bluetooth (ex: HC-05).

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.