O telefone móvel é uma invenção revolucionária do século. Ele foi projetado principalmente para fazer e receber chamadas e mensagens de texto, mas se tornou o mundo inteiro depois que o telefone inteligente entrou em cena. Neste projeto estamos construindo um sistema de automação residencial, onde se pode controlar os eletrodomésticos, utilizando o simples telefone baseado em GSM, apenas enviando SMS através do seu telefone. Neste projeto, nenhum smartphone é necessário, apenas o antigo telefone GSM funcionará para LIGAR e DESLIGAR qualquer aparelho eletrônico doméstico, de qualquer lugar. Você também pode verificar mais alguns projetos de automação residencial sem fio aqui: Automação residencial controlada por infravermelho usando Arduino, automação residencial controlada por Bluetooth juntamente com automação residencial baseada em DTMF, automação residencial controlada por PC usando Arduino.
Explicação de trabalho
Neste projeto, o Arduino é usado para controlar todo o processo. Aqui, usamos a comunicação sem fio GSM para controlar eletrodomésticos. Enviamos alguns comandos como “# A.light on *”, “# A.light off *” e assim por diante para controlar eletrodomésticos AC. Após receber os comandos fornecidos pelo Arduino por meio do GSM, o Arduino envia sinal aos relés, para LIGAR ou DESLIGAR os eletrodomésticos usando um driver de relé.
Componentes do circuito:
- Arduino UNO
- Módulo GSM
- ULN2003
- Relé 5 volts
- Lâmpada com suporte
- Fios de conexão
- Tábua de pão
- LCD 16x2
- Fonte de energia
- Celular
Aqui, usamos um prefixo na string de comando que é “#A.”. Este prefixo é usado para identificar que o comando principal está próximo a ele e * no final da string indica que a mensagem foi encerrada.
Quando enviamos SMS para o módulo GSM pelo celular, o GSM recebe esse SMS e o envia para o Arduino. Agora o Arduino lê este SMS e extrai o comando principal da string recebida e armazena em uma variável. Depois disso, o Arduino compara essa string com uma string predefinida. Se a correspondência ocorrer, o Arduino enviará sinal para retransmissão por meio do driver de retransmissão para ligar e desligar os eletrodomésticos. E o resultado relativo também é impresso em LCD 16x2 usando os comandos apropriados.
Aqui neste projeto nós usamos 3 lâmpadas de zero watts para demonstração que indicam Ventilador, Luz e TV.
Abaixo segue a lista de mensagens que enviamos via SMS, para ligar e desligar o Ventilador, Luz e TV:
S.no. |
mensagem |
Operação |
1 |
# A.fan on * |
Ventilador LIGADO |
2 |
# A.fan off * |
Ventilador DESLIGADO |
3 |
# A.light on * |
Luzes ligadas |
4 |
# A.light off * |
Luz apagada |
5 |
# A.tv on * |
TV ON |
6 |
# A.tv off * |
TV desligada |
7 |
# A.all on * |
Tudo em cima |
8 |
# A.all off * |
Tudo DESLIGADO |
Módulo GSM:
O módulo GSM é usado em muitos dispositivos de comunicação baseados na tecnologia GSM (Global System for Mobile Communications). Ele é usado para interagir com a rede GSM usando um computador. O módulo GSM só entende comandos AT e pode responder de acordo. O comando mais básico é “AT”, se o GSM responder OK então está funcionando bem, caso contrário, responde com “ERROR”. Existem vários comandos AT como ATA para atender uma chamada, ATD para discar uma chamada, AT + CMGR para ler a mensagem, AT + CMGS para enviar o sms, etc. Os comandos AT devem ser seguidos por Retorno de carro ie \ r (0D em hexadecimal), como “AT + CMGS \ r”. Podemos usar o módulo GSM usando estes comandos:
ATE0 - Para eco desligado
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = ”Número de celular”
>> Agora podemos escrever nossa mensagem
>> Depois de escrever a mensagem
Ctrl + Z enviar comando de mensagem (26 em decimal).
ENTER = 0x0d em HEX
O SIM900 é um módulo GSM / GPRS Quad-band completo que oferece desempenho GSM / GPRS 850/900/1800/1900 MHz para voz, SMS e dados com baixo consumo de energia.
Descrição do Circuito
As conexões deste circuito de automação residencial baseado em GSM são bastante simples, aqui uma tela de cristal líquido é usada para exibir o status de eletrodomésticos que estão diretamente conectados ao arduino no modo de 4 bits. Os pinos de dados do LCD, a saber RS, EN, D4, D5, D6, D7, estão conectados ao pino digital arduino número 6, 7, 8, 9, 10, 11. E o pino Rx e Tx do módulo GSM está conectado diretamente no Tx e Rx pino do Arduino respectivamente. E o módulo GSM é alimentado por um adaptador de 12 volts. Relés SPDT 3 de 5 volts são usados para controlar LIGHT, FAN e TV. E os relés são conectados ao pino número 3, 4 e 5 do arduino através do driver de relé ULN2003 para controlar LIGHT, FAN e TV, respectivamente.
Descrição do Código
Na parte de programação deste projeto, em primeiro lugar na programação incluímos biblioteca para display de cristal líquido e depois definimos dados e pinos de controle para LCD e eletrodomésticos.
#incluir
Após esta comunicação serial é inicializada em 9600 bps e dá direção ao pino usado.
configuração vazia () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (Fan, OUTPUT); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
Para receber dados em série, usamos duas funções, uma é Serial.available que verifica se algum dado serial está chegando e a outra é Serial.read que lê os dados que vêm em série.
while (Serial.available ()) {char inChar = Serial.read ();
Depois de receber os dados em série, nós os armazenamos em uma string e aguardamos Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); atraso (1000); digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {temp = 1; Retorna; }
Quando entra o programa, começa a comparar a string recebida com a string já definida e, se a string corresponder, então uma operação relativa é realizada usando o comando apropriado fornecido no código.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("LIGADO"); atraso (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("DESLIGADO"); atraso (200); }