Quadro de avisos sem fio é um termo muito seletivo para este projeto, pois tem um escopo muito amplo ao invés de ser apenas um simples quadro de avisos. Primeiramente devemos entender o propósito deste projeto, neste sistema podemos exibir uma mensagem ou aviso para algum dispositivo de exibição como LCD, e esta mensagem pode ser facilmente configurada ou alterada de qualquer lugar do mundo, apenas usando o recurso de SMS do seu telefone móvel. Qualquer aviso que desejamos exibir, basta enviar o SMS desse texto, com algum prefixo e sufixo.
Isso é muito útil em hotéis, shoppings, faculdades, escritórios e pode ser usado em qualquer lugar, até em casa. Como você pode definir a mensagem como "Não perturbe" no portão do quarto do seu hotel, pode definir a mensagem na porta da sua casa quando estiver fora e, claro, é usado como quadro de avisos em escolas, faculdades, salas de cinema, etc. E sim, não é apenas um simples quadro de mensagens, a utilidade deste projeto é que você pode definir ou alterar a mensagem ou aviso de qualquer lugar, apenas enviando SMS do seu telefone. Você também pode verificar um projeto semelhante, mas em um tipo diferente de tela: Arduino Scoreboard usando Outdoor P10 LED Matrix Display.
Anteriormente, usamos a facilidade SMS do telefone móvel para segurança doméstica e controle de eletrodomésticos remotamente: Sensor PIR e Sistema de segurança baseado em GSM e Automação residencial baseada em GSM usando Arduino
Explicação de trabalho:
Neste projeto, o Arduino UNO é utilizado para controlar todo o processo, módulo GSM (SIM900A) para receber o SMS / mensagem enviada do celular e LCD para exibição da mensagem.
Podemos enviar alguma mensagem ou aviso como “#Circuit Digest *”, “#We Welcome *” através do SMS. Aqui, usamos um prefixo na string da mensagem que é '#'. Este prefixo é usado para identificar o início da mensagem ou aviso. E '*' é usado como sufixo para indicar o final da mensagem ou aviso.
Quando enviamos SMS do celular para o módulo GSM, o GSM recebe esse SMS e o envia para o Arduino. Agora o Arduino lê este SMS e extrai a mensagem de aviso principal da string recebida e armazena em outra string. E então envia a mensagem extraída para o LCD 16x2 usando os comandos apropriados.
O funcionamento posterior deste sistema é explicado na seção 'Descrição do código' abaixo. Antes de entrarmos em detalhes de programação, devemos saber sobre o módulo GSM.
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 do Wireless Notice Board usando GSM e Arduino são simples e mostradas na figura abaixo. Aqui, um display de cristal líquido (LCD) é usado para exibir o “Aviso” ou mensagem, que é enviada através do telefone celular como SMS. Os pinos de dados do LCD, a saber RS, EN, D4, D5, D6, D7, são conectados ao pino digital arduino número 7, 6, 5, 4, 3, 2. 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.
Descrição do código:
O código do programa é facilmente compreensível; a novidade aqui é a função de inicialização GSN gsm_init (), que é explicada no final.
No programa, primeiro incluímos a biblioteca para display de cristal líquido (LCD) e, em seguida, definimos os dados e pinos de controle para LCD e algumas variáveis.
#incluir
Depois disso, a comunicação serial é inicializada em 9600 bps e dá direção ao pino usado. E inicialize o Módulo GSM no loop de configuração.
configuração vazia () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); digitalWrite (led, HIGH); lcd.print ("GSM iniciando…"); gsm_init (); lcd.setCursor (0,0); lcd.print ("Notificação sem fio");
Para receber dados em série, usamos duas funções, uma é Serial.available que verifica se os dados seriais estão chegando ou não e outra é Serial.read que lê os dados que vêm em série.
void serialEvent () {while (Serial.available ()) {char ch = (char) Serial.read (); str = ch; if (ch == '*') {temp = 1; lcd.clear (); lcd.print ("Mensagem recebida"); atraso (1000); }}}
Depois de receber os dados em série, nós os armazenamos em uma string e essa string é verificada para '#' e '*', para encontrar o início e o fim do Aviso ou mensagem. Então, finalmente, o Aviso é impresso no LCD usando lcd.print:
void loop () {for (sem sinal int t = 0; t <60000; t ++) {serialEvent (); if (temp == 1) {x = 0, k = 0, temp = 0; while (x
A função de inicialização 'gsm_init () ' para GSM é importante aqui, onde, em primeiro lugar, o módulo GSM é verificado se está conectado ou não enviando o comando 'AT' para o módulo GSM. Se a resposta OK for recebida, significa que está pronto. O sistema continua verificando o módulo até que ele esteja pronto ou até que 'OK' seja recebido. Em seguida, o ECHO é desligado enviando o comando ATE0, caso contrário, o módulo GSM ecoará todos os comandos. Então, finalmente, a disponibilidade da rede é verificada através do 'AT + CPIN?' comando, se o cartão inserido é um cartão SIM e o PIN está presente, ele dá a resposta + CPIN: PRONTO. Isso também é verificado repetidamente até que a rede seja encontrada. Isso pode ser claramente entendido pelo Vídeo abaixo.
void gsm_init () {lcd.clear (); lcd.print ("Módulo de localização.."); booleano at_flag = 1; while (at_flag) {Serial.println ("AT"); while (Serial.available ()> 0) {if (Serial.find ("OK")) at_flag = 0; } atraso (1000); }