Hoy traigo a ustedes un proyecto donde encenderé 9 led mediante mensajes de texto.
Para ello voy a utilizar un arduino uno y un escudo gsm el mismo utiliza un chip sim900 muy utilizado en proyectos m2m.
Se puede aplicar en proyectos de domótica, control industrial, seguridad y por supuesto hobby.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Hay que tener en cuenta que algunos pines no los vamos a poder utilizar para los led, ya que cumplen ciertas funciones esenciales, como por ejemplo los pines 0 y 1 que son usados para el puerto serie por hardware y los pines 2 y 3 como puerto serie por software. El pin número en este módulo se lo utiliza para encender o apagar el módulo gsm, por lo cual en este proyecto no lo vamos a usar porque no hay necesidad de apagar o encender el módulo.
Lo pines usados para los led son el numero 4 5 6 8 9 10 11 12 y 13, también se pueden usar los pines A0 al A5 (pines analógicos) y en total podríamos controlar hasta 15 dispositivos a las vez.
El módulo según el fabricante necesita una fuente que pueda entregar hasta dos amperes de corriente, para poder funcionar sin inconvenientes. El módulo es totalmente compatible con arduino uno y simplemente conectandolo encima del mismo funcionará sin dar ningún problema.
En cuanto al sketch de arduino, los comandos de texto que podemos enviar son On4 enciende el led conectado al pin 4 si queremos apargarlo enviamos Off5, hay que tener en cuenta que es case sensitive, por lo cual va a distinguir entre mayúsculas y minúsculas, si se envía un carácter en forma incorrecta no funcionará el comando
Lista de comandos que se pueden usar, ustedes pueden modificarlos a su gusto y agregar otras funciones
On4—–>Enciende led 4 Off4—–>Apaga el led 4
On5—–>Enciende led 5 Off5—–>Apaga el led 5
On6—–>Enciende led 6 Off6—–>Apaga el led 6
On8—–>Enciende led 8 Off8—–>Apaga el led 8
On9—–>Enciende led 9 Off9—–>Apaga el led 9
On10—–>Enciende led 10 Off10—–>Apaga el led 10
On11—–>Enciende led 11 Off11—–>Apaga el led 12
On12—–>Enciende led 12 Off12—–>Apaga el led 12
On13—–>Enciende led 13 Off13—–>Apaga el led 13
Allon—–>Enciende todos los led
Alloff—–>Apaga todos los led
Partes del módulo gsm
![]()
![]()
Foto del módulo con los led conectados en el protoboad la conexión es muy simple, sólo hay colocarles un resistor de 1k.
Código Fuente
Descargar smsLed9
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
//Más info en http://www.rogerbit.com //Apoya mi canal suscribiendote en https://www.youtube.com/c/Carlosvolt //Mi grupo en facebook es https://www.facebook.com/groups/RogerBit #include <SoftwareSerial.h> #include <string.h> SoftwareSerial Sim900Serial(2, 3); byte buffer[64]; //Buffer para recivir datos del puerto serie int count=0; int led13 = 13; int led12 = 12; int led11 = 11; int led10 = 10; int led9 = 9; int led8 = 8; int led7 = 7; int led6 = 6; int led5 = 5; int led4 = 4; #define phonenumber "1234567890" //Cambiar por su número de teléfono, el número de teléfono debe ser el mismo que el formato que recibe el SMS, //Quizá debe incluir el código de país. void setup() { //Del pin 4 al 13 serán salidas donde se conectaran los led pinMode(led13, OUTPUT); pinMode(led12, OUTPUT); pinMode(led11, OUTPUT); pinMode(led10, OUTPUT); pinMode(led9, OUTPUT); pinMode(led8, OUTPUT); pinMode(led7, OUTPUT); pinMode(led6, OUTPUT); pinMode(led5, OUTPUT); pinMode(led4, OUTPUT); Sim900Serial.begin(19200);//Velocidad del puerto serie por Software pines 2 y 3 Serial.begin(19200); //Velocidad del puerto serie por Hardware pines 0 y 1 delay(500); Sim900_Inti(); } void loop() { if (Sim900Serial.available()) { while(Sim900Serial.available()) //Leyendo datos del arreglo de caracteres { buffer[count++]=Sim900Serial.read(); //Almacenando los datos del arreglo en un buffer if(count == 64)break; } Serial.write(buffer,count); Cmd_Read_Act(); clearBufferArray(); count = 0; } if (Serial.available()) // Verifica si se dispone de datos en el puerto serie por hardware Sim900Serial.write(Serial.read()); // y los escribe en el escudo SIM900 } // Limpia el buffer void clearBufferArray() { for (int i=0; i<count;i++) { buffer[i]=NULL;} // borrar todos los índices del arreglo } void Sim900_Inti(void) { Sim900Serial.println("AT+CMGF=1"); delay(500); Sim900Serial.println("AT+CNMI=2,2"); delay(500); } //////Esta función lee los SMS enviados al escudo SIM900 y actua en base a esa orden. void Cmd_Read_Act(void) { char buffer2[64]; char comparetext[25]; for (int i=0; i<count;i++) { buffer2[i]=char(buffer[i]);} memcpy(comparetext,buffer2,25); if (strstr(comparetext,phonenumber)) { ///////////LED13/////////////////////////////////////// if (strstr(buffer2,"On13")) { digitalWrite(led13, HIGH); } if (strstr(buffer2,"Off13")) { digitalWrite(led13, LOW); } ///////////LED12/////////////////////////////////////// if (strstr(buffer2,"On12")) { digitalWrite(led12, HIGH); } if (strstr(buffer2,"Off12")) { digitalWrite(led12, LOW); } ///////////LED11/////////////////////////////////////// if (strstr(buffer2,"On11")) { digitalWrite(led11, HIGH); } if (strstr(buffer2,"Off11")) { digitalWrite(led11, LOW); } ///////////LED10/////////////////////////////////////// if (strstr(buffer2,"On10")) { digitalWrite(led10, HIGH); } if (strstr(buffer2,"Off10")) { digitalWrite(led10, LOW); } ///////////LED9/////////////////////////////////////// if (strstr(buffer2,"On9")) { digitalWrite(led9, HIGH); } if (strstr(buffer2,"Off9")) { digitalWrite(led9, LOW); } ///////////LED8/////////////////////////////////////// if (strstr(buffer2,"On8")) { digitalWrite(led8, HIGH); } if (strstr(buffer2,"Off8")) { digitalWrite(led8, LOW); } ///////////LED7/////////////////////////////////////// if (strstr(buffer2,"On7")) { digitalWrite(led7, HIGH); } if (strstr(buffer2,"Off7")) { digitalWrite(led7, LOW); } ///////////LED6/////////////////////////////////////// if (strstr(buffer2,"On6")) { digitalWrite(led6, HIGH); } if (strstr(buffer2,"Off6")) { digitalWrite(led6, LOW); } ///////////LED5/////////////////////////////////////// if (strstr(buffer2,"On5")) { digitalWrite(led5, HIGH); } if (strstr(buffer2,"Off5")) { digitalWrite(led5, LOW); } ///////////LED4/////////////////////////////////////// if (strstr(buffer2,"On4")) { digitalWrite(led4, HIGH); } if (strstr(buffer2,"Off4")) { digitalWrite(led4, LOW); } if (strstr(buffer2,"Allon")) { digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); digitalWrite(led7, HIGH); digitalWrite(led8, HIGH); digitalWrite(led9, HIGH); digitalWrite(led10, HIGH); digitalWrite(led11, HIGH); digitalWrite(led12, HIGH); digitalWrite(led13, HIGH); } if (strstr(buffer2,"Alloff")) { digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); digitalWrite(led4, LOW); } } } |
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
VIDEOS RECOMENDADOS


