Grupo 1

De Proyecto Butiá
Revisión del 20:09 13 sep 2014 de Grupobutia (Discusión | contribuciones) (Crear Driver)

Saltar a: navegación, buscar

Integrantes

  • Ignacio Betancurt - ibetancurt@gmail.com
  • Alejandro Brusco - alejandrobi89@gmail.com
  • Maite Ibarburu - maite2310@hotmail.com

Tutor

  • Gonzalo Tejera

Reseña

Introducción

  • Un robot inteligente es por definición una máquina capaz de interactuar con su entorno de forma autónoma. Es un robot del cual se espera que aprenda y ejecute tareas aún en ambientes cambiantes. Para lograr esto, el robot debe poder recibir información sobre su entorno y actuar en base a ella, de una forma segura, cumpliendo un propósito y sentido. Es por este motivo que se necesitan los sensores.
  • Un sensor es un dispositivo capaz de percibir magnitudes físicas y/o químicas con el fin de transformarlas en señales electrónicas, y así introducirlas al circuito de control, de modo que el robot sea capaz de cuantificarla y reaccionar en consecuencia.

Objetivos

  • Investigación de kits educativos actuales
  • Implementación de sensores nuevos (y de utilidad) para el kit Butiá

Kits educativos actuales

LEGO Mindstorm

Lego-Grupo1.png

El kit de robótica educativa LEGO dispone de los siguientes sensores:
-Sensor barométrico
-Sensor de acelerómetro
-Sensor de color
-Sensor de contacto
-Sensor de distancia
-Sensor de infrarrojo
-Sensor de intensidad lumínica
-Sensor de orientación/Brújula
-Sensor de sonido
-Sensor de temperatura
-Cámara
-Sensor Dexter dIMU (combina giroscopio y acelerómetro)

VEX

VEX.png

El kit de robótica educativa VEX IQ dispone de los siguientes sensores:
-Sensor de color
-Sensor de contacto
-Sensor de distancia
-Sensor de giro (Giroscopio)
-Touch LED (sensor/actuador que detecta el color del objeto, y enciende una luz del color leído)

Butiá

Butia-Grupo1.png

El kit de robótica educativa Butiá dispone actualmente de los siguientes sensores:
-Sensor de color (escala de grises)
-Sensor de contacto
-Sensor de distancia
-Sensor de imagen (cámara de la XO)
-Sensor de intensidad lumínica
-Sensor de sonido (micrófono de la XO)

Discusión de qué sensores integrar al robot Butiá

En base a la investigación efectuada referente a los sensores disponibles en el kit educativo LEGO Mindstorm y VEX IQ, analizamos qué sensores sería interesante agregar al Proyecto Butiá.

El giroscopio no es un sensor que esté presente actualmente en el Butiá. El mismo se utiliza para conocer la orientación en el espacio de algún dispositivo. Los altos precios de estos sensores, se enfrentan a la idea de que el Butiá sea un robot accesible para todos los contextos.

El sensor de orientación o brújula se utiliza para orientarse basándose en los campos magnéticos terrestres. Su menor costo y su amplia difusión, clasifican a este sensor como uno de los candidatos a implementar.

Conociendo que existen planes de construir una estación meteorológica en una escuela, resulta interesante poder incluir un sensor de temperatura al robot Butiá. Por otro lado, la temperatura es una magnitud que resulta muy intuitiva para el público en general y en particular, para los niños. Complementando los sensores necesarios para una estación meteorológica, podemos incluir uno que sense la humedad y otro para sensar la presión.

Luego de la segunda reunión se decidió implementar: movimiento, temperatura y humedad. También se vió la posibilidad de implementar un sensor brújula y un sensor de gas. El primero es un sensor caro, por lo que se llegó a la alternativa de hacer una brújula artesanal y con un sensor existente ya en butiá, por ejemplo la camara, "ver" como está posicionada la brújula. En cuanto al sensor de gas, decidimos dejarlo como último a implementar, si es posible, ya que le vimos mayor utilidad al resto de los sensores propuestos.


Sensores a incorporar

Movimiento

PIR.jpg


El sensor de movimiento hace un relevamiento del ambiente y devuelve si en este encontró objetos en movimiento. Hemos incorporado el sensor Flamingo EDA PIR 2.0.

Características
  • Opera a 5 Voltios de alimentación
  • Tiempo ajustable de delay (de 0.3 a 18 segundos)
  • Rango: hasta 120 grados a 7 metros
  • Bajo costo


Temperatura

DHT11.jpg

El sensor de temperatura sensa la temperatura ambiente y la devuelve. En una primer instancia, intentamos incorporar los sensores seriales de temperatura DS18B20 ([1]); y el de temperatura y humedad DHT11 ([2]). Tras un largo período de investigación y pruebas, concluímos que la integración de un sensor serial no estaba a nuestro alcance para los conocimientos y experiencia que teníamos.
Por lo tanto, optamos por integrar el sensor LM35 a la plataforma Butiá. LM35.png Su salida es lineal y cada grado equivale a 10 mV, a demás no requiere de circuitos adicionales para calibrarlo externamente.


Características
  • Está calibrado en grados Celsius.
  • La tensión de salida es proporcional a la temperatura.
  • Opera entre 4 y 30 Voltios de alimentación.
  • Precisión calibrada de 1ºC
  • Su rango de medición abarca desde -55°C hasta 150°C
  • Bajo costo

Brújula

Brujula.jpg

El sensor de brújula, se utiliza para conocer la orientación y se basa en el magnetismo terrestre.

En primera instacia, se empezó por investigar cuáles componentes electrónicos podrían ser utilizados para este fin.

HMC6352

1884-HMC6352chipeke.jpeg

