ESP8266 - BLE

Este tutorial ensina você a usar o ESP8266 para controlar o módulo BLE HM-10. Em detalhes, vamos aprender:

ESP8266 NodeMCU BLE

O objetivo deste tutorial é:

É importante saber que este tutorial trata especificamente de Bluetooth Low Energy (BLE, ou Bluetooth 4.0). Se você precisa de informações sobre Bluetooth Clássico (Bluetooth 2.0), consulte um tutorial semelhante ESP8266 - Bluetooth.

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×Módulo Bluetooth BLE HM-10
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.

Sobre o Módulo Bluetooth HM-10

O HM-10 é um módulo BLE Serial que funciona como um adaptador de Serial para Bluetooth Low Energy. Ele realiza as seguintes tarefas:

  • Receber dados do pino Serial RX e enviá-los a um dispositivo conectado, como um celular, por meio de BLE
  • Receber dados do BLE (do dispositivo pareado) e transmiti-los ao pino Serial TX.

Quando um ESP8266 é usado para se comunicar com um app de celular (Android/iOS), ocorrem as seguintes etapas:

  • Uma conexão é estabelecida entre o ESP8266 e o módulo Bluetooth HM-10 por meio de pinos Serial/SoftwareSerial
  • O módulo Bluetooth HM-10 é pareado com o app do celular
  • Os dados são enviados do ESP8266 para o app do celular enviando-os ao Serial/SoftwareSerial
  • Os dados são recebidos do app do celular pelo ESP8266 lendo-os do Serial/SoftwareSerial
  • Nenhum código BLE extra é necessário no ESP8266.

Pinagem do Módulo BLE HM-10

Pinagem do BLE

O módulo BLE HM-10 tem 6 pinos:

  • O pino BKR é usado para controlar o comportamento do módulo. Se você é iniciante, pode ignorar este pino.
  • O pino RX é o pino de dados seriais e deve ser conectado ao pino TX do ESP8266. Os dados recebidos neste pino serão enviados ao Bluetooth.
  • O pino TX é o pino de dados seriais e deve ser conectado ao pino RX do ESP8266. Os dados recebidos via BLE serão enviados a este pino como dados seriais.
  • O pino GND é o pino de alimentação e deve ser conectado ao GND da fonte de alimentação.
  • O pino VCC é o pino de alimentação e deve ser conectado a 3.3V da tensão de alimentação.
  • O pino STATE indica os estados de funcionamento:
    • Pisca no modo de espera - repete um pulso de 500ms;
    • Aceso no estado de conexão - ficará em nível alto.

    ※ Nota:

    • Apenas quatro pinos são necessários para o HM-10: VCC, GND, RX e TX.
    • Alguns fabricantes do HM-10 o produzem com apenas esses quatro pinos.

Sobre o App Bluetooth Serial Monitor

Para usar o Bluetooth Serial Monitor App, você deve primeiro conectar o ESP8266 a um módulo Bluetooth HM-10. Depois, baixe e instale o app no seu celular. Por fim, abra o app e conecte-o ao módulo Bluetooth HM-10.

Depois de concluir esses passos, você poderá transmitir e receber dados do ESP8266 como se estivesse usando o Serial Monitor do Arduino IDE, sem precisar fazer nenhuma alteração no seu código ESP8266 nem adicionar nenhum código relacionado a Bluetooth.

Diagrama de Ligação

Diagrama de ligação do ESP8266 NodeMCU com BLE

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.

Uma tabela de ligação é um tipo de quadro que exibe as conexões entre diferentes componentes. Uma tabela de ligação é um quadro que mostra as ligações entre vários componentes.

Pinos do ESP8266 Pinos do Bluetooth HM-10
Pin D7 TX
Pin D6 RX
5V VCC
GND GND
BKR (NÃO conectado)
STATE (NÃO conectado)

※ Nota:

O código do ESP8266 pode ser modificado para usar outros pinos, substituindo o objeto Serial por uma alternativa, como Serial1, Serial2 ou SoftwareSerial (se disponível).

Como Programar para Bluetooth

Nenhuma programação especial para Bluetooth é necessária; apenas a programação Serial é necessária.

O ESP8266 envia dados para o App Bluetooth no Celular

Para enviar dados de uma placa ESP8266 para um app Bluetooth em um celular, o código a seguir pode ser usado. Este exemplo mostra a transmissão da mensagem “ESP8266 here, command me!” do ESP8266 para o app do celular a cada segundo.

/* * 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-ble */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { Serial.println("ESP8266 here, command me!"); bluetooth.println("ESP8266 here, command me!"); delay(1000); }

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.

