Programe o módulo bluetooth HC-05 com conversor FTDI
Você que acompanha o blog já sabe que pode utilizar o conversor FTDI FT232RL para programar um Arduino Mini. Mas ele não serve só pra isso. Neste post vamos mostrar como você pode programar o módulo bluetooth HC-05 com conversor FTDI, e realizar uma comunicação entre um smartphone e um computador.
Além disso, neste post vamos mostrar também como você pode programar o módulo HC-05 via comandos AT sem usar o Arduino como intermediário.
Instalando o módulo FTDI no computador
Quando você conecta o conversor FTDI na porta USB do computador, geralmente a instalação dos drivers é feita de forma automática, com o computador reconhecendo dois dispositivos: USB Serial Converter e USB Serial Port:
Essa porta serial que foi detectada, no caso a COM21, será utilizada pelo nosso programa de comunicação serial para se conectar diretamente ao módulo bluetooth.
Se a instalação dos drivers não ocorreu de forma automática, faç o download dos drivers neste link, depois coloque o dispositivo novamente na porta USB para continuar o procedimento.
Conexão do bluetooth HC-05 com conversor FTDI
Antes de conectar e ligar o conversor ao módulo bluetooth, deixe o jumper de seleção de tensão do módulo FTDI na posição 3.3V, conforme indicado na imagem abaixo, pois esse é o nível de sinal aceito pelo HC-05. A alimentação do módulo bluetooth será feito pelo próprio conversor, por meio dos pinos GND e Vcc:
O pino TX (transmissão) do FTDI vai ligado ao RX (recepção) do módulo bluetooth, e o RX vai ligado no TX.
Programando o módulo bluetooth com comandos AT
Para programar o módulo bluetooth, utilize o software de comunicação serial de sua preferência, escolhendo a porta COM que foi detectada anteriormente. Nós utilizamos o Termite (download), um software bem simples de usar e que nem precisa ser instalado: você pode simplesmente baixar a versão marcada com “program only”, e rodar o executável.
Ao ligar o módulo HC-05, mantenha o pino KEY em nível alto (5V), para que o módulo entre em modo de programação. Neste modo, o led da placa irá piscar lentamente.
Na tela principal do Termite, clique em Settings, na parte superior do programa:
Na tela de configuração, configure a porta serial e a velocidade de comunicação (baud rate, geralmente 9600). As outras configurações (data bits, stop bits, etc), são padrão e não precisam ser modificadas:
Clique em OK para salvar as configurações e na tela principal do programa clique no botão maior do lado esquerdo (connect), para abrir a porta serial e iniciar a comunicação com o módulo bluetooth.
Digite AT na parte inferior do Termite, e o módulo deve responder com um “ok”, indicando que a comunicação foi feita com sucesso. Você pode então utilizar comandos como AT+NAME para mudar o nome do módulo bluetooth, ou AT+PSWD para mudar a senha:
Para uma lista dos principais comandos suportados pelo módulo bluetooth, tanto o HC-05 como o HC-06, utilize a tabela abaixo:
Vamos agora dar uma olhada na comunicação entre o smartphone e o computador.
Enviando comandos do smartphone para o computador
Você pode testar a comunicação entre o celular e o computador via HC-05 utilizando um programa como o Bluetooth SPP (download Android). Para efetuar esse procedimento, o módulo não pode estar em modo de programação, portanto deixe o pino KEY desligado.
Carregue o Bluetooth SPP, faça a conexão com o HC-05 e selecione a opção CMD Line Mode.
Nesse modo, você digita os dados na parte inferior da tela e eles irão aparecer no Termite. O contrário também funciona: digite os dados no Termite, e os mesmos serão exibidos no Bluetooth SPP:
Na tela do Termite, os caracteres que foram enviados estão em azul, e os recebidos em verde. No celular, os caracteres recebidos estão nas linhas marcadas com Rxd, e os transmitidos nas linhas marcadas com Txd.
Gostou? Confira aqui no Arduino e Cia outros posts usando bluetooth!
Pode se conectar com um dispositivo IOS? Iphone?
Bom dia,
Esse módulo bluetooth, pelo que eu pesquisei, não funciona com iPhone, IOS. Para isso você precisa de um módulo BLE. Vou ter um post sobre ele em breve. 🙂
Abraço!
Tentei dar comandos AT ao meu HC-05 usando um BaundRate de 9.600 pelo serial do IDE do arduino. Como não obtive resposta, fui alterando o BaundRate e com 38.400 os comandos começaram a responder. Mas ai surgiram coisas estranhas. Ao digitar AT+NAME ou AT+NAME? nada é retornado! mas quando eu digito AT+NAME=Paulo é retornado +NAME=Paulo, mas logo em seguida ao digitar AT+NAME ou AT+NAME? nada é retornado! (Mas constatei depois que o nome padrão HC-05 foi alterado para "Paulo").
Agora o mais esquisito de tudo, ao digitar AT+UART, me é retornado "+UART=9600,0,0" mas como isso é possível se na IDE do arduino não houve comunicação a 9.600 e sim somente com 38.400???? tentei outra interface serial, dessa vez o "Termite 3.2" e nele acontece a mesma coisa, só consigo comunicação a 38.400 mas no HC-05 digitando "AT+UART" me é retornado "+UART=9600,0,0" como pode isso? e o que significa os dois zeros depois do 9.600 ???
Tambem tenho o mesmo problema.
Se alguem puder ajudar.
Normalmente 38400 é velocidade de modo programação e 9600 de funcionamento
Boa tarde, vou comprar o modulo FTDI para programar meus modulos hc-05, serve para o hc-06 tambem?
Se eu tiver alguma dificuldade tem algum suporte que possa me ajudar.?
Boa noite Rodrigo,
Serve sim. Se precisar de algo, estamos aí.
Abraço!
Boa noite, estou tentando testar o módulo FTDI232 conectado a um FC-114 HC-06. Fiz a ligação conforme a figura acima, mas não consigo conectar ao PC. O módulo HC-06 não aparece no PC para ser adicionado e o Led de paridade fica piscando.
Alguém sabe o que pode estar acontecendo?
Olá. Poderia me esclarecer uma dúvida? Com esse módulo FTDI consigo programar um módulo BLE? (BLE é o RF-BM-S02). Gosto muito de seu blog e estou esperando ansiosa pela postagem do BLE. Obrigada =)
Oi Ariane,
Teoricamente sim, já que é uma comunicação RX/TX como o do modulo HC-05. Estou esperando chegar o meu BLE para escrever à respeito… 🙂
Abraço!
bom dia eu comprei o modulo wifi esp8266 tem como programar ele edepois tentar usar o modulo wifi junto com o arduino mega?
sem usar esse conversor ttl?
aguardo sua resposta obrigado e parabens pelo post to tirando como base para meu tcc de engenharia.
Boa noite Hugo,
Tem sim, você pode usar o mesmo esquema que eu fiz com o Uno, neste post:
http://www.arduinoecia.com.br/2015/03/arduino-modulo-wireless-esp8266.html
Abraço e obrigado! 🙂
Olá, amigos ! gostaria de saber uma informação. Eu possuo um código para Atmega328p que envolve Bluetooth e um controle de Super Nintendo. Estou na corrida tentando desenvolver o primeiro controle de Super Nintendo Bluetooth para PCs e notebooks, usando um microcontrolador da família AVR , mais dois módulos bluetooths. O código, está quase funcional. Para isso, no receptor de PC eu uso uma determinada biblioteca VUSB para Arduino, que funciona como um Joystick, além de um receptor bluetooth em modo slave. O emissor, tem um controle de Super Nintendo que envia os códigos quando se aperta os botões. Está havendo comunicação entre os dispositivos, mas, há uma forte latência. Quando coloco o emissor para enviar códigos automaticamente, o envio é mais rápido, mas ainda assim, há latências. Preciso de ajuda para desenvolver esta parte final do projeto. É um projeto de fins acadêmicos e de licenciamento gratuito. A escolha do controle de Super Nintendo, foi ilustrativa apenas, pois eu acho legal trabalhar com o shift register. No futuro, é montar um controle próprio para tal. Eu queria que alguém experiente pudesse revisar meus códigos e me ajudasse a entender o motivo desta latência de comunicação. Algum de vocês poderia me dar uma luz, se possível ? obrigado pela atenção.
Boa tarde,
tive problemas com os drivers alguém pode me ajudar?
Tem algum tutorial de instalação?
Consegui mudar a senha, consegui ver a frequência, ver o modo 0 ou 1 ou seja escravo ou Mestre, mas não consegui mudar o nome, o que é um problema para mim que sou professor e gostaria de usar diversos módulos na mesma sala com nomes diferentes. Como resolver?
Oi Sergio,
Talvez a sintaxe do comando tenha mudado por causa da versão de firmware. O que acontece quando você tenta mudar o nome? ele retorna algum erro?
Abraço!
Adilson