viernes, 3 de junio de 2011

Pruebas Finales

El cuatrimestre está llegando a su fin y con el nuestro proyecto de NETMF, aquí dejamos unas videodemos de nuestro proyecto.




Este jueves será la presentación del proyecto, no sabemos seguro si conseguiremos añadir un flash y hacer algunas fotos de prueba para entonces.

miércoles, 18 de mayo de 2011

Video Demo Interface

En esta entrada se explicará las funciones básicas de la interfaz gráfica que se implementa en la placa de desarrollo ChipWorkx.

La interfaz gráfica se ha desarrollado en Microsoft Visual Studio C# 2010 en .Net Micro Frameowrk. Al no tener componentes gráficos ni "Form", ni botones, ni "TextBox", ni "Labels", etc, todo se ha creado mediante código en lenguaje C#.

Para la creación de una ventana, se crea un Panel con las dimensiones de la pantalla de la ChipWorkx, dónde se ubicarán todos los elementos que se crean y que se utilizan. Después se crean tantos "Text" y "StackPanels" como componentes se quieran introducir al Panel.

Para la realización de un botón, primero se crea una clase Boton.cs dónde se programa las funciones y eventos del botón. Para que aparezca un botón en la ventana, primero se necesita crear un "Text" y un "Boton", para que el botón contenga el texto que se crea. Después se crea un "StackPanel para que contenga el botón que se ha creado. A continuación, se le dice que el Panel contenga el StackPanel, y ya se tiene un botón dentro del Panel y que se pueda visualizar en la pantalla.

A partir de esto, se puede crear una interfaz como la siguiente:



En la siguiente entrada, se explicará los avances sobre la interacción de la interfaz gráfica con el XBee.

jueves, 12 de mayo de 2011

Ampliando el proyecto: Módulo Zigbee




















Una vez comprobado que las funcionalidades básicas del proyecto funcionan, planteamos ampliar el proyecto con una interfaz grafica que implementaremos en una placa de desarrollo chipworkx y que estará conectada con la fez panda mediante un módulo Zigbee. De esta manera podemos controlar y configurar nuestro disparador a distancia además de tener una cómoda interfaz táctil.

En este post repasaremos el funcionamiento del módulo Zigbee. Hemos comprado dos de estos módulos http://www.watterott.com/de/Digi-XBee-1mW-Chip-Antenna que tienen un coste de 24€ cada uno.

El funcionamiento de este módulo es muy sencillo. Una vez conectado correctamente a ambas placas (hace falta hacer algún tipo de soporte para la Panda ya que no tiene socket para Zigbee) solo necesitamos configurar un puerto serie y transmitir por él. Hemos tenido que hacer algunos ajustes ya que la velocidad del zigbee no es la de un puerto serie estándar y tendremos por ejemplo que esperar un tiempo antes de leer el mensaje si no queremos leer el mensaje fragmentado. Solucionados estos problemas tenemos un sistema capaz de transmitir datos a una distancia de como mínimo 10m (No lo hemos probado aun a más distancia)

La siguiente imagen muestra las pruebas realizadas desde un mismo ordenador en Visual Studio 2010


Después de conseguir una comunicación básica hemos creado un protocolo que estableceremos para dar las diferentes informaciones y ordenes, es el siguiente:

Protocolo Proyecto Disparador

Primera letra significará disparo o configuración

· D (disparo)

· C (configuración)

Si enviamos un disparo el valor siguiente decidirá el tiempo de disparo en ms

Ejemplo: D0010 significaría haz un disparo de 10 ms.

En el caso de configuración la siguiente letra indicará el sensor que estamos configurando

Ejemplo: CPXXX indica que queremos configurar el sensor de proximidad

CMXXX indica que queremos configurar el micro

En el caso del micro el valor que enviemos después será el umbral del micrófono

Ejemplo: CM100 Pondrá el valor umbral del micrófono en 1000

Para activar o desactivar un sensor enviaremos CX000 (desactivar) o CX999 (activar)

La placa Panda podrá indicar que se ha hecho una foto enviando la palabra “foto”



En la siguiente entrada hablaremos del diseño de la interfaz.

miércoles, 27 de abril de 2011

Novedades Post-Semana Santa


Teniendo las funcionalidades básicas aseguradas, disparar cuando oímos un sonido o cuando se detecta movimiento, hemos dedicado este tiempo a hacer pruebas, mejoras y a pensar posibles ampliaciones.














Lo primero que hemos visto al hacer pruebas es que el disparo no era tan rapido como esperábamos.

Como se puede ver en esta imagen, no conseguimos aun captar una pelota por ejemplo cuando rebota. Tenemos pendiente hacer una medición mas exacta del retraso, por ejemplo contando frames en un video, de manera que podamos medir las mejoras que vaya
mos consiguiendo.

Hemos pensado que hay varios factores que influyen en este problema. El primero es que NETMF no es un sistema a tiempo real y por lo tanto no es predecible ni especialmente rápido de reacción. Aun así creemos que podemos obtener mejores resultados si mejoramos otros puntos.

El primero de ellos es el disparo de la cámara. Según hemos leido el tiempo de reacción de la cámara es de unos 100ms lo cual puede ser bastante para este tipo de usos. Esto es imposible de reducir ya que depende de un factor externo.

