Archivo de noviembre 2007

Hoy no tengo mucho tiempo así que seré breve. Acabo de modificar un poquito el programa de la primera entrega del programa para el MTX65+G (recordar que lleva un modem Siemens XT65 en su interior).

java.jpg

 He añadido algún método nuevo a la clase:

initGPS (int segundosURC)

este método se encarga de activar el GPS (con el comando AT^SGPSS=1) y programamos al GPS para que nos envíe un mensaje URC con la posición GPS cada X segundos. En el ejemplo lo he configurado para actualizar la posición cada 5 segundos.

enviarSMS (String mensaje, String numero)

este método se encarga de enviar un SMS con el mensaje al número indicado en los parámetros pasados al método. Lo utilizaremos para enviar la posición GPS obtenida a nuestro número de teléfono.

Resumiendo, con esta segunda entrega, tenemos el programa de la siguiente manera:  el programa activa el GPS y va capturando posiciones. En el momento que recibe un SMS se envía a un número determinado la posición GPS también por SMS.

En una tercera y última entrega haré que sólo se envíe la posición GPS al número de teléfono que envíe un SMS al módem con un texto determinado, por ejemplo el texto “leerposicion”. También configuraremos el programita para que al recibir un SMS con el texto “activa” ponga a “1″ una de las señales GPIO digitales y cuando se reciba el texto “desactiva” la ponga a “0″. De esa forma nos será muy simple activar y desactivar un relé.
 

Aquí tenéis el programita para que quien quiera pueda darle un vistazo:  proyectoAlarma2 

 

Espero que os sean de interés estos posts ;-)

Comments 18 Comentarios »

Hace unos días puse que crearía un programita Java para el modem Siemens MTX65+G, ya sabéis el módem terminal que dispone de un módulo Siemens XT65 en su interior que a su vez incorpora un GPS.

Bueno, pues hoy os cuelgo una primera parte del programita que he hecho esta tarde-noche. En unos días os cuelgo la segunda parte. En esta primera entrega, los que no sabéis cómo programar nada de este módulo de Siemens, podéis utilizar este programita como una especie de plantilla para otras pequeñas aplicaciones que vosotros hagáis.

java.jpg

Realmente la aplicación que os cuelgo no hace casi nada, pero es la base para la aplicación final que recuerdo consistirá en que enviaremos un SMS con nuestro móvil al módem MTX65+G, éste lo recibirá y procesará, y si es un SMS válido cogerá la posición GPS y se la enviará también por SMS al móvil (típica aplicación de localización GPS). También haremos que podamos enviar un SMS desde el móvil y que el módem MTX65+G active o desactive una salida digital con la que activaremos / desactivaremos un relé, por ejemplo, para activar nuestro PC de forma remota ;-) .
 

Vale ¿pero qué puedo ver realmente esta primera entrega?

Lo mejor que puedes hacer es dar un vistazo al código fuente, lo he comentado todo para que sea muy clarito.

Algunas cositas del programa:

1.- He creado un timer en java para que veáis como se utilizan. El timer lo único que hace es sacar por el puerto serie del módem el valor de un contador cada segundo.

2.- Utilizo las clases ATCommand y ATList  (de Siemens) que son las que utilizaremos para enviar comandos AT al módem y procesar la respuesta (ATCommand) y la que utilizaremos (ATList) para procesar los mensajes URC (ya sabéis, un mensaje inesperado cuando se recibe una llamada entrante, un SMS, …)

3.- He creado el método setConfigInicial.
En este método configuramos el modem para nuestra aplicación. Enviamos el PIN si es necesario, activamos los mensajes URC para cuando entre un SMS, configuramos los SMS salientes como texto (no PDU) y activamos y configuramos un pin GPIO de salida.
 
 
¿Y cómo lo ejecuto?

Coge los archivos de la carpeta deployed ALARMA.jar y ALARMA.jad y cópialos dentro del módem.  Luego desde el hyperterminal ejecuta el comando AT:
AT^SJRA=”a:/ALARMA.jar”
 
 
¿Y qué veré?

Pues verás cómo en la ventana del hypertérminal algo como esto:

java-siemens-1.gif

es decir, aparece una linea de texto cada segundo.  Si puebas enviar un SMS al módem o haces una llamada, verás como aparecen los mensajes URC (en la figura anterior puedes ver como he hecho una llamada al MTX65+G mientras corría el programa).

Casi se me olvida, podéis bajaros el proyecto de aquí:  proyectoAlarma


Bueno, espero que aquellos que estáis un poco desorientados encontréis de interés esta primera entrega. Si tenéis dudas o comentarios ya me diréis ;-)

 

Comments 127 Comentarios »

Probablemente muchos de vosotros conozcáis los módulos procesados de Digi, especialmente los modelos ConnectCore 7U (antiguamente llamado UNC20), el ConnectCore 9U (antiguamente llamado UNC90) o el ConnectCore9M. Como curiosidad deciros estos módulos cambiaron de nombre a raíz de que la empresa española Sistemas Embebidos, ubicada en Logroño, y creadora de estos módulos, fuera adquirida hace pocos años por la empresa estadounidense Digi (propietaria también de muchas otras empresas como Rabbit, de reciente adquisición, o de Maxstream).

ccwi9c.gif

