Páginas

Arduino Monitor Serial Bluetooth

Arduino Monitor Serial Bluetooth

















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


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

You Tube: https://www.youtube.com/watch?v=HznPDN4-R7w

APP.: Arduino Monitor Serial Bluetooth - Display LDC 16x2:
Automação com Sensores Analógicos/Digitais - Reles 110V/220V.
Código Arduino Uno Gratuito:
Esquema de ligações, lista de materiais e instruções passo a passo:
Automação - Comunicação de dados(RX-TX) via Bluetooth de baixo custo!

Não contém propagandas.

Neste projeto utilizamos todas as saídas disponíveis no Arduino Uno R3, totalizando 8 canais de controle, mais o uso de um módulo Bluetooth e Display LCD 16X2 que fará a leitura dos SMS ou comando enviados ou recebidos(Celular Android ou Arduino LCD 16X2 e Monitor Serial IDE) para Automação.

Todos os comandos e as mensagens são editáveis e serão mostradas no:
- Display LCD 16x02;
- Aplicativo - Arduino Serial Monitor BT:  Usando Serial RX-TX Arduino D2 e D3(via Bluetooth);
- PC Monitor Serial IDE: Usando Serial RX-TX Arduino D0 e D1;

Este aplicativo Android trabalha como um Monitor Serial(RX-TX) 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 ou IDE Arduino;
2- Estas mensagens podem executar comandos para Automação acionando relés 110/2220V;
3- O APP. pode Enviar uma mensagem:Digitar um texto e pressionar botão SEND;
4- O APP. pode Receber uma mensagem: Pressionar o botão RECEIVE;
5- O APP. pode Receber informações e sensores: LM35, LDR, Potenciômetro, DHT-11, GPS, Relógio RTC, Ultrassônico, status de relés e muitos outros...
6- Mensagens enviadas ou recebidas e leituras de sensores ou status de relés serão mostradas no APP., LCD e PC Monitor Serial IDE
7- O APP. pode Enviar uma mensagem de comando acionando relés e dispositivos de controle - Automação;
8- A conexão é via Bluetooth e você pode escolher um Bluetooth de uma lista;


- Enviar e receber mensagens de texto SMS ou comandos para Automação que serão lidas em um display LCD 16X2 e mensagens de respostas do Arduino serão mostradas no Monitor Serial do APP., ou no PC Monitor Serial IDE;

  Aprender a trabalhar com:

- Arduino Uno R3:
- Display de LCD 16x02:
- Bluetooth  HC5, HC6 ou JY-MCU;
- Sensores analógicos/Digitais ou módulo de relés que acionam cargas 
  ligadas à rede elétrica 110V/220V.
- Serial RS232 RX / TX enviar receber dados pelo Monitor Serial do App.; 
- Esquema elétrico e código Arduino fornecidos gratuitamente;

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.: e pressione o botão "MAC"





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



Agora pressione o botão Bluetooth, aguarde até sua conexão:
O botão Bluetooth fica com fundo azul e o módulo Bluetooth para de piscar e fica aceso direto.
Nesta tela o App está pronto para enviar dados mensagem para o LCD e também comandos para acionamentos ou controle Automação; Basta digitar o testo e pressionar o botão "Send".








