Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como Utilizar Comandos AT em Microcontroladores Microchip

Comandos AT (Attention Commands) são uma linguagem de comando usada para controlar modems e outros dispositivos de comunicação. Eles são amplamente utilizados em dispositivos de comunicação serial, como modems GSM, Bluetooth, e Wi-Fi. No entanto, quando falamos de microcontroladores Microchip, a aplicação direta dos comandos AT pode não ser tão comum, pois esses microcontroladores geralmente não incluem modems integrados que respondem a comandos AT.

Neste artigo, vamos explorar como você pode utilizar comandos AT em um ambiente de microcontroladores Microchip, especificamente para controlar módulos de comunicação como os módulos GSM e Wi-Fi. Vamos também discutir alternativas e métodos equivalentes para alcançar funcionalidades semelhantes diretamente através da programação do microcontrolador.

Exemplos:

  1. Controlando um Módulo GSM com um Microcontrolador PIC:

    Para este exemplo, vamos usar um microcontrolador PIC16F877A e um módulo GSM SIM800L. O objetivo é enviar um SMS usando comandos AT.

    Circuito:

    • Conecte o pino TX do módulo GSM ao pino RX do microcontrolador.
    • Conecte o pino RX do módulo GSM ao pino TX do microcontrolador.
    • Conecte os pinos GND e VCC do módulo GSM e do microcontrolador.

    Código:

    #include <xc.h>
    #define _XTAL_FREQ 20000000  // Frequência do oscilador
    
    void UART_Init(void) {
       TRISC6 = 0;  // TX como saída
       TRISC7 = 1;  // RX como entrada
       SPBRG = 31;  // Baud rate 9600 para 20MHz
       TXSTA = 0x20; // Configurações do transmissor
       RCSTA = 0x90; // Configurações do receptor
    }
    
    void UART_Write(char data) {
       while(!TXIF);  // Espera até que o buffer esteja vazio
       TXREG = data;  // Envia o dado
    }
    
    void UART_Write_Text(char *text) {
       while(*text) {
           UART_Write(*text++);
       }
    }
    
    void main() {
       UART_Init();
       __delay_ms(1000);  // Espera o módulo GSM inicializar
    
       UART_Write_Text("AT\r");  // Envia comando AT para verificar a comunicação
       __delay_ms(1000);
    
       UART_Write_Text("AT+CMGF=1\r");  // Configura o módulo para modo de texto
       __delay_ms(1000);
    
       UART_Write_Text("AT+CMGS=\"+5511999999999\"\r");  // Número de telefone
       __delay_ms(1000);
    
       UART_Write_Text("Mensagem de teste");  // Mensagem de texto
       __delay_ms(1000);
    
       UART_Write(26);  // Envia Ctrl+Z para terminar a mensagem
       while(1);
    }
  2. Alternativa: Comunicação Wi-Fi com ESP8266:

    Se você estiver usando um módulo Wi-Fi ESP8266 com um microcontrolador Microchip, você pode usar comandos AT para conectar-se a uma rede Wi-Fi e enviar dados para um servidor.

    Código:

    #include <xc.h>
    #define _XTAL_FREQ 20000000
    
    void UART_Init(void) {
       TRISC6 = 0;  // TX como saída
       TRISC7 = 1;  // RX como entrada
       SPBRG = 31;  // Baud rate 9600 para 20MHz
       TXSTA = 0x20; // Configurações do transmissor
       RCSTA = 0x90; // Configurações do receptor
    }
    
    void UART_Write(char data) {
       while(!TXIF);  // Espera até que o buffer esteja vazio
       TXREG = data;  // Envia o dado
    }
    
    void UART_Write_Text(char *text) {
       while(*text) {
           UART_Write(*text++);
       }
    }
    
    void main() {
       UART_Init();
       __delay_ms(1000);  // Espera o módulo ESP8266 inicializar
    
       UART_Write_Text("AT\r");  // Verifica a comunicação
       __delay_ms(1000);
    
       UART_Write_Text("AT+CWMODE=1\r");  // Configura o modo estação
       __delay_ms(1000);
    
       UART_Write_Text("AT+CWJAP=\"SSID\",\"password\"\r");  // Conecta ao Wi-Fi
       __delay_ms(5000);
    
       UART_Write_Text("AT+CIPSTART=\"TCP\",\"api.example.com\",80\r");  // Conecta ao servidor
       __delay_ms(5000);
    
       UART_Write_Text("AT+CIPSEND=18\r");  // Envia dados
       __delay_ms(1000);
    
       UART_Write_Text("GET / HTTP/1.1\r\n\r\n");  // Requisição HTTP
       __delay_ms(1000);
    
       while(1);
    }

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.