Estos módulos han ido evolucionando y han ido apareciendo distintas familias de módulos. Tenemos ahora el  ConnectCore 9C, ConnectCore Wi9C, ConnectCore 9P o el ConnectCore XP.  Afortunadamente las herramientas de desarrollo también han ido evolucionando y ahora han aparecido los llamados Jumper Start Kits (kits de desarrollo de iniciación). Estos kits poco o nada tienen que ver con la complejidad que tiene trabajar con los modelos CC7U y CC9U. Además, la documentación y los ejemplos de programación suministrados es muy superior a las versiones precedentes. Pero que muy superior. En general en todos pero ha mejorado especialmente en los modelos que funcionan bajo Linux.

He tenido la oportunidad de probar bastantes de estos módulos y sus entornos de desarrollo y la verdad, hay un antes y un después en cuanto a sencillez de uso gracias a estos Jumper Start Kits. Los Jumper Start Kits están disponibles para los modelos ConnectCore 9P, ConnectCore 9C y ConnectCore Wi9C.


¿Y qué características tienen los modelos ConnectCore9C, ConnectCoreWi9C y ConnectCore9P?

Pues el ConnectCore 9C tiene un procesador de 32bits de NetSilicon (propiedad de Digi), concretamente el modelo NS9360 funcionando a una velocidad de reloj de 155MHz. Dispone de hasta 128MB de SDRAM y 256MB de memoria Flash . Tiene un rango de temperaturas extendido, de -40 a 85 grados, lo que le convierte en un candidato idóneo en entornos hostiles en temperatura. En cuanto a Entradas / Salidas dispone de ethernet 10/100, controlador integrado LCD para pantallas TFT/SNT (SVGA), 4 puertos serie de alta velocidad (921kbps), 55 GPIOs, SPI, I2C, 2 puertos USB 2.0 (host y esclavo).

El Connect Core Wi9C es básicamente idéntico al anterior, pero incorpora además del puerto ethernet un módulo Wifi. Las aplicaciones apropiadas para este módulo son evidentes, aplicaciones en las que se requiera el uso de comunicaciones Wifi.

Por último tenemos el Connect Core 9P. Este módulo también es gobernado por el procesador NS9360 pero trabajando a una velocidad de reloj lijeramente superior, 177MHz. Dispone de hasta 128MB de SDRAM y 128MB de memoria Flash y de 8KB de memoria EEProm para el almacenaje de variables. Como entradas / salidas tiene puerto ethernet 10/100, controlador integrado LCD para pantallas TFT/SNT (SVGA), 4 puertos serie de alta velocidad (921kbps), 55 GPIOs, SPI (de hasta 11.25Mbps), I2C (hasta 400Khz), puerto USB 2.0 (host y esclavo), 4 salidas PWM y RTC con batería de backup. ¿Aplicaciones? Pues las aplicaciones son similares a las del CC9C. Este es un dispositivo de menor tamaño que los anteriores y en ocasiones puede resultar más conveniente. También es un dispositivo que dispone de un consumo algo inferior y una capacidad de procesado algo mayor.


¿Y para qué sistemas operativos están disponibles estos Jumper Start Kits?

Dentro de los ConnectCore 9C,Wi9C y 9P pueden correr 3 sistemas operativos. Por un lado el Sistema operativo NetSilicon (un sistema operativo en tiempo real), ó el sistema operativo Linux embedded (Linux no es tiempo real) y por último el Sistema  Operativo Windows CE 6.0 (El sistema operativo de Microsoft para sistemas embedded y que sí es tiempo real).


¿Qué sistema operativo elegir?

Pues la verdad es que esta es una buena pregunta. De los 3 sistemas operativos yo personalmente me quedo con 2, con los más conocidos, que son Linux embedded y Windows CE 6.0.   Y de entre estos dos, esto ya es muy a nivel personal, que los Linuxeros no se enfaden (que blogElectronica.com está alojado en un server Linux), pero blogElectronica, para desarrollo embedded, se queda con el Sistema Operativo Windows CE 6.0.  Aunque ambos tienen sus ventajas.  Por un lado Linux es un sistema operativo libre, open source, y no hay que pagar licencias. Pero por otro lado WindowsCE 6.0 es un sistema operativo más amigable, con documentación más ordenada (msdn de Microsoft) y puedes programar las aplicaciones en el lenguaje que te encuentres más cómodo, como Visual C++, C# o Visual Basic .net. Realizar aplicaciones gráficas con Windows CE tampoco tiene rival, es muy sencillo. De hecho probablemente aunque no lo sepas ya sabes programar en cierta manera buena parte de estos dispositivos, pues se programan con Visual Studio 2005.  Y sí … ya lo sé … hay que pagar licencia del Sistema Operativo por cada módulo … Pero bueno, tampoco es una barbaridad, el coste de una licencia de Windows CE (si compras un paquete de 100 licencias) es de unos 4 Euros (una sola licencia creo que son unos 7 Euros).
 
En fin, para elegir entre un sistema operativo u otro hay que poner en un lado de la balanza la comodidad, la sencillez de uso (para tener los menos dolores de cabeza posibles) y la velocidad de desarrollo para sacar un producto al mercado. En el otro lado de la balanza el coste de la licencia. A mi me pesa más lo primero, a otros, a lo mejor lo segundo. Como dije a principio, custión de gustos.

Si a alguien le interesa uno de estos equipos saber que el distribuidor oficial en España de Digi es Matrix Electrónica.

Espero que encuentres de interés estos módulos embebidos. ;-)

Comments 5 Comentarios »