Acionamento de um Módulo Relé via Bluetooth

Acionamento de um Módulo Relé via Bluetooth

O módulo relé é um interruptor automático para controlar um circuito de alta corrente com um sinal de baixa corrente. As vantagens de um relé estão em sua menor inércia do movimento, estabilidade, confiabilidade a longo prazo e pequeno volume. É amplamente adotado em dispositivos de proteção de energia, tecnologia de automação, esporte, controle remoto, reconhecimento e comunicação, bem como em dispositivos de eletromecânica e eletrônica de potência. De um modo geral, um relé contém uma parte de indução com uma variável de entrada como corrente, tensão, potência, resistência, frequência, temperatura, pressão, velocidade, luz e outros. Também contém um módulo atuador (saída) que pode energizar ou desenergizar a conexão do circuito controlado. Existe uma parte intermediária entre a parte de entrada e a parte de saída que é usada para acoplar e isolar a corrente de entrada, além de atuar a saída. Quando o valor nominal da entrada (tensão, corrente e temperatura, etc.) está acima do valor crítico, o circuito de saída controlado do relé será energizado ou desenergizado.
O módulo Bluetooth HC-06 é usado para comunicação wireless entre o Arduino e algum outro dispositivo com bluetooth, como por exemplo um telefone celular, um computador ou tablet. As informações recebidas pelo módulo são repassadas ao Arduino (ou outro microcontrolador) via serial.
Partindo para o projeto, percebemos que controlar um módulo relé para ligar uma lâmpada ou qualquer outro equipamento é bem simples, porém para verificar se o equipamento ou a lâmpada foram realmente ligados é necessário enviar um sinal de realimentação para o Arduino. Para isso, podemos utilizar um sensor de corrente para dar um feedback ao sistema informado o funcionamento de uma lâmpada ou do equipamento. Porém, atualmente, não se utilizam mais lâmpadas incandescentes e ao utilizar uma lâmpada de LED, como utilizaremos neste projeto, um sensor de corrente facilmente encontrado e de preço acessível como o ACS712 não permite fazer essa leitura. Então, para resolver esse problema, pode-se utilizar um sensor de tensão ZMPT101B que com uma leitura digital numa porta analógica é possível fazer uma leitura igual a "1" quando desligado (tensão 0 V) ou uma leitura "0" quando ligado (tensão 127 V), mas se a tensão no local variar muito, talvez essa leitura não seja correta, logo terá que optar por um outro sensor ou para baratear o projeto pode até montar um circuito com um carregador velho de celular que pode fornecer um sinal de 5 V ao Arduino informando que a lâmpada está ligada.
Outro aspecto interessante que surgiu para este projeto, foi a necessidade, como por exemplo, em uma residência onde tem uma lâmpada na varanda e/ou um holofote no quintal você ter a possibilidade de ligar tanto via bluetooth como via interruptor. Para isso, faremos um three way (chave paralela) com o módulo relé  junto com  um interruptor paralelo.
Componentes:
  • 01 Arduino Uno/ Mega
  • 01 Arduino Sensor Shield (opcional)
  • 01 Módulo Bluetooth HC-06
  • 02 Módulo Relé JQC-3FF-S-Z ou similares
  • 02 Módulo Sensor Tensão ZMPT101B
  • 02 Lâmpadas com bocal
  • 02 Interruptor paralelo(three way)
  • Fios para conexão
Agora, baixe ou monte seu aplicativo no App Inventor conforme abaixo:





Monte o circuito com os componentes conforme o esquema a seguir. Caso tenha dúvida, consulte um profissional eletricista, pois estaremos trabalhando com tensão de 127 V.

Acionamento de um Módulo Relé via Bluetooth

