Módulo Bluetooth Arduino e HC-05 Tutorial Completo
Neste tutorial Arduino Bluetooth vamos aprender como usar o módulo HC-05 para controlar o Arduino via comunicação Bluetooth. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo para obter mais detalhes.
Visão geral
Para este tutorial fiz dois exemplos, controlando o Arduino usando um smartphone e controlando o Arduino usando um laptop ou um PC. Para não sobrecarregar este tutorial, no meu próximo tutorial aprenderemos como podemos configurar o módulo Bluetooth HC-05 e fazer uma comunicação Bluetooth entre duas placas Arduino separadas como dispositivos mestre e escravo.
Antes de começarmos com o primeiro exemplo, controlando um Arduino usando um smartphone, vamos dar uma olhada no módulo Bluetooth HC-05. Comparando-o com o módulo HC-06, que só pode ser configurado como Slave, o HC-05 também pode ser configurado como Master, o que possibilita a comunicação entre duas placas Arduino separadas. Existem várias versões diferentes deste módulo, mas recomendo a que vem em uma placa de breakout porque assim é muito mais fácil de ser conectado. O módulo HC-05 é um módulo Bluetooth SPP (Serial Port Protocol), o que significa que ele se comunica com o Arduino através da Comunicação Serial.
Você pode obter os componentes necessários para este tutorial do Arduino em qualquer um dos sites abaixo:
- HC-05 Módulo Bluetooth …………….
- Placa Arduino ………………………………
- Breadboard e jump wires ………
Esquema do circuito
Veja como precisamos conectar o módulo à placa Arduino.
O módulo específico que tenho pode ser alimentado de 3,6 a 6 volts, pois vem em uma placa de fuga que contém um regulador de tensão. No entanto, o nível de tensão lógica dos pinos de dados é de 3,3 V. Assim, a linha entre o Arduino TX (Transmit Pin, que tem saída de 5V) e o módulo Bluetooth RX (Receive Pin, que suporta apenas 3,3V) precisa ser conectada através de um divisor de tensão para não queimar o módulo. Por outro lado, a linha entre o pino TX do módulo Bluetooth e o pino RX do Arduino pode ser conectada diretamente, pois o sinal de 3,3V do módulo Bluetooth é suficiente para ser aceito como uma lógica alta na placa Arduino.
Código-fonte do exemplo de comunicação Bluetooth do Arduino
Então, agora estamos prontos para fazer o código Arduino para permitir a comunicação entre a placa Arduino e o smartphone. Faremos um exemplo simples, apenas ligando e desligando um LED, mas será bom o suficiente para entender a comunicação.
#define ledPin 7
int state = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
if (state == '0') {
digitalWrite(ledPin, LOW); // Turn LED OFF
Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
state = 0;
}
else if (state == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("LED: ON");;
state = 0;
}
}
Code language: Arduino (arduino)
Descrição: Primeiro precisamos definir o pino ao qual nosso LED será conectado e uma variável na qual armazenaremos os dados vindos do smartphone. Na seção de configuração, precisamos definir o pino do LED como saída e configurá-lo para baixo imediatamente. Como mencionado anteriormente, usaremos a comunicação serial, portanto, precisamos iniciar a comunicação serial na taxa de transmissão de 38400, que é a taxa de transmissão padrão do módulo Bluetooth. Na seção de loop com a função Serial.available() verificaremos se há dados disponíveis na porta serial para serem lidos. Isso significa que quando enviarmos dados para o módulo Bluetooth esta declaração será verdadeira, então usando a função Serial.read() vamos ler esses dados e colocá-los na variável “state”. Assim, se o Arduino receber o caractere '0' ele desligará o LED e usando a função Serial.println() ele enviará de volta para o smartphone, via porta serial, a String “LED:OFF”. Além disso, redefiniremos a variável “state” para 0 para que as duas linhas acima sejam executadas apenas uma vez. Observe aqui que a variável “state” é inteira, então quando recebemos o caractere '0' que vem do smartphone, o valor real da variável inteira “state” é 48, que corresponde ao caractere '0', de acordo com o ASCII table.. É por isso que na declaração “if” estamos comparando a variável “state” com um caractere '0'. Por outro lado, se o caractere recebido for ‘1’, o LED acenderá e a String “LED:ON” será enviada de volta.
Agora o código está pronto para ser carregado, mas para isso precisamos desconectar as linhas TX e RX porque ao fazer o upload o Arduino usa a comunicação serial para que os pinos RX (digital pin 0) e TX (digital pin1) estejam ocupados. Podemos evitar esta etapa se usarmos os outros pinos TX e RX da placa Arduino, mas nesse caso teremos que usar a biblioteca SoftwareSerial.h para a comunicação serial.
Relacionado: Como configurar e emparelhar dois módulos Bluetooth HC-05 como mestre e escravo | Comandos AT
Conectando o Smartphone ao Módulo Bluetooth HC-05 e ao Arduino
Agora estamos prontos para conectar o smartphone ao módulo Bluetooth e ao Arduino. O que precisamos fazer aqui é ativar o Bluetooth e o smartphone encontrará o módulo Bluetooth HC-05.
Em seguida, precisamos emparelhar os dispositivos e a senha padrão do módulo HC-05 é 1234. Depois de emparelharmos os dispositivos, precisamos de um aplicativo para controlar o Arduino. Existem muitos aplicativos na Play Store para esse fim que funcionarão com o código do Arduino que escrevemos. No entanto, criei meu próprio aplicativo personalizado para este tutorial usando o aplicativo online do MIT App Inventor. Este é um aplicativo ótimo e fácil de usar para criar aplicativos Android e no meu próximo tutorial você pode encontrar um guia passo a passo detalhado sobre como criar seu próprio aplicativo Android personalizado para o seu projeto Arduino.
Você pode baixar o aplicativo que eu fiz para este exemplo aqui:
Exemplo de tutorial de Bluetooth do Arduino para Android
1 arquivo(s) Download de 1,38 MBCom o botão de conexão, conectaremos o smartphone ao módulo Bluetooth e o texto de status abaixo do botão nos informará se conectamos com sucesso. Usando os botões “Turn ON” e “Turn OFF” podemos ligar e desligar o LED. O texto acima dos botões é aquele que o Arduino está enviando de volta ao smartphone quando um determinado botão é pressionado.
Controlando o Arduino usando um laptop ou PC via comunicação Bluetooth
Vamos ver como podemos controlar o Arduino via Bluetooth usando um Laptop ou um PC. Então, primeiro precisamos emparelhar nosso laptop com o módulo Bluetooth HC-05 e podemos fazer isso nas configurações de Bluetooth do laptop. O laptop descobrirá o módulo HC-05 e, usando a senha '1234', emparelharemos os dispositivos.
Assim que emparelharmos os dispositivos no Laptop Device Manager, em Ports (COM &LPT), duas novas entidades aparecerão denominadas “Standard Serial over Bluetooth link”. A partir daqui, podemos ver o número da porta COM da porta serial através da qual os dispositivos se comunicarão.
Continuaremos com o mesmo exemplo anterior, ligando e desligando um LED e enviando de volta uma string para o laptop, então usaremos o mesmo código Arduino descrito anteriormente.
Processando o código-fonte do IDE
Agora usando o Processing IDE vamos fazer um programa para controlar o Arduino. Aqui está o código fonte.
import processing.serial.*;
Serial myPort;
String ledStatus="LED: OFF";
void setup(){
size(450, 500);
myPort = new Serial(this, "COM5", 38400); // Starts the serial communication
myPort.bufferUntil('\n'); // Defines up to which character the data from the serial port will be read. The character '\n' or 'New Line'
}
void serialEvent (Serial myPort){ // Checks for available data in the Serial Port
ledStatus = myPort.readStringUntil('\n'); //Reads the data sent from the Arduino (the String "LED: OFF/ON) and it puts into the "ledStatus" variable
}
void draw(){
background(237, 240, 241);
fill(20, 160, 133); // Green Color
stroke(33);
strokeWeight(1);
rect(50, 100, 150, 50, 10); // Turn ON Button
rect(250, 100, 150, 50, 10); // Turn OFF Button
fill(255);
textSize(32);
text("Turn ON",60, 135);
text("Turn OFF", 255, 135);
textSize(24);
fill(33);
text("Status:", 180, 200);
textSize(30);
textSize(16);
text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
text(ledStatus, 155, 240); // Prints the string comming from the Arduino
// If the button "Turn ON" is pressed
if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){
myPort.write('1'); // Sends the character '1' and that will turn on the LED
// Highlighs the buttons in red color when pressed
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(50, 100, 150, 50, 10);
}
// If the button "Turn OFF" is pressed
if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){
myPort.write('0'); // Sends the character '0' and that will turn on the LED
stroke(255,0,0);
strokeWeight(2);
noFill();
rect(250, 100, 150, 50, 10);
}
}
Code language: Arduino (arduino)
Descrição: Precisamos incluir a biblioteca Serial e criar um objeto serial para habilitar a comunicação serial, bem como definir uma variável String para o status do led. Na seção de configuração, precisamos definir o tamanho da janela do programa e iniciar a comunicação serial. Quanto ao número da porta COM, precisamos tentar um dos dois números da porta COM que notamos anteriormente no gerenciador de dispositivos. A próxima linha define o buffer da porta serial e no nosso caso é até que haja uma nova linha e na verdade haja uma nova linha toda vez que o Arduino enviar a String “LED:OFF” ou “LED ON” por causa do println( ) função. Em seguida, usando a função serialEvent() verificamos se há dados disponíveis na porta serial para serem lidos. Se sim, usando a função readStringUntil() vamos ler esses dados da porta serial que foi enviada do Arduino e no nosso caso é a String “LED:OFF” ou “LED:ON”.
Na função main draw(), que se repete constantemente, fazemos todos os gráficos e funções do programa. Então primeiro precisamos definir a cor de fundo, a cor de preenchimento, o tamanho e a cor do traço e usando a função rect() desenhamos os dois botões. Usando a função text(), imprimimos todo o texto, incluindo a string ledStatus que vem do Arduino. O que resta agora é tornar os botões funcionais. Então, usando a primeira instrução “if” nós confinamos a área do botão “Turn ON”, então quando o botão for pressionado o caractere ‘1’ será enviado pela porta serial para o Arduino e que acenderá o LED. As próximas linhas são usadas para destacar o botão quando ele é pressionado. O mesmo procedimento vale para o botão “Desligar”.
Agora o programa está pronto, então, quando clicarmos no botão executar, o programa ativará automaticamente a comunicação Bluetooth entre o laptop e o Arduino. O módulo Bluetooth HC-05 começará a piscar a cada dois segundos, o que indica que o módulo está conectado e poderemos controlar o LED usando nosso Laptop.
Isso é tudo por este tutorial, mas não se esqueça de verificar meu próximo tutorial onde aprenderemos como podemos configurar o módulo Bluetooth HC-05 e fazer uma comunicação Bluetooth entre duas placas Arduino separadas como dispositivos mestre e escravo.
Além disso, sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e não se esqueça de conferir minha coleção de projetos do Arduino.
Processo de manufatura
- Tutorial de bloqueio RFID do Arduino
- JX Wave Generator
- u-blox LEA-6H 02 Módulo GPS com Arduino e Python
- Um sistema de detecção de queda baseado em Arduino, Windows e Azure
- Controle do carro com Arduino Uno e Bluetooth
- Tutorial do sensor de impressão digital Arduino
- ArduRadio AlarmClock
- Máquina de café inteligente com Arduino e Bluetooth
- Raspberry Pi e laptop Arduino
- rDUINOScope