Sms masivos con Sim800l y Arduino
![]() |
Imagen de placa SIM800 |
El módulo SIM800L es un dispositivo quad-band GSM/GPRS, trabaja en las
frecuencias GSM850MHz, EGSM900MHz, DCS1800MHz y PCS1900MHz. Este módulo de
telefonía celular que te permite añadir voz, texto, datos y SMS a tu proyecto
en un pequeño paquete, contiene una cantidad sorprendente de la tecnología en
este pequeño paquete. Esta versión cuenta con un conector uFL. Utiliza el mismo
chip SIM800L que el módulo FONA de Adafruit, por lo que se pueden utilizar las
mismas librerías.
Por sí solo, este módulo
no puede hacer nada. Se requiere un microcontrolador para controlarlo por
ejemplo un Arduino pero cualquier microcontrolador 3-5V con una UART puede
enviar y recibir comandos a través de los pines RX/TX. También necesitarás un
chip SIM 2G.
Pin OUT
Características técnicas
·
· Nivel Lógico de 3V a 5V
· Voltaje de operación 3.3 a 4.4 VDC
·
Consumo de corriente (max): 500 mA
·
Consumo de corriente (sleep): 0.7 mA
·
Interfaz: Serial UART
·
Quad-band 850/900/1800/1900MHz – se conectan a cualquier red mundial GSM
con cualquier SIM 2G
·
Trabaja solo con tecnología 2G (en Perú Movistar , Claro y Entel)
·
Hacer y recibir llamadas de voz usando un auricular o un altavoz de 8Ω
externo + micrófono electret.
·
Enviar y recibir mensajes SMS
·
Enviar y recibir datos GPRS (TCP/IP, HTTP, etc)
·
Receptor FM
·
Controlado por Comandos AT (3GPP TS 27.007, 27.005 y SIMCOM enhanced AT
Commands)
·
Interfaz de comandos AT con detección “automática” de velocidad de
transmisión
·
Soporta A-GPS
·
Datos GPRS:
·
Velocidad máxima de transmisión 85.6 Kbps
·
Protocolo TCP/IP en chip
·
Codificacion: CS-1, CS-2, CS-3 y CS-4
·
Soporta USSD
·
Soporta Reloj en tiempo real (RTC)
·
Velocidades de transmisión serial desde 1200bps hasta 115200bps
·
Tamaño de la SIM: Micro SIM
Materiales:
1 X Arduino Nano
1 X Modulo Sim800L
1 X Capacitor 1000 Mf x 16v
2 X Diodo 1N4001
Conexiones:
Código
/****************************************************************************** * Proyecto: * * ENVIO DE VARIOS MENSAJES DE TEXTO EN RED GSM * ******************************************************************************* Este proyecto permite enviar varios mensaje de texto SMS a destinos agendados en un directorio, utilizando el modulo SIM800 Dadas la funciones del modulo ,lo configura poder recibir llamadas de voz . ******************************************************************************/ #include <SoftwareSerial.h> int timeout=0; String NumSms =""; String serialString=""; String inc_call=""; String Prefix ="+598"; // Codigo del pais String cmd=""; // Numeros celulares tipo long para procesar long Lg_Number_1 = 12345678;// Completar con los numero de celulares, ej si es 098123456 , completar 98123456 long Lg_Number_2 = 12345678; long Lg_Number_3 = 12345678; long Lg_Number_4 = 12345678; long directory[]={Lg_Number_1,Lg_Number_2,Lg_Number_3,Lg_Number_4};// Define un Array de 4 numeros telefonicos //TX de SIM800 es conectado en Arduino D8 #define SIM800_TX_PIN 8 //RX de SIM800 es conectado en Arduino D7 #define SIM800_RX_PIN 7 //Create software serial object to communicate with SIM800 SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN); /************************************************************************************************************* SETUP ************************************************************************************************************/ void setup() { Serial.begin(9600); serialSIM800.begin(9600); delay(1000); LeerSerial(); enviarAT("AT+IPR=9600\r"); // Setea velocidad de puerto serie de SIM800 en 9600 baudios LeerSerial(); enviarAT("AT+COPS?\r"); // Obtiene el numero de celda GSM en el cual se registro LeerSerial(); enviarAT("AT+CNMI=2,1\r"); // Define formato de mensajes LeerSerial(); enviarAT("AT+CMGD=1,4\r"); // eliminar todos los mensajes LeerSerial(); enviarAT("AT+CMGL=\"ALL\",0\r"); LeerSerial(); enviarAT("AT+CMGF=1\r"); // Formato de texto string delay(200); LeerSerial(); Send_SMS();// ejecuta una vez en forma de prueba } void loop() { //Colocar este comando en algun lugar del codigo //Send_SMS(); //Lee puerto serie LeerSerial(); } // Envia SMS a cada numero de la agenda telefónica void Send_SMS(){ char ctrz=26; String sms=""; //Repite el procedimiento por n cantidad de numero agendados , en este ejemplo son 4 números en el directorio for(int i=0 ;i<=3;i++){ NumSms=(String)directory[i]; NumSms=Prefix+NumSms; enviarAT("AT+CMGS=\""+ NumSms+"\""+"\r"); delay(1000); sms="Prueba numero posicion: "+NumSms+ctrz; enviarAT(sms); delay (100); Serial.flush(); LeerSerial(); delay(2000); } } // -Permite interactuar con el Monitor serial y el SIM800 // - Atiende llamadas de voz void LeerSerial() { if(serialSIM800.available()>0){ serialString= serialSIM800.readString(); delay(100); if (serialString.indexOf("+CLIP")>-1){ enviarAT("ATA\r"); Serial.println("Llamada en curso"); } Serial.println(serialString); } if (Serial.available()){ while(Serial.available()) { inc_call=Serial.read(); serialSIM800.write(Serial.read()); } serialSIM800.println(); } } // Enviamos comando AT al puerto serie de SIM800 void enviarAT(String cmdAT){ int str_len = cmdAT.length() + 1; char char_array[str_len]; cmdAT.toCharArray(char_array, str_len); serialSIM800.write(char_array); delay(100); }
Comentarios
Publicar un comentario