El sensor HCM63525 es un magnetómetro, ya que mide la fuerza de los campos magnéticos, pero también se le suele llamar compás o brújula digital. Los magnetómetros nos permiten saber la dirección hacia la que se encuentra el Norte del campo magnético mas fuerte. Se suelen utilizar para obtener la orientación respecto al Norte magnético terrestre. Tienen mucha utilidad en robots para la navegación autónoma o para devolver datos de orientación a distancia.

Características
  • Interfaz I2C por lo que se necesitaría 2 pines para obtener los datos
  • Alimentación 2.7 - 5.2V.
  • Refresco ajustable de 1 a 20Hz
  • Resolución 0.5 grados.
  • Consumo: 1mA (3V)
  • Dimensiones: 15x15mm
  • Permite calibrado
LSM303

LSM303.jpg
Contiene dos sensores, un acelerómetro que indica la dirección en que se está respecto a la tierra (midiendo la gravedad) y el otro es un magnetómetro que nos permiten conocer hacia donde se encuentra el campo magnético más fuerte (el norte magnético).

Características
  • Interfaz I2C
  • 3V - 5V


Debido a que los sensores de brújulas son muy caros y difíciles de conseguir en el medio local, comenzamos una investigación para imitar el comportamiento utilizando una brújula tradicional y la webcam de las computadoras. El procesamiento de imagen es una tarea ardua que aún no ha madurado lo suficiente como para poder ser implementado fácilmente y con una suficiente confiabilidad. También hemos investigado la paleta "Follow Me" de Butiá y una brújula común. No pudimos "traducir" la imagen a valores útiles para analizar la orientación. Consideramos dos alternativas, la primera (con una brújula que mide el angulo con respecto al norte) esto no lo vimos posible ya que no encontramos forma de leer este dato con la cámara. La segunda opción fue imprimir en pantalla donde se encuentra el norte, utilizando una brújula con el norte en color rojo, y de esta forma el follow me lo puede "ver".

En conclusión, sería muy interesante la incorporación de este sensor a la plataforma, pero los altos precios de los sensores brújulas se oponen a la accesibilidad objetivo del proyecto. Una posible implementación a través del procesamiento de imágenes, no está al alcance de nuestros conocimientos. Es posible que teniendo en cuenta el lento pero incesante avance en el desempeño de las herramientas de procesamiento de imagen, en un futuro se alcance una solución por este camino.

Implementación

A continuación se detallan los pasos seguidos para incorporar dichos sensores al Butiá:

  • Crear User Module
  • Reconocimiento PnP
  • Crear Driver
  • Grabar Firmware

Crear User Module

Un usermodule debe cumplir con una API determinada, de esta manera es posible agregar las funcionalidades que el módulo expone. Las operaciones principales que se deben implementar son las encargadas de atender los eventos de:

  • inicialización
  • liberación de recursos
  • configuración

El siguiente es el codigo del UserModule del sensor Temperatura:

Codigo User Module Temperatura[3]


Reconocimiento PnP

Se toma un valor de resistencia no utilizado en la cartilla [4] y se agregan sus respectivas constantes (por ejemplo en el caso de la temperatura R_TEMP_MIN, R_TEMP_MAX), con los valores dados por dicha tabla, también se debe aumentar la cantidad de dispositivos (MAX_DEVICES) del archivo pnp.h.

Luego en el pnp.c en la función table_device_id_resistance se debe agregar el modulo nuevo con las constantes definidas anteriormente

    rom const device_resistance table_device_id_resistance[MAX_DEVICES] = {
          ...
          { "temp", R_TEMP_MIN, R_TEMP_MAX}
    };

Crear Driver

A continuación se encuentra el driver del sensor temperatura:

import math

RD_VERSION = 0x00 GET_VALUE = 0x01

VCC = 65536

def getVersion(dev):

   dev.send([RD_VERSION])
   raw = dev.read(3)
   return raw[1] + raw[2] * 256

def getValue(dev):

   dev.send([GET_VALUE])
   raw = dev.read(3)
   volt = (raw[1] + raw[2] * 256) * 5.0 / VCC
   return math.floor(volt * 1000.0) / 10.0

Donde el getValue hace la traducción de la salida del sensor a grados celsius tal como se especificó en la sección del sensor Temperatura.

Grabar Firmware

El microcontrolador contiene un bootloader que permite grabar el firmware sin necesidad de un programador por hardware. Para grabar el firmware se utiliza el siguiente comando: ./fsusb --force_program usb4all2.hex. Donde usb4all2.hex es el binario generado como resultado de compilar el proyecto (con los usermodules nuevos agregados) y fsusb es un programa que implementa el protocolo de grabación de firmware de microchip.


Demos

Título del enlace

Actas

Primera reunión - 08/07/2014

  • En nuestra primera reunión nos informamos de cómo proceder con los materiales a utilizar. Se acordó para una segunda reunión, estudiar los diferentes kits que ya están implementados en el mercado y discutimos la utilidad para el proyecto de algunos sensores que ya teníamos pensados.

Segunda reunión - 08/08/2014

  • En nuestra segunda reunión, ya estabamos informados de que sensores estaban implementados en varios kits diferentes. En esta reunión se concluyó que sensores para butiá sería de utilidad implementar, estos son: movimiento, temperatura y humedad. También se vió la posibilidad de implementar un sensor brújula y un sensor de gas. El primero es un sensor caro, por lo que se llegó a la alternativa de hacer una brújula artesanal y con un sensor existente ya en butiá, por ejemplo la camara, "ver" como está posicionada la brújula. En cuanto al segundo sensor: el de gas, decidimos dejarlo como último a implementar, si es posible, ya que le vimos mayor utilidad al resto de los sensores propuestos.

09/08/2014

  • Recibimos los sensores