Acionamento de um Módulo Relé via Bluetooth

  
Após a montagem do circuito com os componentes carregue o código no Arduino:

  # include <SoftwareSerial.h>
  2  # define In1 7 // In do Relé
  3  # define In2 8
  4  # define PinSensor1 A0 // Pino analógico A0 --> feedback1

  5  # define PinSensor2 A5

  6  # define pinRx 0 // RX do Arduino

  7  # define pinTx 1 // TX do Arduino

  8
  9  char  comando;    // Comando de liga desliga
 10  char rele1 = 'a'; // Situação inicial do relé desligado
 11  char rele2 = 'b';
 12
 13  int feedback1;
 14
 15  int feedback2;
 16
 17  void setup()
 18  {
 19    Serial.begin(9600);
 20    pinMode(In1, OUTPUT);
 21    pinMode(In2, OUTPUT);
 22    pinMode(PinSensor1, INPUT);
 23    pinMode(PinSensor2, INPUT);
 24    pinMode(pinRx, INPUT);
 25    pinMode(pinTx, OUTPUT);
 26
 27    digitalWrite(In1, LOW);
 28    digitalWrite(In2, LOW);
 29    feedback1 = 1;
 30    feedback2 = 1;
 31  }
 32
 33  void loop()
 34  {
 35    feedback1 = digitalRead(PinSensor1);
 36
 37    feedback2 = digitalRead(PinSensor2);
 38
 39    if (Serial.available())
 40    {
 41      comando = Serial.read();
 42
 43      delay(100);
 44
 45      if (comando == 'A')
 46      {
 47        if (feedback1 == 1 && (rele1 == 'a'))
 48        {
 49          digitalWrite(In1, HIGH);
 50          // Serial.println(" Ligada ");
 51          feedback1 = 0;
 52          rele1 = 'A';   // Relé  ligado
 53        }
 54        if (feedback1 == 1 && (rele1 == 'A'))
 55        {
 56          digitalWrite(In1, LOW);
 57          //  Serial.println(" Ligada ");
 58          feedback1 = 0;
 59          rele1 = 'a'// Relé desligado
 60        }
 61      }
 62      if (comando == 'a')
 63      {
 64        if (feedback1 == 0 && (rele1 == 'a'))
 65        {
 66          digitalWrite(In1, HIGH);
 67          // Serial.println(" Desligada ");
 68          feedback1 = 1;
 69          rele1 = 'A'; // Relé ligado
 70        }
 71
 72        if (feedback1 == 0 && (rele1 = 'A'))
 73        {
 74          digitalWrite(In1, LOW);
 75          //   Serial.println(" Desligada ");
 76          feedback1 = 1;
 77          rele1 = 'a'; // Relé desligado
 78        }
 79      }
 80
 81      if (comando == 'B')
 82      {
 83        if (feedback2 == 1 && (rele2 == 'b'))
 84        {
 85          digitalWrite(In2, HIGH);
 86          // Serial.println(" Ligada ");
 87          feedback2 = 0;
 88          rele2 = 'B';   // Relé ligado
 89        }
 90        if (feedback2 == 1 && (rele2 == 'B'))
 91        {
 92          digitalWrite(In2, LOW);
 93          //  Serial.println(" Ligada ");
 94          feedback2 = 0;
 95          rele2 = 'b'// Relé desligado
 96        }
 97      }
 98      if (comando == 'b')
 99      {
100        if (feedback2 == 0 && (rele2 == 'b'))
101        {
102          digitalWrite(In2, HIGH);
103          // Serial.println(" Desligada ");
104          feedback2 = 1;
105          rele2 = 'B';
106        }
107
108        if (feedback2 == 0 && (rele2 = 'B'))
109        {
110          digitalWrite(In2, LOW);
111          //   Serial.println(" Desligada ");
112          feedback2 = 1;
113          rele2 = 'b';
114        }
115      }
116      comando = "";
117    }
118
119    feedback1 = digitalRead(PinSensor1);
120
121    if (feedback1 == 1)
122    {
123      Serial.print("soff1");
124      Serial.print("!");
125    }
126    if (feedback1 == 0)
127    {
128      Serial.print("son1");
129      Serial.print("!");
130    }
131
132    feedback2 = digitalRead(PinSensor2);
133
134    if (feedback2 == 1)
135    {
136      Serial.print("soff2");
137      Serial.print("!");
138    }
139    if (feedback2 == 0)
140    {
141      Serial.print("son2");
142      Serial.print("!");
143    }
144  }

Lembre-se de que, antes de carregar o código, o módulo bluetooth tem que estar desconectado do Arduino para evitar interferência com a porta serial.
Feito isso, instale o aplicativo no seu celular, procure o dispositivo e conecte o bluetooth. Com isso, podemos observar que ao conectar o bluetooth, o aplicativo já indica o estado em que se encontram as lâmpadas, se estiver ligada, a imagem vai aparecer de lâmpada ligada, se estiver desligada, a imagem aparece de lâmpada desligada.


Nenhum comentário:

Postar um comentário