27 fevereiro 2018

Digispark com módulo bluetooth HC-05

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.

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:

Pinagem Digispark ATtiny85

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.

Módulo Bluetooth RS232 HC-05

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, que 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.

Circuito Digispark e HC-05

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):

Digispark Plugin Device Now

Vamos ao programa:

 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
//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), que 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.

Comunicação Android com Bluetooth SPP

Envie os comandos L e D para ligar e desligar, respectivamente, o led conectado na porta digital 2.

5 comentários:

  1. Oi Gente,

    Gostei de utilizar o Digispark com o HC05, como sempre os códigos e as dicas foram ótimas.

    Só para complementar e ajudar, o esquema colocado para montagem utiliza o Digispark USB, na foto vocês estão utilizando o Digispark alterado Mini USB, que não é da Digistump. Funciona da mesma forma, mas foi criado justamente por facilitar a ligação ao PC e em projetos.

    Neste esquema com o Digispark USB, é necessário "espetar" o Digispark no PC ou utilizar um cabo USB Macho-Fêmea. Sendo o terminal Macho no PC e o Fêmea no Digispark.

    Eu colocaria como dica utilizar o Digispark Mini USB, facilitaria a montagem assim como vocês mesmo o fizeram, conforme a foto inicial.

    Grande abraço, WS.

    ResponderExcluir
  2. Show, seus tutoriais são bem detalhado parabéns, alguns geradores de conteúdo esquecem que tem sempre muito iniciantes.

    ResponderExcluir
    Respostas
    1. Oi Gustavo,

      Muito obrigado! Aguardo a sua visita no Arduino e Cia sempre que possível e se for do seu interesse, assine a nossa newsletter para receber as novidades em primeira mão. :)

      Abraço!

      Adilson

      Excluir
  3. Procurando a dias na internet e encontrei perfeito ! Muito obrigado !

    ResponderExcluir
    Respostas
    1. Oi José!

      Fico feliz em ter ajudado. :)

      Abraço!

      Adilson

      Excluir