jueves, 13 de septiembre de 2012

Actividad - Definición de herramientas y algo mas

Esta entrada sera una introducción mas para las herramientas que serán útiles, también se mostrara Código como avance.

Las herramientas que usaremos para el proyecto serán.

En cuanto al hardware mas importante:

  • Servomotor:  Para el movimiento de la rueda, se usará este tipo de motor en lugar de uno de corriente directa por el hecho de hacer mas precisos los movimientos de la rueda y con esoto tener mas controlados los movimientos (evitar accidentes desagradables). El motor que se eligió cuenta con una torque (fuerza de rotación) = 13kg/cm y una velocidad = 0.17s/por cada 60° operando a 4.8V,  que practicamente sería el voltaje que nosotros manejaríamos (5V).
       
  •  La rueda: La construcción de la rueda (el material) se encuentra todavía bajo discusión debido a las distintas posibilidades que nos puede brindar las dos opciones que tenemos contempladas (Legos y Erector).
  •  Detector de movimiento:
  •  Tecnología de códigos QR: Como ya se había comentado en entradas anteriores, teníamos contempladas varias opciones para el control y el manejo de la población del estacionamiento, donde terminamos eligiendo los códigos QR (sobre Código de Barras, Tarjetas Magnéticas y Chips RFID) en parte debido a los costos de su implementación ( para todas las demás opciones era necesario un lector especial y en algunos casos un emisor), pero mayormente debido a que es una tecnología "actual/nueva", donde principalmente tomamos muy en cuenta el hecho del deterioro/daño de los comprobantes expedidos (los codigos de barras no se pueden leer si falta una parte de el, tarjetas magneticas hay que cuidarlas del daño en las bandas y las quebraduras, y los RFID de igual manera hay cuidar su manejo, lo que practicamente quedaría a merced del usuario) y debido a que la tecnología QR cuenta con una especie de seguros, que permiten validar el código aún y cuando este deteriorado. Además de un mayor espacio para guardar información y su capacidad de ser leído desde diferentes posiciones, lo que hace acelera el proceso de lectura.
  • Miniprinter: Esta, como su nombre lo dice, es una impresora de tamaño más pequeño que una impresora normal o promedio, generalmente se usa en los centros comerciales para la emisión de tickets o comprobantes de pago. En nuestro proyecto cumplirá la función de imprimir los códigos QR generados, para así poder entregarlos fisicamente al usuario (el dueño del auto).

  • Camara Fotográfica (WebCam):  Su función a cumplir, la de otorgar la posibilidad al sistema de leer los códigod QR generados con anterioridad y con esto realizar la búsqueda del auto y poder entregarlo.
En el plano del software (librerías):

Ellenguaje que usaremos principalmente para el desarrollo será Python, por lo que la moyaría de las herramientas en este apartado son librerías usadas (su respectiva implementación) para este lenguaje.
  • MySQL y Python: Para la conexion de la base de datos, sera necesario el uso de la herramienta de MySQL y el uso de la libreria: MySQLdb 
  •  //Ejemplo de esto
  • PySerial: Esta librería sirve para establecer una conexión serial entre diferentes dispositvos, en este caso se usará para entablar la comunicación entre el Arduino y la computadora. 
    Un ejemplo del uso de esta librería. En este programal, la librería se usa para comunicarse con el Arduino y así controlar un carro de R/C mediante los botones que se ubican en la interfaz lanzada.
    from Tkinter import *
    
    import serial  
    
    s=serial.Serial(2,115200)
    
    def fl():
     s.write('a')
     r=s.read()
     print r
    
    def f():
     s.write('s')
     r=s.read()
     print r
    
    def fr():
     s.write('d')
     r=s.read()
     print r
    
    def rl():
     s.write('z')
     r=s.read()
     print r
    
    def r():
     s.write('x')
     r=s.read()
     print r
     
    def rr():
     s.write('c')
     r=s.read()
     print r
    
    def stop():
     s.write('p')
     r=s.read()
     print r
    
    
    ventana=Tk()
    ventana.title('RController')
    ventana.configure(background='white')
    
    img0=PhotoImage(file='0.gif')
    img1=PhotoImage(file='1.gif')
    img2=PhotoImage(file='2.gif')
    img3=PhotoImage(file='3.gif')
    img4=PhotoImage(file='4.gif')
    img5=PhotoImage(file='5.gif')
    img6=PhotoImage(file='6.gif')
    
    botonfl=Button(ventana, image=img1, command=fl).grid(row=2,column=2)
    botonf=Button(ventana, image=img2, command=f).grid(row=2,column=4)
    botonfr=Button(ventana, image=img3, command=fr).grid(row=2,column=6)
    botonst=Button(ventana, image=img0, command=stop).grid(row=3,column=4)
    botonrl=Button(ventana, image=img4, command=rl).grid(row=4,column=2)
    botonr=Button(ventana, image=img5, command=r).grid(row=4,column=4)
    botonrr=Button(ventana, image=img6, command=rr).grid(row=4,column=6)
    
    ventana.mainloop()
    
     
  • PyQREncode: Librería para python, que será la encargada de generar los códigos QR que pueden ser guardados directamente como una imagen para su posterior impresión, esta librería  además de crear, permite la lectura de códigos QR ya sea desde una imágen de archivo o una imágen tomada directamente desde la webcam.
           //ejemplo de esto  y la imagen del QR generado







