Controlando Leds com Arduino e Bluetooth | Modulo Eletrônica

Controlando Leds com Arduino e Bluetooth

Publicado: 15/08/2019


No presente artigo vamos trabalhar com um projeto bastante simples com apenas 3 Leds que serão identificados como ledVerde, ledAmarelo e ledVermelho. O propósito desse projeto é ligar e desligar esses Leds através de comandos executados no smartphone. O módulo HC-05 será utilizado para fazer a conexão via Bluetooth do smartphone com o Arduino.

O fato é que se conseguimos ligar e desligar um Led, poderemos fazer o mesmo com relés e outros dispositivos conectados ao Arduino, sendo esse, portanto, um importante primeiro passo. Vamos aproveitar também para ver mais detalhes sobre como usar o aplicativo Bluetooth SPP em outros modos de operação além do Modo Terminal, que exploramos no artigo “Umidade, Temperatura e Presença no seu Smartphone”.  

O projeto que vamos desenvolver possui a seguinte lista de componentes: 1 Arduino Uno, 1 módulo HC-05, 1 Led vermelho, 1 Led amarelo, 1 Led verde, 3 resistores de 330 Ohms, ¼ W, 5%, 1 resistor de 1K Ohm, ¼ W, 5%, 1 resistor de 1K5 Ohms, ¼ W, 5%, 1 fonte de alimentação de 9 Volts cc / 1 A, 1 protoboard de 830 furos e cabos jumpers.

Os componentes serão ligados conforme está apresentado na figura 1 de onde destacamos o seguinte:

HC-05: Vcc no Vcc do Arduino, GND no GND do Arduino, TX do HC-05 no RX do Arduino e RX do HC-05 no divisor resistivo e deste para o TX do Arduino.

Led verde: O anodo do Led verde é ligado ao pino digital 2 do Arduino.

Led amarelo: O anodo do Led amarelo é ligado ao pino digital 3 do Arduino.

Led vermelho: O anodo do Led vermelho é ligado ao pino digital 4 do Arduino.

Figura 1: Montagem do projeto no protoboard

Para carregar o sketch monte cuidadosamente o seu projeto, deixando DESLIGADO a alimentação do módulo HC-05. Com isso, o módulo HC-05 fica inativo. Afinal de contas, a comunicação serial do computador PC com a Arduino e a comunicação serial do Arduino com o modulo HC-05 usa a mesma interface serial, nos pinos 0 e 1 do Arduino. Nessa etapa a fonte de alimentação externa deve estar desconectada do Arduino.

Uma vez carregado o sketch desligue o cabo USB, ligue a alimentação do módulo HC-05 e a fonte de alimentação externa. O circuito deve operar com uma fonte de alimentação externa como indicado na figura 1.

Aplicativo Bluetooth SPP

Será necessário carregar um aplicativo no smartphone para fazer a conexão deste com o Arduino através do módulo HC-05. O Bluetooth SSP é o aplicativo que vamos usar nesse projeto por ser gratuito e facilmente localizado no Google Play.

Depois de baixar o aplicativo no seu smartphone e com o projeto ligado na fonte externa, abra a tela do seu smartphone na opção de ativação do Bluetooth. Recomendo seguir as instruções sobre pareamento que estão descritas no artigo “Umidade, Temperatura e Presença no seu Smartphone”, previamente mencionado. Passada essa etapa, entre no aplicativo Bluetooth SPP e selecione a opção com símbolo do Bluetooth (no canto direito superior da tela do smartphone) para fazer a conexão do HC-05 (já pareado) com o smartphone.

Como pode ser visto na tela do smartphone, você poderá selecionar 3 modos de operação: Modo Terminal, Modo Control e Modo On-Off.

Modo Terminal – os dados presentes na interface serial do Arduino serão mostrados na tela do smartphone.

Modo Control – a tela mostrada na figura 2 contém botões de comando para os quais podem ser atribuídos valores. Esses valores são caracteres!

Figura 2: Modo Control no aplicativo Bluetooth SPP

Para atribuir um valor para um botão de comando basta selecionar “Configuração de Controle”, ou como está escrito em espanhol, “Configuracion del Control”.

Existem valores default (previamente carregados) para cada botão de controle e para mudar o valor default de um determinado botão basta selecionar este botão e digitar o caracter desejado.

O sketch carregado no Arduino deverá interrogar se o caracter que corresponde a um determinado botão foi lido na interface serial, via Bluetooth, e realizar a tomada de decisão. Isso será visto em detalhe nos comentários sobre o código do presente projeto.

Modo On-Off – a tela mostrada na figura 3 contém botões de comando para os quais podem ser atribuídos valores. Esses valores são caracteres!

