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.
Fonte: AutoCore Robótica
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.
Fonte: AutoCore Robótica
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.
Fonte: AutoCore Robótica
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! 🤘