ESP8266 - Servo Motor

Este tutorial mostra como usar o ESP8266 para controlar um servo motor. Em detalhes, vamos aprender:

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Servo Motor
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.

Sobre o Servo Motor

Um servo motor é um componente capaz de girar o seu eixo (geralmente dentro de uma faixa de 0 a 180 graus) para controlar a posição angular de um objeto.

Pinagem do Servo Motor

O servo motor tem três pinos:

  • O pino VCC (geralmente vermelho) deve ser conectado ao VCC (5V)
  • O pino GND (geralmente preto ou marrom) deve ser conectado ao GND (0V)
  • O pino de Sinal (geralmente amarelo ou laranja) recebe o sinal de controle PWM de um pino do ESP8266.
pinagem do servo motor

ESP8266 - Servo Motor

Alguns dos pinos do ESP8266 podem ser programados para produzir um sinal PWM. Conectar o pino de sinal do servo motor a um pino do ESP8266 e programá-lo para gerar PWM nesse mesmo pino nos permite controlar o servo motor.

Graças à biblioteca Servo do ESP8266, controlar um servo motor é fácil. Não precisamos entender como o servo motor funciona nem como gerar um sinal PWM. Tudo o que precisamos fazer é aprender a usar a biblioteca.

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com Servo Motor

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Para simplificar, o diagrama de ligação acima é usado para testes ou aprendizado, e para um servo motor de torque pequeno. Na prática, recomendamos fortemente usar uma fonte de alimentação externa para o servo motor. O diagrama de ligação abaixo mostra como conectar o servo motor a uma fonte de alimentação externa.

Diagrama de ligação do servo motor do ESP8266 NodeMCU com fonte de alimentação externa

This image is created using Fritzing. Click to enlarge image

Como Programar para o Servo Motor

O core Arduino-ESP8266 já vem com a sua própria biblioteca de servo embutida, então não precisamos instalá-la.

  • Inclua a biblioteca:
#include <Servo.h>
  • Crie um objeto Servo:
Servo servo;

Se você tiver mais de um servo motor, basta declarar objetos Servo adicionais:

Servo servo1; Servo servo2;
  • Atribua o pino de controle do ESP8266 ao pino de sinal do servo motor. Por exemplo, o pino D7:
servo.attach(D7);
  • Por fim, gire o servo motor até o ângulo desejado. Por exemplo, 90°
servo.write(90);

Código ESP8266

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { servo.attach(D7); // attaches the servo on pin D7 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // rotate from 0 degrees to 180 degrees // in steps of 1 degree servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // rotate from 180 degrees to 0 degrees servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } }

Passos Rápidos

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Veja o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a porta COM correspondente.
  • Conecte o seu ESP8266 ao PC usando um cabo USB.
  • Inicie o Arduino IDE, selecione a placa e a porta corretas.
  • Copie o código fornecido e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para compilar e enviar o código ao ESP8266.
Como fazer upload do código para o ESP8266 NodeMCU usando o Arduino IDE
  • Confira o resultado: O servo motor se move nos sentidos horário e anti-horário.

Explicação do Código

Confira a explicação linha por linha contida nos comentários do código-fonte!

Como Controlar a Velocidade do Servo Motor

Utilizando as funções map() e millis(), podemos regular a velocidade do servo motor de forma suave sem atrapalhar o restante do código.

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(D7); move_start_ms = millis(); // start moving // TODO: other code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: other code }

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!