Hoje vamos apresentar um projeto de automação com o Automation Shield, Bluetooh JY-MCU / HC-06 e um aplicativo de exemplo Android para acionamento das saídas.
Aplicativo Android para acionamento da placa
A nova versão do aplicativo mostra o estado das saídas da placa. A melhoria do código fonte do arduino é armazenar na EEPROM os últimos comandos do usuário, dessa forma, quando a placa for reiniciada, ela será reestabelicida com os últimos comandos enviados pelo usuário.
A placa JY-MCU ou HC-06 Bluetooth pode ser encontrada com barra de terminais para conexão e faixa de tensão de alimentação entre 3.6 e 6V. Essa versão pode ser alimentada através do pino OUT + 5V do Shield.
Ou em uma versão sem barra de terminais e tensão de alimentação em 3.3V. Essa versão só pode ser alimentada através do pino 3V3 do Shield e deve ser utilizado um divisor de tensão entre os pinos TX (Arduino) e RX (módulo)
Lista de componentes
1 - Arduino NANO V3.0
1 - Placa Nano Automation Shield, a venda em nossa loja virtual.
1 - Fonte 12V x 3A.
1 - Placa JY-MCU ou HC-06 Bluetooth.
4 - Fios com conectores MODU para conexão do projeto.
1- Fita RGB
1 - Resistor de 10K.
1 - Resistor de 20K.
Preparação da placa Bluetooh sem terminais.
Placa pronta com termo retrátil para isolamento das conexões.
A conexão deve ser feita TX <-> RX entre o shield de Automação e a placa Bluetooh JY-MCU. Se o módulo bluetooth trabalhar apenas com nível de sinal de 3,3 V será necessário utilizar um divisor de tensão no pino RX para não danificar o módulo. Conecte o pino TX do arduino com o pino RX do módulo com um resistor de 10K e o pino RX do módulo com um resistor de 20K ao GND.
Conexões das saídas
1 - Placa Nano Automation Shield, a venda em nossa loja virtual.
1 - Fonte 12V x 3A.
1 - Placa JY-MCU ou HC-06 Bluetooth.
4 - Fios com conectores MODU para conexão do projeto.
1- Fita RGB
1 - Resistor de 10K.
1 - Resistor de 20K.
Preparação da placa Bluetooh sem terminais.
Soldagem dos pinos.
Placa pronta com termo retrátil para isolamento das conexões.
GND - Preto
3,3V - Vermelho
TX- Verde
RX - Marrom
Conexões do projeto
A conexão deve ser feita TX <-> RX entre o shield de Automação e a placa Bluetooh JY-MCU. Se o módulo bluetooth trabalhar apenas com nível de sinal de 3,3 V será necessário utilizar um divisor de tensão no pino RX para não danificar o módulo. Conecte o pino TX do arduino com o pino RX do módulo com um resistor de 10K e o pino RX do módulo com um resistor de 20K ao GND.
Conexões das saídas
Código fonte do projeto
O código fonte do projeto é bem simples, dentro do loop do programa, ficamos esperando algum comando que venha pela porta serial, o caracter "|" define o início e fim do protocolo de envio de comandos. Durante o desenvolvimento, podemos testar nosso programa através do console serial do Arduino, e enviar os comandos, conforme exemplo abaixo:
O código fonte do projeto é bem simples, dentro do loop do programa, ficamos esperando algum comando que venha pela porta serial, o caracter "|" define o início e fim do protocolo de envio de comandos. Durante o desenvolvimento, podemos testar nosso programa através do console serial do Arduino, e enviar os comandos, conforme exemplo abaixo:
|D11| Envia comando: Digital - Saida 1 - Sinal 1 -> Ligar Saida 1
|D10| Envia comando: Digital - Saida 1 - Sinal 0 -> Desligar Saida 1
|D21| Envia comando: Digital - Saida 2 - Sinal 1 -> Ligar Saida 2
|D20| Envia comando: Digital - Saida 2 - Sinal 0 -> Desligar Saida 2
|D31|
Envia comando: Digital - Saida 3 - Sinal 1 -> Ligar Saida 3
|D30|
Envia comando: Digital - Saida 3 - Sinal 0 -> Desligar Saida 3
|D41|
Envia comando: Digital - Saida 4 - Sinal 1 -> Ligar Saida 4
|D40|
Envia comando: Digital - Saida 4 - Sinal 0 -> Desligar Saida 4
|A60|
Envia comando: LED Vermelho - 0 (Desligado) -> Desligar Led Vermelho
|A69|
Envia comando: LED Vermelho - 9 (Maximo) -> Maxima pontencia Led Vermelho
O nível de potencia pode ser variado entre 0 (desligado) e 9 (máximo)
Led Verde
|A50| ate |A59|
Led Azul
|A30| até |A39|
Para evitar falhas no processo de upload, desconecte o Arduino do Shield ou remova as conexões com o Bluetooth.
Código fonte Arduino Para evitar falhas no processo de upload, desconecte o Arduino do Shield ou remova as conexões com o Bluetooth.
/*
Software serial multple serial test
https://drive.google.com/file/d/0B0t-Nu1Eo1b8OFdOWkg5QkMwMVE/view?usp=sharing
VCC 3V
GND GND
TX RX
RX TX
Protocolo
|D21|
|D20|
|A64|
Versão 1.1 -> Incluido persitencia de comandos na EEPROM e WACHTDOG
*/
#include <EEPROM.h>
#include <avr/wdt.h>
#define PIN_RED 6
#define PIN_GREEN 5
#define PIN_BLUE 3
int MemSaveSaida1 = 1;
int MemSaveSaida2 = 2;
int MemSaveSaida3 = 3;
int MemSaveSaida4 = 4;
int MemSaveRed = 5;
int MemSaveBlue = 6;
int MemSaveGreen = 7;
int ValueSaveSaida1 = 0;
int ValueSaveSaida2 = 0;
int ValueSaveSaida3 = 0;
int ValueSaveSaida4 = 0;
int ValueSaveRed = 0;
int ValueSaveBlue = 0;
int ValueSaveGreen = 0;
int inicioucomando;
String comando = "";
void setup()
{
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
inicioucomando = 0;
comando = "";
Serial.begin(9600);
ValueSaveSaida1 = EEPROM.read(MemSaveSaida1);
ValueSaveSaida2 = EEPROM.read(MemSaveSaida2);
ValueSaveSaida3 = EEPROM.read(MemSaveSaida3);
ValueSaveSaida4 = EEPROM.read(MemSaveSaida4);
ValueSaveRed = EEPROM.read(MemSaveRed);
ValueSaveBlue = EEPROM.read(MemSaveBlue);
ValueSaveGreen = EEPROM.read(MemSaveGreen);
digitalWrite(A0, ValueSaveSaida1);
digitalWrite(A1, ValueSaveSaida2);
digitalWrite(A2, ValueSaveSaida3);
digitalWrite(A3, ValueSaveSaida4);
analogWrite(5, ValueSaveRed);
analogWrite(6, ValueSaveGreen);
analogWrite(3, ValueSaveBlue);
wdt_enable(WDTO_8S); //Watchdog 8 Segundos
}
void loop()
{
aguardacomandos();
wdt_reset(); //Reset WatchDog
RetornaComandos();
}
void aguardacomandos()
{
char ch;
while (Serial.available()) {
ch = Serial.read();
if (ch == '|')
{
if (inicioucomando == 1)
{
inicioucomando = 0;
disparacomando();
}
else
{
inicioucomando = 1;
}
}
else
{
comando.concat(ch);
}
}
}
void disparacomando()
{
Serial.println(comando);
if (comando[0] == 'D')
{
int port = (comando[1] - '0');
int value = (comando[2] - '0');
if (port == 1)
{
ValueSaveSaida1 = value;
EEPROM.write(MemSaveSaida1, ValueSaveSaida1);
digitalWrite(A0, ValueSaveSaida1);
}
else if (port == 2)
{
ValueSaveSaida2 = value;
EEPROM.write(MemSaveSaida2, ValueSaveSaida2);
digitalWrite(A1, ValueSaveSaida2);
}
else if (port == 3)
{
ValueSaveSaida3 = value;
EEPROM.write(MemSaveSaida3, ValueSaveSaida3);
digitalWrite(A2, ValueSaveSaida3);
}
else if (port == 4)
{
ValueSaveSaida4 = value;
EEPROM.write(MemSaveSaida4, ValueSaveSaida4);
digitalWrite(A3, ValueSaveSaida4);
}
}
else if (comando[0] == 'A')
{
int port = (comando[1] - '0');
int value = (comando[2] - '0');
value = value * 28;
if ( port == 6 )
{
ValueSaveRed = value;
EEPROM.write(MemSaveRed, ValueSaveRed);
analogWrite(port, value);
}
else if ( port == 5 )
{
ValueSaveGreen = value;
EEPROM.write(MemSaveGreen, ValueSaveGreen);
analogWrite(port, value);
}
else if ( port == 3 )
{
ValueSaveBlue = value;
EEPROM.write(MemSaveBlue, ValueSaveBlue);
analogWrite(port, value);
}
}
else
{
Serial.println("Error");
}
comando = "";
}
void RetornaComandos()
{
String retorno = "|COMANDOS#";
retorno.concat(ValueSaveSaida1);
retorno.concat("#");
retorno.concat(ValueSaveSaida2);
retorno.concat("#");
retorno.concat(ValueSaveSaida3);
retorno.concat("#");
retorno.concat(ValueSaveSaida4);
retorno.concat("#");
retorno.concat(ValueSaveRed);
retorno.concat("#");
retorno.concat(ValueSaveGreen);
retorno.concat("#");
retorno.concat(ValueSaveBlue);
retorno.concat("#");
Serial.println(retorno);
}
Código fonte Android
Não foi criada uma tela para seleção do dispositivo pareado para conexão. O programa busca pelo nome default (Linvor) ou (HC-06) da placa JY-MCU para conexão. Se o dispositivo for renomeado ou estiver com nome diferente de Linvor ou HC-06, não ocorrerá a conexão, sendo então necessário renomear o dispositivo para um dos dois nome antes dos testes no aplicativo de exemplo.
O código fonte está disponível no github em: https://github.com/sergiomokshin/AutomationShield/tree/master/Bluetooth
A senha padrão do bluetooth é 1234, 123 ou 0000. Ele precisa ser pareado com o celular antes da abertura e utilização do aplicativo.
No vídeo abaixo podemos ver todo o processo de pareamento e acesso da placa pelo aplicativo.
A placa JY-MCU Bluetooth não é compatível com alguns dispositivos IPhone e IPad, o exemplo de hardware e software desse projeto é compatível apenas com dispositivos com sistema operacional Android.
0 comentários