Páginas

Arduino SMS Automation

SMS Terminal Automation





Terminal SMS Arduino Bluetooth Automação mensagem texto LCD 16x2 ON/OFF 110/220V




APP.: Terminal SMS Automação -  Display LDC 16x2:
Código Arduino Uno - Gratuito:
Esquema de ligações, lista de materiais e instruções passo a passo:
Comunicação de dados via Bluetooth de baixo custo!

Google Play: https://play.google.com/store/apps/details?id=appinventor.ai_antoniosergiosouzaalmeida.SMS_Terminal_Automation

YouTube: https://www.youtube.com/edit?video_id=MmwItHmdYXA

Não contém propagandas.

Todos os comandos e as mensagens SMS são editáveis e serão mostradas no Display LCD 16x02 ou no APP.;

Este aplicativo Android se apresenta como um Terminal Serial e Sistema e Automação, com ele nos podemos:

1- Enviar mensagens de texto SMS para o Arduino que será lida no Display LCD 16x02;
2- Estas mensagens podem executar comandos para Automação acionando relés 110/2220V;
3- O APP. através do botão RX1 recebe as informações sobre status das portas do Arduino e ou qualquer outra operação que se faça necessária e mostra no Terminal de Recepção do APP.;
4- As cores do texto do Terminal podem ser selecionadas através dos botões F1, F2, F3, F4, F5, F6.
5- A conexão é via Bluetooth e você pode escolher um Bluetooth de uma lista;
6- Informações sobre o Arduino e conexões do Terminal serão apresentadas no momento da conexão Bluetooth.

- Enviar e receber mensagens de texto SMS que serão lidas em um display LCD 16X2 e mensagens de respostas do Arduino serão mostradas no Terminal Serial do APP.;

- Aprender a trabalhar com Display de LCD 16x02:
- Reconhecer todos seus pinos, através do esquema elétrico fornecido;
- Aprender comandos do Display LCD escrita e leitura;
- Posicionamento em linhas x colunas;
- Deslocar texto para esquerda ou direita;
- Acionar a luz Back Light, e muitas outras funções...

- Aprender a trabalhar com a serial RS232 RX / TX enviar receber dados pelo Terminal Serial do App.;

- Aprender a trabalhar com o Bluetooth HC5, HC6 ou JY-MCU;

- Aprender a trabalhar com leds para sinalização didática ou módulo de relés que acionam cargas
ligadas à rede elétrica 110/220V.

Não contém propagandas.


Veja também:

1-  Descrição de funcionamento e instalações.
2-  Pinagens utilizadas com o Arduino, LCD, Bluetooth, leds ou relés.
3-  Programa código para Arduino completo para o App.: SMS Terminal Automation.
4-  Esquema de ligações.
5-  Lista de Materiais.

Como funciona:

O App. instalado no smartphone funciona como um Terminal Serial de Mensagens(SMS), e Automação.

Passo a passo:

Ligar o Bluetooth do smartphone, entrar em configurações e parear o dispositivo bluetooth.
Será pedido uma senha para parear o BT, normalmente "0000" ou "1234" e pressione OK.




Neste exemplo meu HC-6 está pareado.




Entrar no App.: SMS Terminal Automation e pressione o botão "Select BT Module"


Escolha seu módulo bluetooth, no meu caso HC-06.



Nesta tela aparece o ícone de conexão azul e o botão "Bluetooth Connected", indicando que o App. fez a conexão entre o bluetooth do smartphone com o módulo bluetooth HC-06.

Veja também a abertura inicial da pagina do Bluetooth Serial Terminal, mostrando informações sobre o Arduino, conexão via bluetooth e outros.



Logo após nesta tela se pressionarmos o botão RX1, o Arduino irá enviar informações sobre status  das portas de saída, neste caso foram selecionadas 5 saídas digitais(A1, A2, A3, A4 e A5) para acionamentos de léds forma didática ou relés(ON - OFF) conectados à rede elétrica 110/220V que irá por sua vez comandar dispositivos, lâmpadas, Luminárias, TV, Som, Ventilador, Eletrodomésticos...

