ESP8266 - Teclado - Servo Motor

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

O código ESP8266 também aceita várias senhas.

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×Teclado
1×Servo Motor
1×Fonte de Alimentação 5V
1×Conector de Alimentação DC
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 Teclado e o Servo Motor

Se você não conhece o teclado e o servo motor (incluindo pinagem, funcionamento e como programar), os tutoriais a seguir podem ajudar:

Diagrama de Ligação

Diagrama de ligação do teclado e servo motor com ESP8266 NodeMCU

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, uma fonte de alimentação externa deve ser utilizada para fornecer mais energia ao servo motor. O diagrama abaixo demonstra a ligação com uma fonte de alimentação externa para o servo motor.

TO BE ADD IMAGE

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

Código ESP8266 - gira o Servo Motor se a senha estiver correta

Se a senha estiver correta, o servo motor será ajustado para 90° por um período de 5 segundos. Em seguida, ele voltará a girar para 0°.

/* * 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-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define SERVO_PIN D0 // The ESP8266 pin connected to the servo motor #define ROW_NUM 4 // 4 rows #define COLUMN_NUM 3 // 3 columns char key_layout[ROW_NUM][COLUMN_NUM] = { {'1','2','3'}, {'4','5','6'}, {'7','8','9'}, {'*','0','#'} }; byte pin_rows[ROW_NUM] = {D1, D2, D3, D4}; // The ESP8266 pins connect to the row pins byte pin_column[COLUMN_NUM] = {D5, D6, D7}; // The ESP8266 pins connect to the column pins Keypad keypad = Keypad( makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); Servo servo; // servo motor const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // change your password here const String password_3 = "9765"; // change your password here String input_password; int angle = 0; // The current angle of servo motor unsigned long prev_time; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed servo.attach(SERVO_PIN); servo.write(0); // rotate servo motor to 0° prev_time = millis(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The correct password! Rotating Servo Motor to 90°"); angle = 90; servo.write(angle); prev_time = millis(); } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } if (angle == 90 && (millis() - prev_time) > 5000) { // 5 seconds angle = 0; servo.write(angle); Serial.println("Rotating Servo Motor to 0°"); } }

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.
  • 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 respectiva porta COM.
  • Conecte um cabo USB ao ESP8266 e ao PC.
  • Abra o Arduino IDE e escolha a placa e a porta corretas.
  • Clique no ícone Libraries na barra lateral esquerda do Arduino IDE.
  • Pesquise por “keypad” e localize a biblioteca de teclado criada por Mark Stanley e Alexander Brevig.
  • Pressione o botão Install para instalar a biblioteca de teclado.
Biblioteca de teclado para ESP8266 NodeMCU
  • Copie o código e abra-o com o Arduino IDE.
  • Clique no botão Upload no Arduino IDE para compilar e fazer upload do código para o ESP8266.
Upload de código no Arduino IDE
  • Digite 12345# no teclado.
  • Em seguida, digite 5642B#.
  • Confira o Serial Monitor e observe o estado do servo motor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E Module)' on 'COM15')
New Line
9600 baud
The incorrect password! try again The correct password! Rotating Servo Motor to 90° Rotating Servo Motor to 0°
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Explicação do Código

As senhas válidas são pré-definidas no código ESP8266. Uma string, chamada input_password, é usada para armazenar a senha digitada pelo usuário. O teclado tem duas teclas (* e #) usadas para fins especiais: apagar a senha e finalizar a senha. Quando uma tecla do teclado é pressionada:

  • Se não for uma das duas teclas especiais, ela será adicionada à input_password.
  • Se a tecla pressionada for *, a input_password será apagada, permitindo que o usuário comece ou recomece a digitar a senha.
  • Se a tecla pressionada for #:
    • O ESP8266 verifica se a senha é válida comparando a input_password com as senhas pré-definidas. Se corresponder a uma delas, o ESP8266 gira o servo motor para 90°.
    • Independentemente de a senha estar correta ou não, a input_password será apagada para a próxima entrada.
    • Após um timeout, o ESP8266 gira o servo motor para 0°.

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!