Arduino GPS/GSM Tracker (2 / 5 paso)

Paso 2: Software explicó

El código para el Arduino es bastante simple. Utilizando un par de bibliotecas, el GPS y GPRS Shield se convierten en fáciles de usar objetos. Esto ahorra mucho tiempo analizar cadenas GPS y componer cadenas largas de AT + comando para el módem. Aquí está el código sin ninguna pelusa. Luego lea en un desglose de lo que los hace.

 #include <TinyGPS++.h> #include <GPRS_Shield_Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> TinyGPSPlus gps; GPRS gsm(7,8,9600); int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); if (String(message) == "xyzzy") { if (gps.location.isValid()) { strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); strcat(message,"_Golf+Cart_"); strcat(message,datetime);} else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

Si no sabes cómo agregar una biblioteca para su herramienta de programación de Arduino, la mejor documentación puede encontrarse en la página de Arduino en http://www.arduino.cc/en/guide/libraries#toc4

La biblioteca TinyGPS ++ puede encontrarse en http://arduiniana.org/libraries/tinygpsplus/.

La biblioteca de GPRS Shield puede encontrarse en https://github.com/Seeed-Studio/GPRS_SIM900.

Asegœrese de que los cables de datos GPS se quitan de la Arduino antes de subir tu bosquejo. Después de cargado el programa, apague y vuelva a colocar los cables de datos GPS.

En aras de ahorrar memoria, no declaro cada pin como una variable con un nombre de fantasia, pero poner los valores directamente en el código. Si desea utilizar clavijas diferentes para su dispositivo GPRS, por ejemplo, cambiaría las clavijas en el punto en el código donde se crea el objeto GPRS. Aquí está el juego por el juego.

En primer lugar, declaramos nuestras bibliotecas y variables globales:

 #include <TinyGPS++.h>#include <APRS_Shield_Arduino.h>#include <Wire.h>#include <SoftwareSerial.h> 

A continuación, crear una instancia de tinygps ++ llamado 'gps'.

 TinyGPSPlus gps; 

A continuación, cree un objeto GPRS llamado 'gsm' en el puerto serial del software en las patillas 7 y 8 a 9600 bps

 GPRS gsm(7,8,9600); 

Por último, declarar todos los índices y cadenas

 int messageIndex = 0; char message[160]; char phone[16]; char datetime[24]; char latitude[12]; char longitude[12]; 

El bucle de configuración es bastante escaso, principalmente al inicializar el puerto serial del hardware para el GPS y luego girando en el escudo GSM por momentáneamente pulsando pin 9. Espero que recordó a la soldadura de la almohadilla del puente. Por último, desactivar el LED a bordo en el pin 13 para guardar jugo y potencialmente utilizar para indicar una falla en algún momento en el futuro.

 void setup() { Serial.begin(9600); pinMode(9, OUTPUT); digitalWrite(9,LOW); delay(100); digitalWrite(9,HIGH); delay(500); digitalWrite(9,LOW); delay(100); pinMode(13, OUTPUT); digitalWrite(13,LOW);} 