Lo que se hace en utilidades mas profesionales es utilizar el flash para congelar la imagen. Es decir, utilizamos un entorno con poca luz, abrimos el obturador de la cámara con antelación pero aun no capta ninguna imagen ya que no recibe luz. Una vez el obturador esta abierto y el sensor expuesto se genera el evento, por ejemplo dejar caer la pelota. Entonces es el flash el que se dispara con el sonido del impacto, grabando en el se
nsor la instantanea. Hecho esto se cierra el obturador, se encienden las luces y se recoge la foto. Esta es por lo tanto una de las ampliaciones que tenemos pensadas. Añadir el disparo de un flash y la sincronización con el obturador de la cámara. El problema es que los flashes baratos se disparan derivando a tierra un transistor en colector abierto. Esto en principio seria posible hacerlo con la FEZ Panda, pero al producirse esta deriva también se generan en el colector picos de tensión que creemos que pueden estropear la placa, así que hemos de encontrar alguna manera de aislarla.

Estas son algunas de las fotos que hemos obtenido:




































En cuanto a las mejoras, lo primero que hemos hecho ha sido conectar un alimentador a 12V, de esta manera podemos alimentar la placa sin necesidad de un ordenador. Además esto nos permite alimentar nuestro sensor de proximidad que antes necesitaba de una fuente externa para funcionar, ya que la placa conectada por USB no podía generar 12V. Siguiendo en esta línea hemos conectado también una batería de modelismo, de manera que el sistema ahora es totalmente independiente del enchufe o el portatil. El programa queda guardado en la memoria flash de la placa asi solo hace falta darle tensión para que se ponga a funcionar.
También estamos haciendo más robustas las conexiones para hacer algo más facil de usar y de poner en marcha.
En lo que se refiere al software hemos estructurado el programa por clases y hemos generado interrupciones para los eventos, ya que para las pruebas usábamos bucles infinitos. Queda por ver si la interrupción es más rapida que un bucle infinito comprobando constantemente las entradas.

martes, 5 de abril de 2011

Disparador solucionado

Después de unas semanas intentando acondicionar la salida del GPIO, hemos conseguido hacer disparar la cámara.
Se nos ocurrio cuando estábamos comprobando otra vez los cables de la cámara, que lo que necesitábamos para que disparar no era un nivel alto sino un nivel bajo. Poniendo el pin común del cable de la cámara a tierra y sacando un 0 por el GPIO en los pins de disparador y enfoque la cámara lo interpretaba como un cortocircuito y disparaba la foto. No ha hecho falta ningun circuito intermedio.



Ahora nos queda fabricar buenos conectores para la cámara y los sensores y empezar a programarlos

jueves, 10 de marzo de 2011

Planning



Mientras solucionamos el problema del disparador estamos haciendo el planning del proyecto. Aquí podeis ver un diagrama de gantt y un diagrama de bloques de como ira el proyecto



miércoles, 9 de marzo de 2011

Disparando la cámara

Esta semana la hemos dedicado a investigar el disparador que compramos en Amazon. Fuimos al laboratorio y medimos lo que hacía al disparar la cámara para poder reproducirlo cuando quisieramos con una placa NETMF.
El conector tiene 3 pines útiles. Uno es el común, otro el disparador y otro el enfoque. Cuando apretabamos el disparador, el pin común y el pin disparador se cortocircuitaban. Para asegurarnos de lo que hacía decidimos abrir el aparato e intentarlo medir con la cámara encendida.
Nuestro sofisticado disparador consistía en 3 placas de metal. La cámara carga con 5v la placa del medio y al apretar el botón juntamos las placas dando tensión a los pines de enfoque y disparo y haciendo la foto.

Hemos intentado reproducir esto en la placa usando los puertos GPIO pero no parece dar el suficiente voltaje. Hemos pensado utilizar un driver de salida como este de esta manera no cargamos el bus y conseguimos un voltaje de 5v. Mañana buscaremos el chip y lo montaremos todo en una protoboard.

Paralelamente, hemos empezado el planning del proyecto usando el programa GanttProject

jueves, 24 de febrero de 2011

Decidiendo el proyecto



Estamos en la 2º sesión y tenemos que decidirnos por un proyecto. De esta lista :
  • Disparador para camara camera AXE
  • Detector de Radar
  • Segway
  • Juego
  • Harpa Laser
  • Placas 3D
  • Pantalla trasera para el coche (mensajes personalizados, avisos si frenas muy fuerte, si pitas..) .
  • Levitación magnética
  • Domotica
Nos hemos quedado con el disparador para cámara porque nos parece un proyecto útil e interesante de hacer. De momento hemos comprado un disparador para la cámara en Amazon. Cuando nos llegue probaremos que funcione y despues lo miraremos con un osciloscopio para ver el tipo de señal que da (voltaje, forma de onda, etc.)
La idea es que mediante sensores consigamos disparar la cámara y el flash con eventos como un sonido, un haz de laser interrumpido o similares. De esta manera conseguiriamos hacer fotos de eventos rapidos como un globo explotando, un rayo. Si todo esto sale bien tambien pensamos implementar un servidor web para poder disparar la cámara desde otro ordenador o movil.

Cuando nos llegue el disparador explicaremos en el blog los resultados.

viernes, 18 de febrero de 2011

Primera Entrada: Hello World!


Esta es nuetra primera entrada en el blog. Aun no hemos elegido el proyecto que llevaremos a cabo. La placa que utilizaremos de momento sera la chipworkx y después puede que compremos otra igual o más barata para tenerla en casa.

Hemos hecho el cuestionario y nos falta probar el emulador GPIO (debido a que no funciona en PCs de 64 bits), esto lo haremos la semana que viene.
Para familiarizarnos con el entorno de desarrollo, ademas de hacer el HelloWorld hemos probado la demo que venia con la placa. La otra demo que nos ha enviado el profesor (Pablo Royo) no la hemos conseguido hacer funcionar.

Un saludo a Pablo Royo y al resto de participantes de PSE, suerte con vuestros proyectos!