UNIVERSIDAD CATOLICA DE PEREIRA INFORME FINAL FRAMEWORK PARA LA ELABORACION DE LABORATORIOS DE CIENCIAS BASICAS REMOTOS PHISYLAB ALUMNO JUAN CARLOS MEJIA OROZCO PROGRAMA PROFESIONALIZACION INGENIERIA DE SISTEMAS Y TELECOMUNICACIONES AÑO 2012, SEGUNDO SEMESTRE INFORME FINAL FRAMEWORK PARA LA ELABORACION DE LABORATORIOS DE CIENCIAS BASICAS REMOTOS ALUMNO JUAN CARLOS MEJIA OROZCO PRESENTADO A: COMITÉ EVALUADOR DE PROYECTOS DE GRADO UNIVERSIDAD CATOLICA DE PEREIRA AÑO 2012, SEGUNDO SEMESTRE 2 AGRADECIMIENTOS Ante todo gracias a DIOS, a mi familia, a la institución a la cual pertenezco y la cual ha permitido que pueda seguir formándome, a mis profesores, muchos de ellos quienes ahora considero mis amigos, con quienes he compartido tanto tiempo como con mi familia, a mi familia gracias por el sacrificio que han hecho, son ellos quienes han soportado mi ausencia, son ellos quienes finalmente se han sacrificado y a la vez me ha alentado para no desfallecer, no puedo dejar pasar tampoco agradecer a las directivas de la universidad, quienes han tratado siempre y de buena manera de facilitarme esta ardua tarea, de nuevo gracias a Dios, es el quien nos da el aliento, nos da la vida, nos da el ánimo para poder sobrellevar todas las situaciones que una labor como esta exige. 3 TABLA DE CONTENIDO 1. OBJETIVOS .......................................................................................................... 9 2. INTRODUCCION ................................................................................................. 10 3. DESCRIPCION FUNCIONAL .............................................................................. 11 4. DESCRIPCION DE PHYSILAB ............................................................................ 12 4.1 Creación de un laboratorio............................................................................ 12 4.2 Creación de un experimento ......................................................................... 14 4.3 Creación de un dispositivo ............................................................................ 14 4.4 Creación de una funcionalidad ..................................................................... 16 4.5 Creación de un comando .............................................................................. 18 4.6 Uso del laboratorio........................................................................................ 20 4.6.1 Módulo Simulaciones:............................................................................ 21 4.6.2 Modulo Reservas: .................................................................................. 21 4.6.3 Módulo Laboratorio: ............................................................................... 22 4.6.4 Módulo Cursos: ..................................................................................... 22 4.6.5 Módulo Ayuda:....................................................................................... 22 4.6.6 Modulo de reservas ............................................................................... 22 4.6.7 Modulo de laboratorios remotos ............................................................ 25 5. DESCRIPCION DE LA ARQUITECTURA DE PHYSILAB .................................... 27 6. DESCRIPCION DE LOS COMPONENTES DE SOFTWARE UTILIZADOS ......... 27 6.1 NODE.JS ...................................................................................................... 27 6.1.1 Manual de instalación Node.js (Windows) ............................................. 28 6.1.2 Node ejecuta JavaScript pero no es JavaScript ..................................... 31 6.2 NPM ............................................................................................................. 32 6.3 Express ........................................................................................................ 33 6.3.1 6.4 Jade ............................................................................................................. 36 6.4.1 6.5 Instalación de Jade ................................................................................ 38 Stylus............................................................................................................ 39 6.5.1 6.6 Instalación de Express........................................................................... 34 Instalación de stylus .............................................................................. 39 Instalación de PostgreSql ............................................................................. 40 6.6.1 Características....................................................................................... 41 6.6.2 Manual de instalación de postgres......................................................... 44 6.7 JSON ............................................................................................................ 48 6.8 Y como funciona NODE en Physilab?........................................................... 51 4 7. CONCLUSIONES ................................................................................................ 52 8. TRABAJO FUTURO ............................................................................................ 53 9. BIBLIOGRAFIA .................................................................................................... 54 5 INDICE DE FIGURAS Figura 1. Creación de un laboratorio ..................................................................................... 11 Figura 2. Creación de un laboratorio ..................................................................................... 13 Figura 3. Creación de un experimento .................................................................................. 14 Figura 4. Creación de un dispositivo ..................................................................................... 14 Figura 5. Creación de una funcionalidad .............................................................................. 16 Figura 6. Esquema global de comunicación ........................................................................ 17 Figura 7. Creación de un comando ....................................................................................... 18 Figura 8. Esquema de la base de datos ............................................................................... 19 Figura 9. Comunicación básica de un laboratorio ............................................................... 20 Figura 10. Pagina principal de physilab ................................................................................ 21 Figura 11. Módulos del proyecto ............................................................................................ 21 Figura 12. Módulos del proyecto 2 ........................................................................................ 21 Figura 13. Inicio de sesión ...................................................................................................... 22 Figura 14. Nuevo usuario ........................................................................................................ 23 Figura 15. Reservas ................................................................................................................. 23 Figura 16. Calendario de reservas de laboratorio ............................................................... 24 Figura 17. Reserva de laboratorio ......................................................................................... 24 Figura 18. Interfaces de un laboratorio ................................................................................. 25 Figura 19. Resultados .............................................................................................................. 27 Figura 20. Instalación node..................................................................................................... 28 Figura 21. Node.js setup ......................................................................................................... 29 Figura 22. descarga del setup de node ................................................................................ 29 Figura 23. Instalación setup 1 ................................................................................................ 30 Figura 24. Instalación node setup 2 ...................................................................................... 30 Figura 25. PostgresSql ............................................................................................................ 40 Figura 26. Instalación de PostgreSQL 1 ............................................................................... 44 Figura 27. Instalación de PostgreSQL 2 ............................................................................... 45 Figura 28. Instalación de PostgreSQL 3 ............................................................................... 45 Figura 29. Instalación de PostgreSQL 4 ............................................................................... 46 Figura 30. Instalación de PostgreSQL 5 ............................................................................... 47 Figura 31. JSON ....................................................................................................................... 48 Figura 32. JSON 2 .................................................................................................................... 49 Figura 33. JSON 3 .................................................................................................................... 49 Figura 34. JSON 4 .................................................................................................................... 50 Figura 35. JSON 5 .................................................................................................................... 50 6 INDICE DE TABLAS Tabla 1. Limites de PostgreSQL ............................................................................................ 43 7 SINTESIS SINTESIS ABSTRACT Este trabajo de grado, ha puesto en evidencia que el trabajo en equipo si funciona, solo es poder encontrar la gente correcta y sacar lo mejor de ellas, pero como mínimo debe haber buena relación entre este grupo, así se superan más fácil los problemas, inicialmente vimos este proyecto como algo complicado, pero teníamos la confianza que con el conocimiento adquirido y la experiencia, cualquier obstáculo se podría superar, teniendo calma y trabajando en equipo. Y así se hicieron casi 4 prototipos de este proyecto y sorprendentemente todos funcionaron, hasta que quedo la plataforma de NODE, de manera definitiva, y primero prendimos led’s, hoy podemos mover un laboratorio. This degree work has shown that teamwork does work, It is just a matter of finding the right people and make the best of them, but at least there should be a good relationship in the team. That's that way to overcome problems easier. Inicially we saw this proyect as something complicated, but we had confidence that the knowledge and experience acquired, could help us overcome any obstacle. We made nearly 4 prototypes of this project and suprisingly they all worked, we decided that NODE would be the definitive platform. First we turned on some leds and now we can control a laboratory. Palabras claves: Keywords: NODE, JSON, JQUERY, PHISYLAB, FRAMEWORK,POSTGRES,NPM, EXPRESS, JADE, STYLUS, RENATA, SERVIDOR WEB, WEB BROWSER, TARJETA DE ADQUISICION, WORDPRESS, MODDLE, JAVASCRIPT, MOTOR V8. NODE, JSON, JQUERY, PHISYLAB, FRAMEWORK,POSTGRES,NPM, EXPRESS, JADE, STYLUS, RENATA, WEB SERVER, WEB BROWSER, DATA ACQUISITION, WORDPRESS, MODDLE, JAVASCRIPT, V8 MOTOR 8 1. OBJETIVOS Explicar de una manera detallada y sencilla de que se trata el proyecto Physilab, como se construyó, como funciona, cuál es su futuro y lo más importante para que sirve y porque fue hecho. 9 2. INTRODUCCION Los laboratorios remotos surgen como una necesidad manifiesta de los estudiantes, docentes e instituciones educativas por proveer una mejor calidad en la educación, realizar un mejor aprovechamiento de los recursos para el aprendizaje, para lograr el objetivo de tener una educación con un mejor nivel de calidad, teniendo como base los avances en las tecnologías de la información; como el auge de las comunicaciones. En el caso especifico de RENATA, y considerando aspectos tecnológicos tales como, el incremento de los anchos de banda que mejoran considerablemente las velocidades para la navegación en la Internet, aspectos económicos como el bajo precio de los computadores que facilitan su adquisición, y aspectos del orden político; como el desinterés del estado por el fomento a la investigación y generación de conocimiento, en el cual cada vez es menor el presupuesto que el país invierte en estos rubros. En este orden de ideas, y considerando esta situación, nace la idea de poder aprovechar los recursos existentes en otras instituciones para el beneficio de las que no cuenten con los mismos, es decir; haciendo que esos recursos, como laboratorios o centros de investigación puedan ser accesados y/o controlados sin la necesidad de tener una presencia física en el mismo, es decir; controlado de manera remota, así cualquier laboratorio podría compartir con otros su infraestructura, y a su vez generar una gran red de laboratorios, por ende; lo que se encuentra consignado en este documento consiste en la descripción detallada y posterior explicación del proceso de la creación de una herramienta que contribuirá en el logro de este gran sueño, basados en una arquitectura solida y robusta. La solución propuesta y realizada se denomino PHYSILAB, laboratorio remoto y virtual para la enseñanza de la física, es una herramienta que combina varias disciplinas como son electrónica, sistemas y telecomunicaciones, pedagogía para la enseñanza, reuniendo en un solo productos estas 3 ramas de la ciencia y como fruto de esta unión nace esta herramienta que pretende ser una base solida y fuerte para ser mejorada y potencializada en un futuro no muy lejano, para llevar a muchas personas la enseñanza de muchos fenómenos físicos. 10 3. DESCRIPCION FUNCIONAL Un laboratorio puede tener varios experimentos, cada experimento para ser accesado remotamente debe automatizar todos sus componentes, los componentes se clasifican en sensores, actuadores y motores, en la parte de sensores tenemos como su nombre lo indica aquellos dispositivos que nos permiten saber cuando algo por una posición o sucedió un evento, los actuadores son aquellos que hacen operaciones como prender, apagar, retener, soltar y otros, los motores son aquellos que como su nombre lo indica generan movimiento de objetos, también hace parte del experimento la tarjeta de adquisición de datos , la cual hace la primera conexión o la conexión mas básica y es en este punto donde se enlaza con motores, actuadores y sensores, es la tarjeta quien se comunica a través de otros componentes con estos elementos, a su vez entre la tarjeta de adquisición de datos y el node, hay otro intermediario, el cual es un programa escrito en C#, y es un ejecutable (extensión .exe) y es invocado por el servidor node y por las paginas web del experimento cuando se quiere realizar alguna acción y este se comunica con la tarjeta de adquisición de datos. A continuación se presenta una breve descripción grafica del funcionamiento de un experimento: Figura 1. Creación de un laboratorio 11 Cada componente del experimento, se asocia con una funcionalidad, y a su vez esta funcionalidad se asocia con unos comandos; los que a su vez se asocian a comandos que son enviados a la tarjeta de adquisición de datos a través del archivo ejecutable mencionado anteriormente. 4. DESCRIPCION DE PHYSILAB Physilab, Laboratorio Remoto y virtual para la enseñanza de la Física, tiene como uno de sus objetivos convertirse en un sistema distribuido con múltiples nodos, donde todos y cada uno de ellos compartan con la comunidad académica sus laboratorios, sus experimentos y de esta forma lograr construir un gran laboratorio remoto. Para lograr este objetivo, Physilab se construyó con una arquitectura distribuida donde cada laboratorio siguiendo unos protocolos establecidos y una estructura básica se pueda integrar a todo el sistema. Physilab está construido siguiendo la estructura: laboratorio, experimento, dispositivo, funcionalidad. La estructura de una práctica de laboratorio básica consiste en ejecutar una funcionalidad definida, por ejemplo impulsar un objeto, esta funcionalidad la ejecutaría un dispositivo, siguiendo con nuestro ejemplo, este sería un solenoide que hace las funciones de un disparador, este solenoide pertenece a un experimento en particular, (carril de aire) donde el carril de aire pertenece al laboratorio Physilab ubicado en la Universidad Católica de Pereira UCP. Durante la vida útil de un experimento este presenta cambios, mejoras y averías, lo que hace que en algunos momentos se tenga que deshabilitar o habilitar una funcionalidad o agregar un nuevo dispositivo, etc. Physilab permite la creación de experimentos a través de una interfaz web que se accede a través del menú superior de la barra de menús de los experimentos existentes, previa identificación del usuario, permite: agregar, modificar, eliminar cada componente de un experimento. 4.1 Creación de un laboratorio La creación de un laboratorio consiste es definir todo un espacio físico de trabajo, en el cual pueden existir diferentes clases experimentos. Para llevar a cabo el proceso de creación de un experimento solo es necesario ingresar los 12 siguientes datos: código de identificación del laboratorio, nombre de la persona que realizará el experimento, la ubicación con una descripción del laboratorio y el estado. En la siguiente imagen se presenta una vista de la interfaz del formulario de ingreso al laboratorio: Figura 2. Creación de un laboratorio . El estado es utilizado para indicar la disponibilidad del laboratorio, donde el estado activo es el único que nos indica cuando se puede hacer uso del laboratorio y de todos los experimentos que el contenga. 13 4.2 Creación de un experimento Figura 3. Creación de un experimento En Physilab, se denomina experimento a cualquier conjunto de dispositivos intercomunicados y controlados remotamente que permitan mediante su operación la comprobación de uno o varios fenómenos de la física y que tenga mecanismos para obtener datos para su posterior análisis. Para la creación de un experimento solo es necesario suministrar un código, un nombre, un estado y seleccionar a que laboratorio pertenece el experimento. 4.3 Creación de un dispositivo Figura 4. Creación de un dispositivo En Physilab un dispositivo es un instrumento o aparato, el cual es controlado remotamente con el objetivo de suministrar al experimento de una o varias funcionalidades. Por ejemplo la fuente de aire, es un dispositivo que permite generar una corriente de aire continua para que los carros leviten sobre la corriente de aire, este dispositivo, tiene las funcionalidades de prender y apagar. 14 Para la creación de un dispositivo solo es necesario suministrar el nombre, el laboratorio al cual pertenece, el experimento donde el dispositivo presta su funcionalidad. Los limites inferior y superior son dos valores numéricos que permiten describir el rango de funcionalidad del dispositivo, por ejemplo, en la creación de los motores que permiten desplazar los sensores en el experimento carril de aire del laboratorio de la UCP, estos tienen un rango donde permiten desplazarse, fuera de estos rangos podrían presentarse colisiones con otros dispositivos. Posición nos permite calibrar la posición actual del dispositivo en su rango de operación y dependiendo de su ubicación física. Agregar una imagen nos permite seleccionar una nueva imagen para identificar el dispositivo en la interfaz de experimentación. Tipo es un valor que nos permite indicar en que submenú de la interfaz de experimentación se mostrara el icono que permite interactuar con el dispositivo. Y por último características es un campo de texto donde ingresamos información de descripción del dispositivo y que es visualizada en la interfaz de experimentación a manera de ayuda. 15 4.4 Creación de una funcionalidad Figura 5. Creación de una funcionalidad Las funcionalidades son la descripción de una tarea que puede ejecutar un dispositivo en particular, por ejemplo, el elevador, dispositivo que permite cambiar el Angulo de inclinación del carril de aire del laboratorio de la Universidad Católica de Pereira UCP, es un dispositivo que tiene dos funcionalidades, subir n grados el carril y bajar n grados el carril. Para la creación de una funcionalidad se debe seleccionar el laboratorio, experimento y dispositivo, suministrar un nombre a la funcionalidad, nombre relacionado con su función, un estado, que indica si esta funcionalidad estará disponible para los usuarios que utilicen el laboratorio y seleccionar si esta funcionalidad recibe parámetros o no, por ejemplo, al utilizar la funcionalidad de subir el elevador debemos indicarle cuantos grados queremos subir, indicando si en esta opción, le permitimos al sistema capturar un valor al momento de utilizar esta funcionalidad en la interfaz de experimentación. Al finalizar el proceso de creación de las funcionalidades sigue el proceso de definición de cada funcionalidad, este es un proceso donde indicamos exactamente paso a paso como la funcionalidad hace lo que debe hacer. Por ejemplo, con el experimento carril de aire del laboratorio de la Universidad Católica de Pereira queremos utilizar la funcionalidad de subir el elevador en 5 grados, para que nuestro experimento reaccione como esperamos que lo haga, debemos comunicarnos a través de la tarjeta de adquisición por un canal y una línea específica y enviarle un comando, indicando que se debe activar un tiempo determinado y un sentido especifico, si esto se hace en la secuencia correcta y la duración establecida el efecto que veremos en el experimento será la elevación de los 5 grados en el carril. 16 La tarjeta de adquisición es un aparato que nos permite la comunicación en ambas vías, entrada/salida con los dispositivos de los experimentos que son controlados remotamente, todo esto en conjunto con una serie de microcontroladores y demás elementos que hacen parte del sistema de control. Para la comunicación entre un usuario remoto conectado a través de Renata con el dispositivo lo hacemos a través de varios sistemas y por diferentes canales. Inicialmente el usuario activa una función que tiene disponible en la interfaz web de experimentación, que es comunicada a través de Renata, al servidor Node que a su vez interpreta la función activando una aplicación local, que es en ultimas la que le envía uno o varios comandos al sistema de control que indican que se debe hacer y quien lo debe hacer Figura 6. Esquema global de comunicación 17 4.5 Creación de un comando Figura 7. Creación de un comando Un nombre, identificar a cual funcionalidad corresponde seleccionando el laboratorio, el experimento, el dispositivo y la funcionalidad, seleccionar el tipo de comando, si es un motor, un actuador, o un sensor, seleccionar el programa local que se comunica con la tarjeta de adquisición, indicar el dispositivo, puerto y línea, esto depende de la conexión física donde el dispositivo se une con la tarjeta de adquisición e indicar el comando. Por ultimo se indica el estado y el efecto. 18 Figura 8. Esquema de la base de datos El Comando es el código con el cual el servidor Node invocara la funcionalidad y el programa local lo interpretara y lo ejecutar El efecto indica si el comando desplaza un elemento generando un aumento o una disminución en el estado del dispositivo y es usado para asegurar que el dispositivo permanezca en los límites establecidos En la creación de un comando se pueden incluir varios subcomandos, por ejemplo, para ejecutar la tarea de subir el carril de aire en 5 grados, se le debe indicar al sistema de control, cual motor activar, por cuanto tiempo lo debe hacer y en qué sentido debe girar, esto implica la creación de tres comando para una funcionalidad, la de subir el elevador en 5 grados. 19 Figura 9. Comunicación básica de un laboratorio En el siguiente diagrama podemos ver la interacción entre los módulos que permiten la comunicación entre el usuario ubicado remotamente y un dispositivo físico ubicado en uno de los dos laboratorios que tenemos en esta primera fase del proyecto, y permite su control remoto. 4.6 Uso del laboratorio Physilab al ser un laboratorio remoto, suministra un mecanismo que permite a los usuarios conectados a Renata acceder a él, previo un registro y una reserva. El objetivo de los laboratorios remotos es que sirvan como un instrumento donde los docentes del área de la física de las universidades conectadas a Renata y que no cuenten con un laboratorio en sus instalaciones lo pueden usar, de manera independiente o como parte de un programa virtual que ayudara a complementar sus clases presenciales. La dirección web Physilab es: physilab.ucp.edu.co, al acceder a esta web ingresamos al proyecto Physilab. 20 Figura 10. Pagina principal de physilab Aquí podemos ingresar a cada uno de los módulos del proyecto: simulaciones, reservas, laboratorios, cursos, ayuda Figura 11. Módulos del proyecto Figura 12. Módulos del proyecto 2 4.6.1 Módulo Simulaciones: Este módulo contiene laboratorios simulados que les permiten a los usuarios practicar los conocimientos adquiridos. Lo que se busca con el laboratorio virtual es facilitar un entorno virtual en donde el usuario pueda practicar cuantas veces necesite sin tener problemas de concurrencia de usuarios y facilitar un entorno que no presente problemas de seguridad o de configuración. 4.6.2 Modulo Reservas: modulo que permite la gestión de los laboratorios remotos, gestiona los tiempos y los usuarios que accederán a los laboratorios remotos, permitiendo que los usuarios de Physilab se programen según sus necesidades y su disponibilidad de tiempo. 21 4.6.3 Módulo Laboratorio: este módulo es el que le permite a los usuarios el acceso a la interacción remota con el laboratorio físico, es uno de los componentes más importante ya que este cumple el objetivo principal del proyecto que es la interacción con el laboratorio desde un lugar distante, para la implementación de este módulo será necesario un sistema de reservaciones el cual gestiona el acceso a los usuarios para la utilización de los experimentos físicos, puesto que, cada experimento físico solo puede ser utilizado por un estudiante simultáneamente. 4.6.4 Módulo Cursos: Este módulo permite la creación de cursos, los cuales tomarán los alumnos de las diferentes universidades. La idea de este módulo es la de darle las herramientas a los profesores para que diseñen sus propios cursos, tomando información gestionada por el módulo de contenidos o generando nueva información, de esta forma podrán decidir cuándo y cómo dictarán sus materias y cuando integrarán a los laboratorios virtuales y remotos según su metodología de enseñanza. Este módulo estará basado en un LMS llamado Moodle, el cual es un sistema gratuito y de código abierto que nos facilita la inclusión de los cursos virtuales. 4.6.5 Módulo Ayuda: Este módulo contiene información de ayuda y soporte para los distintos usuarios de la plataforma, así como brindar mecanismos de comunicación donde los usuarios podrán estar en contactos con los administradores del sitio. Para esto se utilizará un CMS llamado Wordpress. Para la implementación de cada uno de estos módulos se hizo uso de herramientas de libre distribución, el cual nos permiten tanto implementarlas como modificarlas para adaptarlas a nuestras necesidades. 4.6.6 Modulo de reservas Figura 13. Inicio de sesión El sistema Physilab permite el acceso a todos y cada uno de los módulos a los usuarios del proyecto, previo una inscripción a la plataforma. Para acceder al sistema de reservas, se hace por el menú principal, enlace reservas, este es el único mecanismo con 22 que los usuarios pueden acceder y operar los laboratorios remotos, las reservas se pueden realizar en cualquier horario y en cualquier fecha, con una duración máxima de 1 hora por sesión. Al ingresar al módulo de reservas, debemos identificarnos frente al sistema, o registrarnos si aún no somos usuarios. El proceso de registro solicita datos básicos del usuario, con el fin de identificarlo frente al sistema o recuperar sus datos en caso de olvido o extravío de sus credenciales. La información solicitada en el proceso es: un nombre de usuario, una contraseña, una dirección de correo, su nombre y apellido. Figura 14. Nuevo usuario Una vez que ya hemos ingresado al sistema de reservas, podemos visualizar nuestra cuenta, mis reservas pasadas y futuras, las disponibilidades de los laboratorios y mi información personal, también podemos generar una nueva reserva. Figura 15. Reservas 23 Para crear una nueva reserva, basta con dar clic en el panel izquierdo enlace reservas, allí desplegara un calendario donde se muestran todos los laboratorios disponible con sus respectivos horario, también se puede ver la disponibilidad de cada experimento y cuales usuario tienen reservas. Figura 16. Calendario de reservas de laboratorio Figura 17. Reserva de laboratorio Para establecer la nueva reserva, seleccionamos la hora en que deseamos utilizar el laboratorio y en la ventana que se despliega, ingresamos los datos de: hora inicio, hora fin, una descripción, la periodicidad de la reserva, y si queremos un recordatorio. 24 4.6.7 Modulo de laboratorios remotos Para acceder al módulo de laboratorios remotos, se hace a través del enlace situado en el menú principal, pero para acceder a un laboratorio especifico solo es posible previa reservación. Figura 18. Interfaces de un laboratorio Una vez ingresado al laboratorio podemos empezar a experimentar, la ventana de experimentación está conformada por cinco secciones: Un menú superior de comandos que nos permiten ejecutar la experiencia. Una barra lateral de dispositivos, los cuales tiene funciones definidas. Un área de trabajo, donde configuramos nuestro experimento. Un área de visualización, donde podemos acceder a las cámaras que tengamos disponibles en nuestro experimento. Un área de ayuda, donde vemos la información del dispositivo que tengamos seleccionado. Utilizar Physilab es similar a utilizar un laboratorio real, debemos preparar nuestra práctica, alistar los instrumentos, ajustar posiciones, ejecutar el experimento, capturar datos y analizarlos. 25 En Physilab es igual, se debe seleccionar en la barra lateral de dispositivos cuales van a ser utilizados, el orden de ejecución y los parámetros para ser configurados. Por ejemplo: queremos utilizar el experimento carril de aire, ubicado en el laboratorio de la Universidad Católica de Pereira, luego de haber reservado e ingresado según la agenda, nos disponemos a realizar nuestra práctica. En nuestra práctica queremos comprobar la velocidad inicial de un objeto que es impulsado, para esto los pasos que debemos hacer es: Verificamos la inclinación del carril, si no es cero, la moveremos arriba o abajo según corresponda. Ubicamos los sensores en las posiciones que queramos, siempre y cuando nos permitan realizar los cálculos necesarios. Ubicamos las cámaras de tal forma que tengamos una buena visión del experimento Prendemos la fuente de aire Esperamos unos segundos para asegurarnos que la presión es estable. Soltamos el carro, ejecutando el solenoide que hace las veces de disparador. Por ultimo esperamos unos segundos para asegurarnos que los sensores tomaron los datos Y por último apagamos la fuente El botón compilar, sirve para validar que las instrucciones seleccionadas se puedan ejecutar y no violen ningún mecanismo de seguridad Para ejecutar una función, basta con arrastrar al área de trabajo el dispositivo, seleccionar la funcionalidad y parametrizar según el caso, y finalizar con los botones compilar y ejecutar. Al finalizar todos los pasos recopilamos los datos y hacemos los cálculos, y necesarios para identificar el valor de la velocidad inicial, Figura 15: resultados 26 Figura 19. Resultados 5. DESCRIPCION DE LA ARQUITECTURA DE PHYSILAB Physilab se compone un servidor central el cual contiene una base de datos con la información de cada laboratorio y el manejo de los usuarios, cada laboratorio debe estar creado en esta base de datos, a su vez el laboratorio trae una dirección ip fija de la institución en donde se encuentra físicamente dicho laboratorio, una institución puede tener varios laboratorios, referenciados con una misma dirección ip. En el laboratorio debe existir y referenciando dicha ip un servidor web ejecutándose en un determinado puerto, puede haber varios servidores web ejecutándose en diferentes puertos, y los cuales tiene las interfaces tanto para el usuario como para la tarjeta de adquisición de datos de cada experimento, y a su vez hay una base de datos en cada laboratorio con la información de cada componente y que función o funciones realiza. 6. DESCRIPCION DE LOS COMPONENTES DE SOFTWARE UTILIZADOS 6.1 NODE.JS Es un intérprete de JavaScript del lado del servidor, implementando un modelo innovador de cómo debe funcionar un servidor. Su objetivo principal es permitir a un programador hacer aplicaciones altamente escalables y que manejen miles de conexiones simultáneas en una misma maquina física. Añade además muy buenas herramientas para manejar eventos y cabe anotar que es un servidor Asíncrono. Soporta protocolos TCP, DNS , UDP, HTTP, sockets . Como funciona? 27 Node ejecuta el motor V8 JavaScript en el lado del servidor, estamos acostumbrados a que el JavaScript solo se ejecuta del lado del cliente, Google con este programa lo lleva al lado del servidor, ya no tenemos que tener java en el servidor, Perl, Python u otros lenguajes, todo queda sobre el mismo lenguaje JavaScript. Para aclarar Google implementa el motor V8 en su navegador Chrome. Como se mencionó anteriormente es Asíncrono, una petición hecha al servidor no detiene las otras, las peticiones que se van atendiendo se van entregando a quien la solicito, o sea que si tenemos un procesos que debe hacer varias peticiones debemos tener mucho cuidado, es posible que la ultima petición termine antes que la primera, aquí radica uno delos grandes cambios en este servidor, y a los cuales el programador convencional no esta acostumbrado a enfrentar, ahí hay un cambio de mentalidad y la solución inicial cuando eso nos ocurra es que se aniden las peticiones y solo seguimos si la anterior termino. 6.1.1 Manual de instalación Node.js (Windows) Descargar el instalador desde la página oficial: Instalador de Node.js en Windows. http://nodejs.org/ Figura 20. Instalación node Una vez descargado el instalador, simplemente ejecutarlo y presionar siguiente según indique el instalador. 28 Figura 21. Node.js setup Figura 22. descarga del setup de node Aceptamos los términos de la licencia y luego esperamos que concluya el proceso de instalación. 29 Figura 23. Instalación setup 1 Figura 24. Instalación node setup 2 Una vez instalado en la carpeta donde se instaló c:\archivos de programa/node.js ejecutamos desde una consola cmd de Windows set path=%PATH%;%CD% set path “%PATH%” Esto para ejecutar Node desde cualquier parte del sistema operativo y listo, el proceso de instalación ya está terminado 30 También usaremos algunas bibliotecas de terceros para compilar esta aplicación, así que querrá instalar NPM, que es el gestor de paquetes de Node. NPM le permite especificar dependencias con versión de su proyecto, que después pueden ser descargadas e incluidas en su ruta de compilación. 6.1.2 Node ejecuta JavaScript pero no es JavaScript El Node es un programa para ejecutar JavaScript, pero no es JavaScript en sí mismo. De hecho, el Node es un programa realizado en lenguaje de programación C. Node fue construido en C gracias a que este tiene soporte para manejo de redes, sockets y tratamiento de objetos pesados, características que JavaScript no posee, además C es muy estable y sirve de base para interpretar JavaScript de una manera muy eficiente y es más accesible para la mayoría de los programadores. Node ha sido diseñado para ayudar a los desarrolladores a construir programas de red escalables, Node es un entorno de programación del lado del servidor que virtualmente ha reinventado JavaScript para toda una nueva generación de desarrolladores. Para muchos desarrolladores de Java, lo más importante de Node es su nuevo enfoque para la concurrencia de software. Aunque la plataforma de Java continúa evolucionando en su enfoque para la concurrencia (con mejoras bastante anticipadas en Java 7 y Java 8), el hecho es que Node satisface una necesidad y lo hace en la forma más ligera que muchos desarrolladores de Java han adoptado recientemente. Como los scripts del lado del cliente con JavaScript, los scripts del lado del servidor en el entorno de Node son tan buenos debido a que simplemente funcionan, y están trabajando en un área donde muchos desarrolladores de Java son actualmente desafiados. fuentes http://www.ibm.com/developerworks/ssa/opensource/library/osnodejs/index.html, http://es.wikipedia.org/wiki/Nodejs, documentos de entrega proyecto Physilab. 31 6.2 NPM NPM es un gestor de paquetes para Node. Se puede utilizar para instalar y publicar programas de Node. Maneja las dependencias, actualizaciones, versiones entre otras cosas. Desde la versión 0.6.3 NPM viene integrado en el proceso de instalación de node.js, así que no se tiene que instalar por separado. NPM como gestor de paquetes permite instalar Express, Jade, Stylus, Nodemon. Para la instalación de cada uno de ellos ejecutamos la consola cmd en modo administrador. 32 6.3 Express Es un framework desarrollado para Node, con el objetivo de permitir crear aplicaciones en un tiempo mas corto y bien estructurados, lo que hace es entregarnos un servidor básico ya funcionando y apto para empezar a montarle los servicios que deseamos ofrecer. 33 6.3.1 Instalación de Express Asumimos que ya tenemos Node, ejecutamos los siguientes pasos: 1. Se ejecuta la consola de comandos o la shell de Linux 2. Se procede a ubicar el directorio de proyectos. 3. Posteriormente, desde el directorio de proyectos se debe ingresar el siguiente comando: npm install –g express Este comando instala Express de manera global para todo el Node, o sea que si deseo crear otro proyecto ya no necesito ejecutarlo de nuevo. 4. La instrucción: express myapp, crea un nuevo directorio y en su interior aparecen las siguientes sentencias: Create: myapp Create: myapp/package.json Create:myapp/app.js (archivo que lanza el servidor Node, de la siguiente manera node app.js) Create: myapp/public Create: myapp/public/javascripts Create: myapp/public/images Create: myapp/public/stylesheets Create: myapp/public/stylesheets/style.styl Create: myapp/routes Create: myapp/routes/index.js Create: myapp/views Create: myapp/views/layout.jade Create: myapp/views/index.jade myapp se debe cambiar por el nombre que el usuario elija para la aplicación. 34 App.js es el nombre principal del proyecto y en su interior ya esta configurado para funcionar el servidor. Public: directorio raíz o por defecto donde queda ubicado al ser lanzado el servidor, se usa normalmente para poner ahí los JavaScript de las paginas, imágenes, CSS y otros. Routes: es el sitio para establecer donde busco archivos y ejecutar un enrutamiento básico. Views: en este directorio se ponen las paginas web HTML, ya no con la extensión HTML, sino con extensión .jade, el Jade es un elemento importante en Node y se describirá mas adelante. Si se quiere tester o realizado, se puede hacer lo siguiente: Node myapp.js, y de inmediato lanzar la aplicación, normalmente se monta por defecto en el puerto 3000, y se puede testear de la siguiente manera, en el navegador puede digitar localhost:3000 y aparecerá un mensaje de Express. En este instante tenemos ya un servidor web listo para ser usado, y en menos de 5 minutos. Luego de este paso, se debe entrar en myapp, y ejecutar el comando npm install Para terminar de instalar más paquetes por defecto. Si el servidor necesita Jade se puede digitar npm install jade, y asi con cada paquete que se requiera e incluso con los paquetes de terceros, dentro de los paquetes básicos que se deben instalar esta la siguiente lista y su descripción: Npm install connect , para manejar sesiones Npm install stylus, paquete para escribir CSS de una manera mas fácil, luego este paquete lo traduce a .css. Npm install jade, paquete para hacer que digitar etiquetas HTML sea también muy sencillo, luego lo traduce a HTML. Npm install pg, paquete para conectarse a la base de datos Postgresql. Npm install emailjs, paquete para enviar correos electrónicos. Y existen muchos paquetes más. 35 6.4 Jade Es un paquete o plugin diseñado para Node, el cual permite que hagamos HTML de una manera fácil y sencilla, sin tener la complejidad de HTML y el abrir y cerrar etiquetas, este paquete nos hace olvidarnos de ese tipo de cosas. Un ejemplo podría ser así: header link(rel='stylesheet', href='smoothness/demo_table_jui.css') link(rel='stylesheet', href='css/jquery-ui-1.8.15.custom.css') link(rel='stylesheet', href='smoothness/TableTools_JUI.css') link(rel='stylesheet', href='/stylesheets/pantallas.css') script(type='text/javascript',src='/javascripts/nomina_cargos.js') script(type='text/javascript',src='/javascripts/nomina_cargos_1.js'); h2(class='tit') Cargos de la empresa #div1 #div2 #div3 #div4 #div6 table(id='listdatos' , class='display') thead tr th Id th Codigo th Nombre th Accion tbody A groso modo, crea 6 elementos div, carga unos JavaScript y le asigna a una etiqueta h2, la clase “tit” (class=”tit”), para ser modificado por CSS, de este se puede apreciar la facilidad del código generado en Jade, en el cual, la 36 identación es fundamental para la construcción de la vista, normalmente la identación de las líneas es de 2 espacios, cuando un elemento va dentro de otro, esto es lo que da un poco mas de dificultad, pero el programador podría pensar que complicado digitar el código de jade para paginas ya existentes, para eso también hay solución el sitio http://html2jade.aaron-powell.com/, se puede poner el código HTML y él le devuelve el código en jade, así no hay razones para obviar jade. Y como dato adicional uno puede comprar una plantilla que soporte JQuery y puede ser traducida e implementada en Node con esta herramienta. 37 6.4.1 Instalación de Jade Se procede a ingresar en el directorio del proyecto y se ejecuta el siguiente comando : Npm install jade Y posteriormente, ya puede ser usado. 38 6.5 Stylus Otro gran paquete para Node, podemos escribir CSS sin tener tanto énfasis en la sintaxis, podemos manejar variables inclusive, el genera un archivo .styl, y ahí esta contenido nuestro código, el cual luego es procesado y genera el correspondiente archivo .css. 6.5.1 Instalación de stylus Se debe ingresar en el directorio del proyecto, y ejecutar el comando: npm install stylus. 39 6.6 Instalación de PostgreSql PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Figura 25. PostgresSql PostgreSQL utiliza un modelo cliente/servidor y usa multiprocesos en vez de multihilos para garantizar la estabilidad del sistema. Un fallo en uno de los procesos no afectará el resto y el sistema continuará funcionando. Aplicación cliente: Esta es la aplicación cliente que utiliza PostgreSQL como administrador de bases de datos. La conexión puede ocurrir vía TCP/IP o sockets locales. Demonio postmaster: Este es el proceso principal de PostgreSQL. Es el encargado de escuchar por un puerto/socket por conexiones entrantes de clientes, también es el encargado de crear los procesos hijos que se encargaran de autentificar estas peticiones, gestionar las consultas y mandar los resultados a las aplicaciones clientes. 40 Ficheros de configuración: Los 3 ficheros principales de configuración utilizados por PostgreSQL, postgresql.conf, pg_hba.conf y pg_ident.conf. Procesos hijos Postgres: Procesos hijos que se encargan de autentificar a los clientes, de gestionar las consultas y mandar los resultados a las aplicaciones clientes. PostgreSQL share buffer cache: Memoria compartida usada por PostgreSQL para almacenar datos en caché. Write-Ahead Log (WAL): Componente del sistema encargado de asegurar la integridad de los datos (recuperación de tipo REDO). Kernel disk buffer cache: Caché de disco del sistema operativo. Disco: Disco físico donde se almacenan los datos y toda la información necesaria para que PostgreSQL funcione 6.6.1 Características La última serie de producción es la 9.1. Sus características técnicas la hacen una de las bases de datos más potentes y robustas del mercado. Su desarrollo comenzó hace más de 16 años, y durante este tiempo, estabilidad, potencia, robustez, facilidad de administración e implementación de estándares han sido las características que más se han tenido en cuenta durante su desarrollo. PostgreSQL funciona muy bien con grandes cantidades de datos y una alta concurrencia de usuarios accediendo a la vez al sistema. Características generales Es una base de datos 100% ACID. Integridad referencial. Tablespaces. Nested transactions (savepoints). Replicación asincrónica/sincrónica / Streaming replication - Hot Standby. Two-phase commit. PITR - point in time recovery. Copias de seguridad en caliente (Online/hot backups). 41 Unicode. Juegos de caracteres internacionales. Regionalización por columna. Multi-Version Concurrency Control (MVCC). Múltiples métodos de autentificación Acceso encriptado vía SSL. Actualización in-situ integrada (pg_upgrade). SE-postgres. Completa documentación. Licencia BSD. Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows 32/64bit. Características de Programación / Desarrollo Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programación, entre otros PL/pgSQL (similar al PL/SQL de Oracle), PL/Perl, PL/Python y PL/Tcl. Bloques anónimos de código de procedimientos (sentencias DO). Numerosos tipos de datos y posibilidad de definir nuevos tipos. Además de los tipos estándares en cualquier base de datos, tiene disponible, entre otros, tipos geométricos, de direcciones de red, de cadenas binarias, UUID, XML, matrices, etc. Soporta el almacenamiento de objetos binarios grandes (gráficos, videos, sonido,...). APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP, Lisp, Scheme, Qt y muchos otros. 42 SQL SQL92,SQL99,SQL2003,SQL2008 Llaves primarias (primary keys) y foráneas (foreign keys) Check, Unique y Not null constraints Restricciones de unicidad postergables (deferrable constraints) Columnas auto-incrementales. Índices compuestos, únicos, parciales y funcionales en cualquiera de los métodos de almacenamiento disponibles, B-tree, R-tree, hash ó GiST. Sub-selects. Consultas recursivas. Funciones 'Windows'. Joins. Vistas (views). Disparadores (triggers) comunes, por columna, condicionales. Reglas (Rules). Herencia de tablas (Inheritance). Eventos LISTEN/NOTIFY. Algunos de los límites de PostgreSQL son: Tabla 1. Limites de PostgreSQL Límite Máximo tamaño base de dato Máximo tamaño de tabla Máximo tamaño de fila Máximo tamaño de campo Máximo número de filas por tabla Máximo número de columnas por tabla Máximo número de índices por tabla Valor Ilimitado (Depende de tu sistema de almacenamiento) 32 TB 1.6 TB 1 GB Ilimitado 250 - 1600 (dependiendo del tipo) Ilimitado 43 6.6.2 Manual de instalación de postgres Este manual le enseñará la forma más sencilla de instalar PostgreSQL para Windows en su computadora desde descargarlo de la página hasta instalar todos sus componentes. 4 debemos obtener la versión más reciente, la podemos descargar de la dirección http://www.enterprisedb.com/products/pgdownload.do#windows Después haga clic en guardar en el recuadro de descarga si desea guardar el instalador y elija el lugar donde desee guardar o solo haga clic en ejecutar para comenzar la descarga sin guardar. Figura 26. Instalación de PostgreSQL 1 5 Si hizo clic en guardar, vaya a la carpeta donde fue guardado y dé clic en el ícono para iniciar el proceso de instalación, si hizo clic en ejecutar esto no será necesario y usted puede comenzar con el proceso directamente. 6 Cuando aparezca la ventana Setup-PostgreSQL dé clic en siguiente (Next). 7 Elija la carpeta donde desea que se instale el programa y dé clic en siguiente. 44 Figura 27. Instalación de PostgreSQL 2 8 Después aparece una ventana similar pero ésta es para elegir la carpeta donde quiere guardar la información generada. Sigua los pasos del cuadro anterior y dé clic en siguiente. 9 Inserte una contraseña para su cuenta de postgres. La primer contraseña se agrega en el primer recuadro en blanco y en el segundo la repite. Después da clic en siguiente. 10 El siguiente recuadro es para seleccionar el puerto para el servidor. Elija el puerto que desee utilizar (puede dejar el que el programa le indica) y dé clic en siguiente. Figura 28. Instalación de PostgreSQL 3 45 11 En el siguiente recuadro le pide que elija la ubicación para el clúster. Seleccione su país de residencia en la lista (aparece el idioma primero y después el país separado por una coma) y dé clic en siguiente. 12 Dé clic en siguiente una vez más para comenzar la instalación. Figura 29. Instalación de PostgreSQL 4 13 Después de que se termine el proceso de instalación, dé clic en finalizar (finish). 14 A continuación comienza la instalación de software adicional. Seleccione la opción PostgreSQL x.x on port 5432 de la lista que aparece abajo y después dé clic en siguiente. 15 Después seleccione las aplicaciones que desea instalar de la lista que se le muestra. Aquí les muestro algunas de las aplicaciones básicas que puede instalar. Después de clic en siguiente. 46 Figura 30. Instalación de PostgreSQL 5 16 En el siguiente cuadro elija el espejo del cual se bajará el programa. Aquí hay un ejemplo de cuál espejo usar. Después dé clic en siguiente. 17 En el siguiente cuadro verifique que los programas que ha elegido se encuentran en la lista y después dé clic en siguiente. 47 6.7 JSON JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos. Es fácil de leer y escribir para los seres humanos y es fácil para las máquinas de procesar y generar. Se basa en un subconjunto del lenguaje de programación JavaScript, estándar ECMA-262 3ra Edición - Diciembre 1999. JSON es un formato de texto que es completamente independiente del lenguaje, pero utiliza las convenciones que son familiares para los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen JSON un ideal de intercambio de datos del lenguaje. JSON se basa en dos estructuras: Una colección de parejas nombre/valor. En varios idiomas, esto se realiza como un objeto, registro, estructura, diccionario, tabla hash, lista con llave, o una matriz asociativa. Una lista ordenada de valores. En la mayoría de los idiomas, esto se realiza como una matriz, un vector, una lista o secuencia. Estas son estructuras de universales datos. Prácticamente todos los lenguajes de programación modernos apoyarlos en una forma u otra. Tiene sentido que un formato de datos que es intercambiable con los lenguajes de programación también se basan en estas estructuras. En JSON, adquieren estas formas: Un objeto: es un conjunto desordenado de pares nombre/valor. Un objeto comienza con { (llave izquierda) y termina con } (llave derecha) . Cada nombre es seguido por: (dos puntos) y los pares de nombre/valor están separados por, (coma). Figura 31. JSON 48 Un conjunto: es una colección ordenada de valores. Un conjunto comienza con [ (corchete izquierdo) y termina con ] (corchete derecho). Los valores están separados por, (coma). Figura 32. JSON 2 Un valor: puede ser una cadena entre comillas dobles, o un número, o un verdadero o falso, o nulo, o un objeto o una matriz. Estas estructuras se pueden anidar. Figura 33. JSON 3 Una cadena: es una secuencia de cero o más caracteres Unicode, entre comillas dobles, con escapes de barra invertida. Un carácter es representado como una cadena de un único carácter. Una cadena es muy parecida a una cadena en C o Java. 49 Figura 34. JSON 4 Un número: es muy parecido a un número de C o Java, salvo que el octal y hexadecimales no se utilizan. Figura 35. JSON 5 Cabe agregar que prácticamente todo el transporte este servidor y cliente se hace con este formato, aunque uno puede decirle al servidor como debe responder, aunque recordemos que al devolver JSON al cliente, yo puedo usar el siguiente comando: variable = JSON.parseJSON(datos_json) y automáticamente se crea la variable, si es un array ya queda listo para ser accesado, esta sentencia remplaza al método “eval” y es una manera muy segura y avalada como una buena práctica de programación. 50 6.8 Y como funciona NODE en Physilab? Después de instalar varias herramientas, experimentar una y otra vez con Java Servlets, Apache , Apache Tomcat, Ruby on Rails, e invertir mucho tiempo integrando estas herramientas, llegamos a un servidor que esta revolucionando el mundo de los sistemas, NODE, pasamos de tener 3 o 4 herramientas instaladas e intercomunicadas a una sola herramienta interactuando con la tarjeta de adquisición de datos , una sola herramienta que hacia lo que antes realizábamos con 3 herramientas, esto es parte de lo que se ha vivido en Physilab, una verdadera evolución. Como se describió antes el punto de llegada es el sistema de reservas, y ya en ese punto si se ha hecho la reserva, esta pagina de reservas lo lleva al laboratorio y experimento seleccionado, vale la pena aclarar que dicho experimento debe tener asociada una dirección IP pública, con esta dirección IP, busca el Node instalado en esa institución y simplemente carga el contenido de ese sitio, de esta manera logramos unificar criterios y estandarizar un solo modelo para todos los laboratorios, además la aplicación base de los laboratorios, cada laboratorio posee su propia base de datos que obedece al modelo heredado de la universidad católica, y que es una base de datos en la cual se pueden crear las piezas físicas de cada experimento y a su vez que es lo que debe hacer y así poco a poco se estructura un laboratorio virtual. Dentro de esta definición se tienen motores, sensores y actuadores, con este modelo cada dispositivo del laboratorio debe ser clasificado dentro de una de estas 3 categorías, luego se deben relacionar los comandos que hacen que cada componente ejecute sus funciones, y hacer interface con la tarjeta de adquisición de datos. En Node no solo se interactúa con la tarjeta de adquisición de datos, sino que también podemos publicar paginas, manejar JQuery, es un servidor web parecido a los tradicionales. 51 7. CONCLUSIONES 1. El trabajo en equipo si funciona, es difícil de lograr armar un buen equipo, pero es posible y physilab lo demuestra, es vital construir un buen equipo de trabajo. 2. Todo comenzó prendiendo un LED y hoy manejamos un carril de aire de manera remota 3. Podemos ver en physilab el conocimiento de varias disciplinas llevado a la práctica y funcionando. 4. La universidad necesita más proyectos reales, donde se pueda corroborrar que el conocimiento se puede plasmar y dar frutos en un tiempo razonable y con pocos recursos. 5. Los grandes proyectos comienzan con el primer paso. 52 8. TRABAJO FUTURO Como se menciono anteriormente, se han sembrado las bases para desarrollar una plataforma robusta, resistente y distribuida, los siguiente pasos son el uso intensivo por parte de los estudiantes, foguear esta aplicación, hacer ajustes, mejorar las interfaces, en el tema de interfaces ya se tienen algunas muestras para mejorarlo, se ha rayado la posibilidad de crear un pseudo-lenguaje para la elaboración de los experimentos, también en la parte de los dispositivos la idea es hacer pequeños programas que controlen cada dispositivo, o que cada dispositivo nos informe de su estado sin que lo haga el microprocesador central, que bueno sería que cada componente llevara inmerso su propio software, obviamente se requiere el apoyo de la universidad o de terceros para seguir el desarrollo de physilab. 53 9. BIBLIOGRAFIA http://www.ibm.com/developerworks/ssa/opensource/library/osnodejs/index.html, http://es.wikipedia.org/wiki/Nodejs, documentos de entrega proyecto Physilab. 54