miércoles, 11 de diciembre de 2013

Servidor empotrado Linux/Android de control de monturas astronómicas.(II)

Estructura

Fonera 2.0 OpenWrt
La idea original de este mini proyecto parte de la posibilidad programar un servicio ligero  para  ejecutar en pequeños dispositivos de control , que sin saberlo , muchos tenemos en casa, olvidados en un cajón y que en el mejor de los casos terminan en un punto limpio o mas frecuentemente directamente en el cubo de la basura.

Me refiero al típico  punto de acceso  o router ADSL WIFI que nos "regala" el operador  de turno.

La mayoría de de estos dispositivos  funcionan  o es posible hacerlos funcionar bajo alguna versión de sistema  operativo GNU/Linux y disponen en la placa base de un conector serie o USB  que puede usarse para comunicación con un microcontrolador.


Colateralmente ,ya que la base  de funcionamiento de los dispositivos Android ,  es también Linux, este mismo servicio se pude reutilizar compilar y ejecutar en tablets y telefonos  inteligentes,sin utilizar el framework Android ni la Dalvik como máquina Java virtual si no como código compilado nativo de procesador, en la mayor parte de los casos un procesador con arquitectura ARM.

En esta aplicación el control de excitación ,velocidad  y posición los motores se confía al uso de microcontroladores PIC.

El calculo de coordenadas,aceleración desplazamientos y sincronización así como las comunicaciones (serie,bluetooth y TCP/IP ) y el procesamiento de protocolo de comunicación LX200 de los clientes  ,es tarea del servidor.
El servidor implementa:
  • Servidor TCP/IP multi hebra clásico.
  • Interprete de protocolo LX200 ( implementado con  FSMC RAGEL.)
  • Control de protocolo de bajo nivel comunicación serie <->PicGoto.
  • Control nivel intermedio velocidad aceleración, posición motores
  • Control básico de tracking, sincronización y desplazamientos (Go To).

Arrancando el servicio

El servidor como tal carece de interfaz gráfico .Se ejecuta  como un servicio del  sistema en segundo plano.
No obstante estoy programando una app para Android que posibilita  el arranque, parada y la configuración de los parámetros sin tener que iniciar un shell (terminal o interprete de comandos).

En la siguiente captura de terminal  Android iniciamos el servidor bautizado  andtelescope como una aplicación nativa a efectos de para capturar y mostrar el tráfico que se genera.

Se inicia con éxito el puerto serie /dev/telescope  que es un enlace simbólico a /dev/rfcomm0  físicamente en este caso un dongle Bluetooth ,también podría ser un conversor usb-serie en ese caso /dev/ttyUSB0.



A continuación se inicia una primera hebra que sera la  encargada calcular los parámetros  del control de velocidad y aceleración de los motores (20ms).

El segundo hilo de ejecución solicita a los microcontroladores  cada 200ms la posición de los motores y ejecuta un algoritmo de control posición/velocidad proporcional que gestiona el tracking y los desplazamientos.

El procedimiento  principal es el servidor de conexiones.Lanza una hebra independiente por cada conexión entrante y le asocia un interprete de comandos LX200, esto permite que distinta aplicaciones( Sky Safari ,Cartes du ciel ,Skymap..) desde distintos dispositivo (tablet, telefono,PC..) puedan acceder simultáneamente la posición y controles del telescopio.

Conectando con Sky Safari

Para Sky Safari que no trabaja un conexión persistente , sino que abre y cierra un socket  por cada petición la programación como servicio  multihebra es casi  obligada.
Como el servicio corre en el mismo Tablet configuramos Sky Safari  para que escuche en la dirección local  y el puerto 8888.
Elegimos el sistema Losmandy Gemini, que implementa una versión simplificada  de LX200.

Sky Safari ,Menú Configuración Telescopio

En esta captura vemos que la conexión entre la aplicación Sky Safari y el servidor  ha tenido éxito y podemos alinear el telescopio que apunta a una estrella conocida.

Ponemos el  tablet en visión nocturna  y empezamos la sesión de observación.



(continuará)




No hay comentarios:

Publicar un comentario