Introdução
Quando pensamos em conectar nossos projetos Arduino sem fio com o celular, por exemplo controlar um robô móvel, a primeira coisa que pensamos é em usar Bluetooth. Existem alguns módulos bem famosos como HC-05/06 que são usados para fazer esse tipo de conexão. Porém com a evolução do padrão Bluetooth outros módulos foram sendo lançados como por exemplo a AT-09 que é um módulo que já trabalha com Bluetooth versão 4.0 e BLE com praticamente o mesmo preço dos seu antecessores. Nesse post vamos conhecer alguns detalhes do módulo AT-09 e fazer alguns experimentos com ele.
Recursos do AT-09
O módulo AT-09 é um módulo Bluetooth com interface UART/Serial semelhante aos populares HC-05/06 mas que tem como diferencial o fato de usar um SoC System Texas Instruments CC2540 ou CC2541 BLE 4.0 (Bluetooth-Low-Energy). O Bluetooth BLE e o Bluetooth clássico geralmente são utilizadas para finalidades bem diferentes. O BLE é utilizado em casos onde a troca de dados é baixa, dessa forma o módulo pode constantemente entrar em modo IDLE (Sleep) economizando energia.
Figura 1: Modulo AT-09.
Na imagem abaixo temos um pequeno comparativo entre os módulos HC-05/06 e o AT-09.
Figura 2: Comparativo entre os módulos Bluetooth.
Note que tanto HC-05/06 quanto o AT-09 podem trabalhar nos modos Slave ou Master mas os dois tipos de módulos não conseguem se conectar entre si. Os módulos HC-05/06 suportam autenticação através de um PIN, mas alguns modelos baseados no HM-10, como é o caso do AT-09, não suportam essa função.
Configuração do módulo
Nesse primeiro momento vamos configurar um nome familiar para reconhecermos nosso módulo quando fizermos a busca de dispositivos Bluetooth. Neste post usei o Arduino Nano mas você pode usar em qualquer placa Arduino.
Componentes Necessários
- 1x Placa Arduino Nano;
- 1x Módulo Bluetooth AT-09;
- 1x Protoboard;
- 1x Resistor de 1k;
- 1x Resistor de 2k2;
- Fios Jumper.
Montando o Projeto
A montagem deste projeto, pode ser feita seguindo a ordem dos fios mostrada na imagem abaixo.
Figura 3: Montagem do circuito.
Na montagem cabem algumas observações.
Note que a montagem tem o pino de reset curto-circuitado com o ground, isso é feito para que utilizemos somente o módulo de interface usb-serial presente na placa para trocar mensagens com o módulo bluetooth.
O módulo AT-09 pode ser alimentado com tensões de 3.6 – 6V, mas os pinos de comunicação funcionam com nível de 3.3V não tolerante a 5V, então usamos um divisor resistivo no pino RX do módulo para que não receba 5V do Arduino.
Conectando o Arduino no Computador
Conecte o Arduino ao computador e abra a Arduino IDE e depois o Monitor Serial. Certifique-se que as opções NL e CR estão selecionadas.
Figura 4: Serial Monitor.
Envie o comando at para checar a conexão com o módulo. Se ele estiver conectado corretamente e não estiver trocando dados com nenhum outro dispositivo Bluetooth ele deve retornar uma resposta “OK”.
Para saber ou alterar o nome do módulo use o comando digite at+name.(Obs: Ao trocar o nome não é necessário usar espaço depois do comando).
Figura 5: Alterando o nome do módulo.
Verifique se o seu módulo está em modo Slave ou Master utilizando o comando at+role. Será retornado um valor 0 se o módulo estiver em modo Slave e 1 para Master. Para trocar de modo use o comando acompanhado do modo. Ex at+role1 para modo Master.
Figura 6: Obtendo o status do modo de operação.
Opcionalmente você poderá redefinir o módulo para configurações de fábrica com os comandos at+default e at+renew.
Experimento – Troca de dados com Smartphone
Nesse exemplo vamos fazer algumas trocas de dados entre o Arduino e um celular. O Arduino irá enviar retorno da função millis() e poderá receber um comando para controlar o Led conectado ao pino 13. Vale a pena destacar que o módulo deve está configurado para o modo Slave.
Componentes Necessários
- 1x Placa Arduino Nano;
- 1x Módulo Bluetooth AT-09;
- 1x Protoboard;
- 1x Resistor de 1k;
- 1x Resistor de 2k2;
- Fios Jumper.
Montando o Projeto
A montagem deste projeto, pode ser feita seguindo a ordem dos fios mostrada na imagem abaixo.
Figura 7: Montagem do circuito.
Programando
Segue abaixo o código para esse exemplo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #define LED_PIN 13 //Pino conectado ao led integrado. #include "SoftwareSerial.h" SoftwareSerial bluetooth(2, 3);// TX, RX (Bluetooth). void setup() { bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); } void loop() { if (bluetooth.available() > 0) {//Verifique se há novos bytes oriundos do bluetooth. byte dado = bluetooth.read(); if (dado == '1') {//Ative o led se a mensagem for um caracter '1'. digitalWrite(LED_PIN, HIGH); } if (dado == '0') {//Desative o led se a mensagem for um caracter '1'. digitalWrite(LED_PIN, LOW); } } bluetooth.println(millis());//Envie o retorno da funçao millis(). delay(1000); } |
Colocando para Funcionar
Nesse Post faremos os testes utilizando um celular Android e o aplicativo BLE Scanner da Bluepixel Technologies.
Figura 8: BLE Scanner.
Tendo o aplicativo instalado e aberto e o Bluetooth do seu celular ativado, procure o dispositivo pelo nome que você escolheu no tópico anterior ou MLT-BT05. Neste caso o nome do meu dispositivo é “MeuDispositivoBLE”.
Figura 9: Lista de dispositivos BLE detectados.
Clique em custom service e ative as notificações. Observe que o campo value é alimentado com dados recebidos do Arduino via Bluetooth.
Figura 10: Recebendo dados via Bluetooth.
Pressione write value para enviar uma mensagem para o Arduino. No código usamos caracter ‘1’ para ativar e ‘0’ desativar o led.
Figura 11: Enviado comandos via Bluetooth.
Bom por hoje é tudo, aguardo você no próximo post. Qualquer dúvida ou sugestão deixe registrado no campo de comentários. Se interessou pelo módulo AT-09? Visite o site da loja e adquira o seu módulo AT-09 hoje mesmo.
Opa. Bom artigo.
Só uma dúvida, esse módulo não pede PIN para conectar?
Olá Rafael!
O modulo AT-09 possui um set de instruções limitado e não tem suporte de código PIN.
Abraço.