Aqui está um exemplo do App.: SMS Terminal Automation trabalhando, temos o Arduino uno, montado com o LCD Shield, Módulo Bluetooth HC-06 e léds montados em um protoboard.





App. com o módulo com 4 relés.


App. comandando leds no protoboard.

Vista completa com todo o sistema:


Com funciona o envio de Mensagem SMS:

Quando pressionamos na tela azul que representa o Display LCD 16x02, um teclado virtual se abre e podemos digitar um texto, veja que este texto deve conter no máximo 16 caracteres.
Agora pressione o botão SEND, este botão envia sua mensagem para o Arduino via bluetooth;
Esta mensagem será escrita e mostrada no Display LCD, ao mesmo tempo o Arduino irá interpretar sua mensagem e efetuar um comando;

Esta mensagem poderá servir apenas para escrita no LCD como exemplo "HELLOW WORLD";
Mensagem para verificação do sistema, resposta a sua mensagem enviada e outros;

Mensagem(SMS) utilizada para Efetuar um Comando para Automação, conforme está demonstrado na figura abaixo:

Pressione o botão RX1(receive): Receber SMS no Terminal Serial; As informações são enviadas pelo Arduino via Bluetooth.

Escolha a cor do texto do Terminal Serial, presione: F1, F2, F3, F4, F5 ou F6, veja abaixo:




Como Editar Novas Mensagens para Controle ou Automação:

Logo abaixo temos o programa Arduino, onde iremos alterar ou Editar a mensagem de texto SMS que irá servir para controle ou automação.
Com essa mensagem o Arduino será capaz de interpretar, tomar uma decisão e enviar um SMS para o Aplicativo:

Veja onde você deverá fazer sua Edição:

//-----Verifica qual foi o SMS recebido e toma decisão de ligar/Desligar; 
  if (readString == "frente luz on")
  {
    digitalWrite(ledA1, LOW);    
  }
  if (readString == "frente luz off")
  {
    digitalWrite(ledA1, HIGH);   
  } 
//----------------------------
 Note que por praticidade de digitação eu escolhi deixar o SMS em letras minúsculas  ex:          ("frente luz on") mas poderia ser qualquer caracter maiúsculo ou minusculo, numérico ou alfanumérico.
Apenas digite no App.  exatamente o SMS que você escolheu e envie para o Arduino!
Faça isso para todos os dispositivos que você quiser controlar em sua Automação.

Exemplos:

led1, led vermelho, rele4, quarto rele2, sala rele3, ventilador sala2, SalaLuzTetoRele005, a edição é toda sua!


Pinagem Arduino Uno R3:

A0- N/C
A1- PINO DIGITAL - SAÍDA COMANDO CANAL 1
A2- PINO DIGITAL - SAÍDA COMANDO CANAL 2
A3- PINO DIGITAL - SAÍDA COMANDO CANAL 3
A4- PINO DIGITAL - SAÍDA COMANDO CANAL 4
A5- PINO DIGITAL - SAÍDA COMANDO CANAL 5

D0- PINO DIGITAL - BLUETOOTH TX
D1- PINO DIGITAL - BLUETOOTH RX
D2- N/C
D3- N/C
D4- PINO DIGITAL - LCD DB4
D5- PINO DIGITAL - LCD DB5
D6- PINO DIGITAL - LCD DB6
D7- PINO DIGITAL - LCD DB7
D8-   PINO DIGITAL - LCD RS
D9-   PINO DIGITAL - LCD ENABLE
D10- PINO DIGITAL - LCD BACK LIGHT CONTROL
D11- N/C
D12- N/C
D13- N/C


Programa Arduino Uno R3 completo:


