lunes, 30 de noviembre de 2015

Objetivo de diseño MQTT

en esta entrada vamos a describir el entorno final del proyecto del parking pasando a un control externo. 

El desarrollo del parking completo consta de :
  • Dos plazas conectadas localmente a un arduino
  • Un arduino controlador que recibe información de las plazas y gestiona un panel de control y una barrera de entradas
  • Conexión I2C entre los sensores y el controlador.
  • Conexión Ethernet arduino y Raspberry Pi
  • Conexión externa internet a Websocket y android
El proceso tiene las siguientes fases:
  1. Calibración de los sensores 
  2. Medida con eliminación de ruido por media móvil 
  3. Fusión de sensores con establecimiento de etiquetas por calibración 
  4. Control del proceso mediante máquina  de estados 
  5. Establecimiento de servidor de colas MQTT en Raspberry/pc. Clientes mqtt en arduinos y Raspberry.  
  6. Clientes Web/android sencillos  (MyMqtt, webclients genéricos) 
  7. Plataformas y Ontologías 


Para la siguiente semana llevaremos a clase la Raspberry pi, con cable ethernet para probar las condiciones de conectividad en la clase. Habrá disponible un router para organizar una red local separada y probar los adaptadores ethernet de los Arduino. 
En caso de tener conectividad se mostrará la plataforma thingspeak como prueba de conexión de arduino y código de ejemplo.

domingo, 29 de noviembre de 2015

Ejemplo de máquina de Estados para arduino


Para controlar adecuadamente un proceso es importante estructurar los cambios de estado con una máquina de Estados.
El funcionamiento es simple.  Los estados definen una situación y permiten definir que acciones son factibles y por tanto simplifica la programación.
Este es un ejemplo de librería muy simple que puede servir para el proyecto en curso. (gracias a Igor Real por su implementación. 

ver aquí fuentes y el pdf del que he extraído la información publicada








 En el proyecto de las plazas, la máquina de estados se encuentra en el controlador de las dos plazas, posibles eventos/estados (depende de cómo se traten y reflejen) son:
Eventos:
- Petición de plaza (hay que definir si es genérica, corta , larga)
- Vehiculo entrando en garaje
- Vehiculo saliendo de garaje
- Vehiculo Detectado en plaza 
- Detección de plaza libre (cuando se libera)

Estados

- Plaza/s libre/s (al iniciar las plazas o cuando se libera)
- Plaza/s ocupada/s. no es lo mismo reservada que ocupada. detalles a resolver sobre la implementación . Hay que definir si se refleja el estado por plaza o del garaje completo. plazas ocupadas significa que no hay ninguna plaza, plaza ocupada es un estado de la plaza no del parking. 
- Vehiculo en parking.


A veces no es fácil manejar una sola máquina de estados y en necesario tener información en otras variables u otras máquinas de estados.  En esta implementación la parte que debe quedar bien definida son los eventos ya que será lo que se porte a colas y posteriormente a ontologías y plataforma de IOT. 


Links de interés:

   http://arduining.com/2015/09/18/traffic-light-states-machine-with-arduino/   Ejemplo de implementación de un cruce de semáforos con máquina de estados




martes, 17 de noviembre de 2015

Fusión de Sensores

Hoy vamos a ver varias técnicas de fusión de información, y vamos a poner en práctica la fusión con lógica difusa de la información proveniente de dos sensores.


Como parte de las notas opcionales dejo en el blog dos entradas de artículos científicos de fusión de información. La tarea consistirá en hacer un resumen aplicado a la práctica que estamos realizando . Ver en que sentido es aprovechable .

Hay una semana para entregarlo y la entrega consistirá en una presentación en ppt o pdf que se expondrá en clase , no debe exceder en tiempo de exposición los 15 minutos, no hay longitud máxima o mínima.


Articulo1
Articulo2



Luego repasaremos los conceptos de integración de la información presentes en esta Tesis.

Finalmente, según la planificación hay que integrar las medidas de luz y de distancia en la plaza de garaje mediante un controlador difuso. Explicaremos en clase los rudimentos y el código necesario para hacerlo desde cero o utilizar una biblioteca.



Para la implementación del controlador difuso se puede utilizar este código de ejemplo (es de procesing, pero puede ser adaptado fácilmente  a arduino ),  la librería Libreria Fuzzy, o cualquier otra disponible.

Como resumen de la clase comentar que tras la certeza de la situación de una plaza realizada por calibración, medida con media movil, y finalmente un proceso de fusión sensorial, hay que utilizar esta información para actualizar el estado del sistema. Para ello es necesario mantener una máquina de estados que dependiendo de los eventos producidos ("plaza ocupada", " Entra coche" "Sale Coche", "plaza desocupada") realice acciones o emita otros eventos .

Por ejemplo una vez detectada la ocupación de la plaza , si ya estaba ocupada antes no cambiamos de estado, pero si antes estaba desocupada, puede cambiar el estado del aparcamiento a lleno , si ya no hay más plazas libres, o quedarse en el mismo estado si hay más plazas libres.

La ejecución de acciones se puede realizar en la propia máquina de estados, o bien en un "handler" que consume los eventos. Ambas implementaciones facilitan la posterior migración a la ejecución mediante gestión de eventos en colas, sea esta local o a través de un servidor.

La definición de estos eventos es ahora un simple valor , pero posteriormente los definiremos en una ontología.


Update: éste articulo muestra la utilidad de un sistema difuso para detectar y estimar plazas libres en la calle en base a la fusión de información de sensores de magnetismo adyacentes.
Resumen en inglés:
  Abstract
This paper proposes “KATHODIGOS”, a novel smart parking system relying on wireless sensor networks. More specifically, its general architecture and desired properties are presented while its differences from other related research studies and projects are delineated. Based on the aforementioned architecture, the interfaces and technical requirements between the subsystems of “KATHODIGOS” are fully defined. Finally, a promising property of these subsystems which is based on fuzzy inference systems is studied and its preliminary results are shown.