El loop() es bastante directa. Usando la biblioteca TinyGPS ++ ahorra un merecido de la codificación, manejo todos los datos GPS análisis con sólo dos líneas de código.

 void loop() { while (Serial.available() > 0) { gps.encode(Serial.read());} 

Después de eso, hacemos un llamamiento a la biblioteca de GPRS_SIM9000 a tomar todo el trabajo de comprobación de mensajes no leídos, leyendo y borrando la primera nos encontramos con cuatro líneas de código. La función readSMS() también cargas hasta nuestras variables globales para su uso posterior. Si hay más de un mensaje en espera, cada uno se obtener analiza en iteraciones posteriores del loop().

 messageIndex = gsm.isSMSunread(); if (messageIndex > 0) { gsm.readSMS(messageIndex, message, 160, phone, datetime); gsm.deleteSMS(messageIndex); 

Con el mensaje analizado y globales cargado, el texto entrante se compara con una cadena específica, continuando solo a una coincidencia exacta de la palabra mágica. Sin un partido, volver a la parte superior del lazo y empezar a cargar otra vez el objeto GPS con nuevos datos. Cambiar el texto dentro de las comillas Si desea utilizar otra palabra.

 if (String(message) == "xyzzy") { 

Si hay un partido, hacemos otra línea solo llamar a nuestro objeto GPS para determinar si tenemos una buena solución en nuestra posición.

 if (gps.location.isValid()) { 

Si así, respondemos con una URL a Bing maps. Prefieren utilizar Google, pero yo no he decidido cómo colocar un alfiler en el mapa con sólo una dirección URL. De todas formas, crear la URL sea el código más feo en el lazo. Tiene que haber algún tipo de malabarismo para obtener el número de precisión doble devuelto del objeto GPS en una cadena, por lo tanto, la función dtostrf() . Entonces es fuerza bruta sólo concatenación de cadenas.

La función strcpy() establezca la variable de mensaje al principio de la URL, luego strcat() continúa añadir bits a la misma variable de mensaje hasta que hemos terminado. Este es el bloque para cambiar si desea utilizar un servicio de asignación diferentes o formato su respuesta de manera diferente.

 strcpy(message, "http://www.bing.com/maps?"); strcat(message, "lvl=17&style=r&sp=point."); dtostrf(gps.location.lat(), 1, 6, latitude); strcat(message,latitude); strcat(message,"_"); dtostrf(gps.location.lng(), 1, 6, longitude); strcat(message,longitude); 

El texto entre comillas es la etiqueta que aparecerá en el objeto de mapa. Debe tener el subrayado circundante y utilizar el carácter "+" en lugar de los espacios. La siguiente línea añade la fecha y hora de la solicitud inicial.

 strcat(message,"_Golf+Cart_"); strcat(message,datetime);} 

Si no tenemos una solución, establecer el contenido de la variable de mensaje a otra cosa y enviarlo por el mismo número que hace la solicitud y cerrar todas las llaves.

 else { strcpy(message, "I'm sorry, Dave, I'm afraid I can't do that.");} gsm.sendSMS(phone,message);}}} 

Eso es todo. Volver a la cima del loop() y empezar.

Espero que esto explica el código bien bastante que alguien nuevo en el Arduinosphere puede comprender y modificar a sus necesidades. A continuación, instalación...

Artículos Relacionados

Arduino GPS/GSM Tracker (WatchDog activado)

Arduino GPS/GSM Tracker (WatchDog activado)

¿Qué es un GPS o GLONASS?Una unidad de seguimiento de GPS es un dispositivo, normalmente llevado por un vehículo móvil o persona, que utiliza el sistema de posicionamiento Global para determinar y rastrear su ubicación exacta, y por lo tanto de su po
VEHÍCULO de GPS/GSM TRACKER geográfica

VEHÍCULO de GPS/GSM TRACKER geográfica

El proyecto se basa en un Gsm/Gps/Gprs. Su función principal es detectar una entrada ilegal y comunicar su propia posición geográfica utilizando, en la opción, el sistema de referencia de celular o el GPS. Utilizo el producto reciente por SIMCOM - SI
Compacto de Arduino GPS Speedo + y más

Compacto de Arduino GPS Speedo + y más

así que decidí construir un dispositivo que podría utilizar en mi coche,un speedo GPS parecía una buena idea.Las piezas que utilicé en este build:-(Fake) Arduino Nano v3 ($10,99).-Módulo de GPS MT3339.-Gráfico LCD + conector ($5,00).-Recinto plástico
Arduino GPS en iPhone caso - construye tu propio! :)

Arduino GPS en iPhone caso - construye tu propio! :)

Hi All,Vuelve a nosotros volver a la pista. Esta vez nos fuimos pensando en algo que puede ser utilizado como un simple gadget que puede impresionar a los demás. Lo que tenemos aquí es un conjunto de belleza de escudos conectados a mi micro arduino f
Reloj de nixies Arduino GPS