#include <LiquidCrystal.h>//Biblioteca Display LCD16x02---------------
LiquidCrystal lcd(8,9,4,5,6,7);//LCD Pinos(RS-EN-DB4-DB5-DB6-DB7)-----
#include <SoftwareSerial.h>//Biblioteca Serial------------------------
SoftwareSerial mySerial(0, 1);//Biblioteca para serial bluetooth
//Arduino D0(Bluetooth-TX), Arduino D1(Bluetooth-RX)------------------

String readString;//Variável para escrita no Display------------------
const int BACK_LIGHT=10; //LCD Back Light ligado ao pino 10 do Arduino
char caracter;
//------Declaração das variáveis para os pinos A1 ao A5 Arduino-------
int ledA1 = A1;//A1
int ledA2 = A2;//A2
int ledA3 = A3;//A3
int ledA4 = A4;//A4
int ledA5 = A5;//A5
//-------Mensagem para exibição no LCD--------------------------------
String message = "       SMS Bluetooth Automation, voce pode enviar e receber comandos de texto SMS do celular para o Arduino e controlar dispositivos ligados a rede 110/220V. Veja como funciona passo a passo no blog: sergioarduino.blogspot.com.br. Gratuito codigo Arduino, esquema de ligacoes e lista de materiais  :)                                  ";
int ii = 0;
int strLength;
String toShow;
//-----------------
void setup() {
//------Back Light pino 10 do Arduino como saída: Inicio ON-OFF-ON------
  pinMode(BACK_LIGHT, OUTPUT);
  digitalWrite(BACK_LIGHT, LOW);
  delay(500);
  pinMode(BACK_LIGHT, OUTPUT);
  digitalWrite(BACK_LIGHT, HIGH); 
  delay(300);
  digitalWrite(BACK_LIGHT, LOW);
  delay(500);
  digitalWrite(BACK_LIGHT, HIGH); 
//-----------------Velocidade da serial em 9600bps-------------------------  
  mySerial.begin(9600);
  //Obs.: Bluetooth também deve estar na mesma veloc. 9600bps;
//-----------------Pinos Arduino A1 ao A5 saída para acionamentos---------- 
  pinMode(ledA1,  OUTPUT);
  pinMode(ledA2,  OUTPUT);
  pinMode(ledA3,  OUTPUT);
  pinMode(ledA4,  OUTPUT);
  pinMode(ledA5,  OUTPUT);
//-----------------Pinos Arduino A1 ao A5 inicia em nível alto-------------
 //Obs.: Desliga em nível alto(HIGH==OFF) e Liga em nível baixo(LOW==ON)---
  digitalWrite(ledA1,  HIGH);
  digitalWrite(ledA2,  HIGH);
  digitalWrite(ledA3,  HIGH);
  digitalWrite(ledA4,  HIGH);
  digitalWrite(ledA5,  HIGH);  
//-----------------Inicia o Display LCD 16x2-------------------------------  
  lcd.begin(16,2);
  lcd.clear();
  delay(500);
//-----------------
  strLength = message.length();
//Escreve no Display a mensagem, rolagem para a esquerda e direita;
  lcd.print("Blog: sergioarduino.blogspot.com.br");//24
  delay(500);  
  //Rolagem para a esquerda
  for (int posicao = 0; posicao < 24; posicao++)//24
  {
    lcd.scrollDisplayLeft();
    delay(300);
  }  
  delay(500);
  lcd.clear();
  lcd.setCursor(1,0);//C/L
  lcd.print("SMS Automation");
  lcd.setCursor(1,1);//C/L
  lcd.print("Waiting SMS...");
  delay(500); 
  
  //Rolagem para a esquerda
  for (int posicao = 0; posicao < 14; posicao++)
  {
    lcd.scrollDisplayLeft();
    delay(300);
  }
  delay(500);
   
  //Rolagem para a direita
  for (int posicao = 0; posicao < 14; posicao++)
  {
    lcd.scrollDisplayRight();
    delay(300);
  }
  delay(500);
  }

  int contText=0;  
