Bricolaje hágalo usted mismo
Clases magistrales, instrucciones, consejos útiles, recetas.
» » »Controlador de SMS basado en SIM800L
Controlador de 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 las funciones de GSM (llamadas y SMS) y GPRS. La ventaja de este módulo es la interfaz TTL con un voltaje de 5V, que le permite conectarlo directamente a un Arduino o cualquier otro sistema con una fuente de alimentación de 5V. La mayoría de los módulos GSM / GPRS en el 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.

Aquí hay un proyecto de ejemplo que usa SIM800L V.2 GSM / GPRS. El significado del proyecto es controlar los interruptores utilizando el controlador de SMS. Puede 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 SIM800L V.2 GSM / GPRS


A continuación se detallan todas las especificaciones técnicas del módulo SIM800L V.2 GSM / GPRS:
  • Interfaz serial TTL compatible con microcontroladores de 3.3V y 5V compatibles con Arduino.
  • El módulo SIM800L tiene una interfaz serial TTL.
  • Enchufe de antena
  • Soporte de red: cuatro bandas 850/900/1800/1900 MHz, capaz de realizar llamadas, SMS y transferencia de datos con un consumo de batería significativamente reducido.
  • Interfaz VDD TTL UART, para que pueda conectar directamente una MCU como 51MCU, ARM o MSP430. Enchufe VDD utilizado para igualar el voltaje TTL.
  • Modelo: SIMCOM SIM800L
  • Voltaje de trabajo: de 3.7V a 5V;
  • dimensiones: 40 mm x 28 mm x 3 mm
  • GPRS multislot clase 12/10
  • Servicio Batch GPRS Clase B
  • Corresponde a la fase GSM 2/2 +
  • Clase 4 (2 vatios a 850/900 MHz)
  • Clase 1 (1 Wat @ 1800/1900 MHz)


Materiales requeridos


Controlador de SMS basado en SIM800L


Necesitarás:


1. .
2. .
3. .
4. .
5. .
(Enlaces activos a la tienda para la compra)

Ensamblaje y configuración


Controlador de SMS basado en SIM800L


Una vez que haya conectado todos los componentes, cree un programa y luego descárguelo a su Arduino. Pero primero, debe instalar la biblioteca GPRS, que puede descargar:

[28.02 Kb] (descargas: 481)


Código de programa para Arduino


Controlador de SMS basado en SIM800L


Después de haber conectado su SIM800L, módulo de relé de 4 canales y Arduino a su computadora, ingrese el código a continuación y listo.


#include
#include
#define TIMEOUT 5000
#definir ACTIVO BAJO
#define OFF HIGH

relé de bytes [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS gprs;

configuración nula () {
para (int i = 0; i <4; i ++) {
pinMode (Relé [i], SALIDA);
digitalWrite (Relé [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
mientras que (! Serie);
Serial.println ("Activar SIM800L V2 >>> Leer SMS automáticamente");
gprs.preInit ();
retraso (1000);
while (0! = gprs.init ()) {
retraso (1000);
Serial.print ("init errorrn");
}

// Administrar mensaje a modo ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
volver
}
// Leer SMS entrantes
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
volver
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Enviar respuesta a 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 (Relay [i], StatRelay [i]);
}

// Si hay datos de entrada desde SIM800
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Guarde todos los datos en lastCharRead, luego si hay r o n, como señal final del mensaje entrante
if (lastCharRead == 'r' || lastCharRead == 'n') {
Cadena lastLine = Cadena (currentLine);

// Si el último mensaje + CMT indica que llega un nuevo mensaje
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} else if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

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

// Controlador de relé 1

if (lastLine.indexOf ("Relay 1 ON")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 1 activo");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}

sino if (lastLine.indexOf ("Relay 1 OFF")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 1 desactivado");
gprs.sendSMS (buffNumber, "Estado del relé 1 desactivado");
}

// Controlador de relé 2

if (lastLine.indexOf ("Relay 2 ON")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 2 activo");
gprs.sendSMS (buffNumber, "Relay 2 Status Active");
}
sino if (lastLine.indexOf ("Relay 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 2 desactivado");
gprs.sendSMS (buffNumber, "Relay 2 Status Off");
}

// Controlador de relé 3
if (lastLine.indexOf ("Relay 3 ON")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Relay 3 Status Active");
gprs.sendSMS (buffNumber, "Relay 3 Status Active");
}
sino if (lastLine.indexOf ("Relay 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 3 desactivado");
gprs.sendSMS (buffNumber, "Relay 3 Status Off");
}

// Controlador de relé 4
if (lastLine.indexOf ("Relay 4 ON")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 4 activo");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
sino if (lastLine.indexOf ("Relay 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Respuesta ==== >>>>");
Serial.println ("Estado del relé 4 desactivado");
gprs.sendSMS (buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}

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

}
// Borrar la matriz de caracteres para la siguiente línea de lectura
para (int i = 0; i 


Comprobación de dispositivo


Controlador de SMS basado en SIM800L


La herramienta funciona enviando SMS a SIM800L con una secuencia específica de caracteres. Por ejemplo, para habilitar el relé 1, use el comando "Relay 1 ON", y para apagarlo, use el comando "Relay 1 OFF". El resto de los relés tienen casi los mismos comandos, con la excepción del número de serie de cada relé en el que desea actuar. Después de enviar un mensaje automáticamente, el SIM800 enviará una respuesta en forma de mensaje de estado para cada tarjeta SIM.

Montaje de video, configuración y verificación del dispositivo



Regresar
Comentarios (4)
  1. qeeeq
    #1 qeeeq Invitados 26 de agosto de 2017 23:50
    0
    Wow! Como dicen, todo ingenioso es simple. Ni siquiera tuve que comprar nada, probablemente en cada basura a granel
  2. Alexey
    #2 Alexey Invitados 16 de diciembre de 2017 16:53
    0
    No funciona. Al compilar, escribe "Arduino: 1.8.5 Build por hora 2017/08/28 06:33 (Windows 7), Tablero:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis Invitados 17 de diciembre de 2017 08:11
      0
      Debe usar una ruta sin letras rusas para el proyecto.
  3. Andrey
    #4 Andrey Invitados 10 febrero 2019 11:54
    0
    Hay muchos errores en el boceto. No va a funcionar