SMS control remoto de garaje/puerta (4 / 4 paso)

Paso 4: Escribir el código

En primer lugar, he leído la de MediaTek LinkIt una guía del desarrollador de, en particular, la sección recibir mensajes SMS, así como la API. Adjunto a la guía aquí en caso de link deja de funcionar.

He adjuntado mi código completo aquí, que sólo debería funcionar. Específicamente lo rompió en funciones que deberían ser fáciles de entender, voy a ir a través de cada uno de ellos aquí. Por favor lea los comentarios en línea para información adicional.

Inicializar las Variables globales

 #include <LGSM.h> //these variables are used for the LED int ledGreenPin = 13; //I am using the onboard LED as an indicator boolean ledGreenState = LOW; //this is the pin that is connected to the transistor base (via a resistor) int triggerPin = 12; //these variables are for the sms char smsContent[200]; int smsLength = 0; char smsSender[20]; //these variables are for the password const int passwordLength = 20; //number of possible characters in password, remember the null terminator const char password[passwordLength] = "mellon"; //this is the actual password 

función Setup()

La función de configuración se ejecuta una vez después de que el dispositivo se inicia. El pin que controla el onboard led (D13) y la clavija conectada a la base del transistor (D12) son inicializada como salidas y establecen en valores predeterminados de 0 ('LOW').

El puerto serie está inicializado a una velocidad en baudios de 9600, por lo que información de depuración puede imprimirse.

