A Digispark ATtiny85 é uma placa que vem fazendo muito sucesso pelo seu tamanho reduzido e facilidade de uso, o que a torna ideal para projetos compactos e projetos de IoT. Hoje vamos apresentar mais uma possibilidade de utilização desta placa, que é o uso da Digispark com módulo bluetooth HC-05.
Para isso, vamos emular uma serial nos pinos digitais da Digispark e então realizar a comunicação com o módulo bluetooth e enviar comandos usando um smartphone.
Interface serial na Digispark
Nos outros artigos do Arduino e Cia sobre a Digispark, vimos que a placa não possui interface serial por hardware. Observe a pinagem abaixo, onde temos a interface I2C e SPI, mas não a serial:
O que vamos fazer então é emular uma interface serial nos pinos digitais D0 e D1, e a partir daí realizar a comunicação com o módulo bluetooth HC-05.
O módulo bluetooth RS232 HC-05 é um componente bastante comum nos projetos envolvendo Arduino, e se comunica com o microcontrolador através dos pinos RX e TX. Com ele você pode enviar e receber dados, por exemplo, através de um smartphone.
Vamos então ver como ficam as conexões da Digispark com módulo bluetooth HC-05.
Conectando o módulo bluetooth HC-05 na Digispark
Como mencionamos anteriormente, vamos emular a interface serial nos pinos P0 (Porta digital D0) e P1 (porta digital D1) da Digispark. Estes pinos serão ligados aos pinos RX e TX do HC-05, respectivamente.
Utilize o seguinte esquema de conexão para interligar a Digispark e o módulo HC-06. No led conectado à porta digital D2, foi usado um resistor de 330 ohms.
Observe que no pino RX do módulo HC-05 estou usando um divisor de tensão com resistores, já que na Digispark o nível de sinal é de 5V, e no módulo bluetooth o nível de sinal é 3.3V. Esse divisor de tensão vai então evitar que o pino RX do HC-05 trabalhe além da sua capacidade, o que poderia danificar o componente. Utilizei resistores de 68 e 130 ohms, mas você pode adaptar aos resistores que tiver em mãos. Utilize a calculadora deste link para ajustar o circuito de acordo com os componentes que você possuí.
Acionando a Digispark através de bluetooth
As instruções de configuração inicial da Digispark com IDE Arduino você encontra no post Como programar a Digispark ATtiny85 com IDE Arduino. Nesse processo de configuração, serão instaladas, entre outras, as bibliotecas SoftSerial.h e TinyPinChange.h, usadas no programa a seguir.
Carregue o programa na sua Digispark, não esquecendo de primeiro desconectar a Digispark do seu computador ao compilar o programa, reconectando-a quando solicitado pela IDE (Plug in Device Now, ou Conecte o dispositivo agora):
Vamos ao programa:
//Programa: Digispark com modulo bluetooth HC-05 //Autor: Arduino e Cia #include <SoftSerial.h> #include <TinyPinChange.h> //Cria a serial nos pinos digitais 0 e 1 SoftSerial MinhaSerial(0, 1); // RX, TX //Buffer para armazenamento do caracter char buf; void setup() { //Inicializa a interface serial MinhaSerial.begin(9600); //Define o pino digital 2 como saida pinMode(2, OUTPUT); } void loop() { while(MinhaSerial.available() > 0) { buf = MinhaSerial.read(); //Caso seja recebido o caracter L, acende o led if (buf == 'L' || buf =='l') { digitalWrite(2, HIGH); //Envia mensagem pela serial MinhaSerial.println("Led ligado!"); } //Caso seja recebido o caracter D, apaga o led if (buf == 'D' || buf =='d') { digitalWrite(2, LOW); MinhaSerial.println("Led desligado!"); } } }
Para testar a comunicação, vamos utilizar no smartphone um programa chamado BluetoothSPP (download). Ele faz a comunicação do celular com o HC-05 recebendo e enviando comandos via serial.
Com o módulo bluetooth HC-05 previamente pareado ao smartphone, abra o BluetoothSPP, selecione o módulo na lista de dispositivos e selecione a opção CMD Line Mode.
Envie os comandos L e D para ligar e desligar, respectivamente, o led conectado na porta digital 2.