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

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

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

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

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.
Clases magistrales similares
Particularmente interesante

Actualizar un antiguo centro de música por uno nuevo con sus propias manos

Cómo restaurar la batería de un destornillador

Cómo instalar usted mismo Bluetooth en la radio de cualquier automóvil

La bicicleta eléctrica de bricolaje más sencilla.

No tires tu cartucho viejo: conviértelo en un banco de energía

Reemplazo de baterías de destornillador
Comentarios (4)