Professional Documents
Culture Documents
Trabajo de Ttulo presentado a la Facultad de Ingeniera de la Universidad Catlica de Temuco Para Optar al Ttulo de Ingeniero de Ejecucin en Informtica -Temuco, 2006-
Presidente Comisin:
Profesor Gua:
Profesor Informante:
....................................................................................... Sr. Alejandro Mellado Gatica Ingeniero de Ejecucin en Informtica Magster en Telecomunicaciones ............................................................................... Sr. Luis Alberto Caro Valdivia Ingeniero Civil en Informtica
Temuco,...................................................................
Dedicado: A toda la gente que estuvo desde el comienzo Algunos siguen hasta hoy, Gracias Totales.
INDICE
INDICE DE CONTENIDOSi INDICE DE FIGURAS.vi INDICE DE TABLASviii
1. Anlisis del Proyecto.1 1.1. Descripcin general del proyecto.1 1.2. Objetivo general..2 1.3. Objetivos especficos y resultados...2 1.4. Justificacin..3
2. Microcontroladores.4 2.1. Qu es un Microcontrolador? ..4 2.2. Arquitectura bsica de los Microcontroladores..4 2.2.1. Arquitectura Von Neumann...4 2.2.2. Arquitectura Harvard6 2.3. Componentes de un Microcontrolador7 2.3.1. Procesador...7 2.3.1.1. 2.3.1.2. 2.3.1.3. CISC..7 RISC..8 SISC..8
ii
2.4. Puertas de E/S12 2.5. Reloj principal. 13 2.6. RECURSOS ESPECIALES. 14 2.6.1. Temporizadores o Timers..15 2.6.2. Perro guardin o Watchdog.. 15 2.6.3. Proteccin ante fallo de alimentacin o Brownout.16 2.6.4. Estado de reposo de bajo consumo. 16 2.6.5. Conversor A/D (CAD). 17 2.6.6. Conversor D/A (CDA). 17 2.6.7. Comparador analgico18 2.6.8. Modulador de anchura de impulsos o PWM18 2.6.9. Puertos digitales de E/S..18 2.6.10. Puertas de comunicacin.19 2.6.10.1. UART..19 2.6.10.2. USART19 2.6.10.3. Puerta Paralela..19 2.6.10.4. USB 19 2.6.10.5. BUS IC.. 19 2.6.10.6. CAN. 20
iii
3. LA FAMILIA DE LOS PIC . 21 3.1. Introduccin..21 3.2. La Familia PIC..21 3.2.1. Gama enana. PIC12CXXX..21 3.2.2. Gama baja. PIC16C5XX con instrucciones de 12 bits22 3.2.3. Gama media. PIC16CXXX con instrucciones de 14 bits22 3.2.4. Gama alta: PIC17CXXX con instrucciones de 16 bits 24
4. El Microcontrolador PIC12F675...25 4.1. Descripcin del Microcontrolador. 25 4.2. Conversin Anloga Digital (A/D). 26 4.2.1. Conversor A/D del PIC12F675...26 4.2.2. Registros de Configuracin.27
6. Java 31 6.1. Archivos Jar...32 6.2. Cmo crear un Archivo Jar? ..................................................................33 7. Que es un Socket? . 34 7.1. Socket TCP 34 7.2. Socket UDP 35 7.3. Diferencias principales entre TCP y UDP Sockets..36
iv
9. Servicio de Mensajes Cortos (SMS) 38 9.1. Definicin..38 9.2. Introduccin 38 9.3. Beneficios del Servicio de Mensajes Cortos (SMS).41 9.4. Elementos de la Red y su Arquitectura ..42 9.5. Elementos de Sealizacin. 45 9.6. Mensaje Corto Originado (MO - SM). 46 9.7. Mensaje Corto Terminado (MT - SM).46 9.8. Aplicaciones para SMS .46
11. Comandos AT.52 11.1.Control de llamadas. 52 11.2.Leer Mensajes. 52 11.3.Envi de Mensajes53 11.4.Leer un Mensaje SMS..54 11.5.Enviar un SMS.. 58
12.2.Descripcin de acciones61
13. Algunos Ejemplos de la Aplicacin Realizada. .63 13.1. Leyendo mensaje entrante (Aplicacin de Prueba)63 13.2. Pruebas de Mensajes (Aplicacin de Prueba).64 13.3. Salida de Llamada entrante (Aplicacin de Prueba)..65 13.4.Comprobando Puerto de Comunicaciones 66 13.5.Recepcin y envi de mensajes SMS67 13.6.Consultas SQL.. 68 13.7.Respaldo de la Base de Datos 69
14. Cdigos Fuentes 70 14.1. Cdigo Cliente Socket ..70 14.2. Cdigo Servidor Socket.. 72 14.3. Cdigo Conversin A/D, sensor de T.. 74 14.4. Cdigo Envi y Recepcin de Mensajes SMS.76
15. Conclusin. 87
16. Bibliografa 88
vi
INDICE DE FIGURAS
Figura 1. Arquitectura Von Neumann..4 Figura 2. Arquitectura Harvard.6 Figura 3. Gama Enana PIC12F675....22 Figura 4. Gama Media PIC16F84...23 Figura 5. El Microcontrolador PIC12F675.....25 Figura 6. Registro TRISIO....27 Figura 7. Registro ADCON0 ........27 Figura 8. Registro ANSEL....28 Figura 9. Sensor de T LM34...29 Figura 10. Crear Archivos JAR....33 Figura 11. Dispositivo Bluetooth DBT-122....37 Figura 12. Servicio de Bsqueda de Personas Paging ..40 Figura 13. Red Celular SMS44 Figura 14. Lectura de un Mensaje SMS ,54 Figura 15. Modelo de Compresin de un Mensaje SMS.57 Figura 16. Envo de un Mensaje SMS58 Figura 17. Modelo de Recepcin y Envo de Mensajes SMS60 Figura 18. Leyendo un Mensaje Entrante..63 Figura 19. Configuracin de la Memoria Interna..64 Figura 20. Llamada Entrante65 Figura 21. Comprobando el Puerto de Comunicaciones66 Figura 22. Recepcin y Envo de Mensajes SMS67
vii
viii
INDICE DE TABLAS
Tabla 1. Nuevas Tecnologa s..49 Tabla 2 . Estructura del Mensaje Recibido.55 Tabla 3 . Estructura del Mensaje Enviado.59
El uso de Celulares desde hace algunos aos dejo de ser objeto de lujo o status social en nuestro pas es mas se ha vuelto un instrumento indispensable para la comunicacin como bien seala la pagina www.mundoenlinea.cl que 6,1 de cada 10 Chilenos posee un celular y que los mensajes de texto o SMS durante el 2004 sumaron mas de 494 millones en nuestro pas se hace evidente que cada es mas necesaria la comunicacin y por consiguiente la integracin que de tecnologa y diversas aplicaciones que van haciendo del telfono celular el computador del futuro. Dentro de los servicios conocidos esta el de los juegos de azar, los mensajes a correos electrnicos, los envos de mensajes a concursos televisivos, etc. Todo esto es la respuesta a necesidades nacidas gracias al celular ya que este al integrar tecnologa y servicios es una herramienta comercial muy potente y de amplia gama de servicios. Es por esto que hay que aprovechar la tecnologa disponible y crear aplicaciones que satisfagan necesidades cotidianas.
Lograr la Interaccin del usuario con los procesos ligados al Microcontrolador por medio de mensajes cortos de texto SMS utilizando comandos programados para tales acciones.
1.- Controlar un Microcontrolador por medio del puerto de comunicaciones. 2.- Desarrollar una Aplicacin en Java que permita manejar informacin por medio del puerto de Comunicaciones. 3.- Desarrollar una Aplicacin en Java que permita el envo y recepcin de mensajes cortos de texto SMS. 4.- Integracin de Java y Microcontroladores.
1.4. Justificacin
Debido al explosivo uso de los celulares y la integracin que sufren estos a lo largo del tiempo es muy atractivo como programador utilizar esta herramienta como un medio para generar aplicaciones que sean tiles y aplicables al mercado actual, es por esto que crear una aplicacin que por medio de mensajes cortos de texto SMS se puedan controlar eventos por medio de un microcontrolador no es algo fuera de nuestro alcance y amplia nuestra capacidad de interaccin con el medio por ejemplo tal como podemos pedir el estado del tiempo por SMS podramos activar la alarma de la casa o bien si esta se activa recibir un mensaje con la alarma, tambin se podra utilizar en el control de frigorficos, etc. Son tantos los problemas que podran encontrar solucin con una aplicacin de este tipo solo es cosa de usar la imaginacin.
Un microcontrolador es un dispositivo electrnico capaz de llevar a cabo procesos lgicos. Estos procesos o acciones son programados en lenguaje ensamblador por el usuario, y son introducidos en este a travs de un programador.
La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria nica que contiene las instrucciones del programa y los datos.
Las principales limitaciones de esta arquitectura son: La longitud de las instrucciones es limitada por la unidad de longitud de datos por lo que se tiene que hacer varios accesos a memoria para buscar instrucciones complejas.
La velocidad de operacin esta limitada por el cuello de botella que se forma al tener un nico bus de datos e instrucciones.
La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta co nectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos. Ambos buses son totalmente independientes y pueden ser de distintos anchos.
Las ventajas de esta arquitectura son: a. Que el tamao de las instrucciones no esta relacionado con el de los datos, por lo que permite que cada instruccin solo ocupe una sola posicin de memoria de programa. b. Que la velocidad de acceso de aumenta al poseer acceso de instrucciones separado del acceso a los datos.
Es el elemento ms importante del microcontrolador y determina sus principales caractersticas, tanto a nivel hardware como software. Se encarga de direccionar la memoria de instrucciones, recibir el cdigo OP de la instruccin en curso, su decodificacin y la ejecucin de la operacin que implica la instruccin, as como la bsqueda de los operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales.
2.3.1.1.
CISC
Un gran nmero de procesadores usados en los micro controladores estn basados en la filosofa CISC (Computadores de Juego de Instrucciones Complejo). Disponen de ms de 80 instrucciones mquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos ciclos para su ejecucin. Una ventaja de los procesadores CISC es que ofrecen al programador instrucciones complejas que actan como macros, es decir, que si las tuvisemos que implementar con instrucciones bsicas, acabaramos con dolor de cabeza.
2.3.1.2.
RISC
Tanto la industria de los computadores comerciales como la de los microcontroladores estn decantndose hacia la filosofa RISC (Computadores de Juego de Instrucciones Reducido). En estos procesadores el repertorio de instrucciones mquina es muy reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del procesador.
2.3.1.3.
SISC
En los microcontroladores destinados a aplicaciones muy concretas, el juego de instrucciones, adems de ser reducido, es especfico, o sea, las instrucciones se adaptan a las necesidades de la aplicacin prevista. Esta filosofa se ha bautizado con el nombre de SISC (Computadores de Juego de Instrucciones Especfico).
Es una memoria no voltil de slo lectura cuyo contenido se graba durante la fabricacin del chip. Si tenemos idea de cmo se fabrican los circuitos integrados, sabremos de donde viene el nombre. Estos se fabrican en obleas que contienen varias decenas de chips. Estas obleas se fabrican a partir de procesos fotoqumicos, donde se impregnan capas de silicio y oxido de silicio, y segn convenga, se erosionan al exponerlos a la luz. Como no todos los puntos han de ser erosionados, se sita entre la luz y la oblea una mascara con agujeros, de manera que donde deba incidir la luz, esta pasar. Con varios procesos similares pero ms complicados se consigue fabricar los transistores y diodos micromtricos que componen un chip. El elevado coste del diseo de la mscara slo hace acons ejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.
10
2.3.2.2.
OTP
El microcontrolador contiene una memoria no voltil de slo lectura programable una sola vez por el usuario. OTP (One Time Programmable). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un PC. La versin OTP es recomendable cuando es muy corto el ciclo de diseo del producto, o bien, en la co nstruccin de prototipos y series muy pequeas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptacin mediante fusibles para proteger el cdigo contenido.
2.3.2.3.
EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en el caso de los OTP, con un grabador gobernado desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cpsulas son de material cermico y son ms caros que los microcontroladores con memoria OTP que estn hechos con material plstico.
11
2.3.2.4.
Se trata de memorias de slo lectura, programables y borrables elctricamente EEPROM (Electrical Erasable Programmable Read OnIy Memory). Tanto la programacin como el borrado, se realizan elctricamente desde el propio grabador y bajo el control programado de un PC. Es muy cmoda y rpida la operacin de grabado y la de borrado. No disponen de ventana de cristal en la superficie. Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito" que confieren una gran fle xibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El nmero de veces que puede grabarse y borrarse una memoria EEPROM es infinito, por lo que no es recomendable una reprogramacin contina. Son muy idneos para la enseanza y la Ingeniera de diseo. Se va extendiendo en los fabricantes la tendencia de incluir una pequea zona de memoria EEPROM en los circuitos programables para guardar y modifi car cmodamente una serie de parmetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta.
12
2.3.2.5.
FLASH
Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es ms pequea. A diferencia de la ROM, la memoria FLASH es programable en el circuito. Es ms rpida y de mayor densidad que la EEPROM. La alternativa FLASH est recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no voltil. Es ms veloz y tolera ms ciclos de escritura/borrado. Las memorias EEPROM y FLASH son muy tiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados en circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta.
Las puertas de Entrada y Salida (E/S) permiten comunicar al procesador con el mundo exterior, a travs de interfaces, o con otros dispositivos. Estas puertas, tambin llamadas puertos, son la principal utilidad de las patas o pines de un microprocesador. Segn los controladores de perifricos que posea cada modelo de microcontrolador, las lneas de E/S se destinan a proporcionar el soporte a las seales de entrada, salida y control.
13
Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la sincronizacin de todas las operaciones del sistema. Esta seal del reloj es el motor del sistema y la que hace que el programa y los contadores avancen. Generalmente, el circuito de reloj est incorporado en el Microcontrolador y slo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cermico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energa y de calor generado.
14
Temporizadores o Timers. Perro guardin o Watchdog. Proteccin ante fallo de alimentacin o Brownout. Estado de reposo o de bajo consumo (Sleep mode). Conversor A/D (Analgico ->Digital). Conversor D/A (Digital ->Analgico). Comparador analgico. Modulador de anchura de impulsos o PWM (Pulse Wide Modulation). Puertas de E/S digitales. Puertas de comunicacin.
15
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores).Para la medida de tiempos se carga un registro con el valor adecuado y a continuacin dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algn mltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patitas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos.
Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botn del reset y se reinicia el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continuada las 24 horas del da. El Perro Guardin consiste en un contador que, cuando llega al mximo, provoca un reset automticamente en el sistema.
16
Se debe disear el programa de trabajo que controla la tarea de forma que resetee al Perro Guardin de vez en cuando antes de que provoque el reset. Si falla el programa o se bloquea (si cae en bucle infinito), no se refrescar al Perro guardin y, al completar su temporizacin, provocar el reset del sistema.
Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentacin (VDD) es inferior a un voltaje mnimo (brownout). Mientras el voltaje de alimentacin sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. Esto es muy til para evitar datos errneos por transiciones y ruidos en la lnea de alimentacin.
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algn acontecimiento externo que le ponga de nuevo en funcionamiento. Para ahorrar energa, (factor clave en los aparatos porttiles), los microcontroladores disponen de una instruccin especial (SLEEP en los PIC), que les pasa al estado de reposo o de bajo
17
consumo, en el cual los requerimientos de potencia son mnimos. En dicho estado se detiene el reloj principal y se congelan sus circuitos asociados, quedando sumido en un profundo sueo. Al activarse una interrupcin ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.
Los microcontroladores que incorporan un Conversor A/D (Analgico/Digital) pueden procesar seales analgicas, tan abundantes en las aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas seales analgicas desde las patillas del circuito integrado.
Transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente seal analgica que saca al exterior por una de las patillas del chip. Existen muchos circuitos que trabajan con seales analgicas.
18
Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional que acta como comparador entre una seal fija de referencia y otra variable que se aplica por una de las patitas de la cpsula. La salida del comparador proporciona un nivel lgico 1 0 segn una seal sea mayor o menor que la otra. Tambin hay modelos de microcontroladores con un mdulo de tensin de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores.
Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a travs de las patitas del encapsulado.
Todos los microcontroladores destinan parte de su patillaje a soportar lneas de E/S digitales. Por lo general, estas lneas se agrupan de ocho en ocho formando Puertos. Las lneas digitales de las Puertos pueden configurarse como Entrada o como Salida cargando un 1 un 0 en el bit
19
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan:
2.6.10.1. UART, adaptador de comunicacin serie asncrona.(Ej: Puerto Serie) 2.6.10.2. USART, adaptador de comunicacin serie sncrona y asncrona 2.6.10.3. Puerta paralela esclava para poder conectarse con los buses de otros microprocesadores. 2.6.10.4. USB (Universal Serial Bus), que es un moderno bus serie para los PC. 2.6.10.5. Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
20
2.6.10.6. CAN (Controller rea Network), para permitir la adaptacin con redes de conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automviles. En EE.UU. se usa el J185O.
21
Los PIC son una familia de microcontroladores fabricados por Microchip cuya arq uitectura, capacidades, juego de instrucciones y especialmente su bajo costo lo hacen muy til en pequeas aplicaciones as como parte de otras aplicaciones de mayor envergadura sustituyendo a gran cantidad de circuitos lgicos convencionales.
Se trata de un grupo de PIC de reciente aparicin que ha acaparado la atencin del mercado. Su principal caracterstica es su reducido tamao, al disponer todos sus componentes de 8 patitas adems de disponer de 6 lneas de E/S. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones, respectivamente. Algunos modelos incluyen conversores A/D y memoria EEPROM de datos.
22
Con una memoria de programa (ROM o EPROM) de 12 bits y de 512, 1024 o 2048 palabras y una memoria de datos de 8 bits de 25, 72 o 73 bytes. Trabajan hasta 20 MHz y disponen de 12 o 20 lneas de E/S de alta corriente, un temporizador y de 33 instrucciones. Adems, como el resto de los PICs disponen de perro guardin, Autoinicilizacin (POR o Power on Reset), modo de bajo consumo (SLEEP), reloj interno mediante cristal o red RC y proteccin contra lectura del cdigo.
Es la gama ms variada y completa de los PIC. Abarca modelos con encapsulado desde 18 patas hasta 68, cubriendo varias opciones que integran abundantes perifricos. Dentro de esta gama se halla el famoso PIC16X84 y sus variantes.
23
El ancho de la memoria de programa es de 14 bits, pudiendo ser ROM, EPROM o EEPROM. Incluyen interrupciones, conversores A/D, mayor nmero de temporizadores y otras caractersticas segn el modelo. Su juego de instrucciones es de 35.
24
Estos microcontroladores poseen un verdadero bus de datos y direcciones, pudiendo trabajar con memoria externa. El ancho de la memoria de programa es de 16 bits y el nmero de instrucciones aumenta a 55 o 58 segn el modelo. Quizs la caracterstica ms destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliacin del microcontrolador con elementos externos. Para esto, las patitas sacan al exterior las lneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de perifricos. Esta facultad obliga a estos componentes a tener un elevado nmero de patitas comprendido entre 40 y 44. Esta filosofa de construccin del sistema es la que se empleaba en los microprocesadores y no suele ser una prctica habitual cuando se emplean microcontroladores.
25
Este Microcontrolador posee 8 pines en un encapsulado DIP, adems cuenta con una memoria de programa de 1k de 14bit de ancho, un oscilador interno de 4Mhz y 6 puertas de comunicacin GP0-GP5 siendo GP3 solo de entrada.
26
La conversin A/D es esencial en el uso de los microcontroladores ya que ellos solo pueden procesar informacin digital. Las seales Anlogas usualmente de sensores, tienen que ser convertidas a nmeros binarios para que el micro las pueda procesar. Los convertidores A/D son dispositivos electrnicos que establecen una relacin entre el valor de la seal en su entrada y la palabra digital obtenida en su salida. La relacin se establece en la mayora de los casos, con la ayuda de una tensin de referencia.
La mayor caracterstica de este Microcontrolador es poseer 4 canales para conversin A/D de 10bit (1024) que van desde AN0 AN3.
27
Figura 7.Registro ADCON0 El bit0 es el bit de status de conversin A/D El bit1 es el bit de status de conversin en progreso. Los bit2-3 son los bits selectores de canales Anlogos. El bit6 es el bit de Vref. 0 = vdd, 1= Vref pin. El bit7 es el bit de formato A/D 0 = izquierda, 1 = derecha.
28
Los bit0-3 son los bits selectores de Anlogos o Digitales 0 = Digital, 1 = Anlogo. Los bit4-6 son los bits selectores del clock de conversin.
29
Este es un sensor de temperatura de precisin. Esta calibrado para proveer una salida de 10mVolts por grado de temperatura. Puede medir temperaturas entre los -50 y los 128C.
30
Por ejemplo para transformar el valor entregado por el censor se utiliza la siguiente formula:
F = 9/5 * C + 32
32 F = 0 C Por Ejemplo:
31
6. Java
Java es el primer lenguaje que tiene la virtud de ser compilado e interpretado de forma simultnea. Cuando un programador realiza una aplicacin o un applet en Java y lo compila, en realidad, el compilador no trabaja como un compilador de un lenguaje al uso. El compilador Java nicamente genera el denominado ByteCode. Este cdigo es un cdigo intermedio entre el lenguaje mquina del procesador y Java. Evidentemente este cdigo no es ejecutable por s mismo en ninguna plataforma hardware, pues no se corresponde con el lenguaje de ninguno de los procesadores que actualmente se conocen (habr que esperar a ver qu ocurre con los procesadores Java). Por lo tanto, para ejecutar una aplicacin Java es necesario disponer de un mecanismo que permita ejecutar el ByteCode. Este mecanismo es la denominada Mquina Virtual Java. En cada plataforma (Unix, Linux, Windows 95/NT, Macintosh, etc.) existe una mquina virtual especfica. As que cuando el ByteCode llega a la mquina virtual, sta lo interpreta pasndolo a cdigo mquina del procesador donde se est trabajando, y ejecutando las instrucciones en lenguaje mquina que se deriven de la aplicacin Java. De este modo, cuando el mismo ByteCode llega a diferentes plataformas, ste se ejecutar de forma correcta, pues en cada una de esas plataformas existir la mquina virtual adecuada. Con este mecanismo se consigue la famosa multiplataforma de Java, que con slo codificar una vez, podemos ejecutar en varias plataformas.
32
6.1. Archivos JAR Un JAR es un formato de archivo empaquetado estndar que permite entre otras cosas ordenar el cdigo precompilado.
Los parmetros ms usados son: c: Crea un nuevo contenedor v: Genera salida detallada en salida estndar f: Especifica nombre de archivo contenedor m: Incluir informacin del archivo manifest especificado
Un Archivo manifest contiene una estructura definida con varios parmetros que indican informacin sobre el contenido del paquete. El parmetro ms usual es Main-Class que indica la clase que se ejecuta por defecto al ejecutar el paquete completo, de esta forma el paquete funciona como si fuera un archivo ejecutable (*.EXE) multiplataforma.
33
34
7. Qu es un socket?
Todos hemos odo hablar de la palabra winsock, winsockets, o socket a secas. Tiene una mala traduccin: al pie de la letra es "enchufe", y en algunos sitios, lo traducen por conexin, canal, o palabras similares.... Un socket no es nada ms que la combinacin de una mquina y un puerto, con otra mquina (que puede ser incluso la misma) y otro puerto. Aqu nos surge un nuevo concepto: puerto. Vamos a hablar un poco de l, antes de retomar la pregunta anterior.
7.1. Qu es un puerto?
Veamos el concepto nicamente bajo el sentido del TCP/IP. Puerto, no es nada ms que un numero de 16 bits. Por tanto un nmero entre 1 y 65535 (2 elevado a 16 menos 1)
Para qu sirven?.... Depende de la aplicacin o del programa que quiera usar ese puerto. Los puertos 1024 hacia abajo estn reservados a las rutinas del sistema operativo, o mejor dicho a los programas estndares del TCP/IP.
35
Las RFC son los documentos en los que se empez a publicar el estndar TCP/IP. En ellos se han definido (y se van definiendo), todos los estndares del protocolo, y podemos considerarlos como la "Biblia" que hay que respetar al pie de la letra (si no, el TCP no funcionara...)
En dichas especificaciones, estn definidos los servicios bsicos que nos suministra o puede suministrar una mquina con ese protocolo. En ellas, estn definidas las funcionalidades de los puertos 1024 e inferiores. Por ejemplo, el puerto 80 se reserva para un posible servidor web. El 21 para un posible servidor ftp. Etc.... 7.2. Tipos de sockets:
TCP sockets (En Java implementados en la clase Socket): Ofrecen una comunicacin fiable y libre de errores, garantizando que los mensajes llegarn ordenados, sin duplicados y sin prdidas. Antes de comenzar la transmisin necesitan una fase previa de establecimiento de la conexin.
UDP sockets (User Datagram Protocol en Java implementados en la clase DatagramSocket): Ofrecen un servicio no fiable de comunicacin. Los paquetes pueden llegar duplicados, desordenados, o pueden perderse sin llegar a su destino. La comunicacin es mucho ms rpida que en los TCP Sockets, y no necesitan una fase de establecimiento de conexin.
36
1. Los sockets UDP no hacen diferenciacin entre mquina cliente o servidor. Utilizan la misma clase de socket para el envo de datos y la escucha de conexiones entrantes. 2. Los sockets UDP no permiten tratar la conexin de red como un stream(flujos), es decir, UDP siempre trabaja con paquetes datagrama individuales. 3. Un socket datagrama puede recibir datos desde mltiples host diferentes. El socket no est dedicado a una nica conexin como los TCP.
37
8. Bluetooth
8.1. Caractersticas
Bluetooth -Diente Azul- es una te cnologa de transmisin de datos que permite la creacin de Redes de rea Personal (Personal Area Networks), permitiendo a los usuarios transmitir datos a una velocidad de 1 Mbps hasta una distancia de 100 metros en la frecuencia de 2,4 GHz.
38
Servicio de Mensajes Cortos (SMS) es servicio inalmbrico aceptado globalmente este permite la transmisin de mensajes alfanumricos entre clientes de telfonos mviles y sistemas externos tales como correo electrnico, paging (Servicio de radio unidireccional que permite el envi de mensajes escritos para los aparatos de paging numricos o alfanumricos) y sistemas de mensajes de voz.
9.2. Introduccin
SMS apareci en escena en 1991 en Europa, donde la tecnologa inalmbrica digital echo races. El Standard Europeo para inalmbrica digital, es ahora conocida globalmente como el Standard para mviles (GSM), incluye el servicio de mensajera corta desde el principio. En Norte Amrica, SMS estuvo disponible en las redes inalmbricas digitales construidas por los primeros pioneros tales como BellSouth Mobility y Nextel. En 1998, con el desarrollo de las redes basadas en GSM como el servicio de comunicacin personal (PCS), cdigo de acceso por divisin mltiple (CDMA), y acceso por divisin de tiempo (TDMA), estos mtodos ayudaron a la completa implementacin del SMS.
39
El SMS punto a punto provee un mecanismo para transmitir mensajes cortos de y hacia equipos Mviles (Celulares). Tras el envo de un mensaje, este no sigue directamente para el destinatario sino para un centro de mensajes (SMSC), que lo almacena y enva posteriormente. Este centro hace tambin la cobranza posterior del servicio. El centro de mensajes reencamina despus el mensaje para el destinatario, cuando el mvil est conectado a la red. De esta manera y al contrario de los servicios de "pager" es posible tener la certeza que el mensaje lleg a su destino, porque el centro de mensajes puede notificar el remitente caso la operacin falle.
Una caracterstica del servicio es que en un equipo Mvil activo es capaz de recibir o enviar un mensaje corto en cualquier momento, independiente si hay o no una llamada de voz o datos en progreso. SMS tambin garantiza la entrega de los mensajes cortos por la red. Errores temporales son identificados y el mensaje es guardado en la red hasta que el destino este disponible.
SMS esta caracterizado por entrega de paquetes fuera de banda y un bajo uso del ancho de banda para la transferenc ia de mensajes. Las primeras aplicaciones de SMS estaban enfocadas en eliminar el sistema alfanumrico pager el cual es un sistema de bsqueda de personas tipo Beeper que permita una comunicacin unidireccional, en cambio SMS permite mensajera en las dos direcciones y servicios de notificacin,
40
principalmente mensajes de voz. Al madurar la tecnologa y las redes se fueron agregando una variedad de servicios como el correo electrnico y la integracin del fax, servicios de bsqueda, bancos interactivos y servicios de informacin. Aplicaciones de inalmbricas tales como el modulo de identidad del subscriptor (SIM) con capacidades de realizar acciones de activacin, debito y edicin de perfil.
41
Los beneficios del servicio SMS para el proveedor son los siguientes:
El aumento de llamadas gracias a las capacidades de notificacin del SMS en las redes inalmbricas.
Activa el acceso inalmbrico a datos para usuarios de empresas. Provisiones de servicios con valor agregado como el e-mail, buzn de voz, la integracin de fax, etc.
Proporciona una herramienta administrativa para servicios como avisos de precios, descargas en forma inalmbrica.
Los beneficios del SMS a los clientes se centran en la conveniencia, flexibilidad y la integracin de servicios de mensajes y acceso a datos. Desde esta perspectiva, el beneficio es ser capaz de usar un equipo mvil como una extensin del computador.
42
Los elementos de red necesarios para proveer el servicio SMS, son: Las Entidades de Mensajera Corta (Short Messaging Entities - SME): Es una entidad que puede enviar o recibir mensajes cortos. Puede ser localizada en la red fija, la estacin mvil u otro centro de servicio. El Centro de Servicio de Mensaje Corto (Short Message Service Center - SMSC) es el responsable de la transmisin, almacenamiento y envo de mensajes cortos entre el SME y la estacin mvil. El Centro de Conmutacin Mvil SMS (SMS Gateway/Interworking Mobile Switching Center - SMS GMSC) es un centro de conmutacin de mensajes encargado de recibir el mensa je del SMSC, interrogar al registro de localizacin local por la informacin de encaminamiento, y entregarlo al MSC que da servicio a la estacin mvil. Registro de Localizacin Local. (Home Location Register - HLR): Es la base de datos para el almacenamiento permanente y manejo de perfiles de servicio y subscripciones. El HLR provee la informacin de encaminamiento hacia el cliente indicado. El HLR tambin informa al SMSC del intento de entrega de un mensaje corto a una estacin mvil que ha resultado fallido. Registro de Localizacin del Visitante (Visitor Location Register - VLR): El VLR es la base de datos que contiene la informacin temporal acerca de los cliente s. Esta informacin se necesita por el MSC (Mobile Switching Center - MSC) que ejecuta las funciones de conmutacin del
43
sistema y las llamadas de control hacia y desde otros telfonos o sistemas de datos. Estacin Base del sistema. (Base Station System - BSS): Todas las funciones relacionadas con la radio se ejecutan en la BSS, la cual consiste en unos controladores de estacin base (Base Station Controllers - BSCs) y estaciones base transceptoras (Base Transceiver Stations - BTSs) que se encargan de transmitir la voz y el trafico de datos entre las estaciones mviles. La Estacin Mvil (Mobile Station - MS): Es el terminal inalmbrico capaz de recibir y originar mensajes cortos, as como llamadas de voz. La infraestructura de sealizacin de la red inalmbrica est basada en el Sistema de Sealizacin N 7 (SS7).
Sistema de Sealizacin N 7 (Signalig System 7 SS7). SMS hace uso de la Parte de Aplicacin Mvil (Mobile Application Part - MAP), la cual define los mtodos y mecanismos de comunicacin en redes inalmbricas y usa los servicios de la Parte de Aplicacin de Capacidades de Transaccin de SS7 (SS7 Transaction Capabilities Aplication Part - TCAP). La capa de servicio de SMS hace uso de las capacidades de sealizacin del MAP y habilita la transferencia de mensajes cortos entre entidades pares.
44
45
Una vez un mensaje se enva, es recibido por el Centro de Servicio de Mensaje Corto (SMSC) que debe enviarlo entonces al dispositivo mvil apropiado. Para hacer esto, el SMSC enva un requerimiento de SMS al registro de localizacin (HLR) para encontrar al cliente. Una vez el HLR recibe la llamada, responde al SMSC informando el estado del cliente: inactivo o activo y en dnde est. Si la respuesta es inactivo, entonces el SMSC almacenar el mensaje por un periodo de tiempo y cuando el cliente activa su dispositivo, el HLR enva una notificacin de SMS al SMSC, que intentar la entrega. Si el estado es activo, entonces el sistema llama al dispositivo, y si responde, el mensaje se entrega. El SMSC recibe la verificacin de que el mensaje se recibi por el usuario terminal y etiqueta el mensaje como enviado para no tratar de enviarlo de nuevo.
46
Los MO-SM se transportan desde el dispositivo mvil hacia el SMSC y pueden ser destinados a otros Clientes de mviles, o situados en redes fijas.
Los MT-SM se transportan desde el SMSC hacia el dispositivo mvil, y pueden ser entregados al SMSC por abonados mviles o por otros medios.
Por ejemplo es muy comn utilizar las pginas Web gratuitas que tienen muchos ISPs para crear SMS.
Los SMS fueron inicialmente diseados para soportar mensajes de tamao limitado, en la mayora de los casos notificaciones o paginas alfanumricas, pero se estn descubriendo nuevos usos, que han hecho que este mercado explote.
47
notificacin usando SMS son los mensaje de notificacin de correo de voz, notificacin de correo electrnico, recordatorio de citas, horarios de reuniones, etc.
48
a los operadores administrar sus clientes al proveerlos de la capacidad de programar las estaciones mviles.
Servicios de localizacin: La habilidad de rastrear la localizacin de un objeto mvil, o de un usuario, es muy valiosa tanto para los proveedores como para los clientes. Esta aplicacin, de nuevo, solo necesita un intercambio de pequeas cantidades de informacin, tales como la longitud y latitud en un momento preciso del da, y quizs otros parmetros como velocidad, temperatura o humedad.
49
10.
Nuevas Tecnologas
Gen
Frecuecia
800
Kbps Tecnologa
AMPS 9.6 (Advanced
Caract.
analgica y
Obs.
La calidad de los
MHz
estrictamente para enlaces era muy baja (2400 bauds). la seguridad no exista
800
Se pueden ofrecer Soportan servicios auxiliares, como datos, fax y SMS (Short Message Service) velocidades de informacin ms altas por voz, pero limitados en comunicacin de datos.
1900
56 a 144
GPRS EDGE
2.5
MHz
50
51
El principal problema de esta tecnologa resulta de su incompatibilidad con los aparatos GSM existentes, inclusive con los que ya soportan el protocolo WAP para acceso a la Internet. Asimismo, pocos son los modelos con tecnologa GPRS. EDGE (Enhanced Data for Global Evolution): Tecnologa que facilita a las redes GSM y TDMA la capacidad de suministrar servicios de telefona mvil de tercera generacin. El EDGE utiliza una tcnica de modulacin de frecuencias electromagnticas que junto a evoluciones en el protocolo de radio permite a los operadores usar los espectros de las frecuencias 800, 900 y 1800 Mhz de manera ms eficiente. EDGE soporta la transmisin de datos, servicios y aplicaciones multimedia.
52
11.
Comandos AT
11.1.Introduccin
Una herramienta fundamental en el proyecto es el uso de comandos AT ya el equipo mvil recomunica con la aplicacin a trav s de estos estableciendo una conversacin del tipo pregunta respuesta, ya que todo comando enviado al equipo mvil generara una respuesta inmediata lo que se traduce mas tarde en poder generar la lista de parmetros necesarios para leer y enviar mensaje SMS.
11.2.Control de Llamada Estos son algunos de los comandos mas comunes para el control de llamadas.
53
11.3.Comandos SMS Estos son los comandos que hacen posible el envi y recepcin de mensajes de texto SMS.
AT+CMGS="N del Receptor", Mensaje AT+CPMS ="ME","ME" Configura la memoria 1 y memoria 2 como la memoria interna del celular.
AT+CMGL=? Listado de comandos para ver msj en distintas carpetas. +CMGL: ("REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL")
54
Para Telfonos Mviles, SMS usa el codificado PDU en el cual el mensaje es encapsulado. Esta estructura se le da al Telfono Mvil para realizar el evento de enviar o recibir mensajes SMS. 11.4. Leer un Mensaje SMS
Figura 14.Lectora de un Mensaje SMS El comando AT+CMGR=1 lee el mensaje la de ubicacin 1. Cada ves que llega un nuevo mensaje es indexado en una direccin de memoria del Telfono Mvil.
55
Byte
Dato N = 6,
Definicin
Largo del SMSC - N 0 06 "91" - 1 byte Tamao del SMSC + Numero. "56 89 45 00 02" - 5 bytes Tipo de numero SMSC
0x81 numero de plan por defecto 1 91 numero Internacional 0x91 numero Internacional
0xA1 Numero de plan Nacional 2-6 7 8 5689450002 04 0A Numero SMSC = +65-98540020 Siempre es 04 M = 10 bytes El Numero SMSC actual Primer Octeto del msj. SMS El largo del tipo y numero del remitente
0xA1 - Numero de plan Nacional El numero del remitente actual : +6510 to 14 5669719328 96173982 15 16 00 00 Protocolo identificador Esquema de cdigo de datos Numero del remitente.
56
Dias y Horas .
14:27:25:32 Hora Largo del Msj. Actualmente recibido, 24 05 en este caso "Hello" Este es el Nuevo Mensaje Recibido 25 to 29 C8329BFD06 "Hello" formato de 7 bits Mensaje Actual R ecibido codificado en Largo del Msj. Actual en hexadecimal.
57
El mensaje recibido es representado por un formato de 7 bit. El mensaje "Hello" seria representado por la cadena "0x48 0x65 0x6C 0x6F" de 7 bits.
58
Para enviar un mensaje SMS, se usa el Comando GSM: AT+CMGS Ejemplo de lectura en el HyperTerminal.
Figura 16.Envo de un Mensaje SMS El comando AT+CMGS = 27, pre -notifica al Celular que el PDU que ser enviado contiene 27 bytes de datos.
El dato pasado al Telfono despus del "AT+CMGS" contiene al PDU. La siguiente figura muestra la estructura del mensaje enviado:
Facultad de Ingeniera. Carrera de Ingeniera de Ejecucin en Informtica Byte Dato Lo que significa el dato
59
Definicin
Largo del Informacin SMSC. Aqu el Usa la Informacin SMSC interna del 0 00 celular guardado en el telfono tiene que ser usado. 1 11 Siempre 11 Primer octeto del envi de mensaje. Mensaje de referencia. El valor "00" 2 00 configura el numero de mensaje por referencia del telfono. largo es 0, lo que significa que el SMSC
Largo total de "A1" + "5669719328" = 10 3 0A bytes Largo del tipo y del nmero de recipiente.
60
Cumpliendo el objetivo general del proyecto se realizo una aplicacin que interacta con los procesos ligados a los microcontroladores por medio de mensajes de texto SMS. Para ello se realizo una aplicacin en Java que acta como servidor el cual esta encargado de interactuar por medio de comunicacin serial con un microcontrolador en este caso el 12F675 y con un telfono mvil.
61
Un usuario de telefona mvil solicita un servicio de temperatura por medio de mensaje de texto SMS.
El mensaje SMS es recibido por el dispositivo mvil conectado al servidor (MODEM con soporte para SMS o bien un telfono mvi l con cable de datos o bluetooth).
El dispositivo mvil acusa la recepcin de un mensaje SMS por medio de comandos AT que son enviados por Bluetooth al puerto serial virtual generado para este propsito.
El servidor interpreta el comando AT y le enva al dispositivo mvil un nuevo comando pidiendo leer el mensaje entrante.
El dispositivo mvil enva el mensaje al servidor. El servidor lee el mensaje si este contiene el texto temperatura llama al microcontrolador el cual le enva la temperatura actual al servidor.
Una vez obtenida la temperatura ambiente el servidor procede a enviarla por medio de comandos AT al dispositivo mvil.
El dispositivo mvil se encarga de realizar el envo del mensaje con la temperatura generada por el servidor.
62
Una variacin del modelo de recepcin y envi sucede cuando al recibir un mensaje SMS el texto contenido en este no corresponda a ni un servicio prestado por el servidor por lo que no responder el mensaje recibido al remitente.
63
13.
A continuacin se muestran las pantallas con las salidas de datos correspondientes a la aplicacin en su etapa de pruebas y etapa final.
Aqu se ve la informacin tal cual es enviada por el dispositivo mvil al servidor de mensajes.
64
Esta es una prueba de la configuracin de la memoria interna del dispositivo mvil para el envi y recepcin de mensajes.
65
66
Cuando el programa se activa busca la conexin con el dispositivo mvil aqu vemos el puerto com4 que es el puerto serial por defecto para el dispositivo Bluetooth en este caso.
67
Una ves recibido un mensaje el servidor valida que sea un comando conocido y acta segn el resultado.
68
13.6.Consultas SQL
Aqu vemos distintas opcione s para consultar a una base de datos la cual se encarga de registrar los mensajes entrantes, estos pueden ser consultados por da, meses anteriores, mes actual, temperaturas enviadas y otros mensajes.
69
La informacin de la base de datos puede ser respaldada en la opcin Respaldar BD., para ello se utilizo por medio de la ejecucin de un archivo BAT el compresor ARJ muy utilizado en la poca del sistema operativo DOS.
Figura 24.Respaldo BD
70
14.
Cdigo Fuente
public String host= "127.0.0.1"; // Defino donde esta el server (localhost) *********************************************************** // conectarse al servidor y procesar mensajes del servidor public void ejecutarCliente() { // conectarse al servidor, obtener flujos, procesar la conexin try { conectarAServidor(); // Paso 1: crear un socket para realizar la conexin obtenerFlujos(); // Paso 2: obtener los flujos de entrada y salida
procesarConexion(); // Paso 3: procesar la conexin } // el servidor cerr la conexin catch ( EOFException excepcionEOF ) { System.err.println( "El cliente termino la conexin" ); }
// procesar los problemas que pueden ocurrir al comunicarse con el servidor catch ( IOException excepcionES ) { excepcionES.printStackTrace(); } finally { cerrarConexion(); // Paso 4: cerrar la conexin }
71
// conectarse al servidor private void conectarAServidor() throws IOException { mostrarMensaje( "Intentando realizar conexin\n" );
// crear Socket para realizar la conexin con el servidor cliente = new Socket( InetAddress.getByName( servidorChat ), 12345 );
// obtener flujos para e nviar y recibir datos private void obtenerFlujos() throws IOException { // establecer flujo de salida para los objetos salida = new ObjectOutputStream( cliente.getOutputStream() ); salida.flush(); // vacar bfer de salida para enviar informacin de encabezado // establecer flujo de entrada para los objetos entrada = new ObjectInputStream( cliente.getInputStream() ); mostrarMensaje( "\nSe recibieron los flujos de E/S\n" ); }
72
14.2.Servidor Socket
// configurar y ejecutar el servidor public void ejecutarServidor() { // configurar servidor para que reciba conexiones; procesar las conexiones try { // Paso 1: crear un objeto ServerSocket. // ServerSocket(Puerto,LongitudCola) servidor = new ServerSocket( 12345, 100 ); while ( true ) {
try { esperarConexion(); // Paso 2: esperar una conexin. obtenerFlujos(); } // Paso 3: obtener flujos de entrada y salida. procesarConexion(); // Paso 4: procesar la conexin.
// procesar excepcin EOFException cuando el cliente cierre la conexin catch ( EOFException excepcionEOF ) { System.err.println( "El servidor termin la conexin" ); } finally { cerrarConexion(); // Paso 5: cerrar la conexin. ++contador; } } // fin de instruccin while
73
} // fin del bloque try // procesar problemas con E/S catch ( IOException excepcionES ) { excepcionES.printStackTrace(); }
// esperar que la conexin llegue, despus mostrar informacin de la conexin private void esperarConexion() throws IOException { mostrarMensaje( "Esperando una conexin\n" ); conexion = servidor.accept(); // permitir al servidor aceptar la conexin mostrarMensaje( "Conexin " + contador + " recibida de: " + conexion.getInetAddress().getHostName() ); } // obtener flujos para enviar y recibir datos private void obtenerFlujos() throws IOException { // establecer flujo de salida para los objetos salida = new ObjectOutputStream( conexion.getOutputStream() ); salida.flush(); // vaciar bfer de salida para enviar informacin de encabezado // establecer flujo de entrada para los objetos entrada = new ObjectInputStream( conexion.getInputStream() ); mostrarMensaje( "\nSe recibieron los flujos de E/S\n" ); }
74
include "modedefs.bas"
DEFINE OSC 4 deFINE OSCCAL_1K 1 TRISIO = %00000011 ADCON0 = %01000001 ANSEL = %00010001 CMCON =%00000111 nCmd Var Byte nVal var Byte nTI VAR BYTE nTD VAR BYTE ' GPO como etrada GP2 salida ' Vref activado, AN0 A/D pines 3,2 ' seteo AN0 como Analogo y FOCS/8 ' Comparadores = OFF
nCmd = $FE : nVal = 0 ini: ADCON0.1 = 1 loop: if ADCON0.1 = 1 then loop nTI=(((ADRESH-32)*5)/9) nTD=(((ADRESH-32)*5)//9) ' da inicio a la conversion A/D
if nTI >= 27 then high GPIO.4 HIGH GPIO.5 Serout GPIO.2,N9600,[#nTI,".",#nTD,10] Pause 1000
75
else low GPIO.4 low GPIO.5 Serout GPIO.2,N9600,[#nTI,".",#nTD,10] pause 1000 endif goto ini end
76
package msms; import java.io.*; import java.util.*; import javax.comm.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;
class SimpleRead implements Runnable, SerialPortEventListener{ static CommPortIdentifier portId; static Enumeration portList; static OutputStream outputStream; static boolean outputBufferEmptyFlag = false; static String defaultPort = "COM4"; static InputStream inputStream; static SerialPort serialPort; static String nOpcion = "AT\r"; static boolean lIni = true; static String smsInd = ""; static String smsInd2 = ""; static String smsRemitente = ""; Thread t; Thread readThread; JTextArea jTextArea1 = new JTextArea();
77
boolean
portFound = false;
portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals(defaultPort)) { System.out.println("Found port: "+defaultPort); jTextArea1.append("Puerto Encontrado: "+defaultPort+"\n"); portFound = true; try { serialPort = (SerialPort) portId.open("SimpleReadApp", 0); } catch (PortInUseException e) {}
serialPort.notifyOnDataAvailable(true); try { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} System.out.println("FC. LEE "); try {
78
outputStream = serialPort.getOutputStream(); } catch (IOException e) {} try { inputStream = serialPort.getInputStream(); } catch (IOException e) {} try { serialPort.addEventListener(this); } catch (TooManyListenersException e) {} serialPort.notifyOnDataAvailable(true); } } } if (!portFound) { System.out.println("port " + defaultPort + " not found."); jTextArea1.append("Puerto " + defaultPort + " No Funciona.\n"); } SwingUtilities.invokeLater( new SalidaRunnable(Marco1.jTextArea1, jTextArea1.getText() ) ); }
public void run() { System.out.println("ESCUCHANDO..."); SimpleRead(); SimpleWrite sw2= new SimpleWrite(outputStream,nOpcion); Thread thread2 = new Thread(sw2); thread2.setDaemon(true); thread2.start();
while(true)
79
case SerialPortEvent.RI:
case SerialPortEvent.DATA_AVAILABLE:
80
byte[] readBuffer = new byte[220]; // buffer de largo 220 try { while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer);
} String str= new String(readBuffer); if( lIni){ nOpcion ="ATE0\r"; SimpleWrite sw0 = new SimpleWrite(outputStream, nOpcion); nOpcion ="AT+CNMI=2,1,0,0,0 \r"; sw0 = new SimpleWrite(outputStream, nOpcion); nOpcion ="AT+CMGF=1\r"; sw0 = new SimpleWrite(outputStream, nOpcion); nOpcion = "at+cpms=\"ME\" ,\"ME\"\r"; sw0 = new SimpleWrite(outputStream, nOpcion); nOpcion ="at+cmgl=\" REC UNREAD\"\r"; sw0 = new SimpleWrite(outputStream, nOpcion); lIni=false; } if(str.indexOf("OK")!=-1 ) { jTextArea1.append("OK \n"); System.out.println("OK"); }
81
System.out.println("ERROR Encontrado"); } if(str.indexOf("CMGS")!=-1 ) // aviso de envio de MSJ { jTextArea1.append("MSJ Enviado \n"); System.out.println("MSJ Enviado ");
} if(str.indexOf("CMTI") !=-1) // aviso de msj recibido { smsInd = str.substring(14,16); jTextArea1.append("MSJ Recibido :"+smsInd.trim()+"\n"); if(smsInd.endsWith(",")){ smsInd = smsInd.substring(14,15); } nOpcion = "at+cpms=\"ME \",\"ME\"\r"; SimpleWrite sw1 = new SimpleWrite(outputStream, nOpcion); nOpcion = "at+cmgr="+smsInd.trim()+" \r"; sw1 = new SimpleWrite(outputStream, nOpcion);
if ( (str.indexOf("UNREAD") != -1)) { smsRemitente = str.substring(23, 34); if (smsRemitente.indexOf(" \"") != -1) { smsRemitente = smsRemitente.substring(0, 8); } else{
82
smsRemitente = smsRemitente.substring(3, 11); } } String strsms = new String(readBuffer); if (str.lastIndexOf("\r") != -1) { int numBytess = inputStream.read(readBuffer); strsms = new String(readBuffer); strsms = strsms.toLowerCase(); strsms = strsms.substring(0,strsms.indexOf("\r")); jTextArea1.append("\n MSJ: " + strsms.trim() + " \n");
if (strsms.indexOf("temperatura") != -1){ StringBuffer buffer = new StringBuffer(smsRemitente); char arreglo[] = new char[buffer.length()]; buffer.getChars(0, buffer.length(), arreglo, 0); //****Pido la t al micro**** SwingUtilities.invokeLater(new Micro());
//****Inicializo el modem para envio de datos**** nOpcion = "AT+CPMS=\"SM\",\"SM\"\r"; //Configuro para el envio de Msj SimpleWrite sw2 = new SimpleWrite(outputStream, nOpcion); nOpcion = "AT+CSCA=\"+5698890005\"\r"; // servidor de MSJ SMS sw2 = new SimpleWrite(outputStream, nOpcion); nOpcion = "AT+CMGS=\"" + smsRemitente + "\",\r"; sw2 = new SimpleWrite(outputStream, nOpcion);
//**********Llama al Micro*****************************
83
BufferedReader in = new BufferedReader(new FileReader("out.txt")); String line; String tempe = ""; //= jTextArea1.getText().replaceAll("\r\n?", "\n"); while ( (line = in.readLine()) != null) { tempe += line; } in.close(); jTextArea1.append(tempe + "\n"); //*****Envio la temperatura******* nOpcion = "LA T ES:" + tempe + " \032"; sw2 = new SimpleWrite(outputStream, nOpcion); jTextArea1.append("\n TEMPERATURA ENVIADA \n"); //****** Registro() Almacena El Msj En la BD.************ SwingUtilities.invokeLater( new Registro(smsRemitente,"Temperatura : "+tempe+"" ) ); }
else { // si no es MSJ de T lo Borro jTextArea1.append("\nEL COMANDO ENVIADO NO ES VALIDO!!!\n"); jTextArea1.append("\nMSJ ELIMINADO...\n"); nOpcion = "at+cpms=\"ME\",\"ME\"\r"; SimpleWrite sw3 = new SimpleWrite(outputStream, nOpcion); nOpcion = "at+cmgd=" + smsInd.trim() + "\r"; sw3 = new SimpleWrite(outputStream, nOpcion); //****** registro en BD *************
84
jTextArea1.append("UNREAD CMGL" + smsInd.trim() + "\n"); System.out.println("UNREAD CMGL --- >"); if (smsInd.endsWith(",")) { smsInd = smsInd.substring(0,1); } jTextArea1.append("MSJ EN MEMORIA "+smsInd.trim()+"\n"); System.out.println("MSJ EN MEMORIA --- >" ); nOpcion = "at+cmgr=" + smsInd.trim() + "\r"; SimpleWrite sw4 = new SimpleWrite(outputStream, nOpcion); }
} // END CMGL
if(str.indexOf("+CMS ERROR: 500")!=-1){ jTextArea1.append("\n NO HAY MAS MSJ's \n"); System.out.println("\n NO HAY MAS MSJ's \n" ); }
85
if(str.indexOf("RING") !=-1) { jTextArea1.append("\n LLAMADA ENTRANTE!!! \n"); System.out.println("\n LLAMADA ENTRANTE!!! \n" ); }
} catch (IOException e) {} SwingUtilities.invokeLater( new SalidaRunnable( jTextArea1,jTextArea1.getText()) ); SwingUtilities.invokeLater( new SalidaRunnable(Marco1.jTextArea1, jTextArea1.getText() ) ); jTextArea1.setText(""); //SwingUtilities.invokeLater( new EnviaDatos(jTextArea1.getText() ) ); break; } } public SimpleRead() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { } } class SimpleWrite implements Runnable { static String XMSJ = "AT\r";
86
static OutputStream outputStream; Thread t; SimpleWrite(OutputStream outputStream,String nOpcion) { //Listo Para Enviar MSJ this.outputStream=outputStream; XMSJ = nOpcion; t=new Thread(this); t.run(); } public void run() { try{ Thread.sleep(1000); outputStream.write(XMSJ.getBytes()); }catch(IOException e) {System.out.println(e);} catch(InterruptedException e) {} } }
87
15.
Conclusin.
Gracias a los puntos vistos anteriormente se ha logrado dar una alternativa para generar servicios por medio de mensajes de texto SMS (Short Message System) de forma independiente ya que las compaas de telefona venden el servicio pero no hay acceso a los programas que hacen este servicio. Con esto se amplia la variedad de servicios a ofrecer ya sea en forma particular o bien ofrecer este servicio a terceros sin que las compaas de telefona celular se tomen el monopolio de este tipo de servicios.
88
16.
Bibliografa.
www.todopic.com.ar http://perso.wanadoo.es/luis_ju www.hvwtech.com www.cursoderobotica.com.ar/robotica/Libros/control.htm www.cursoderobotica.com.ar/robotica/Libros/analogico.htm http://www.ifent.org/Lecciones/digitales/secuenciales/ConvertA_D.htm http://java.sun.com/products/javacomm/index.jsp www.multingles.net/docs/conceptosTCP.htm www.programacion.com/java/tutorial/red/11 www.itapizaco.edu.mx/paginas/JavaTut/froufe/index.html www.mysql-hispano.org/page.php?id=24&pag=1 http://bibuct.uct.cl/ALEPH http://voltio.ujaen.es/casanova/pics/intro.htm http://usuarios.lycos.es/sfriswolker/pic/cuatro.htm http://www.telefonos-moviles.com/ Titulo: Como Programar en Java Autor: Deitel, Harvey M. 5a. ed. 2004.