Tutorial ESP32 49/55 - Controle de Motor DC pela Internet usando Adafruit IoT | Kit ESP32 da SunFounder

Tutorial ESP32 49/55 - Controle de Motor DC pela Internet usando Adafruit IoT | Kit ESP32 da SunFounder

Neste tutorial, iremos explorar como controlar um motor DC pela internet usando o ESP32 e o serviço Adafruit IO MQTT. A velocidade e a direção do motor DC podem ser manipuladas remotamente, permitindo um controle eficiente de qualquer lugar com conexão à internet. Este projeto demonstra as capacidades do microcontrolador ESP32, que possui Wi-Fi integrado, tornando-o ideal para aplicações de Internet das Coisas (IoT).

esp32-49-motor-DC-mqtt-principal

Estaremos implementando um sistema onde o motor pode ser ligado, desligado e sua velocidade ajustada através de uma interface web conectada ao Adafruit IO. Os usuários podem se inscrever em tópicos específicos para controle do motor e ajustar parâmetros de acordo. Para entender melhor o processo, não deixe de conferir o vídeo que acompanha este tutorial (no vídeo em 00:00).

Hardware Explicado

Para este projeto, utilizaremos o microcontrolador ESP32, que é o coração do nosso sistema. O ESP32 é capaz de lidar com comunicações Wi-Fi, tornando-o perfeito para nossa aplicação IoT. Ele se conecta à plataforma Adafruit IO, permitindo-nos enviar e receber mensagens via protocolo MQTT.

Além disso, estaremos utilizando o driver de motor L293D, que é essencial para controlar o motor DC. O L293D pode acionar dois motores DC e permite o controle de ambas as direções e velocidade através da Modulação por Largura de Pulso (PWM). Ele atua essencialmente como uma interface entre o ESP32 e o motor, gerenciando a corrente mais alta exigida pelo motor enquanto isola o ESP32 de quaisquer sinais de contra-eletr EMF potencialmente prejudiciais.

Detalhes da Ficha Técnica

Fabricante Texas Instruments
Número da peça L293D
Tensão de lógica/IO 4,5 - 36 V
Tensão de alimentação 4,5 - 36 V
Corrente de saída (por canal) 600 mA
Corrente de pico (por canal) 1.2 A
Orientação sobre a frequência PWM 10 kHz (típ.)
Limiares de lógica de entrada 0,8 V (alto), 2,0 V (baixo)
Queda de tensão / RDS(on)saturação 1,5 V máx
Limites térmicos 150 °C
Pacote DIP-16
Notas / variantes Driver half-H de alta corrente quádruplo

  • Assegure um adequado dissipador de calor para operação contínua.
  • Use PWM para controlar efetivamente a velocidade do motor.
  • Observe os limites de tensão de entrada para evitar danos.
  • Verifique as conexões de aterramento adequadas entre todos os componentes.
  • Tenha cuidado com a força contra-eletromotriz; use diodos se necessário.
  • Verifique a fiação novamente, pois a polaridade pode afetar a direção do motor.
  • Teste com uma voltagem mais baixa antes da operação completa.
  • Fique atento ao superaquecimento durante o uso prolongado.
  • Certifique-se de debounçar os interruptores mecânicos se forem utilizados.
  • Certifique-se de que o ESP32 não esteja sobrecarregado pela corrente do motor.

Instruções de Fiação

ESP32-15_diagrama_do_motor_L293D

Comece conectando a fonte de alimentação. Conecte o terminal positivo da sua fonte de alimentação externa ao pino VCC do L293D (pino 8) e o terra ao pino GND (pino 4). Certifique-se de que o ESP32 esteja alimentado separadamente, se necessário, normalmente através de uma conexão micro USB.

Em seguida, conecte o motor ao L293D. Um terminal do motor deve ser conectado ao pino de saída 3 (pino 2 do L293D) e o outro terminal ao pino de saída 6 (pino 7 do L293D). Para os sinais de controle, conecte o pino 13 do ESP32 ao pino de entrada 2 (pino 1 do L293D) e o pino 14 ao pino de entrada 7 (pino 2 do L293D). O pino de habilitação (pino 1) também deve ser conectado à alimentação de 5V para ativar o driver. Por último, certifique-se de que o terra do ESP32 esteja conectado ao terra do L293D para uma referência comum.

Exemplos de Código e Passo a Passo

O código fornecido inicializa as bibliotecas necessárias e configura o cliente Wi-Fi e MQTT. Os identificadores-chave incluemmotorSpeed,motorDirection, emotorStart, que gerenciam a operação do motor com base nos comandos recebidos do Adafruit IO.

bool debug = false;
#define motor1A 13
#define motor2A 14
int motorSpeed = 0;
int motorDirection = 1;
int motorStart = 1;

Neste trecho, os pinos do motor são definidos junto com variáveis iniciais para controlar a velocidade, a direção e o estado de início/parada do motor. A variávelmotorSpeedserá ajustado com base nas entradas do Adafruit IO.

void setup() {
  Serial.begin(115200);
  WiFi.begin(WLAN_SSID, WLAN_PASS);
  delay(2000);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
}

Na função de configuração, a comunicação serial é iniciada e o ESP32 se conecta à rede Wi-Fi especificada. Essa conexão é crucial para habilitar a comunicação MQTT.

void loop() {
  MQTT_connect();
  mqtt.processPackets(500);
  runMotor();
}

Esta função de loop estabelece a conexão MQTT e processa os pacotes recebidos para controlar o motor com base nos últimos comandos recebidos. A funçãorunMotor()é chamada para aplicar as configurações atuais ao motor.

Demonstração / O que Esperar

Quando a configuração estiver completa e o código for carregado, você deverá ser capaz de controlar o motor através do painel do Adafruit IO. Você pode ajustar a velocidade do motor usando um controle deslizante e mudar sua direção com um interruptor. Se tudo estiver conectado corretamente, o motor responderá a esses comandos em tempo real, destacando a baixa latência do sistema (no vídeo em :00).

Problemas comuns incluem a direção do motor invertida devido a fiação incorreta, então verifique novamente as conexões se o motor não se comportar como esperado. Além disso, certifique-se de que seus tópicos MQTT estão configurados corretamente no Adafruit IO para corresponder ao código.

Marcação de Vídeo

  • 00:00 Início
  • 2:21 Introdução ao projeto
  • 4:20 Como o Motor DC é controlado
  • 6:39 Driver de Motor L293D
  • 11:42 O que é MQTT?
  • 15:03 Configuração do Adafruit IO
  • 19:17 Explicação da Fiação
  • 22:42 Código explicado
  • 35:28 Demonstração do Projeto

Imagens

ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
esp32-49-DC-motor-mqtt-main
esp32-49-DC-motor-mqtt-main
851-ESP32 Tutorial 49/55- Arduino code using ESP32 to DC Motor using MQTT service of Adafruit
Idioma: C++
Copiado!

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.