Controlador SMS basado en SIM800L

Controlador SMS basado en SIM800L

SIM800L V2.0 GSM/GPRS es un módulo GSM/GPRS de cuatro bandas compatible con Arduino. El módulo se utiliza para implementar funciones GSM (llamadas y SMS) y GPRS. La ventaja de este módulo es la interfaz TTL, que tiene un voltaje de 5V, lo que permite conectarlo directamente a Arduino o cualquier otro sistema con un voltaje de alimentación de 5V. La mayoría de los módulos GSM/GPRS del mercado requieren conexiones de regulador o conversión de nivel, mientras que en SIM800L V.2 GSM/GPRS no requiere circuitos de conversión de nivel de interfaz adicionales.

Pongamos un ejemplo de un proyecto que utiliza SIM800L V.2 GSM/GPRS. El objetivo del proyecto es controlar interruptores mediante un controlador SMS. Puedes encender y apagar fácilmente la mayoría de los electrodomésticos de la casa, como una llama, un ventilador, etc.

Características del módulo GSM/GPRS SIM800L V.2


A continuación se detallan todas las características técnicas del módulo GSM/GPRS SIM800L V.2:
  • Interfaz serie TTL compatible con microcontroladores compatibles con Arduino de 3,3 V y 5 V.
  • El módulo SIM800L tiene una interfaz serie TTL.
  • Enchufe de conexión de antena.
  • Soporte de red: cuatro bandas 850/900/1800/1900 MHz, capaz de realizar llamadas, SMS y transferencias de datos con un consumo de batería significativamente reducido.
  • Interfaz VDD TTL UART, para que pueda conectar directamente MCU como 51MCU, ARM o MSP430.El enchufe VDD se utiliza para igualar el voltaje TTL.
  • Modelo: SIMCOM SIM800L
  • Tensión de funcionamiento: de 3,7V a 5V;
  • dimensiones: 40 mm x 28 mm x 3 mm
  • GPRS multiranura clase 12/10
  • Servicio de paquetes GPRS clase B
  • Cumple con GSM fase 2/2+
  • Clase 4 (2 vatios a 850/900 MHz)
  • Clase 1 (1 vatio a 1800/1900 MHz)


Materiales necesarios


Controlador SMS basado en SIM800L


Necesitarás:


1. Módulo SIM800L V.2 GSM/GPRS.
2. ArduinoUno.
3. Módulo de relé de 4 canales de 5 V.
4. Cables - puentes.
5. Fuente de alimentación 5V.
(Enlaces activos a la tienda para su compra)

Montaje y configuración


Controlador SMS basado en SIM800L


Una vez que hayas conectado todos los componentes, crea un programa y luego cárgalo en tu Arduino. Pero primero debes instalar la biblioteca GPRS, que puedes descargar:

gprs.zip [28,02 Kb] (descargas: 887)


Código de programa para Arduino


Controlador SMS basado en SIM800L


Una vez que haya conectado su SIM800L, módulo de relé de 4 canales y Arduino a su computadora, ingrese el código a continuación y listo.



#incluir 

#incluir

#definir TIEMPO DE ESPERA 5000

#definir ACTIVO BAJO

#definir APAGADO ALTO



byte Relé[] = {A0,A1,A2,A3};

byte StatRelay[4];

char buffNumber[20];

char líneaactual[500] = "";

int índice de línea actual = 0;

bool nextLineIsMessage = falso;

Número de respuesta de cadena = "089510863958";

GPRS GPRS;



configuración nula() {

para(int i=0; i < 4; i++) {

pinMode(Relé[i], SALIDA);

escritura digital (relé [i], MATI);

StatRelay[i] = MATI;

}



Serie.begin(9600);

mientras (! Serie);

Serial.println("Activar SIM800L V2 >>> Leer SMS automáticamente");

gprs.preInit();

retraso(1000);

mientras (0 != gprs.init()) {

retraso(1000);

Serial.print("error de inicio");

}



// Administrar mensaje en modo ASCII

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

devolver;

}

// Leer SMS entrantes

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

devolver;

}

int pjg = númeroRespuesta.longitud() + 1;

número de buff[pjg];

respuestaNumber.toCharArray(buffNumber,pjg);

Serial.print("Enviar respuesta al número => ");

Serial.println(buffNumber);

Serial.println("Inicialización realizada");

Serial.println("=============================================== =============== =================");

}



