Arduino - Bluetooth

Neste tutorial, vamos aprender:

Arduino Bluetooth

O escopo deste tutorial:

Este tutorial é sobre o uso do Bluetooth Clássico (Bluetooth 2.0). Se você está procurando o Bluetooth Low Energy - BLE (Bluetooth 4.0), veja este tutorial semelhante: Arduino - Bluetooth Low Energy

Sobre o Módulo Bluetooth HC-05

O HC-05 é um módulo Bluetooth Serial. Ele funciona como um conversor Serial para Bluetooth. Ele faz o seguinte:

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

Mais especificamente, no contexto em que o Arduino se comunica com um app de smartphone (Android/iOS):

  • O Arduino se conecta ao Módulo Bluetooth HC-05 pelos pinos Serial/SoftwareSerial
  • O Módulo Bluetooth HC-05 é pareado com um app de smartphone
  • O Arduino envia os dados para o app de smartphone simplesmente enviando dados para a Serial/SoftwareSerial
  • O Arduino recebe os dados do app de smartphone simplesmente lendo dados da Serial/SoftwareSerial
  • Nenhum código específico de Bluetooth é necessário no Arduino

Pinagem

Pinagem do Bluetooth

O Módulo Bluetooth HC-05 tem 6 pinos:

  • Pino Enable/Key: este pino é usado para alternar entre o Modo de Dados (nível LOW) e o Modo de Comando (nível HIGH). Se não estiver conectado, ele fica no Modo de Dados por padrão
  • Pino VCC: pino de alimentação, conecte este pino ao +5V da tensão de alimentação
  • Pino GND: pino de alimentação, conecte este pino ao GND da fonte de alimentação
  • Pino TX: pino de dados seriais, conecte este pino ao pino RX do Arduino. Os dados recebidos via Bluetooth serão enviados para este pino como dados seriais.
  • Pino RX: pino de dados seriais, conecte este pino ao pino TX do Arduino. Os dados recebidos neste pino serão enviados ao Bluetooth
  • State: o pino State está conectado ao LED da placa e pode ser usado como retorno para verificar se o Bluetooth está funcionando corretamente.

No entanto, para as funções básicas, só precisamos usar 4 pinos do Módulo Bluetooth HC-05 para conectar ao Arduino.

O Módulo Bluetooth HC-05 também tem dois componentes embutidos:

  • Um LED: indica o status do módulo
    • Piscando uma vez a cada 2 segundos: o módulo entrou no Modo de Comando
    • Piscando repetidamente: aguardando conexão no Modo de Dados
    • Piscando duas vezes por segundo: conexão bem-sucedida no Modo de Dados
  • Botão: pode ser usado para controlar o pino Key/Enable e selecionar o modo de operação (Modo de Dados ou de Comando)

Como Funciona

O módulo Bluetooth HC-05 tem dois modos de operação:

  • Modo de Dados: é usado para trocar dados com o dispositivo pareado
  • Modo de Comando: é usado para configurar parâmetros.

Felizmente, o módulo Bluetooth HC-05 pode funcionar com o Arduino usando a configuração padrão, sem precisar configurar nada.

Configurações Padrão do HC-05

Nome Bluetooth padrão “HC-05”
Senha padrão 1234 ou 0000
Comunicação padrão Slave
Modo padrão Modo de Dados
Baud rate padrão do Modo de Dados 9600, 8, N, 1
Baud rate padrão do Modo de Comando 38400, 8, N, 1

Sobre o App Bluetooth Serial Monitor

O app Bluetooth Serial Monitor é um aplicativo para celular com uma interface de usuário parecida com o Serial Monitor da Arduino IDE. Ele se comunica com o Arduino via Bluetooth. Você pode interagir com o Arduino por este app como se fosse o Serial Monitor no seu PC, sem adicionar nenhum código especial para o módulo Bluetooth no seu código Arduino, seguindo estes passos:

  • Conecte o Arduino ao módulo Bluetooth HC-05
  • Instale o app Bluetooth Serial Monitor no seu smartphone
  • Abra o app e pareie-o com o módulo Bluetooth HC-05

E agora você pode enviar/receber dados do Arduino exatamente como no Serial Monitor da Arduino IDE. Você não precisa modificar o código Arduino existente nem adicionar nenhum código Bluetooth a um novo código Arduino.

Diagrama de Ligação

Diagrama de ligação do Arduino com Bluetooth

This image is created using Fritzing. Click to enlarge image

Tabela de Ligação

Pinos do Arduino Pinos do Bluetooth HC-05
RX (Pino 0) TX
TX (Pino 1) RX
5V VCC
GND GND
Enable/Key (NÃO conectado)
State (NÃO conectado)

※ Nota:

Você pode usar outros pinos do Arduino trocando o objeto Serial no código Arduino por outro Serial1, Serial2,... ou por SoftwareSerial, se disponível.

Como Programar para Bluetooth

Nenhum código dedicado ao Bluetooth é necessário. Só precisamos usar o código Serial.

Arduino envia dados para o App Bluetooth no Smartphone

Para enviar dados do Arduino para o app Bluetooth no smartphone, precisamos usar o seguinte código Arduino:

Neste exemplo, vamos enviar “Arduino here, command me!” do Arduino para o app Bluetooth no 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-bluetooth */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Passos Rápidos

  • Instale o app Bluetooth Serial Monitor no seu smartphone
  • Ligue o módulo Bluetooth HC-05 ao Arduino conforme o diagrama de ligação acima
  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino. O upload do código para o Arduino pode falhar. Se isso acontecer, 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
  • Abra o app Bluetooth Serial Monitor no seu smartphone
  • Selecione o modo Classic Bluetooth
App Bluetooth Serial Monitor
  • Pareie-o com o módulo Bluetooth HC-05
Pareamento no Bluetooth Serial Monitor
  • Veja o resultado no app Android.
App Bluetooth Serial Monitor
  • Veja 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

Você verá que os dados no Serial Monitor da Arduino IDE e no app Android são idênticos

App Bluetooth envia dados para o Arduino

O código abaixo faz o seguinte:

  • O app Bluetooth envia dados para o Arduino
  • O Arduino lê os dados e envia a resposta de volta ao 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-bluetooth */ // 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

  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • Abra o Serial Monitor na Arduino IDE
  • Abra o app Android e pareie-o com o módulo Bluetooth HC-05 (de forma semelhante ao exemplo anterior)
  • Depois de conectar, digite "LED ON" ou "LED OFF" no app Android e clique no botão "SEND"
App Bluetooth Serial Monitor
  • O Arduino recebe os dados e imprime a resposta na porta Serial. Esses dados serão enviados ao app Bluetooth
  • Veja o resultado no app Android
App Bluetooth Serial Monitor
  • Veja 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

Você verá que os dados no Serial Monitor da Arduino IDE e no app Android são idênticos

Código Arduino - Controlar LED com App de Smartphone via Bluetooth

O código de exemplo Arduino abaixo aceita dois comandos (“ON” e “OFF”) do app 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-bluetooth */ // 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 App de Smartphone via Bluetooth

O código Arduino abaixo recebe o valor do ângulo do app Bluetooth Serial Monitor para controlar o ângulo do 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-bluetooth */ // 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 app Bluetooth Serial Monitor for útil para você, por favor, 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!