Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
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:
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:
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);
}
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);
}