Para configurar uma placa ESP8266 para se comunicar com um celular via BLE, siga estes passos:

  • Obtenha o Bluetooth Serial Monitor App e instale-o no seu celular.
  • Conecte o módulo Bluetooth HM-10 à placa ESP8266 conforme o diagrama de ligação.
  • Abra o Arduino IDE, copie o código dado acima e faça o upload para a placa ESP8266. Se você não conseguir fazer o upload do código, desconecte os pinos TX e RX do módulo Bluetooth, faça o upload do código e depois reconecte os pinos RX/TX.
  • Abra o Serial Monitor no Arduino IDE.
  • No seu celular, abra o Bluetooth Serial Monitor App e selecione o modo BLE.
Bluetooth Serial Monitor App
  • Conecte o celular ao módulo Bluetooth HM-10.
Pareamento do Bluetooth Serial Monitor
  • Examine o resultado no app Android.
Bluetooth Serial Monitor App
  • Examine a saída mostrada no Serial Monitor do Arduino IDE.
∞
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
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me!
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Se você seguir os passos mencionados e executar o código, vai notar que os dados mostrados no Serial Monitor do Arduino IDE e no app Android são os mesmos.

O App Bluetooth Envia Dados para o ESP8266

O código executa os seguintes passos:

  • Transmite dados do app Bluetooth para a placa ESP8266
  • A placa ESP8266 lê os dados recebidos e envia uma resposta de volta ao dispositivo Bluetooth.
/* * 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-ble */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { bluetooth.println(F("ESP8266 here, command me!")); if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { bluetooth.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { bluetooth.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Passos Rápidos

  • 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.

Veja como usar o código com o ESP8266 e um app Android:

  • Comece abrindo o Arduino IDE e copiando o código fornecido.
  • Clique no botão Upload para transferir o código para a placa ESP8266.
  • Agora abra o Serial Monitor no Arduino IDE.
  • Em seguida, abra o app Android e faça o pareamento com o módulo Bluetooth HM-10 usando as instruções de um exemplo anterior.
  • Por fim, digite "LED ON" ou "LED OFF" no app Android e pressione o botão "SEND".
Bluetooth Serial Monitor App
  • A placa ESP8266 receberá os dados e, em seguida, imprimirá uma resposta na porta Serial. Essa resposta será enviada ao app Bluetooth, e o resultado pode ser visto no app Android.
Bluetooth Serial Monitor App
  • Examine a saída exibida no Serial Monitor do Arduino IDE.
∞
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
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED ON LED is turned ON ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED OFF LED is turned OFF ESP8266 here, command me! ESP8266 here, command me!
Ln 11, Col 1
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Depois de seguir os passos acima,. você vai observar que as informações exibidas no Serial Monitor do Arduino IDE e no app Android são idênticas.

Código ESP8266 - Controlar LED com app de celular via BLE

Este código de exemplo do ESP8266 usa os comandos “ON” e “OFF” recebidos por meio do Bluetooth Serial Monitor App para ligar ou desligar um LED embutido.

/* * 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-ble */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module #define LED_PIN 8 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure the ESP8266 pin as a digital output pin } void loop() { if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { digitalWrite(LED_PIN, LOW); // turn off LED bluetooth.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "LED ON") { digitalWrite(LED_PIN, HIGH); // turn on LED bluetooth.println("LED is turned ON"); // reports action to smartphone app } } }

Você pode ver as instruções mais de perto visitando o tutorial ESP8266 controla LED via Bluetooth/BLE. Para entender melhor as instruções, confira o tutorial ESP8266 controla LED via Bluetooth/BLE. Para um exame completo das instruções, consulte o tutorial ESP8266 controla LED via Bluetooth/BLE

Código ESP8266 - Controlar Servo Motor com app de celular via BLE

  1. O código ESP8266 abaixo serve para receber um valor de ângulo. 2. Esse valor é enviado pelo Bluetooth Serial Monitor App. 3. O valor do ângulo é usado para controlar o ângulo de um servo motor.
/* * 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-ble */ #include <SoftwareSerial.h> #include <Servo.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (bluetooth.available()) { // if there is data comming int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo bluetooth.print("Rotated servo to angle: ");// reports action to smartphone app bluetooth.println(angle); } else { bluetooth.print("Invalid angle: ");// reports invalid value to smartphone app bluetooth.println(angle); } } }

Você pode encontrar mais informações sobre as instruções no tutorial intitulado ESP8266 controla Servo Motor via Bluetooth/BLE. Para uma visão mais detalhada das instruções, consulte o tutorial ESP8266 controla Servo Motor via Bluetooth/BLE.

Se você achar o app Bluetooth Serial Monitor útil, demonstre sua gratidão dando a ele uma avaliação de 5 estrelas na Play Store. Seu apoio é muito apreciado!

Vídeo

Referências de Funções

※ 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!