bucle vacío() {

// Cambiar estado Relé ON / OFF

para(int i=0; i < 4; i++) {

digitalWrite(Relé[i], StatRelay[i]);

}



// Si hay datos de entrada del SIM800

si (gprs.serialSIM800.disponible()) {

char lastCharRead = gprs.serialSIM800.read();



// Guarda todos los datos en lastCharRead, luego, si hay r o n, como señal final del mensaje entrante

if (lastCharRead == 'r' || lastCharRead == 'n') {

Cadena última línea = Cadena (línea actual);



// Si el último mensaje +CMT indica que llega un nuevo mensaje

if (última línea.startsWith("+CMT:")) {

Serial.println(última línea);

nextLineIsMessage = verdadero;

} más si (últimaLínea.longitud() > 0) {

si (siguienteLíneaIsMessage) {

Serial.println(última línea);



// ================================================== ==== =================>> Función del controlador de relé



//Controlador del relé 1



if (lastLine.indexOf("Relé 1 ENCENDIDO") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 1 activo");

gprs.sendSMS(buffNumber, "Estado del relé 1 activo");

}



else if (lastLine.indexOf("Relé 1 APAGADO") >= 0) {

StatRelay[0] = MATI;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 1 apagado");

gprs.sendSMS(buffNumber, "Estado del relé 1 desactivado");

}



//Controlador del relé 2



if (lastLine.indexOf("Relé 2 ENCENDIDO") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 2 activo");

gprs.sendSMS(buffNumber, "Estado del relé 2 activo");

}

else if (lastLine.indexOf("Relé 2 APAGADO") >= 0) {

StatRelay[1] = MATI;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 2 desactivado");

gprs.sendSMS(buffNumber, "Estado del relé 2 desactivado");

}



//Controlador del relé 3

if (lastLine.indexOf("Relé 3 ENCENDIDO") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 3 activo");

gprs.sendSMS(buffNumber, "Estado del relé 3 activo");

}

else if (lastLine.indexOf("Relé 3 APAGADO") >= 0) {

StatRelay[2] = MATI;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 3 desactivado");

gprs.sendSMS(buffNumber, "Estado del relé 3 desactivado");

}



//Controlador del relé 4

if (lastLine.indexOf("Relé 4 ENCENDIDO") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 4 activo");

gprs.sendSMS(buffNumber, "Estado del relé 1 activo");

}

else if (lastLine.indexOf("Relé 4 APAGADO") >= 0) {

StatRelay[3] = MATI;

Serial.print("Respuesta====>>>> ");

Serial.println("Estado del relé 4 desactivado");

gprs.sendSMS(buffNumber, "Estado del relé 4 desactivado");

}

nextLineIsMessage = falso;

}



// ================================================== ==== ===================>>



}

//Borrar matriz de caracteres para la siguiente línea de lectura

para ( int i = 0; i < tamaño de (líneaactual); ++i ) {

líneaactual[i] = (char)0;

}

índice de línea actual = 0;

}

demás {

líneaactual[currentLineIndex++] = lastCharRead;

}

}

}



Verificación del dispositivo


Controlador SMS basado en SIM800L


La herramienta funciona enviando un SMS al SIM800L con una secuencia específica de caracteres. Por ejemplo, para encender el relé 1, use el comando "Relé 1 ON", y para apagarlo, use el comando "Relé 1 OFF". Para los relés restantes, los comandos son casi los mismos, excepto por el número de secuencia de cada relé en el que desea influir. Después de enviar automáticamente el mensaje, SIM800 enviará una respuesta en forma de mensaje sobre el estado de cada tarjeta SIM.

Vídeo de montaje, configuración y prueba del dispositivo.



Artículo original en inglés.
regresar
Comentario
  • corbata de moñosonrisareírruborsonrienterelajado relajadosonrisa afectada
    ojos del corazónbeso_corazonbesos_ojos_cerradossonrojadoaliviadosatisfechosonrisa
    guiñolengua_pegada_guiñando_el_ojolengua_atrapada_ojos_cerradossonriendobesarlengua_pegadadurmiendo
    preocupadoceñudoangustiadoboca abiertahaciendo muecasconfundidocallado
    inexpresivono divertidosudor_sonrisasudordecepcionado_aliviadocansadopasivo
    decepcionadoaturdidotemerososudor fríoperseverarllorarsollozo
    alegríaasombradogritarCara cansadaenojadofuriatriunfo
    somnolientommmmascarillaGafas de solcara_mareadadiablillosonriente_imp
    cara_neutralsin bocainocente
3+tres=
Comentarios (4)
  1. qeeeq
    #1 qeeeq Huéspedes 26 agosto 2017 23:50
    0
    ¡Guau! Como dicen, todo lo ingenioso es sencillo. Ni siquiera tuve que comprar nada, probablemente todo el mundo tiene un montón de basura así en casa.
  2. alexei
    #2 alexei Huéspedes 16 diciembre 2017 16:53
    0
    No funciona. Al compilar, dice "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Tablero:"Arduino/Genuino Uno"
    1. Denis
      #3 Denis Huéspedes 17 de diciembre de 2017 08:11
      0
      Debe utilizar una ruta sin letras rusas para llegar al proyecto.
  3. andrés
    #4 andrés Huéspedes 10 de febrero de 2019 11:54
    2
    Hay muchos errores en el boceto. No funcionará.