//------------------inicia o programa para enviar e receber SMS----
void loop() {
  char caracter = mySerial.read();//Variavel para leitura da serial;
  while (mySerial.available()) {
  delay(3);
  char c = mySerial.read();
  readString += c; 
  }
//----------------------------- 
  if (readString.length() >0) {
  lcd.clear();
  lcd.setCursor(1,0);//C/L
  lcd.print("SMS Automation");
  lcd.setCursor(0,1);//C/L
  lcd.print(readString);// Escreve no Display o SMS enviado pelo celular;
//-----Verifica qual foi o SMS recebido e toma decisão de ligar/Desligar; 
  if (readString == "frente luz on")
  {
    digitalWrite(ledA1, LOW);    
  }
  if (readString == "frente luz off")
  {
    digitalWrite(ledA1, HIGH);   
  } 
//----------------------------
  if (readString == "sala luz on")
  {
    digitalWrite(ledA2, LOW);
  }
  if (readString == "sala luz off")
  {
    digitalWrite(ledA2, HIGH);
  }
//---------------------------
  if (readString == "sala tv on")
  {
    digitalWrite(ledA3, LOW);
  }
  if (readString == "sala tv off")
  {
    digitalWrite(ledA3, HIGH);
  }
//--------------------------  
  if (readString == "quarto luz on")
  {
    digitalWrite(ledA4, LOW);
  }
  if (readString == "quarto luz off")
  {
    digitalWrite(ledA4, HIGH);
  }
//--------------------------
  if (readString == "torradeira on")
  {
    digitalWrite(ledA5, LOW);
  }
  if (readString == "torradeira off")
  {
    digitalWrite(ledA5, HIGH);
  }
//--------------------------    
  
  readString="";//Limpa a string;
  
  }
//-----------Escreve SMS Automation de forma temporizada-----------------
  contText++;
  if(contText <=160){
  lcd.home();
  toShow = message.substring(ii,ii+16);
  lcd.print(toShow);
  ii = ii + 2;
  if(ii>(strLength-16)) {
    ii = 0;
  } 
  }

  if((contText >=190)&&(contText <=300)){  
  //lcd.home();
  lcd.setCursor(0,0);//C/L
  lcd.print("                ");
  lcd.setCursor(1,0);//C/L
  lcd.print("SMS Automation");
  }
  if(contText >=301){
  contText=0;
  }
  delay(300);  
//Se for solicitado pelo App.(RX1)o Arduino envia SMS de status para o celular;
//Informações ou qualquer mensagem SMS será mostrada no terminal do App.------- 
  if(caracter == 'R'){ 
    
  if(digitalRead(ledA1)==HIGH){
  
  mySerial.println("A");
  mySerial.println("Frente Luz OFF  ");
  }
  if(digitalRead(ledA1)==LOW){
  
  mySerial.println("A");
  mySerial.println("Frente Luz ON  ");   
  }
//---------------------
  if(digitalRead(ledA2)==HIGH){
  
  mySerial.println("B");
  mySerial.println("Sala Luz OFF");
  }

  if(digitalRead(ledA2)==LOW){
  
  mySerial.println("B");
  mySerial.println("Sala Luz ON");
  }
//---------------------
  if(digitalRead(ledA3)==HIGH){
  
  mySerial.println("C");
  mySerial.println("Sala TV OFF");
  }
  if(digitalRead(ledA3)==LOW){
  
  mySerial.println("C");
  mySerial.println("Sala TV ON");
  }
//---------------------
  if(digitalRead(ledA4)==HIGH){
  
  mySerial.println("D");
  mySerial.println("Quarto Luz OFF");
  }
  if(digitalRead(ledA4)==LOW){
  
  mySerial.println("D");
  mySerial.println("Quarto Luz ON");
  }
//---------------------
  if(digitalRead(ledA5)==HIGH){
  
  mySerial.println("E");
  mySerial.println("Torradeira OFF");
  }
  if(digitalRead(ledA5)==LOW){
  
  mySerial.println("E");
  mySerial.println("Torradeira ON");
  }
//---------------------
  
  }//if   

  }//loop



//-------------------Final de programa-----------------------