La función waitForSim() se llama una vez (se describe más adelante)

 void setup() { //this code runs once at setup pinMode(ledGreenPin, OUTPUT); //initialise LED pinMode(triggerPin, OUTPUT); //initialise PIN digitalWrite(ledGreenPin, ledGreenState); //turn LED off digitalWrite(triggerPin, LOW); //make sure trigger is off (assuming NPN transistor on a pullup input) Serial.begin(9600); //start the serial port waitForSim(); //wait for simcard to be active } 

función waitForSim()

La función de waitForSim() simplemente se sienta en un bucle, comprobando cada medio segundo, definido por delay(500), si la tarjeta SIM está lista. El LED verde se apaga en/cada cheque que parpadea y luego en una vez la SIM queda listo.

 void waitForSim() { //this is just a function to wait until the SIM is ready Serial.print("waiting for sim"); while (!LSMS.ready()) { delay(500); ledGreenState = !ledGreenState; //blink the led digitalWrite(ledGreenPin, ledGreenState); Serial.print('.'); } ledGreenState = HIGH; //turn led on once SIM is ready digitalWrite(ledGreenPin, ledGreenState); Serial.println("Sim Ready"); } 

función receiveSms()

Esta función comprobará si hay un nuevo SMS. Si lo hay, es leer en un carácter a la vez y almacenado en el buffer de smsContent. Si no hay ningún SMS nuevo entonces la función devuelve false. Esto nos permite llamar tantas veces como nos gusta en el bucle principal.

Una vez que el SMS ha sido leído se elimina con la orden flush().

 boolean receiveSMS() { //this function will store a new sms in the buffers //or return false if there is no new sms int v; if (LSMS.available()) // Check if there is new SMS { Serial.println("There is new message."); LSMS.remoteNumber(smsSender, 20); // store sender in buffer smsLength = 0; //storing a new sms while (true) { v = LSMS.read(); if (v < 0) break; smsContent[smsLength] = v; smsLength++; } smsContent[smsLength] = '\0'; smsLength++; LSMS.flush(); // delete message return HIGH; } else { return LOW; } } 

función displaySMS()

Esta función imprime sólo el remitente y el contenido búferes para el puerto serie, que es útil para la depuración.

 void displaySMS() { Serial.print("Sender:"); Serial.println(smsSender); Serial.print("Content:"); Serial.println(smsContent); Serial.println(); } 

función validatePassword()

Esta función se utiliza para comparar el contenido de los SMS con la cadena de contraseña. Si el contenido coincide con la cadena, entonces la función devuelve 1 (alto), de lo contrario devuelve 0 (bajo).

 boolean validatePassword() { //this function will return true if the contents of the sms start with the defined password Serial.print("Comparing "); Serial.println(password); Serial.print("with "); Serial.println(smsContent ); if (strcmp(password, smsContent) == 0) { Serial.println("Password Valid"); return HIGH; } else { Serial.println("Password Invalid"); return LOW; } } 

función triggerRemote()

Función que esta función simplemente ajusta el perno de D12 (base del transistor) alto durante un período determinado de tiempo (1 segundo funcionado para mí, remoto usted puede preferir algo diferente)

 void triggerRemote() { //this function will "turn on" the transistor that emulates a button press Serial.println("Emulating button press"); digitalWrite(triggerPin, HIGH); delay(1000); digitalWrite(triggerPin, LOW); Serial.println("Emulating button release"); } 

función loop()

Esta función es la base de un programa de Arduino y sólo se ejecuta una y otra vez para toda la eternidad. Puesto que todo ya se ha analizado en las funciones es totalmente autoexplicativa.

 void loop() { if (receiveSMS()) { displaySMS(); if (validatePassword()) { triggerRemote(); } } delay(1000); } 

Artículos Relacionados

Genie - aparcamiento y Control remoto de garaje

Genie - aparcamiento y Control remoto de garaje

El genio de garaje es un gadget de Arduino de automatización de coche. Haga clic en las dos imágenes de arriba para ver la explicación animada. Pretende hacer algunas cosas:1. el "semáforo" dice cuando has acercaba su coche hasta lo suficienteme
Hacer de un iPod 30 cuna de un abrelatas de la puerta del garaje control remoto!

Hacer de un iPod 30 cuna de un abrelatas de la puerta del garaje control remoto!

It's Saturday afternoon. Está lloviendo. Estás aburrido. Tienes un par de horas para matar. ¿A qué te dedicas?Construir una base iPod rad de un abridor de puerta de garaje antiguo por supuesto! Duh.Todo el mundo ha visto esas cunas de iPod en Best Bu
Control remoto vía GSM/GPRS SMS(Arduino)

Control remoto vía GSM/GPRS SMS(Arduino)

control remoto, especialmente cuando este no ethernet o Wifi en el exterior, ha sido una cosas muy profundas en el pasado. Cuando era un niño, siempre imagen que yo tengo un equipo que puede controlar todos los electrodomésticos. Ahora, esto se convi
Confiable, seguro, control remoto de SMS personalizables (Arduino/pfodApp) - No codificación requerida

Confiable, seguro, control remoto de SMS personalizables (Arduino/pfodApp) - No codificación requerida

Actualización: 19 de mayo de 2015: uso del biblioteca pfodParser Versión 2.5 o superior. Corrige un problema reportado de no permitir tiempo suficiente para que el escudo para conectarse a la red después de haber encendido arribaIntroducciónCómo es p
Control remoto puerta

Control remoto puerta

El dilema:6:00 de la mañana del 1 de enero. Festejaron hasta 3:00. Ahora está durmiendo fuera cuando se despiertan por un insistente raspado proveniente de la puerta de atrás. Su perro necesita ir fuera a cuidar de su negocio, pero eres cálido y conf
Cerradura de la puerta con un control remoto??

Cerradura de la puerta con un control remoto??

Usted puede bloquear una puerta con un control remoto?? Bien, ahora puedes hacerlo en sólo 5 pasos!Paso 1: partes Se necesita:1 x Arduino (cualquier sabor)1 x Servo1 x Breadboard1 x receptor IR (el mío es el TSOP2238 de VISHAY. Puede utilizar uno de
Control remoto cualquier dispositivo a través de SMS usando Arduino, tableros de relés y protectores de c-uGSM o d-u3G

Control remoto cualquier dispositivo a través de SMS usando Arduino, tableros de relés y protectores de c-uGSM o d-u3G

Algunas veces hace, sentí la necesidad de tener control remoto interruptor de encendido y apagado de la iluminación exterior de algunos. En el patio de mi casa, elegir algunos de los componentes y construir este paquete SMS controlado por relé (S).Aq
Construir una palanca de Control remoto

Construir una palanca de Control remoto

este instructable le mostrará cómo construir un puerta de control remoto de bloqueo de cualquier número de solenoides de 110V, pasador de acero sólido, algunas las probabilidades y termina varios y un X10 control de la aplicación remota. He construid
Control remoto jaula trampa

Control remoto jaula trampa

Si te gusta este proyecto, entonces le animo a comprar mi libro, Ingeniero de goma. Está lleno de proyectos más impresionantes y originales hecha a mano de hardware del hogar. Usted puede encontrar donde se venden libros.Este Instructable le mostrará
Levantador de la ventana control remoto por Steve M. Potter "WindowMoto"

Levantador de la ventana control remoto por Steve M. Potter "WindowMoto"

¿tiene una ventana que le da la facilidad de abrir y cerrar, pero no puede llegar? Aquí es un dispositivo muy simple y eficaz para la motorización de la ventana usando un taladro inalámbrico como el motor y el controlador. Este es un buen ejemplo lit
SMS control inalámbrico sistema de riego

SMS control inalámbrico sistema de riego

Actualización 13/02/11: la votación ha comenzado para el concurso de microcontrolador de Sparkfun. Por favor voten por mi!ACTUALIZACIÓN 26/02/11: gané un segundo premio!!!! Huzzah! Gracias por los votos!ACTUALIZACIÓN 17/03/11: me encantaría ganar un
Control remoto de los fuegos artificiales

Control remoto de los fuegos artificiales

Cómo encender sus fuegos artificiales inalámbricamente con un Arduino¡ ADVERTENCIA!Yo no soy responsable si este proyecto resulta en lesión de daños a la propiedad.-------------------------------------Partes:Arduino (cualquier tarjeta)Cables de puent
"Cableado" garaje puerta remota en mi vehículo

"Cableado" garaje puerta remota en mi vehículo

están montadas en un botón de la puerta del garaje en mi Rav4 para abrir y cerrar la puerta del garaje. Esto puede funcionar en cualquier vehículo siempre y cuando usted tiene espacio para el botón y un lugar para esconder el control remoto original.
Robot control remoto frambuesa Pi (PS3 controlador) - neurálgico Fablab

Robot control remoto frambuesa Pi (PS3 controlador) - neurálgico Fablab

Estas instrucciones de intentan asumir muy poco. Que si se puede arrancar un Raspberry Pi y tiene conexión a internet debe ser capaz de completar este pequeño gran proyecto.Básicamente, este es un proyecto que resultará en algunas áreas específicas q