Que tal amigo como estas? ando trabajando en un proyecto parecido, y como pruebas basica queria hacer esto encender unos leds con un sms estoy trabajando con un arduino mini pro y modulo de desarrollo SIM900 con lo cual conectando via serial (hardware) he tenido exito, pero cuando lo hago via serial (software) no me camina, ni siquiera probando serialsoftware solo con el arduino, no se si tienes alguna sugerencia que me pueda ayudar se lo agradeceria al igual si pudiera pasarme algun esquematico, que dudo que el problema sea la conexion. Gracias de antrmano.
Saludos cordiales,
Oswaldo Aguilar
Buenas noches podrias poner exactamente que módulo tienes porque hay muchos en el mercado en lo posible un link al mismo, saludos
hola carlos estuve probando el programa y me aparece esto Sim900Serial.println(“AT+CMGF=1”); quisera saber como podria solucionarlos, desda ya mucas gracias.
Disculpa amigo no entiendo cual es el error , podrías especificar más muchas gracias, saludos
hola q tal, donde puedo conseguir el mismo modulo sim 900 q utilizas en tus tutoriales, saludos.
hola amigo gracias por tu oporte, tengo una duda como podria leer con el arduino lo que se reciba, yo manejo el sim800l y e logrado hacer lo que tu hiciste en este tema, yo quiero hacer ahora que por http identifique lo que responde el sim por ejemplo si yo envio el comando
AT+SAPBR=2,1
yo recivo
+SAPBR: 1,1,”10.151.43.104″
OK
como podria en ese caso la direccion ip que me da
saludos
Hola, Estoy probando tu codigo pero no me funciona, estoy usando Modulo GSM SIM900.
he cambiado el numero de celular y no he cambiado nada mas.
que estara mal?
aqui te dejo el link del modulo que uso: https://goo.gl/eeryCb
Muchas gracias si me puedes ayudar.
Hola trata de habilitar con un cable serial el modo texto con el comando AT+CMGF=1 algunos sim900 no lo tiene activado por defecto así como también la id de llamadas con el comando at+clip=1 activas la identificación de id y con el comando AT&W guardas los cambios para que no tengas que hacer siempre, saludos
Hola, gracias por ayudarme, podria decirme como hago eso del cable serial?
soy nuevo en esto, como paso ese programa de arduino uno a sim900 , para que funcione así, ademas cual seria la configuración para poder programarlo, espero me pueda orientar
Como puedo conseguir el modulo