Obs.: Atenção para esta parte do código que deve ficar tudo na mesma linha na IDE Arduino: String message escreve toda essa mensagem no Display LCD para evitar erro no código, toda essa informação deve ser escrita em uma unica linha na IDE:

 INICIO String message = " ......  :)                                     ";  ...FINAL

//-------Mensagem para exibição no LCD--------------------------------
String message = "       SMS Bluetooth Automation, voce pode enviar e receber comandos de texto SMS do celular para o Arduino e controlar dispositivos ligados a rede 110/220V. Veja como funciona passo a passo no blog: sergioarduino.blogspot.com.br. Gratuito codigo Arduino, esquema de ligacoes e lista de materiais  :)                                  ";
//-----------------
Toda essa mensagem acima deve estar na mesma linha quando você for transferir este código para a IDE Arduino ok.

Se você quiser alterar essa mensagem, colocar a sua mensagem personalizada fique a vontade, mas procure de inicio usar este numero exato de caracteres como está no exemplo acima; Posteriormente você poderá fazer alterações com o tamanho do texto e verificar qual é a melhor opção para apresentação no display ok.


Esquema de Ligações:

Arduino Uno R3:

Display LCD 16x02 - LcdKeypadShieldv2.0:

Módulo Bluetooth JY-MCU, HC-05 ou HC-06.


1ª - Opção de montagem sem o LCD Shield, você pode também fazer a montagem com os componentes separados, basta fazer as ligações em protoboard, placa de circuito impresso ou mesmo soldando e interligando os componentes.


2ª - Opção de montagem com o LCD Shield:







Exemplo de ligações utilizando módulo de relés na rede elétrica:

O módulo relé possui uma lógica invertida quando desejamos acionar ou energizar a bobina no relé precisamos colocar nível "0V' na entrada do módulo relé(lógica invertida) com isso um contato normalmente aberto é fechado de forma correta.

Exemplo ligação com uma Lâmpada  em rede de 110V:


Outro exemplo:

Pinagem de saída Arduino:A1-A2-A3-A4-A5.

Veja a figura exemplo abaixo, não se esqueça da Pinagem de saída         Arduino: A1-A2-A3-A4-A5.

Repita estas ligações para os 5 Dispositivos a serem acionados através dos Relés(IN1-IN2-IN3-IN4-IN5).
Pinagem de saída Arduino:A1-A2-A3-A4-A5.

Atenção para o risco de choque elétrico, utilize cabos dimensionados pela capacidade de corrente;
Utilize sempre Disjuntores ou fusíveis para cada  Dispositivo a ser acionado.

Lista de Materiais:

Arduino Uno R3.





Módulo Bluetooth JY-MCU, HC-05 ou HC-06.

LcdKeypadShieldv2.0. Este foi o modelo usado neste exemplo, mas poderá ser usado qualquer outro LCD Sshield ou mesmo apenas LCD montado em protoboard;


Módulo relé com 1, 2 ou 4 relés.








Fonte de Alimentação:

1ª- Opção: Fonte de alimentação para o Arduino 5V/2A com saída USB:
Obs1.: Corrente de 2A devido à alimentação do Arduino e Módulo de relés.
Obs2.: Aquecimento reduzido pois 5V da fonte já está na tensão de operação do sistema todo.



2ª- Opção:Fonte de alimentação para o Arduino 9V/2A com saída P4:
Obs1.: Corrente de 2A devido à alimentação do Arduino e Módulo de relés.
Obs2.: Esta opção gera um Aquecimento maior na placa Arduino devido à tenão da fonte de 9V passar por um regulador de tensão de 5V existente na placa Arduino  para alimentar todo o sistema.



Protoboard para montagens:



Leds para montagem didática e verificação de funcionamento:

Resistores de 220R para ligar aos leds e limitar a corrente em 20mA:


Fios Jumpers - Macho/Macho, Fêmea/Fêmea e Macho/Fêmea:

Cabo USB - tipo A/tipo B para ligação entre Arduino e PC:


















Um comentário: