Olá pessoal, vejo que muita gente teve curiosidade sobre a
comunicação de módulos GSM (celular) com microcontroladores. Esse post será
dedicado a esclarecer algumas outras informações e mostrar um projeto bem
legal.
É o seguinte, todos esses módulos possuem um controlador, esse controlador responde aos comandos AT, esses comandos traduzem alguma tarefa que o modem tem que executar, alguns modems possuem comandos do fabricante, ou seja, funcionam apenas neles.
É o seguinte, todos esses módulos possuem um controlador, esse controlador responde aos comandos AT, esses comandos traduzem alguma tarefa que o modem tem que executar, alguns modems possuem comandos do fabricante, ou seja, funcionam apenas neles.
Os comandos AT são enviados via dados seriais, assim fica
fácil de interfacear
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(2, 3);
- String linhaAtual = "";
- String sms = "";
- String smsAnterior = "";
- boolean lendoSMS = false;
- void setup()
- {
- mySerial.begin(19200);
- Serial.begin(19200);
- ligandoModulo();
- Serial.println("Configurando SMS modo texto");
- mySerial.println("AT+CMGF=1");
- mostraDadosSerial();
- }
- void loop()
- {
- //Serial.println("Fazendo leitura do 1 SMS");
- mySerial.println("AT+CMGR=1");
- mostraDadosSerial();
- delay(1000);
- while (mySerial.available()>0)
- {
- char inChar = mySerial.read();
- linhaAtual += inChar;
- if (inChar == '\n')
- {
- linhaAtual = "";
- }
- if (linhaAtual.endsWith("@"))
- {
- lendoSMS = true;
- sms = "";
- }
- if (lendoSMS)
- {
- if (inChar != '<')
- {
- sms += inChar;
- }
- else
- {
- lendoSMS = false;
- Serial.println(sms);
- if(sms == smsAnterior)
- {
- mySerial.println("AT+CMGD=1");
- sms="";
- }
- smsAnterior=sms;
- }
- }
- }
- mySerial.println("");
- }
- void ligandoModulo()
- {
- Serial.println("Ligando/Reiniciando Modulo GSM...");
- if(digitalRead(6)==LOW)
- {
- digitalWrite(6,LOW);
- delay(300);
- digitalWrite(6,HIGH);
- delay(15000);
- }
- Serial.println("Modulo Ligado!");
- }
- void mostraDadosSerial()
- {
- while(mySerial.available()!=0)
- {
- Serial.write(mySerial.read());
- }
- }
Logo mais completo esse tópico com videos e tudo mais!