Figura 3: Modo On-Off no aplicativo Bluetooth SPP

Para atribuir um valor para um botão de comando basta selecionar o botão e digitar o caracter desejado.

Sketch do Projeto encontra-se no final desse artigo!

********************************

Observações sobre o Código:

O sketch inicia estabelecendo os pinos do Arduino que estão ligados aos Leds, através de …

int ledVerde = 2;

int ledAmarelo = 3;

int ledVermelho = 4;

… e a declaração que a variável de nome caracter é do tipo char, ou seja, é do tipo caracter, com a instrução char caracter.

No setup() a comunicação serial é iniciada com a instrução Serial.begin(9600) e, em seguinda, os pinos do Arduino ligados aos Leds são definidos como saídas, através de …

pinMode(ledVerde,OUTPUT) ;

pinMode(ledAmarelo,OUTPUT) ;

pinMode(ledVermelho,OUTPUT) ;

No loop() o sketch interroga se a porta serial está disponível através de if(Serial.available()). Se sim, a variável caracter é igual a leitura na porta serial, através de caracter = Serial.read(). A próxima instrução imprime na porta serial a mensagem “Recebi os dados;” – Serial.print(“Recebi os dados;”) – e o valor do caracter recebido – Serial.println(caracter).

Portanto, toda vez que um caracter é digitado no smartphone, este caracter será lido no Arduino, desde que o dispositivo Bluetooth HC-05 esteja pareado e conectado.

O sketch então prossegue interrogando que caracter foi lido. Se o caracter lido foi igual a ‘A’ – if(caracter == ‘A’) – então escreva nível lógico alto no pino do Led verde – digitalWrite(ledVerde,HIGH). O mesmo procedimento foi feito para o Led amarelo e o Led vermelho.

Finalmente, o sketch interroga se o caracter lido é igual a ‘D’, através de if(caracter == ‘D’). Se isso é verdade, então todos os leds são apagados, através de …

digitalWrite(ledVerde,LOW);

digitalWrite(ledAmarelo,LOW);

digitalWrite(ledVermelho,LOW);

Por sua vez, no aplicativo Bluetooth SPP, a configuração dos botões de comando no Modo On-Off, chamados de “CONTROL CARGA”, foi feita conforme ilustrado na tabela 1:


Tabela 1: Configuração dos botões de comando

As ações programadas para cada carácter relacionado a um botão de comando são as seguintes: A para ligar o Led verde, B para ligar o Led amarelo, C para ligar o Led vermelho e D para desligar todos os Leds.

Esperamos que você tenha gostado de nosso artigo. Se tiver alguma dúvida, basta nos enviar suas perguntas. Bem, é isso aí, até a próxima!

Veja abaixo o sketch que tudo isso funcionar:

********************

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
52
53
54
55
56
57
58
59
60
61
62
// Acende e apaga Leds com bluetooth do smartphone
// Usa modulo HC-05 ligado nos pinos ...
// ... 0 (RX) e 1 (TX) do Arduino
// Carregue o sketch no Arduino com ...
// ... a alimentacao +5 V do HC-05 desligada
// Com o sketch carregado no Arduino ...
// use uma fonte de alimentacao externa
// Leds ligados aos pinos digitais 2, 3 e 4 do Arduino
int ledVerde = 2; 
int ledAmarelo = 3; 
int ledVermelho = 4; 
 
//Declara variavel que armazenará letras/números
// para acionamento do Led
char caracter;
 
void setup() {
// Velocidade da porta serial 
Serial.begin(9600);
// Configuração como pino de saida
pinMode(ledVerde,OUTPUT) ; 
pinMode(ledAmarelo,OUTPUT) ;
pinMode(ledVermelho,OUTPUT) ;
}
void loop() {
// Pergunta se porta serial esta disponivel
// Como o modulo HC-05 esta ligado na porta serial, ...
// eh o mesmo que perguntar se o bluetooth esta disponivel
    if(Serial.available())
          caracter = Serial.read();
          Serial.print("Recebi os dados;");
          Serial.println(caracter);
   
   
// Liga e desliga o Led quando tecla ...
// ... eh pressionado no smartphone        
          if(caracter == 'A')
          {
           digitalWrite(ledVerde,HIGH);
    
   }
 
          if(caracter == 'B')
          {
           digitalWrite(ledAmarelo,HIGH);
         
   }
 
          if(caracter == 'C')
          {
           digitalWrite(ledVermelho,HIGH);
         
   }
 
          if(caracter == 'D')
          {
           digitalWrite(ledVerde,LOW);
           digitalWrite(ledAmarelo,LOW);
           digitalWrite(ledVermelho,LOW);
            
   }
}
Voltar