Arduino - BLE

Neste tutorial, vamos aprender:

Arduino BLE

O escopo deste tutorial:

Vale observar que este tutorial aborda especificamente o Bluetooth Low Energy (BLE, Bluetooth 4.0). Se você procura informações sobre o Bluetooth Clássico (Bluetooth 2.0), consulte um tutorial semelhante Arduino - Bluetooth.

Sobre o Módulo Bluetooth HM-10

O HM-10 é um módulo BLE Serial que funciona como um conversor de Serial para Bluetooth Low Energy. Ele executa as seguintes ações:

  • Recebe dados do pino Serial RX e os transmite para um dispositivo pareado, como um smartphone, via BLE
  • Recebe dados do BLE (do dispositivo pareado) e os envia para o pino Serial TX.

Especificamente, ao usar um Arduino para se comunicar com um aplicativo de smartphone (Android/iOS), acontece o seguinte:

  • O Arduino se conecta ao módulo Bluetooth HM-10 através dos pinos Serial/SoftwareSerial
  • O módulo Bluetooth HM-10 é pareado com um aplicativo de smartphone
  • O Arduino envia dados para o aplicativo de smartphone enviando-os para a Serial/SoftwareSerial
  • O Arduino recebe dados do aplicativo de smartphone lendo-os da Serial/SoftwareSerial
  • Nenhum código BLE adicional é necessário no Arduino.

Pinagem

Pinagem do BLE

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

  • Pino BKR: para controlar o comportamento do módulo. Ignore este pino se você for iniciante.
  • Pino RX: pino de dados Serial, conecte este pino ao pino TX do Arduino. Os dados recebidos por este pino serão enviados para o Bluetooth.
  • Pino TX: pino de dados Serial, conecte este pino ao pino RX do Arduino. Os dados recebidos via BLE serão enviados para este pino como dados seriais.
  • Pino GND: pino de alimentação, conecte este pino ao GND da fonte de alimentação.
  • Pino VCC: pino de alimentação, conecte este pino aos 3.3V da tensão de alimentação
  • Pino STATE: indica os estados de funcionamento:
    • Pisca no modo de espera - repete um pulso de 500ms;
    • Aceso no estado de conexão - nível alto.

    ※ Nota:

    • Precisamos usar apenas 4 pinos: VCC, GND, RX, TX
    • Alguns fabricantes produzem o HM-10 com apenas quatro pinos.

Sobre o Aplicativo Bluetooth Serial Monitor

O aplicativo Bluetooth Serial Monitor é um aplicativo móvel que imita a aparência do Serial Monitor da Arduino IDE. Ele permite a comunicação com uma placa Arduino através do Bluetooth sem a necessidade de código adicional no sketch do Arduino. Para usá-lo, siga estes passos:

  • Conecte o Arduino a um módulo Bluetooth HM-10
  • Baixe e instale o Aplicativo Bluetooth Serial Monitor no seu smartphone
  • Abra o aplicativo e conecte-o ao módulo Bluetooth HM-10

Com esses passos concluídos, você pode enviar e receber dados do Arduino como se estivesse usando o Serial Monitor da Arduino IDE, sem a necessidade de modificar seu código Arduino existente nem adicionar qualquer código específico de Bluetooth.

Diagrama de Ligação

Diagrama de Ligação do Arduino BLE

This image is created using Fritzing. Click to enlarge image

Tabela de Ligação

Pinos do Arduino Pinos do Bluetooth HM-10
RX (Pino 0) TX
TX (Pino 1) RX
5V VCC
GND GND
BKR (NÃO conectado)
STATE (NÃO conectado)

※ Nota:

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

Como Programar para Bluetooth

Nenhum código especializado de Bluetooth é necessário, apenas código Serial.

Arduino envia dados para o Aplicativo Bluetooth no Smartphone

Para transmitir dados de uma placa Arduino para um aplicativo Bluetooth em um smartphone, o seguinte código Arduino pode ser usado. Este exemplo demonstra o envio da mensagem “Arduino here, command me!” do Arduino para o aplicativo do smartphone a cada segundo

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-ble */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Passos Rápidos

