Utilizando Módulo Bluetooth no Arduino
Olá, tudo bem? Hoje, vamos utilizar o módulo bluetooth HC-05 com o Arduino através do celular. Certamente você deve conhecer e também já tenha utilizado ele.
Por isso, esta será apenas uma introdução ao nosso projeto de aplicativo do blog, onde colocaremos muitos projetos dentro dele. Vamos nessa?
Módulo Bluetooth HC-05
Este módulo tem a capacidade de transmitir e receber dados através de comunicação sem fio. Além disso, ele pode ser utilizado para criação de uma comunicação wireless, para realizar a troca de informações entre dispositivos.
Então, para retratar isso, vamos desenvolver uma aplicação utilizando App Inventor. Através dele, vamos criar nosso aplicativo para receber dados de um sensor de umidade DHT11 e poder ligar um led.
Mas agora, vamos a alguns detalhes importantes sobre o nosso módulo bluetooth:
- Tensão de operação: 3,6V – 6VDC
- Frequência de operação: 2,4GHz
- Nível de sinal lógico: 3,3V
- Banda: ISM
- Modulação: GFSK
- Modo de funcionamento: master / slave
- Alcance do sinal: ~10m
- Senha padrão (PIN): 1234 ou 0000
Contudo, caso tenha outras dúvidas relacionadas a sua configuração, basta acessar o seu datasheet clicando no botão abaixo.
Ligação do Módulo no Arduino
Antes de começar a estudar as ligação, temos de prestar muita atenção ao nível de sinal utilizado pelo módulo para a comunicação serial. Por que? Pois alguns módulos trabalham com 5v, outros com 3.3v, como o módulo usado neste tutorial.
Então, nós precisamos utilizar um divisor de tensão para evitar de danificar o componente, mas essa é tarefa tranquila, basta utilizar 2 resistores ligados ao pino RX do módulo Bluetooth.
No circuito do projeto usamos um de 220 e outro de 330, o que gerou um nível de sinal de aproximadamente 3v, suficiente para os testes. Show?
Componentes do Projeto
- 01x Arduino UNO
- 01x Módulo Bluetooth HC-05
- 01x Led 5mm
- 02x Resistor 220 Ohms
- 01x Resistor 330 Ohms
- 01x Protoboard
- Alguns Jumpers
Montagem do Circuito
Por fim, basta conectar os componentes de acordo com a imagem abaixo. Fique ligado quando ao divisor de tensão no pino RX.
Código do Projeto Comentado
Antes de apresentar o código, será necessário baixar o aplicativo que utilizaremos por enquanto antes de criarmos o nosso. Para isso, instale o aplicativo para sistemas Android clicando no link abaixo.
<code>/* ================================================================================================== Projeto: Comunicação Bluetooth com o Arduino Autor: Danilo Nogueira Data: 9/07/2019 Domínio Público. // ==================================================================================================*/ // --- Declaração Bibliotecas --- #include <SoftwareSerial.h> // ================================================================================================== // --- Declaração das Variaveis --- int pinoRX = 2; // RX ligado ao pino digital 2 int pinoTX = 3; // TX ligado ao pino digital 3 int pinoLed = 12; // Led ligado ao pino digital 12 int dadoBluetooth = 0; // variavel p/ armazenar os dados enviados pelo bluetooth boolean loopLED = false; // variavel para controlar o estado do led // Passando os parâmetros para as funções SoftwareSerial bluetooth(pinoRX, pinoTX); // ================================================================================================== // --- Configurando void setup() --- void setup() { Serial.begin(9600); pinMode(pinoLed, OUTPUT); // Definindo o led como saída // Aguarda 1 seg antes de acessar as informações do sensor delay(1000); bluetooth.begin(9600); // Iniciando a serial do bluetooth para enviar dados // Imprime o caractere como teste bluetooth.print("$"); bluetooth.print("$"); bluetooth.print("$"); } // ================================================================================================== // --- Configurando void loop() --- void loop() { // Verifica se o bluetooth está ativado if(bluetooth.available()){ dadoBluetooth = bluetooth.read(); // Recebendo dados do bluetooth // Se for = 1 if(dadoBluetooth == '1'){ Serial.println("LED LIGADO"); digitalWrite(pinoLed, HIGH); } // Se for = 0 if(dadoBluetooth == '0'){ Serial.println("LED DESLIGADO"); digitalWrite(pinoLed, LOW); } } // Nao diminuir muito o valor abaixo // O ideal e a leitura a cada 2 segundos delay(2000); } // ====================================== FIM ====================================================</code>
Analisando o Código a Fundo
<code>#include <SoftwareSerial.h></code>
Então, observe que declaramos a função SoftwareSerial. Ela tem como função, permitir a comunicação serial em outros pinos digitais do Arduino, usando software para multiplexar a funcionalidade.
Ou seja, perceba que os pinos 2 e 3 não são TX e RX, por padrão são os pinos 1 e 0, mas e se eles por acaso queimarem? Podemos utilizar essa biblioteca para transformar os pinos digitais em pinos de troca de dados. Massa!
<code>int pinoRX = 2; // RX ligado ao pino digital 2 int pinoTX = 3; // TX ligado ao pino digital 3 int pinoLed = 12; // Led ligado ao pino digital 12 int dadoBluetooth = 0; // variavel p/ armazenar os dados enviados pelo bluetooth boolean loopLED = false; // variavel para controlar o estado do led // Passando os parâmetros para as funções SoftwareSerial bluetooth(pinoRX, pinoTX);</code>
Outro bloco é a declaração de variáveis e configuração das bibliotecas, Nele definimos os pinos onde estão conectados em nosso arduino.
<code>void setup() { Serial.begin(9600); pinMode(pinoLed, OUTPUT); // Definindo o led como saída // Aguarda 1 seg antes de acessar as informações do sensor delay(1000); bluetooth.begin(9600); // Iniciando a serial do bluetooth para enviar dados // Imprime o caractere como teste bluetooth.print("$"); bluetooth.print("$"); bluetooth.print("$"); }</code>
Então, chegou a hora de configurar o bloco setup. Nele definimos o led como saída e inicializamos o sensor e a velocidade de comunicação da serial do arduino e do módulo bluetooth.
<code>void loop() { // Verifica se o bluetooth está ativado if(bluetooth.available()){ dadoBluetooth = bluetooth.read(); // Recebendo dados do bluetooth if(dadoBluetooth == '1'){ Serial.println("LED LIGADO"); digitalWrite(pinoLed, HIGH); } if(dadoBluetooth == '0'){ Serial.println("LED DESLIGADO"); digitalWrite(pinoLed, LOW); } } delay(2000); }</code>
Por fim, chegamos ao void loop. Nele realizamos a leitura da temperatura e umidade, enviando os dados pela serial. Em seguida, verificamos a condição de habilitado do bluetooth para poder controlar o led e receber os dados.
Resultado do Projeto
Por fim, nos próximos posts iremos iniciar o nosso estudo sobre a ferramenta App Inventor. Onde iremos desenvolveremos juntos um aplicativo para realizar diversos projetos dentro dele!
Mas e ai? Gostou do post? Caso tenha ficado algo incompleto para você, comenta abaixo 📝
Dicas? 😄 Dúvidas? 👀 Críticas? 😱 Só comentar abaixo!
Forte abraço e compartilha se gostou! 🤘
Muito Bom!! Continue , pois está ajudando muitos a compreender essa cultura tão fascinante. Parabéns pelo trabalho.
Olá Weksllay, muito obrigado pelo feedback!
Espero que eu possa estar realmente ajudando muitas pessoas e que eu continue auxiliando você também!
Grande abraço!