Logo após nesta tela se pressionarmos o botão RECEIVE "Nuvem Verde >> Nuvem Verde", o Arduino irá enviar informações sobre status  das portas de saída, neste caso foram selecionadas 3 entradas analógicas e 1 saída digital(A1, A2, A3 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... e sensores LM35, LDR e Potenciômetro, veja em esquema elétrico.


Aqui está um exemplo do App.: Arduino Monitor Serial Bluetooth trabalhando, temos o Arduino uno, montado com o LCD Shield, Módulo Bluetooth HC-06 sensores e led montados em um protoboard;
Veja que você pode usar o sensor que desejar, basta incluir sua biblioteca e alterar o código Arduino.



Leitura de Temperatura:°C, Potenciômetro:% e Luminosidade:Lux;





Com funciona o envio de Mensagem SMS Texto:

Quando pressionamos na tela 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 (receive) "Nuvem Azul >> Nuvem Verde": Receber SMS no Monitor Serial; As informações são enviadas pelo Arduino via Bluetooth.





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: EXEMPLO DEMONSTRAÇÃO

A0- N/C
A1- PINO ANALÓGICO  CANAL 1 LM35
A2- PINO ANALÓGICO  CANAL 2 POTENCIÔMETRO
A3- PINO ANALÓGICO  CANAL 3 LDR
A4- N/C
A5- PINO DIGITAL - SAÍDA COMANDO CANAL 5

D0- N/C- RESERVADO IDE SERIAL
D1- N/C- RESERVADO IDE SERIAL
D2- PINO DIGITAL - BLUETOOTH TX
D3- PINO DIGITAL - BLUETOOTH RX
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- PINO DIGITAL - SAÍDA COMANDO CANAL 6
D12- PINO DIGITAL - SAÍDA COMANDO CANAL 7
D13- PINO DIGITAL - SAÍDA COMANDO CANAL 8


Programa Arduino Uno R3 completo: EXEMPLO DEMONSTRAÇÃO
LM35 + LDR + Potenciometro + Relé

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>//Biblioteca Display LCD16x02.
#define TxD 2//Bluetooth TX pin D2 Arduino-RX.
#define RxD 3//Bluetooth RX pin D3 Arduino-TX.
SoftwareSerial Blue(TxD,RxD);//Arduino pin D2-RX, pin D3-TX.
LiquidCrystal lcd(8,9,4,5,6,7);//LCD Pinos(RS-EN-DB4-DB5-DB6-DB7).
int LM35;//Sensor de temperatura.
int POT;//Potenciometro.
int LDR;//Sensor de luminosidade.
int LedA5=A5;//Acionamento ON-OFF;
String readString;//Variável para escrita no Display------------------
const int BACK_LIGHT=10; //LCD Back Light ligado ao pino 10 do Arduino

void setup(){
  Blue.begin(9600);//Serial Bluetooth-Arduino(D2-RX,D3-TX).  
  Serial.begin(9600);//Serial Arduino(D0-RX,D1-TX).
  //------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); 
  //-----------------Inicia o Display LCD 16x2--------------------------- 
  lcd.begin(16,2);
  lcd.clear();
  delay(500);
  lcd.setCursor(0,0);//C/L
  lcd.print(" Serial Monitor");
  lcd.setCursor(0,1);//C/L
  lcd.print("Waiting  Message");
  delay(3000);
  //-------------------
  pinMode(LedA5,  OUTPUT);
  //Obs.: Desliga em nível alto(HIGH==OFF) e Liga em nível baixo(LOW==ON)---
  digitalWrite(LedA5,  HIGH);
}

void loop(){
  //--------------------
  LM35 = analogRead(A1);//Analogico A1.
  LM35 = ((LM35*5*100)/1023);
  //--------------------
  POT = analogRead(A2);//Analogico A2.
  POT = (POT/10.21);
  //--------------------
  LDR = analogRead(A3);//Analogico A3.
  //--------------------
  //Arduino escreve no Monitor Serial IDE PC------
  Serial.print("  LM-35 - Temperature: ");
  Serial.print(LM35);
  Serial.print("C");
  Serial.println();
  delay(150);
  Serial.print("  Potentiometer: ");
  Serial.print(POT);
  Serial.print("%");
  Serial.println();
  delay(150);
  Serial.print("  LDR - Light: ");
  Serial.print(LDR); 
  Serial.print(" Lux");
  Serial.println(); 
  //-------------------------
  char comando = Blue.read();
  while (Blue.available()) {
  delay(3);
  char c =Blue.read();
  readString += c;//Leitura da strinh seial via Bluetooth. 
  }
  //--------------------------
  if (readString.length() >0) {
  lcd.clear();
  lcd.setCursor(0,0);//C/L
  lcd.print(readString);//Escreve no Display o SMS enviado pelo celular;
  }
  //--------------------------- 
  switch(comando){//Escreve no APP. Arduino Serial Monitor Bluetooth Android.
    case '.':
    Blue.print(" LM-35 - Temperature:  ");
    Blue.print(LM35);
    Blue.print("°C");
    Blue.println();
    Blue.print("");
    //---------------
    Blue.print(" Potenciometro:  ");
    Blue.print(POT);
    Blue.println("%");
    Blue.print("");
    //---------------
    Blue.print(" LDR:  ");
    Blue.print(LDR);
    Blue.println(" Lux");
    Blue.print("");  
    //--------Arduino escreve no Display LCD Linha 1. 
    lcd.setCursor(0,0);//C/L
    lcd.print("T:");
    lcd.setCursor(2,0);//C/L
    lcd.print(LM35);
    //------------------------
    lcd.setCursor(5,0);//C/L
    lcd.print("P:");
    lcd.setCursor(7,0);//C/L
    lcd.print(POT);
    //-------------------------
    lcd.setCursor(11,0);//C/L
    lcd.print("L:");
    lcd.setCursor(13,0);//C/L
    lcd.print(LDR);
    delay(200);
    break;
  } 
    //--------------------------
    switch(comando){//Arduino escreve no Display LCD Linha 2.
    case '.':
    lcd.setCursor(0,1);//C/L
    lcd.print("T:");
    lcd.setCursor(2,1);//C/L
    lcd.print(LM35);
    //------------------------
    lcd.setCursor(5,1);//C/L
    lcd.print("P:");
    lcd.setCursor(7,1);//C/L
    lcd.print(POT);
    //-------------------------
    lcd.setCursor(11,1);//C/L
    lcd.print("L:");
    lcd.setCursor(13,1);//C/L
    lcd.print(LDR); 
    delay(300);
    break;    
  }
  //Recebe a mensagem(string), Liga/Desliga Dispositivos.
  if (readString == "led on")
  {
    digitalWrite(LedA5, LOW);//Liga com nivel 0V.   
  }
  if (readString == "led off")
  {
    digitalWrite(LedA5, HIGH);//Desliga com nivel 5V.     
  } 
  //Escreve no no APP. Arduino Serial Monitor Bluetooth Android.
    if(digitalRead(LedA5)==LOW){//Arduino verifica o status de A5.  
    Blue.print(" Rele Pin A5 ON");//Arduino envia para APP. Android.
    Blue.println();
    Serial.print("  Rele Pin A5 ON");//Arduino envia para Monitor Serial PC.
    Serial.println();
  }
    if(digitalRead(LedA5)==HIGH){//Arduino verifica o status de A5.  
    Blue.print(" Rele Pin A5 OFF");//Arduino envia para APP. Android. 
    Blue.println();
    Serial.print("  Rele Pin A5 OFF");//Arduino envia para Monitor Serial PC.
    Serial.println();  
  }
  //--------------------------- 
    readString="";//Limpa a string;    
  }

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


//------------------Exemplo - DHT-11 Sensor de Temperatura e Umidade.
Programa Arduino: Arduino Monitor Serial Bluetooth DHT-11


#include <SoftwareSerial.h>
#include <LiquidCrystal.h>//Biblioteca Display LCD16x02.
#define TxD 2//Bluetooth TX pin D2 Arduino-RX.
#define RxD 3//Bluetooth RX pin D3 Arduino-TX.
#include <dht.h>
#define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1
dht DHT; //Inicializa o sensor
SoftwareSerial Blue(TxD,RxD);//Arduino pin D2-RX, pin D3-TX.
LiquidCrystal lcd(8,9,4,5,6,7);//LCD Pinos(RS-EN-DB4-DB5-DB6-DB7).
int LedA5=A5;//Acionamento ON-OFF;
String readString;//Variável para escrita no Display------------------
const int BACK_LIGHT=10; //LCD Back Light ligado ao pino 10 do Arduino

void setup(){
  Blue.begin(9600);//Serial Bluetooth-Arduino(D2-RX,D3-TX).  
  Serial.begin(9600);//Serial Arduino(D0-RX,D1-TX).
  //------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); 
  //-----------------Inicia o Display LCD 16x2--------------------------- 
  lcd.begin(16,2);
  lcd.clear();
  delay(500);
  lcd.setCursor(0,0);//C/L
  lcd.print(" Serial Monitor");
  lcd.setCursor(0,1);//C/L
  lcd.print("Waiting  Message");
  delay(3000);
  //-------------------
  pinMode(LedA5,  OUTPUT);
  //Obs.: Desliga em nível alto(HIGH==OFF) e Liga em nível baixo(LOW==ON)---
  digitalWrite(LedA5,  HIGH);
}

void loop(){
  //Arduino escreve no Monitor Serial IDE PC------
  DHT.read11(dht_dpin); //Lê as informações do sensor
  Serial.print("  Umidade = ");
  Serial.print(DHT.humidity,0);
  delay(150);//150
  Serial.println(" %");
  Serial.print("  Temperatura = ");
  Serial.print(DHT.temperature,0); 
  Serial.println(" Celsius  ");
  delay(150);
  //-------------------------
  char comando = Blue.read();
  while (Blue.available()) {
  delay(3);
  char c =Blue.read();
  readString += c;//Leitura da strinh seial via Bluetooth. 
  }
  //--------------------------
  if (readString.length() >0) {
  lcd.clear();
  lcd.setCursor(0,0);//C/L
  lcd.print(readString);//Escreve no Display o SMS enviado pelo celular;
  }
  //--------------------------- 
  switch(comando){//Escreve no APP. Arduino Serial Monitor Bluetooth Android.
    case '.':
    Blue.print(" Umidade: ");
    Blue.print(DHT.humidity,0);
    Blue.print("%");
    Blue.println();
    Blue.print("");
    Blue.print(" Temperatura: ");
    Blue.print(DHT.temperature,0);
    Blue.print("C");
    Blue.println();
    Blue.print("");
    //---------------
   
    //Arduino escreve no Display LCD Linha 1. 
    lcd.setCursor(0,0);//C/L
    lcd.print("Umidade:");
    lcd.setCursor(8,0);//C/L
    lcd.print(DHT.humidity,0);
    lcd.print("%");
    
    lcd.setCursor(0,1);//C/L
    lcd.print("Temperatura:");
    lcd.setCursor(12,1);//C/L
    lcd.print(DHT.temperature,0);
    lcd.print("C");
    //------------------------
    delay(150);
    break;
  } 
    //--------------------------
  //Recebe a mensagem(string), Liga/Desliga Dispositivos.
  if (readString == "led on")
  {
    digitalWrite(LedA5, LOW);//Liga com nivel 0V.   
  }
  if (readString == "led off")
  {
    digitalWrite(LedA5, HIGH);//Desliga com nivel 5V.     
  } 
  //Escreve no no APP. Arduino Serial Monitor Bluetooth Android.
    if(digitalRead(LedA5)==LOW){//Arduino verifica o status de A5.  
    Blue.print(" Rele Pin A5 ON");//Arduino envia para APP. Android.
    Blue.println();
    Serial.print("  Rele Pin A5 ON");//Arduino envia para Monitor Serial PC.
    Serial.println();
  }
    if(digitalRead(LedA5)==HIGH){//Arduino verifica o status de A5.  
    Blue.print(" Rele Pin A5 OFF");//Arduino envia para APP. Android. 
    Blue.println();
    Serial.print("  Rele Pin A5 OFF");//Arduino envia para Monitor Serial PC.
    Serial.println();  
  }
  //--------------------------- 
    readString="";//Limpa a string;    
  }

Imagens:  Arduino Monitor Serial Bluetooth DHT-11








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.
Exemplo de controle automação 8 canais;

Exemplo com leitura de 3 canais analógicos e 5 digitais;


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:

  1. Como fez essa tela a ler o código para baixo? no App Inventor o meu fica no mesmo sítio e vai atualizando.

    ResponderExcluir