#!/usr/bin/env python                                                           
# -*- coding: utf-8 -*-                                                         

import qrencode
texto=raw_input('Texto: ')
imagens = qrencode.encode_scaled(texto, 300, version=3, level=3, hint=3, case_s\
ensitive=False)[2]
print imagensa
a='./'+texto+'2'+'.png'
imagens.save(a)



Las imagenes que nos crea son las siguientes:






























Como vemos los qr que se crean son diferentes =D

jueves, 30 de agosto de 2012

Actividad - Definición de funcionalidades

Nuestro proyecto consta de un estacionamiento rotacional, así que tendrá muchas funcionalidades y se mostraran a continuación:

  • Un motor principal: el cual sera el encargado de mover todo el estacionamiento para bajar o subir. Se podra usar un servomotor, minimotor, etc. para realizar el movimiento principal de la estructura.
  • Sensor de movimiento: para recibir una señal de cuando llega un conductor nuevo y necesita su auto o viceversa, cuando el conductor deje su auto. Esta funcionalidad sera con un sensor de luz, infrarrojo, etc.
  • Lector de Tarjeta magnética: esta función sera importante para el conductor, cuando llege por su auto y necesite un recoger su auto y solo deslizara la tarjeta para avisar al sistema del estacionamiento.
  • Lector de Código de Barras, una alternativa al uso de la tarjeta magnética.
  • Códigos QR y cámara para leerlos, como otra alternativa al uso de la tarjeta magnética y al lector de código de barras.
  • Base de datos: tener en cuenta cuantos espacios hay disponibles y cuales están ocupados, y asi el conductor pueda estacionar su auto. 
La comunicación entre los dispositivos se aplicará mediante processing con python y la librería pySerial (comunicación serial con python), etc...

Para las funcionalidades del motor principal, el sensor y el lector, sera necesario del Arduino.

La rueda:

La rueda(al menos en el prototipo) se construirá utilizando un tipo de estructura basada en un juego de piezas (sacadas de un juguete) llamadas Erector, que trataremos de imitar su forma ya que resulta muy fácil construir fuertes estructuras con ellas y que lo único que tenemos que analizar es el tipo de material del que se construirán estas piezas, ya que de eso depende la fortaleza y el peso de la rueda; otro punto muy importante es que el esfuerzo para hacer girar y parar la rueda depende directamente del peso de esta y por lo tanto también afecta en la elección del tamaño del motor principal.

Esta es la ídea que tenemos hasta el momento de como será la rueda, con unas cuantas 
modificaciones. 


Entre algunas de las modificaciones pensadas están:
  • Agrandar los espacios donde se guardaran los autos.
  • Implementar una especie de candados para que los autos no caigan al momento de girar la rueda.
  • Cambiar el tamaño de las vigas que sostienen los espacios para los autos, esto para rosen o se ubiquen al ras del suelo al momento de estacionar un nuevo auto.
  • Entre otros que surjan en el transcurso del desarrollo.