Para usar o código e conectar uma placa Arduino a um smartphone via BLE, siga estes passos:

  • Instale o Aplicativo Bluetooth Serial Monitor no seu smartphone.
  • Conecte o módulo Bluetooth HM-10 à placa Arduino de acordo com o diagrama de ligação fornecido.
  • Abra a Arduino IDE, copie o código fornecido acima e faça o upload para a placa Arduino. 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 na Arduino IDE.
  • No seu smartphone, abra o Aplicativo Bluetooth Serial Monitor e selecione o modo BLE.
Aplicativo Bluetooth Serial Monitor
  • Pareie o smartphone com o módulo Bluetooth HM-10.
Pareamento no Bluetooth Serial Monitor
  • Observe o resultado no aplicativo Android.
Aplicativo Bluetooth Serial Monitor
  • Observe o resultado no Serial Monitor da Arduino IDE.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me!
Ln 11, Col 1
Arduino Uno on COM15
2

Se você seguir os passos e executar o código, verá que os dados exibidos no Serial Monitor da Arduino IDE e no aplicativo Android serão iguais.

Aplicativo Bluetooth Envia Dados para o Arduino

O código abaixo executa as seguintes ações:

  • Envia dados do aplicativo Bluetooth para a placa Arduino
  • A placa Arduino lê os dados recebidos e depois envia uma resposta de volta ao dispositivo Bluetooth.
/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { Serial.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { Serial.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Passos Rápidos

Aqui estão os passos para usar o código com o Arduino e um aplicativo Android:

  • Abra a Arduino IDE e cole o código fornecido acima.
  • Clique no botão Upload para carregar o código na placa Arduino.
  • Abra o Serial Monitor na Arduino IDE.
  • Abra o aplicativo Android e pareie-o com o módulo Bluetooth HM-10 seguindo as instruções fornecidas em um exemplo anterior.
  • Depois de conectado, digite "LED ON" ou "LED OFF" no aplicativo Android e pressione o botão "SEND".
Aplicativo Bluetooth Serial Monitor
  • A placa Arduino receberá os dados e imprimirá uma resposta na porta Serial. Esses dados serão enviados para o aplicativo Bluetooth.
  • Verifique o resultado no aplicativo Android.
Aplicativo Bluetooth Serial Monitor
  • Verifique o resultado no Serial Monitor da Arduino IDE
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! LED ON LED is turned ON Arduino here, command me! Arduino here, command me! Arduino here, command me! LED OFF LED is turned OFF Arduino here, command me! Arduino here, command me!
Ln 11, Col 1
Arduino Uno on COM15
2

Ao concluir os passos acima, você perceberá que as informações exibidas no Serial Monitor da Arduino IDE e no aplicativo Android serão as mesmas

Código Arduino - Controlar LED com Aplicativo de Smartphone via BLE

O código de exemplo Arduino a seguir utiliza os comandos “ON” e “OFF” recebidos através do Aplicativo Bluetooth Serial Monitor para ligar/desligar o LED embutido.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #define LED_PIN 8 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "OFF") { digitalWrite(LED_PIN, LOW); // turn off LED Serial.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "ON") { digitalWrite(LED_PIN, HIGH); // turn on LED Serial.println("LED is turned ON"); // reports action to smartphone app } } }

Você pode ver as instruções com mais detalhes no tutorial Arduino controla LED via Bluetooth/BLE

Código Arduino - Controlar Servo Motor com Aplicativo de Smartphone via BLE

O código Arduino a seguir recebe um valor de ângulo do Aplicativo Bluetooth Serial Monitor para controlar o ângulo de um servo motor.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-ble */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #include <Servo.h> Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (Serial.available()) { // if there is data comming int angle = Serial.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo Serial.print("Rotated servo to angle: ");// reports action to smartphone app Serial.println(angle); } else { Serial.print("Invalid angle: ");// reports invalid value to smartphone app Serial.println(angle); } } }

Você pode ver as instruções com mais detalhes no tutorial Arduino controla Servo Motor via Bluetooth/BLE

Se o aplicativo Bluetooth Serial Monitor for útil para você, dê a ele uma avaliação de 5 estrelas na Play Store. Obrigado!

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!