Reloj de nixies Arduino GPS

En este proyecto, me gustaría compartir con ustedes mi versión de un reloj de tubo Nixie que es conducido por un Arduino UNO. Hacer que el tiempo tan preciso como sea posible que he utilizado un módulo GPS por Adafruit para recibir la hora atómica de
Sistema domótico con Arduino y GSM SIM900 módulo

Sistema domótico con Arduino y GSM SIM900 módulo

¡Hola! Ya casi he terminado mis estudios en la Facultad de ingeniería, tuve que hacer un proyecto de graduación y mi idea era hacer algo asombroso (sé que es muy gracioso: D) para mostrar a todos que soy una máquina prototipo buena y yo puedo convert
GPS Car Tracker - baratos y encubierta

GPS Car Tracker - baratos y encubierta

Me puse un reto esta semana! Construir una encubierta Diy GPS vehículo Tracker por menos de $20!¿Obviamente pude comprar e instalar un Cable tracker (o perseguidor batería) pero son bastante caro y Dónde está la diversión en eso? Quiero ver si puedo
Arduino GPS Datalogger

Arduino GPS Datalogger

¿desea registrar algunos datos GPS en una tarjeta SD usando su Arduino? ¿Ya tienes una microSD shield de Sparkfun y módulo de GPS? ¿Tratas de Adafruit Sheild (aunque es impresionante y barato) pero robaron todos sus pernos? ¿Queremos que la salida en
Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

Registrador de datos geo: Arduino + GPS + SD + acelerómetro para registrar, sello de tiempo y datos del sensor geo-tag

versiones17 de octubre de 2013: he publicado una guía sobre el uso de tu teléfono Android para llevar a cabo una tarea similar al aprovechar tu Android dispositivo de construido en GPS y sensores.06 de febrero de 2013: Aparece en GeoAwesomeness http:
Arduino Wireless GSM sistema de seguridad

Arduino Wireless GSM sistema de seguridad

Hola, aquí te mostraré mi sistema de seguridad gsm hice, tienes alguna experiencia con la electrónica de antemano. No dude en modificar este proyecto en cualquier forma que quieras. Todas las piezas se compran a DX.com.La razón de que su wireles es p
Arduino con GSM y el Sensor PIR (Inglés/Árabe)

Arduino con GSM y el Sensor PIR (Inglés/Árabe)

درس التحكم بالاردوينو عن طريق شبكة الجوالالمقدمة:يتيح لك ESTE الدرس استخدام شبكة الجوال للتحكم بضوء الليد بالمنزل عن طريق ارسال رسالة نصية وايضا استخدام الاردوينو للاتصال الاتوماتيكي من المنزل لجوالك عند استشعار اي حركة افضل الغرفة لسماع نوع الاصوات
Peggy - Arduino portátil tracker de lluvia RF

Peggy - Arduino portátil tracker de lluvia RF

Clima de mi país deja el sol brillar para la mayor parte del año, y secadoras no son ampliamente utilizados tan a menudo se utiliza para drenar las prendas al sol.¿Qué hacer cuando viene una lluvia repentina?Este proyecto se ha hecho para cualquier p
Perdido GPS Smart tracker - mascotas Anti

Perdido GPS Smart tracker - mascotas Anti

Un dispositivo de protección de sus mascotasØ seguimiento en tiempo Real-: muestra la última ubicación del dispositivo, haga clic en Actualizar información de ubicación para ver la última información de ubicación.Ruta histórica de Ø: Mostrar la ruta
Cohete supersónico - Mach mi día!

Cohete supersónico - Mach mi día!

¿Quiere romper la barrera del sonido, pero no tiene un avión de $ 100 millones para jugar con?¿La fuerza aérea no quiere o no desea que la fuerza aérea?¡No hay problema! También puede jugar Tirada Yeager en un presupuesto mucho más bajo, incluso si n