Alcance de proyecto: Mover la rueda por medio del motor.

Referencias:

jueves, 16 de agosto de 2012

Proyecto Integrador - Metodología

Proyecto - Estacionamiento

Descripción de Proyecto, metodología, calendarizacion, etc...

Descripción:
Estacionamiento giratorio, se utilizara la plataforma de Hardware libre como Arduino, que sera útil para realizar las funciones principales de movimiento, etc.
Sera necesario de programar las funciones con el lenguaje de programación Processing.

Aqui un ejemplo de la idea:


El video anterior da una idea mas clara del proyecto que se depende realizar.

Metodología Scrum

Escogimos esta metodología ya que nos daremos cuenta de los avances que realizo cada uno de los integrantes y dar un seguimiento firme a nuestro proyecto.
Scrum, más que una metodología de desarrollo software, es una forma de auto-gestión de los equipos de programadores. Un grupo de programadores deciden cómo hacer sus tareas y cuánto van a tardar en ello. Scrum ayuda a que trabajen todos juntos, en la misma dirección, con un objetivo claro.
Le permitira al jefe de proyecto ver los progresos dia a dia de los avances y tareas a realizar.

Product Owner(Blanca): 
 Jefe de Proyecto, encargado de mantener el trabajo en equipo.
Scrum Master(Rene):  
Se asegura de guiar la colaboración intraequipo, quita los impedimentos que se presentan a través del tiempo y protege y aisla al equipo de interrupciones.

Equipo de desarrollo(Blanka, Vannesa, Adriana, Rene, Rodolfo, Cristhian, David): 
Equipo encargado de entragar el trabajo que cuentan con las habilidades necesarias para llevarlo acabo ( (análisis, diseño, desarrollo, pruebas, documentación, etc).

Roles:
Lo primero que se hara sera agrupar por parejas o de 3 personas, segun lo que vayan a realizar para el proyecto, y al final juntar el material o trabajo realizado para tener un proyecto terminado.
Todo el equipo se apoyara por si se llega a tener un problema o retraso en la realización del proyecto.

  • Rene -  Base de Datos
  • Blanca -Integración del Funcionamiento()
  • Rodolfo - Desarrollo de Pruebas
  • Adriana - Documentación
  • Vanessa - Desarrollo de Interfaz, diseño
  • David - Automatización
  • Cristian - Automatización

Reunión diaria de sincronización del equipo (Scrum daily meeting)

Nos facilitara la transferencia de información y la colaboración entre los miembros del equipo y asi poder aumentar la productividad y poder en manifiesto puntos en que se puedan ayudar unos a otros.

Cada miembro del equipo debe responder las siguientes preguntas en un timebox de cómo máximo 15 minutos:
  • ¿Qué he hecho desde la última reunión de sincronización? ¿Pude hacer todo lo que tenía planeado? ¿Cuál fue el problema?
  • ¿Qué voy a hacer a partir de este momento?
  • ¿Qué impedimentos tengo o voy a tener para cumplir mis compromisos en esta iteración y en el proyecto?

Milestones

Actividad                                                      Puntos                Fecha

Presentación inicial                                       10              16-Agosto-12
Definición de funcionalidades                        10              30-Agosto-12
Definición de herramientas y algo mas               5                13-Sept-12
Diseño del modelo                                            5              20-Sep-12 
Avances                                                          10                11-Oct-12
Diseño de Base de Datos                                    10               18-Oct-12
Programación del funcionamiento del sistema    5               25-Oct-12
Prototipo del modelo                                         10                1-Nov-12
Integración Python y prototipo del modelo()         10              8-Nov-12
Pruebas del proyecto                                             12             15-Nov-12
Demo de lo obtenido hasta el momento                                            13               22-Nov-12


Bitácora


La Bitácora se llenara semanalmente en el cual se reportaran los avances que se realizan en el proyecto asi como quien la realizo, las actividades que se realizaron asi como los cambios que se han realizado