- Descrição: O Conversor de Nível Lógico 3.3V / 5V é um…
Como usar com Arduino – Módulo Bluetooth HC-05 / HC-06
– Descrição:
O Módulo Bluetooth possibilita transmitir e receber dados através de comunicação sem fio. Este módulo pode ser utilizado para criação de comunicação wireless para troca de informações entre dispositivos.
OBS: para esta prática foi utilizado o Módulo Bluetooth HC-05, contudo, os passos mencionados aqui são válidos para o Módulo Bluetooth HC-06.
– Especificações e características (HC-05):
– Modelo: HC-05
– Tensão de operação: 3,6V – 6VDC
– Frequência de operação: 2,4GHz
– Nível de sinal lógico: 3,3V
– Protocolo bluetooth: v2.0+EDR
– Banda: ISM
– Modulação: GFSK
– Segurança: autenticação e criptografia
- Modo de funcionamento: master / slave
– Temperatura de operação: -40° ~ 105° celsius
– Alcance do sinal: ~10m
– Senha padrão (PIN): 1234
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário utilizar comunicação sem fio de baixo custo.
– Proposta da prática:
Utilizar o Módulo Bluetooth HC-05 / HC-06 em conjunto com o Arduino para acionamento de um LED através do aplicativo instalado no smartphone Android.
– Lista dos itens necessários:
01 – Arduino com Cabo USB
01 – Módulo Bluetooth (HC-05 ou HC-06)
01 – LED Difuso 5mm Vermelho
01 – Resistor de 150Ω
01 – Resistor de 220Ω (R1 do divisor de tensão)
01 – Resistor de 330Ω (R2 do divisor de tensão)
01 – Protoboard
08 – Cabos Jumper macho-macho
– Aplicativo para o smartphone:
Site do desenvolvedor do aplicativo
– Esquema de ligação da prática:
OBS: veja que no esquema de ligação há um divisor de tensão (R1 = 220Ω e R2 = 330Ω) para o pino RXD do módulo bluetooth. Como o módulo trabalha em nível lógico 3.3V, utilizamos o divisor de tensão para reduzir os 5V de sinal que sai do Arduino.
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#include <SoftwareSerial.h> //INCLUSÃO DE BIBLIOTECA const int pinoRX = 2; //PINO DIGITAL 2 (RX) const int pinoTX = 3; //PINO DIGITAL 3 (TX) const int pinoLed = 12; //PINO DIGITAL UTILIZADO PELO LED int dadoBluetooth = 0; //VARIÁVEL QUE ARMAZENA O VALOR ENVIADO PELO BLUETOOTH boolean loopLED = false; //VARIÁVEL BOOLEANA QUE FAZ O CONTROLE DE ATIVAÇÃO DO LOOP DO LED SoftwareSerial bluetooth(pinoRX, pinoTX); //PINOS QUE EMULAM A SERIAL, ONDE //O PINO 2 É O RX E O PINO 3 É O TX void setup(){ Serial.begin(9600); //INICIALIZA A SERIAL bluetooth.begin(9600); //INICIALIZA A SERIAL DO BLUETOOTH bluetooth.print("$"); //IMPRIME O CARACTERE bluetooth.print("$"); //IMPRIME O CARACTERE bluetooth.print("$"); //IMPRIME O CARACTERE delay(100); //INTERVALO DE 100 MILISSEGUNDOS pinMode(pinoLed, OUTPUT); //DEFINE O PINO COMO SAÍDA } void loop(){ if(bluetooth.available()){ //SE O BLUETOOTH ESTIVER HABILITADO, FAZ dadoBluetooth = bluetooth.read(); //VARIÁVEL RECEBE O VALOR ENVIADO PELO BLUETOOTH if(dadoBluetooth == '1'){ //SE O VALOR RECEBIDO FOR IGUAL A 1, FAZ Serial.println("LED LIGADO"); //IMPRIME O TEXTO NA SERIAL digitalWrite(pinoLed, HIGH); //LIGA O LED } if(dadoBluetooth == '0'){ //SE O VALOR RECEBIDO FOR IGUAL A 0, FAZ Serial.println("LED DESLIGADO"); //IMPRIME O TEXTO NA SERIAL digitalWrite(pinoLed, LOW); //DESLIGA O LED } if(dadoBluetooth == 'b'){ //SE O VALOR RECEBIDO FOR IGUAL A b, FAZ Serial.println("LOOP DO LED ATIVADO"); //IMPRIME O TEXTO NA SERIAL loopLED = true; //VARIÁVEL RECEBE verdadeiro }else{ //SENÃO, FAZ loopLED = false; //VARIÁVEL RECEBE falso } } //MÉTODO RESPONSÁVEL PELO LOOP (LIGA / DESLIGA) DO LED if(loopLED){ digitalWrite(pinoLed, HIGH); //LIGA O LED Serial.println("LOOP (LED LIGADO)"); //IMPRIME O TEXTO NA SERIAL delay(500); //INTERVALO DE 500 MILISSEGUNDOS digitalWrite(pinoLed, LOW); //DESLIGA O LED Serial.println("LOOP (LED DESLIGADO)"); //IMPRIME O TEXTO NA SERIAL delay(500); //INTERVALO DE 500 MILISSEGUNDOS } } |
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Sensor de Proximidade Infravermelho E18-D80NK
Boa Tarde
Como faço para adicionar mais saídas, no meu caso eu quero poder acender 4 Leds
Boa tarde. Estou estudando o módulo HC-12. Pergunto se um mesmo módulo HC-12 pode ora transmitir, ora receber? Caso negativo, seria possível colocar na placa do Arduino dois módulos, um para transmitir e o outro pra receber?
Boa noite!!
Quando envio o comando para acender o LED, ele dá uma piscada ao invés de ficar aceso?
O que pode ser???
Boa tarde, Euler.
Poderia me ajudar?
Estou a dois dias tentando ligar o led pelo modulo bluetooth e não estou conseguindo.
Já remontei umas 3xs e nada de funcionar.
Estou usando um arduino mega. Eu segui todos os passos do seu tutorial, o meu celular chega a parear com o HC-05, porem quando eu aperto o o botão para ligar o led, ele não acende.
Olá Gabriel.
Agradeço pelo comentário!
Fez testes com outros smartphones?
Olá Euler.
Estou tentando criar uma rede WIFI, de comunicação entre vários Arduino Slaves e seus Sensores, (Roteador WIFI) que passarão os valores destes Sensores para um Arduino coletor Master.
Preciso conectar cada Arduino diretamente a um módulo ESP8266-01 com IP estático
Esses Slaves serão requisitados pelo Master, cada um (por vez) para fornecer os status de seus Sensores.
Programei-os completamente numa Rede RS485 e funcionou legal.
Gostaria de substituir o RS485 pelo WIFI com o ESP8266-01.
Poderia me ajudar na programação do RX e TX do Master com o ESP e do Slave com o ESP.
Att
Luiz
Olá Luiz Carlos.
Agradeço pelo comentário!
Temos alguns tutoriais a respeito de ESP8266 e você pode utilizar eles para começar os seus estudos:
https://blogmasterwalkershop.com.br/?s=esp8266
Muito bom
Olá Euler, tentei testar seu projeto e estou com problemas na parte do *void loop()*, o bluetooth não recebe os dados enviados. Saberia me ajudar?
Olá Guilherme.
Agradeço pelo comentário!
Se fez conforme a prática deve funcionar, pois foi tudo testado e inclusive há um vídeo no final da publicação mostrando o funcionamento.
Refaça tudo e confira minuciosamente o esquema de ligação.
Puxa, muito obrigado pela resposta.
Mas ainda não entendi no seu código, onde é feito o pareamento.
Pretendo usar dois módulos bluetooth, um controlando o outro (motores DC).
Poderia tirar esta última dúvida?
Abraços.
O módulo Bluetooth é inicializado a partir da linha de código bluetooth.begin(9600); .
Neste instante o mesmo passa a ser encontrado por qualquer dispositivo que possa se comunicar via Bluetooth. A senha de pareamento é padrão (1234). Vincular um mesmo controlador a 2 dispositivos Bluetooth eu acredito não ser possível.
Obrigado pela resposta.
Mas, é possível, ao menos mudar a senha? Se sim, como faço?
Abraços.
Recomendo que pesquise pelo datasheet do módulo bluetooth e verifique se há algum comando para troca da senha padrão.
Valeu. muito obrigado.
Olá Euler.
Gostei muito do texto.
Estou começando um TCC e gostaria de enterder como os módulos se reconhecem, para que não existam interferências de outros controles ou acionamento de outros equipamentos.
Exemplo: para aqueles módulos RF 433/315 MHZ, de carrinhos de controle remoto, os controles interferem em outros carrinhos e os carrinhos podem ser controlados por mais de um controle.
Se possível, me ajude com esta dúvida.
Abraços.
Olá Sebastião.
Agradeço pelo comentário!
O Bluetooth deve ser pareado com o controlador e somente dispositivos pareados é que tem acesso ao controle do Bluetooth.
Os módulos RF 433 / 315MHz necessitam de um encoder (no tranmissor) e um decoder (no receptor) para que a comunicação seja fechada e não possa ser interferida por outros módulos. Caso queira que um receptor seja controlado por mais de um transmissor, basta usar a mesma codificação no encoder dos outros transmissores. No tutorial abaixo você pode ler e entender melhor o que estou querendo dizer:
https://blogmasterwalkershop.com.br/arduino/utilizando-o-controle-remoto-rf-e-receptor-rf/
Geralmente é utilizado o KIT HT12E e HT12D (Encoder e Decoder) para RF junto a estes pequenos módulos de RF 433 / 315MHz:
https://www.masterwalkershop.com.br/kit-ht12e-e-ht12d-encoder-e-decoder-para-rf
Euler, bom dia.
Para usar o bluetooth para controlar três motores (dois para direção e um para subir e descer um guincho) e ligar / desligar um rele, seria usar a instrução If e ler os dados enviados por bluetooth? qual App você recomendaria para usar o celular como joystick de controle? como fazer os códigos de comando do joystick? Obrigado.
Olá Vanderlei.
Agradeço pelo comentário!
Não temos nenhum tutorial similar a este tipo de projeto que quer implementar.
Recomendo que aprenda a utilizar os itens de forma isolada e em seguida implemente o seu projeto usando todos os itens e programe o seu próprio aplicativo.
Euler, muito obrigado pelos tutoriais! Sou iniciante em arduino e a partir desse tutorial consegui controlar um relé usando bluetooth.
Olá Jeff.
Agradeço pelo comentário!
Fico satisfeito em saber que este tutorial te ajudou.
Vlw!!!
A alimentação VCC do modulo não deveria ser de 5V?
Olá Kayro.
Agradeço pelo comentário!
Nas especificações você pode ver a faixa de alimentação do módulo.
Boa noite. Uma dúvida quanto ao uso do HC-06. Se eu ligar a energia dele, sem ligar o TX e o RX, ele acende o led e fica piscando em velocidade rápida. Só com essas conexões, ele não deveria apareceu no meu celular Android para parear? Pergunto isso pois fiz esse teste, e ele não aparece disponível para parear. Só comprei ele, desembalei e fiz essa ligação, se configuração alguma. Fiz algo errado?
Obrigado.
Olá Vinicius.
Agradeço pelo comentário!
Chegou a ligar conforme mostrado neste tutorial? Se sim, conseguiu executar com sucesso?
Oi Euler
Ainda não montei da forma como o tutorial pois ainda não consegui ir ao centro comprar o os resistores. Meu arduino e módulo HC-06 chegaram pelo correio terça, e quis ao menos ligar a energia dele e ver se conseguia ao menos realizar o pareamento entre smartphone e o módulo, mas não consegui.
Não sei se foi falha minha, falta de configuração, ou problema com o módulo mesmo.
Abraços,
Recomendo que faça a montagem por completo para em seguida prosseguir nos testes.
Muito obrigado pela explicação, realmente tinha feito o calculo errado. Calculei como se o 330R fosse o R1 e o 220R o R2.
Tranquilo Geraldo.
Vlw!!!
Olá, gostaria de comunicar entre arduinos, Pc e Bluetooth, seria possível ter diversas portas com no mesmo Arduino? Pelo menos 1 pro Pc, 1 Bluetooth e outra para as outras placas Arduino.
Olá Fábio.
Agradeço pelo comentário!
Pesquise sobre porta COM virtual e veja se atende ao que precisa.
Na imagem do esquema, o pino vcc do modulo está no 3.3, com esses resistores o calculo do divisor de tensão ia dar 1.98. Mas se estivesse ligado no 5v com o divisor iria cair pra 3. E no modulo a informação e que o ideal é acima de 3.3v até 6v . Essa diferença influência? Me desculpe se eu disse alguma bobagem, e que estou começando agora.
Olá Geraldo.
Agradeço pelo comentário!
O divisor de tensão só daria próximo de 2V, caso R1 fosse 330R e R2 220R. No esquema montado é o inverso e está sendo reduzido um sinal de 5V que sai de D3, logo, no meio do divisor sai 3V que é conectado ao RXD do módulo.
O valor de 1.98V seria encontrado só se a tensão de entrada do divisor fosse de 3.3V, o que não é o caso.
Boa tarde,
A contribuição de seu site foi de uma ajuda muito útil.
Grato.
Ian Cavalcante.
Olá Ian.
Agradeço pelo feedback!
Vlw!!!