- Materiais requisitados
- Software Usado
- Módulo GSM
- Comunicação com o módulo GSM usando comandos AT
- Diagrama de circuito de interface do módulo ATMega16 GSM
- Criando o projeto para ATmega16 usando CodeVision
- Código e Explicação
- Construir o Projeto
- Carregue o código para Atmega16
Módulos GSM são interessantes de usar, especialmente quando nosso projeto requer acesso remoto. Esses módulos podem realizar todas as ações que nosso telefone celular normal pode realizar, como fazer / receber uma chamada, enviar / receber um SMS, conectar-se à Internet usando GPRS etc. Você também pode conectar um microfone e alto-falante normais a este módulo e conversar no seu chamadas móveis. Isso abrirá portas para muitos projetos criativos se puder ser conectado a um microcontrolador. Portanto, neste tutorial aprenderemos como podemos fazer a interface do módulo GSM (SIM900A) com o microcontrolador AVR ATmega16 e demonstraremos isso enviando e recebendo mensagens usando o módulo GSM.
Materiais requisitados
- Atmega16
- Módulo GSM (SIM900 ou qualquer outro)
- tela de LCD
- Apertar botões
- Resistores de 10k, potenciômetro
- Fios de conexão
- Adaptador 12V
- Programador USBasp
- Cabo FRC de 10 pinos
Software Usado
Usaremos CodeVisionAVR software para escrever nosso código e SinaProg software para carregar o nosso código para ATmega16 usando programador USBASP.
Você pode baixar esses softwares nos links fornecidos:
CodeVisionAVR:
SinaProg:
Antes de entrar nos esquemas e códigos, aprenderemos sobre o módulo GSM e seu funcionamento.
Módulo GSM
O módulo GSM pode ser usado mesmo sem qualquer microcontrolador, usando o modo de comando AT. Conforme mostrado acima, o módulo GSM vem com um adaptador USART que pode ser conectado diretamente ao computador usando um módulo MAX232 ou os pinos Tx e Rx podem ser usados para conectá-lo a um microcontrolador. Você também pode notar os outros pinos como MIC +, MIC-, SP +, SP- etc, onde um microfone ou alto-falante pode ser conectado. O módulo pode ser alimentado por um adaptador de 12 V por meio de um conector de barril CC normal.
Insira seu cartão SIM no slot do módulo e ligue-o, você deve notar um LED de energia acendendo. Agora espere por um minuto ou mais, e você verá um LED vermelho (ou qualquer outra cor) piscando uma vez a cada 3 segundos. Isso significa que seu Módulo foi capaz de estabelecer conexão com seu cartão SIM. Agora você pode prosseguir com a conexão do seu módulo com o telefone ou qualquer microcontrolador.
Você pode construir muitos projetos interessantes usando o módulo GSM, como:
- Quadro de avisos sem fio usando GSM e Arduino
- Atendedor de chamadas automático usando Arduino e módulo GSM
- Domótica baseada em GSM usando Arduino
- Sensor PIR e sistema de segurança baseado em GSM
Verifique também todos os projetos relacionados ao GSM aqui.
Comunicação com o módulo GSM usando comandos AT
Como você já deve ter adivinhado, o módulo GSM pode se comunicar por meio de comunicação serial e só pode entender um idioma: os “ comandos AT ”. O que quer que você queira dizer ou perguntar ao módulo GSM, deve ser apenas por meio de comandos AT. Por exemplo, se você deseja saber se o seu módulo está ativo. Você deve pedir (enviar) um comando como “AT” e seu módulo responderá “OK”.
Esses comandos AT são bem explicados em sua folha de dados e podem ser encontrados aqui em sua folha de dados oficial. OK! OK! É uma folha de dados de 271 páginas e você pode levar dias para lê-la. Então, eu dei alguns comandos AT mais importantes abaixo para que você possa colocá-los em funcionamento em breve.
AT |
Respostas com OK para reconhecimento |
AT + CPIN? |
Verifique a qualidade do sinal |
AT + COPS? |
Encontre o nome do provedor de serviços |
ATD96XXXXXXXX; |
Ligue para o número específico, termina com ponto e vírgula |
AT + CNUM |
Encontre o número do cartão SIM (pode não funcionar para alguns SIM) |
ATA |
Atenda a chamada |
ATH |
Desligue a chamada de entrada atual |
AT + COLP |
Mostrar número de chamada recebida |
AT + VTS = (número) |
Envie o número DTMF. Você pode usar qualquer número no teclado do seu celular para (número) |
AT + CMGR |
AT + CMGR = 1 lê a mensagem na primeira posição |
AT + CMGD = 1 |
Excluir mensagem na primeira posição |
AT + CMGDA = ”DEL ALL” |
Excluir todas as mensagens do SIM |
AT + CMGL = ”TODOS” |
Leia todas as mensagens do SIM |
AT + CMGF = 1 |
Defina a configuração de SMS. “1” é para modo somente texto |
AT + CMGS = “+91 968837XXXX” > Texto CircuitDigest
|
Envia SMS para um número específico aqui 968837XXXX. Quando você vir “>”, comece a inserir o texto. Pressione Ctrl + Z para enviar o texto. |
AT + CGATT? |
Para verificar a conexão à Internet no cartão SIM |
AT + CIPSHUT |
Fechar a conexão TCP, ou seja, desconectar-se da internet |
AT + CSTT = "APN", "nome de usuário", "Aprovado" |
Conecte-se ao GPRS com seu APN e chave de acesso. Pode ser obtido no provedor de rede. |
AT + CIICR |
Verifique se o cartão SIM possui pacote de dados |
AT + CIFSR |
Obter IP da rede SIM |
AT + CIPSTART = “TCP”, ”IP DO SERVIDOR”, ”PORTA” |
Usado para definir uma conexão TCP IP |
AT + CIPSEND |
Este comando é usado para enviar dados para o servidor |
Aqui usaremos os comandos AT + CMGF e AT + CMGS para enviar mensagens.
Se você usou o módulo GSM com Arduino, ao receber mensagens, você pode usar o comando + CMT: para visualizar o número do celular e a mensagem de texto no monitor serial. A mensagem de texto vem na segunda linha, conforme mostrado na imagem.
Vamos verificar este comando + CMT: para verificar se a mensagem está disponível ou não.
Diagrama de circuito de interface do módulo ATMega16 GSM
As conexões serão as seguintes
- Tx e Rx do módulo GSM para Rx (Pin14) e Tx (Pin15) do Atmega16 respectivamente.
- Pressione os botões para PD5 (Pin19) e PD6 (Pin20).
- Conexões de LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Criando o projeto para ATmega16 usando CodeVision
Depois de instalar CodeVisionAVR e SinaProg softwares , siga o abaixo passos para criar projeto e escrever código:
Já carregado
Etapa 1. Abra o CodeVision Clique em Arquivo -> Novo -> Projeto . A caixa de diálogo de confirmação aparecerá. Clique em Sim
Etapa 2. CodeWizard será aberto. Clique na primeira opção, ou seja, AT90 , e clique em OK.
Passo 3: - Escolha o chip do microcontrolador, aqui vamos pegar o Atmega16L conforme mostrado.
Etapa 4: - Clique em USART . Selecione Receptor e Transmissor clicando nele. Como mostrado abaixo:
Etapa 5: - Clique em Alphanumeric LCD e selecione Enable Alphanumeric LCD support .
Passo 6: - Clique em Programa -> Gerar, Salvar e Sair . Agora, mais da metade do nosso trabalho está concluído
Passo 7: - Crie uma nova pasta no desktop para que nossos arquivos permaneçam na pasta, caso contrário ficaremos espalhados por toda a janela do desktop. Nomeie sua pasta como você deseja e sugiro usar o mesmo nome para salvar arquivos de programa.
Teremos três caixas de diálogo, uma após a outra, para salvar arquivos.
Faça o mesmo com outras duas caixas de diálogo que aparecerão após salvar a primeira.
Agora, seu espaço de trabalho está assim.
Nossa maior parte do trabalho é concluída com a ajuda do Wizard. Agora, temos que escrever o código apenas para GSM.
Código e Explicação
Todos os arquivos de cabeçalho são anexados automaticamente após a criação do projeto, você deve apenas incluir o arquivo de cabeçalho delay.h e declarar todas as variáveis. O código completo é fornecido no final deste tutorial.
#incluir
Faça uma função para receber dados do registro UDR. Esta função retornará os dados recebidos.
unsigned char received_value (void) { while (! (UCSRA & (1 <
Venha para o enquanto loop no qual criamos dois se declarações, uma para o envio de mensagens e outro para receber. O botão Enviar está conectado com o PIND6 do ATmega e o botão Receber mensagem com o PIND5.
Quando o PIND6 (Botão Enviar) é pressionado primeiro, a instrução if será executada e todos os comandos para enviar mensagem serão executados um por um.
while (1) { // lcd_clear (); lcd_putsf ("Enviar-> bttn 1"); lcd_gotoxi (0,1); lcd_putsf ("Receber-> botão 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxi (0,0); lcd_putsf ("Enviando mensagem…"); para (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); para (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Se o botão Receber mensagem for pressionado, o loop (b! = '+') Verificará se o comando CMT está presente ou não. Se estiver presente, segundo enquanto loop será executado e ir para a segunda linha do comando e imprimir a mensagem em um LCD por um.
enquanto (PIND.5 == 1) { lcd_clear (); lcd_gotoxi (0,0); lcd_putsf ("Recebendo mensagem…"); b = valor_recebido (); enquanto (b! = '+') { b = valor_recebido (); } b = valor_recebido (); if (b == 'C') { b = valor_recebido (); … ..
Este loop leva o programa para a segunda linha de comando e armazena a mensagem no array.
enquanto (b! = 0x0a) { b = valor_recebido (); } para (b = 0; b <3; b ++) { c = valor_recebido (); msg = c; } .. ..
Este por laço é para exibir a mensagem no LCD.
para (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // IMPRIMIR EM lcd delay_ms (10); }
O código completo com o vídeo de demonstração é fornecido abaixo, agora temos que construir nosso projeto.
Construir o Projeto
Clique no ícone Build the project como mostrado.
Depois de construir o projeto, um arquivo HEX é gerado na pasta Debug-> Exe que pode ser encontrada na pasta que você criou anteriormente para salvar seu projeto. Usaremos este arquivo HEX para fazer upload no Atmega16 usando o software Sinaprog.
Carregue o código para Atmega16
Conecte seus circuitos de acordo com o diagrama fornecido para o programa Atmega16. Conecte um lado do cabo FRC ao programador USBASP e o outro lado conectará aos pinos SPI do microcontrolador, conforme descrito abaixo:
- Pino1 do conector fêmea FRC -> Pino 6, MOSI do Atmega16
- Pino 2 conectado ao Vcc de atmega16, ou seja, pino 10
- Pino 5 conectado ao reset de atmega16, ou seja, pino 9
- Pino 7 conectado a SCK de atmega16, ou seja, pino 8
- Pino 9 conectado ao MISO de atmega16, ou seja, pino 7
- Pino 8 conectado ao GND de atmega16, ou seja, pino 11
Faremos o upload do arquivo hexadecimal gerado acima usando o Sinaprog, então abra-o e escolha Atmega16 no menu suspenso Dispositivo. Selecione o arquivo HEX da pasta Debug-> Exe como mostrado.
Agora, clique em Programa e seu código será gravado no Microcontrolador ATmega16.
Você está pronto e seu microcontrolador está programado. Basta pressionar os botões para enviar e receber as mensagens do microcontrolador GSM e ATmega16.
O código completo e o vídeo de demonstração são fornecidos abaixo.