Tutorial ESP32 30/55 - Controle de Servo pela web usando MQTT com o serviço Adafruit IO | Kit de Aprendizagem IoT ESP32 da SunFounder

Tutorial ESP32 30/55 - Controle de Servo pela web usando MQTT com o serviço Adafruit IO | Kit de Aprendizagem IoT ESP32 da SunFounder

Neste tutorial, aprenderemos como controlar a posição de um motor de passo usando o microcontrolador ESP32 e o protocolo MQTT pela web. Aproveitando o serviço Adafruit IO, você poderá posicionar o servo em vários ângulos, como 0°, 90° ou 180°, remotamente. Este projeto demonstra as capacidades do ESP32, que inclui Wi-Fi e Bluetooth embutidos, tornando-o uma ferramenta poderosa para aplicações de IoT.

ESP32-30_MQTT_diagrama-0

Neste projeto, configuraremos um broker MQTT usando Adafruit IO, criaremos um painel para controlar o servo e conectaremos o ESP32 a ele. A posição do servo será ajustável por meio de um controle deslizante no painel, permitindo o controle em tempo real de qualquer dispositivo com acesso à internet (no vídeo às 5:30).

Hardware Explicado

Os componentes principais deste projeto incluem o microcontrolador ESP32 e o motor de servo. O ESP32 é um microcontrolador versátil com capacidades integradas de Wi-Fi e Bluetooth, tornando-o ideal para aplicações de IoT. Ele se comunica com o serviço Adafruit IO usando o protocolo MQTT, que é leve e eficiente para transmissão de mensagens pela internet.

O motor de servo é um atuador rotativo que permite o controle preciso da posição angular. Ele funciona recebendo um sinal de modulação por largura de pulso (PWM) que dita sua posição. Neste projeto, conectaremos o servo a um dos pinos digitais no ESP32, permitindo-nos controlar seu ângulo remotamente.

Detalhes da Ficha Técnica

Fabricante Paralaxe
Número da peça SG90
Tensão de Lógica/IO 3,3 V - 5 V
Tensão de alimentação 4,8 V - 6,0 V
Corrente de saída (por canal) 1 A max
Orientação sobre a frequência PWM 50 Hz
Limiares de lógica de entrada 0,3 V - 0,7 V
Queda de tensão / RDS(on)/ saturação 0,2 V máx
Limites térmicos Temperatura de operação: -10°C a 60°C
Pacote Capa de plástico
Notas / variantes Mini servo, rotação de 180°

  • Garanta o fornecimento de tensão adequado ao servo (4,8 V - 6,0 V).
  • Use um terra comum entre o ESP32 e o servo.
  • Monitore o sinal PWM para evitar exceder os limites do servomotor.
  • Conecte o servo de forma segura para evitar desconexões durante a operação.
  • Atualize a biblioteca Adafruit MQTT para garantir compatibilidade.

Diagramas MQTT

ESP32-30_MQTT_diagrama-2
ESP32-30_diagrama_MQTT
ESP32-28_sensor de temperatura DHT-principal

Instruções de Fiação

ESP32-17-Sevo_motor-wiring

Para conectar o motor servo ao ESP32, comece ligando o fio de aterramento do servo ao pino de aterramento no ESP32. Em seguida, conecte o fio de alimentação (geralmente vermelho) do servo ao pino de 5V no ESP32. Por fim, conecte o fio de sinal (frequentemente amarelo ou branco) ao pino digital 25 no ESP32. Certifique-se de que as conexões estejam seguras para evitar desconexões durante a operação.

Se você estiver usando uma bateria para alimentar o ESP32, certifique-se de que a voltagem da bateria esteja dentro da faixa aceitável tanto para o ESP32 quanto para o servo. Além disso, verifique novamente se a fiação corresponde às definições das portas usadas em seu código para evitar quaisquer problemas (no vídeo às 12:45).

Exemplos de Código e Passo a Passo

No texto fornecido, primeiro incluímos as bibliotecas necessárias para o ESP32 e MQTT. Definimos o objeto servo e especificamos o pino ao qual está conectado comconst int servoPin = 25;. O ângulo padrão também é configurado comconst int defaultServoAngle = 90;, que será a posição inicial quando o ESP32 iniciar.


Servo myServo;
const int servoPin = 25;
const int defaultServoAngle = 90;
int servoAngle = defaultServoAngle;

Este trecho inicializa o servo na porta 25 e define seu ângulo padrão para 90°. A variávelservoAngleserá atualizado com base nas mensagens recebidas do broker MQTT.

In thesetup()função, conectamos ao Wi-Fi e configuramos o cliente MQTT. As credenciais para Adafruit IO são definidas aqui, incluindo o nome de usuário e a chave:


#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_xmIW58uNNsjJCSOqzZ9QoHyq29wu"

Esta seção estabelece a conexão com o serviço Adafruit IO. Certifique-se de substituir esses valores pelas suas próprias credenciais do Adafruit IO ao implementar o código.

Finalmente, o loop principal garante que a conexão com o servidor MQTT permaneça ativa e processe as mensagens recebidas. A posição do servo é atualizada com base no ângulo recebido:


mqtt.processPackets(500);
int pulseWidth = map(servoAngle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);

Este código mapeia o ângulo do servo para a largura de pulso correspondente e a envia para o motor servo. AprocessPackets()a função permite que o ESP32 trate mensagens MQTT recebidas, garantindo que o servo reaja a comandos enviados através do painel do Adafruit IO.

Demonstração / O que Esperar

Uma vez que tudo esteja configurado, você deve ser capaz de controlar o servo a partir do painel do Adafruit IO usando o controle deslizante que você criou. À medida que você move o controle deslizante, o servo ajustará seu ângulo em tempo real. Certifique-se de que seu ESP32 esteja conectado ao Wi-Fi e que a conexão MQTT esteja estável. Se o servo não responder, verifique a fiação e a fonte de alimentação do servo (no vídeo às 20:15).

Esteja ciente dos limites de alcance do servo; enviar um valor fora de 0° a 180° pode fazer com que ele se comporte de maneira inesperada. O código inclui verificações para evitar tais ocorrências, limitando o ângulo dentro desse intervalo.

Marcação de Vídeo

  • 00:00 Início
  • 1:54 Introdução do projeto
  • 2:52 Introdução ao MQTT
  • 6:50 Configuração do Adafruit IO
  • 9:54 Cabeamento do servo
  • 11:07 Código explicado
  • 18:59 Selecionando a placa ESP32 e a porta COM
  • 22:10 Demonstração do projeto

Imagens

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32-28_dht_temperature-sensor-main
ESP32-28_dht_temperature-sensor-main
ESP32-30_MQTT_diagram
ESP32-30_MQTT_diagram
ESP32-30_MQTT_diagram-0
ESP32-30_MQTT_diagram-0
ESP32-30_MQTT_diagram-2
ESP32-30_MQTT_diagram-2
831-ESP32 Tutorial 30/55- ESP32 to control Servo motor using MQTT service of Adafruit
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Outros arquivos