ESP8266 - Botão - Servo Motor

Este tutorial ensina você a usar um ESP8266 e um botão para controlar um servo motor. Em detalhes:

O processo acima é repetido várias e várias vezes.

O tutorial tem duas seções:

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×Botão para Protoboard com Capa
1×Kit de Botões para Protoboard
1×Botão de Pressão para Painel
1×Módulo de Botão
1×Servo Motor
1×Protoboard
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 Servo Motor e Botão

Se você não está familiarizado com servo motores e botões (incluindo pinagens, como funcionam e como programá-los), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com botão e 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.

Observe que o diagrama de ligação mostrado acima é adequado apenas para um servo motor de baixo torque. Caso o motor vibre em vez de girar, é preciso utilizar uma fonte de alimentação externa para fornecer mais energia ao servo motor. Abaixo está o diagrama de ligação com uma fonte de alimentação externa para o servo motor.

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

This image is created using Fritzing. Click to enlarge image

Não se esqueça de conectar o GND da fonte externa ao GND do ESP8266.

Código ESP8266 - Botão Controla o Servo Motor Sem Debounce

/* * 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-button-servo-motor */ #include <Servo.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define SERVO_PIN D5 // The ESP8266 pin connected to servo motor's pin Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. pinMode(BUTTON_PIN, INPUT_PULLUP); // Configure the ESP8266 pin to the input pull-up mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); } }

Passos Rápidos

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

  • Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Faça a ligação dos componentes conforme mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Conecte o ESP8266 NodeMCU ao 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 respectiva porta COM.
  • Copie o código acima e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para compilar e fazer o upload do código para o ESP8266.
  • Pressione o botão várias vezes.
  • Confira as mudanças no servo motor.

※ Nota:

Na prática, o código mencionado acima nem sempre funciona corretamente. Para garantir que ele funcione bem, precisamos fazer o debounce do botão. Fazer o debounce do botão pode ser difícil para quem é novo no ESP8266. Felizmente, a biblioteca ezButton torna esse processo muito mais simples.

Código ESP8266 - Botão Controla o Servo Motor Com Debounce

Por que o debounce é necessário?. Veja o tutorial ESP8266 - Debounce de Botão para mais informações.

/* * 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-button-servo-motor */ #include <Servo.h> #include <ezButton.h> #define BUTTON_PIN D1 // The ESP8266 pin connected to button's pin #define SERVO_PIN D5 // The ESP8266 pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. button.setDebounceTime(50); // set debounce time to 50 milliseconds servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { // change angle of servo motor if (angle == 0) angle = 90; else if (angle == 90) angle = 0; // rotate the servo motor to the angle position Serial.print("The button is pressed => rotate servo to "); Serial.print(angle); Serial.println("°"); servo.write(angle); } }

Passos Rápidos

  • Instale a biblioteca ezButton. Consulte o Como Fazer para ver as instruções.
  • Copie o código acima e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para fazer o upload do código para o ESP8266.
  • Aperte o botão várias vezes.
  • Confira as mudanças no servo motor.

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!