lunes, 18 de mayo de 2009
domingo, 17 de mayo de 2009
miércoles, 13 de mayo de 2009
miércoles, 22 de abril de 2009
sábado, 18 de abril de 2009
Adquisición de la tarjeta EYE-FI
Primera transmisión
Cambios realizados a la estructura
Cambio de batería
Afortunadamente, mientras trabajábamos en el laboratorio de Redes nos encontramos una batería de un tercio del peso de la anterior. Esta batería es de 12V y 4A. Agradecemos al Ing. Raime Bustos el préstamo de la batería para la realización de este proyecto. Ha sido montada en la estructura de la siguiente manera.
martes, 14 de abril de 2009
Demostración del módulo de sensores
Este módulo fue creado como parte del robot vigilante. Se encargará del control de los sensores ultrasónico (SRF08) e infrarrojos (GP2D15). Para el control de los mismos se utilizó un microcontrolador PIC18F452. La programación se realizó en C en el compilador CCS. Este módulo se comunicará con el módulo central, quien se encargará de realizar las modificaciones pertinentes a la ruta.
Módulo de sensores
Trabajo arduo en semana santa
El equipo aprovechó las esperadas "vacaciones" de semana santa para trabajar día y noche en el proyecto.
Algunos de los avances realizados en esta semana fueron el desarrollo del sistema de sensores y detección de obstáculos.
Decidimos ordenar un nuevo sensor infrarrojo, para hacer más completo nuestro sistema.
El sistema de programación de trayectoria y movimiento fue completado, así como un módulo inalámbrico para que no fuera necesario conectarse directamente a una PC para programarla.
En cuanto al diseño de la transmisión, se realizaron avances considerables, los cuales serán mostrados en entradas posteriores del blog.
La estructura sufrió modificaciones para la conveniencia del equipo. Seguiremos una estructura semejante a la del robot EOS. Esta estructura se encuentra aún en proceso.
martes, 31 de marzo de 2009
Sistema de control.
Con el microcontrolador también se controlara el sentido que deben tener las ruedas, mediante un driver para motores de DC L293, el cual tiene la capacidad de controlar el sentido de dos motores, después del driver se colocara una etapa de potencia para evitar quemar el driver y alimentar la corriente necesaria para mover los motores.
Estructura, Sistema de tracción y control de trayectoria.
En el interior de la estructura, se colocaran dos niveles los cuales tendrán almacenado la batería y circuitería de control del robot.
El sistema de tracción estará conformado por dos motores de DC de 12v, los cuales dan la tracción al robot junto con una rueda loca para darle estabilidad y facilidad de movimiento al mismo.
Ya que el peso aproximado del robot es de 5.5Kg se colocara una transmisión reductora para reducir las revoluciones de los motores y aumentarles el torque que será transmitido a las ruedas de tracción del robot.
Al principio se propuso utilizar una transmisión compuesta por poleas y bandas para hacer la reducción de revoluciones, y fabricada de polietileno, pero se encontró que en algunos caso al momento de llevar a la transmisión a trabajos forzados y encontrar puntos de quiebre o derrape del material, la transmisión tendía a que las bandas se patinaran en las poleas y por lo tanto el robot dejaría de moverse o hasta llegar a reventar las bandas de plástico. Por esta razón optamos por la implementación de una transmisión compuesta por engranes, de esta manera evitamos derrapes entre componentes dentro de la transmisión.
Las primeras pruebas de transmisiones que se hicieron fueron hechas con transmisiones de 3 engranes, con el propósito de tener un engrane que fuera el productor del movimiento de la transmisión, el cual va directamente al rotor del motor de DC, otro engrane es el engrane de salida de la transmisión el cual va conectado al eje de giro de las ruedas, entre ellos se colocaría un tercer engrane el cual seria el transmisor de energía entre el engrane de salida y el de entrada, además de tener la función de transmisor de energía, tendría la función de engrane fusible, el cual, en caso de que el robot estuviera en un momento en el que entro en una parte donde la rueda quedara atorada y el robot quisiera seguir avanzando, se quebrara así evitando que el motor se sobrecalentara pudiendo llegar a quemar el motor o la circuitería misma.
Debido a la complejidad de este sistema ya que los engranes requieren de estar muy bien alineados y la estructura debe ser lo suficientemente solida para soportar las fricciones y peso del robot, se opto por hacer una transmisión simple de dos engranes con una relación de 3 a 1, siendo el sistema final, un engrane en el eje de rotación de la rueda y otro en el rotor del motor de DC, esto quiere decir que el engrane que va en el eje de las ruedas es 3 veces aproximadamente mas grande que el que va en el rotor del motor.
Los engranes de las transmisiones, fueron moldeados con plásticos macizos para evitar que sufrieran fracturas causadas por la fricción al momento de estar en movimiento el robot, ya que los engranes van a estar interactuando directamente entre si, el engrane del rotor del motor de DC esta fabricado de plástico resistente al calor, con un total de 19 dientes en su circunferencia, el engrane que va colocado en el eje de la llanta esta hecho de plástico ligero para hacer mas fácil el giro de las ruedas, con un total de 60 dientes en su circunferencia.
Las ruedas del robot son de plástico duro de 2.5 pulgadas de diámetro, serán recubiertas de plástico blando para amortiguar el rebote que tenga el robot causada por las irregularidades del terreno por el que pueda transitar el robot.
martes, 17 de marzo de 2009
Interfaz Para Grabar la Trayectoria
static int panelHandle;
int SendAsciiString (int comport, char *send_ASCII);
int GetSerialMessage (int comport, char *readdata);
char readBuffer[256];
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "Trayectoria.uir", PANEL)) < loopexit =" 0;" x="0;" error =" -1;" x="0;" begin =" Timer();" seconds =" 0.003;" inbuffer =" GetInQLen"> 2) {
ComRd (comport, readdata, InBuffer);
LoopExit = 1;
error = 0;
break;
}
SyncWait (Begin, Seconds);
}
if (x == 500)
break;
} while (LoopExit == 0);
return error;
}
Primera Fase del Programa para la Planeacion de la Trayectoria
/*********************************************************************/
/* Project Name: Treyectory */
/* Source fle name: RTC.c */
/*********************************************************************/
/* Robotecnicos */
/*********************************************************************/
/*********************************************************************/
/* Code for QE128 MCU's */
/* Module: Trayectory */
/* The code was developed and tested on CodeWarrior 6.0 version */
/* */
/* Description: To learn the trayecory to be followed */
/* */
/*********************************************************************/
/* */
/* Date: 07/03/2009 */
/* Robotecnicos */
/* ITESM */
/*********************************************************************/
#include
#include "derivative.h" /* include peripheral declarations */
/*********************************************************************/
/* Globals */
/*********************************************************************/
#define RECORDING 1
#define LOOP 2
#define RESET 3
#define UP 1
#define DOWN 2
#define RIGHT 4
#define LEFT 8
#define PHOTO 16
typedef unsigned char UINT8;
unsigned char edo_past = 0;
unsigned char begin= 0;
unsigned char finish = 0;
unsigned char in = 0;
unsigned int count = 0;
unsigned int direction = 0;
unsigned int elements = 0;
unsigned int i = 0;
unsigned char state = RECORDING;
unsigned int trayectory[5][2];
/*********************************************************************/
/* Function declarations */
/*********************************************************************/
void MCU_Init(void) {
SOPT1 = 0x23; /* Watchdog disable. Stop Mode Enable. Background Pin enable. RESET pin enable */
SCGC1 = 0x01; /* Bus Clock to the SCI1 module is enable */
SCGC2 = 0x04; /* Bus Clock to the RTC module is enable */
}
void GPIO(void) {
PTAPE = 0x0C;
PTADD = 0x00; // Configure Port A as inputs
PTDPE = 0x0C;
PTDDD = 0x00; // Configure Port D as inputs
PTCDD = (PTCD 0x3F); /* Configure PTC0-PTC5 as outputs */
PTEDD = (PTED 0xC0); /* Configure PTE6 and PTE7 pins as outputs */
PTCD = 0x3F; /* Put 1's in port C in order to turn off the LEDs */
PTED = 0xC0; /* Put 1's in port E port in order to turn off the LEDs */
}
// To print data in the LEDs of DEMOQE
void display(byte x){ /* LEDS low power active */
x = ~x;
PTED = (x & 0xC0); /* Move the adquired ADC value to port E */
PTCD = (x & 0x3F); /* Move the adquired ADC value to port C */
}
void RTC_configuration (void) {
RTCSC = 0x08; /* RTCPS configure prescaler period every 1s */
RTCMOD = 0x00; /* RTCMOD configure to interrupt every 1s */
}
void SCI_configuration (void) {
SCI1C1 = 0x00; /* 8-bit mode. Normal operation */
SCI1C2 = 0x2C; /* Receiver interrupt enable. Transmitter and receiver enable */
SCI1C3 = 0x00; /* Disable all errors interrupts */
SCI1BDL = 0x1A; /* This register and the SCI1BDH are used to configure the SCI baud rate */
SCI1BDH = 0x00; /* BUSCLK 4MHz */
/* Baud rate = -------------------- = ------------ = 9600bps */
} /* [SBR12:SBR0] x 16 26 x 16 */
/*********************************************************************
* Main Function *
*********************************************************************/
void main(void) {
MCU_Init(); /* Function that initializes the MCU */
GPIO(); /* Function that initializes the Ports of the MCU */
RTC_configuration(); /* Function that initializes the RTC module */
SCI_configuration();
EnableInterrupts; /* enable interrupts */
/* Enable RTC interrupt */
for(;;) {
// in = ((~PTAD) & 0x0C);
// in = in >> 2;
// in = in ((~PTDD) & 0x0C);
switch (state){
case RECORDING:
if (finish == 0x01){
finish = 0x00;
begin = 0x00;
trayectory[elements][0] = direction;
trayectory[elements][1] = count;
count = 0;
elements ++;
//if (elements == 5) state = LOOP;
}
if(begin == 0x00) {
edo_past = in;
switch(in){
case 1 : PTCD_PTCD0 =0; RTCSC_RTIE = 1; begin = 0x01; direction = UP; break;
case 2 : PTCD_PTCD1 =0; RTCSC_RTIE = 1; begin = 0x01; direction = DOWN; break;
case 4 : PTCD_PTCD2 =0; RTCSC_RTIE = 1; begin = 0x01; direction = RIGHT; break;
case 8 : PTCD_PTCD3 =0; RTCSC_RTIE = 1; begin = 0x01; direction = LEFT; break;
case 16: PTCD_PTCD4 =1; RTCSC_RTIE = 1; begin = 0x01; direction = PHOTO; break;
default: PTCD = 0xEF; RTCSC_RTIE = 0;
}
}
break;
case LOOP:
PTED_PTED6 = 0;
RTCSC_RTIE = 1;
break;
case RESET:
elements = 0;
PTCD_PTCD0 =1;
PTCD_PTCD1 =1;
PTCD_PTCD2 =1;
PTCD_PTCD3 =1;
PTCD_PTCD4 = 0;
break;
}
} /* loop forever */
/* please make sure that you never leave this function */
}
/*********************************************************************
* Interrupt Service Routines *
*********************************************************************/
void interrupt VectorNumber_Vsci1rx SCI_RX_ISR(void) {
SCI1S1_RDRF = 0; /* Receive interrupt disable */
// display (SCI1D); /* Display on PTE the received data from SCI */
switch (SCI1D){
case '0': in = 0; break;
case '1': state = RECORDING; break;
case '2': state = LOOP; break;
case '3': in = 1; break;
case '4': in = 2; break;
case '5': in = 4; break;
case '6': in = 8; break;
case '7': in = 16; break;
case '8': state = RESET; break;
}
while (SCI1S1_TDRE == 0); /* Wait for the transmitter to be empty */
//SCI1D = '1'; /* Send a character by SCI */
}
void interrupt VectorNumber_Vrtc RTC_ISR(void) {
RTCSC = RTCSC 0x80; /* Clear the RTC flag */
PTED_PTED7 ^= 1; /* Toggles PTE7 pin */
// in = ((~PTAD) & 0x0C);
// in = in >> 2;
// in = in ((~PTDD) & 0x0C);
switch(state){
case RECORDING:
count++;
if(edo_past != in){
finish = 0x01;
RTCSC_RTIE = 0;
}
break;
case LOOP:
if (count == trayectory[i][1]){ PTCD_PTCD0 =1; PTCD_PTCD1 =1; PTCD_PTCD2 =1; PTCD_PTCD3 =1; PTCD_PTCD4 = 0; i++; count = 0;}
count ++;
if(i == elements) i = 0;
direction = trayectory[i][0];
switch(direction) {
case UP : PTCD_PTCD0 =0; break;
case DOWN : PTCD_PTCD1 =0; break;
case RIGHT : PTCD_PTCD2 =0; break;
case LEFT : PTCD_PTCD3 =0; break;
case PHOTO : PTCD_PTCD4 =1; break;
default: PTCD = 0xFF;
}
break;
}
}
viernes, 6 de marzo de 2009
Disparador externo CHDK
El diagrama que se usa es muy simple
Se requiere un puerto USB con la entrada mini B que se conecta a la cámara, mientras que del otro extremo se puede conectar a un hembra que este conectado al micro o podemos cortar directamente el cable y aplicar la diferencia de voltaje ahí.
El programa que usamos para detectar el puerto usb es muy simple
@title Remote button
while 1
wait_click 1
if is_key "remote" then shoot
wend
end
Es un ciclo infinito (while 1) que espera por algún botón para ser presionado (wait_click 1). Si el “botón” es en realidad la diferencia de voltaje en el usb (remote) entonces realiza un disparo y repite el ciclo, si es algún otro botón repite el ciclo sin disparar.
El voltaje que se aplica en la cámara depende de cada modelo en nuestro caso es suficiente con 3.75, sin embargo otros modelos requieren mas voltaje mientras que otros requieren menos.
El CHDK detecta al puerto USB como otro botón mas, es decir que se puede usar para alterar el comportamiento del programa y no solo para disparar la cámara., el día de hoy en clase trataremos de hacer que la cámara tome fotos en intervalos, y que cuando reciba una señal del micro tome fotos al detectar movimiento.
Estructura del Robot
martes, 3 de marzo de 2009
Eye-fi baja de precio
viernes, 27 de febrero de 2009
Inauguración del blog en INGLÉS
Para visitar el blog, clic en el siguiente link
BLOG EN INGLÉS - ENGLISH VERSION OF THE BLOG
martes, 24 de febrero de 2009
Primer programa de prueba para el PIC16F877A
ROBOT ELECTRONICS - 1st rule of Robotics: Have fun!
En ella pudimos encontrar una variedad de ejemplos para controlar el SRF08. Cabe mencionar que se permite que estos ejemplos se utilicen para fines educativos, más no comerciales.
Encontramos el siguiente código, que será el precursos de nuestras pruebas con el PIC16F877A.
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [Vladimir Kornienko] *
'* Notice : Copyright (c) 2006 [ARMORED DOLPHIN] *
'* : All Rights Reserved *
'* Date : 12/1/2006 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'PIC16f872
'---------------- Definitions---------------------------------------------
define OSC 20
'------------- Define LCD registers and bits------------------------------
DEFINE I2C_HOLD 1
define I2C_SLOW 1
Define LCD_DREG PORTB 'Set LCD data port
Define LCD_DBIT 0 'Set starting data bit
Define LCD_RSREG PORTB 'Set LCD register select port
Define LCD_RSBIT 4 'Set LCD register select bit
Define LCD_EREG PORTB 'Set LCD enable port
Define LCD_EBIT 5 'Set LCD enable bit
define DEBUG_REG PORTC 'Set DEBUD port
DEFINE DEBUG_BIT 1 'Set DEBUG pin
DEFINE DEBUG_BAUD 2400 'Set DEBUG baud rate
DEFINE DEBUG_MODE 0 'Set DEBUG mode
DPIN var PORTc.4 ' I2C data pin
CPIN var PORTc.3 ' I2C clock pin
bearing var word ' word size bearing value 0 - 359
bearing1 var byte ' byte size bearing value 0 - 254
Main:
i2cread dpin,cpin,%11000000,2,[bearing.Highbyte,bearing.lowbyte]
lcdout $fe, 1,"BEARING ",DEC BEARING/10
i2cread dpin,cpin,%11000000,1,[bearing1]
lcdout $fe, $c0,"Bearing ", dec bearing1
DEBUG " Compass Bearing ", # bearing,13,10
pause 20
goto main
Microcontrolador PIC16F877A (para manejo de sensores)
El microcontrolador a usar para el manejo de sensores es el PIC16F877A, este tiene la particularidad de contar con los pines necesarios para comunicación a través del protocolo I2C, haciéndolo la mejor opción en este caso, a continuación se describen las principales características de este modelo:
- Velocidad de operación: 20Mhz
- Mas de 8K x 14 palabras de memoria FLASH
- Más de 368 x 8 bytes de memoria de datos (RAM)
- Más de 256 x 8 bytes de memoria de datos EEPROM
- Bajo consumo de energía.
- Puerto serial síncrono (SSP) con SPI (Modo maestro)
- I2C (Maestro/Esclavo)
Especificaciones del sensor ultrasónico SRF08
Éste es un sensor de alto desempeño para detectar rangos de distancia. Se comunica a través del protocolo I2C, el cual se encuentra disponible en el microcontrolador PIC que utilizaremos para su control.
El SRF08 se comporta de la misma forma que eeprom's serie 24XX, a excepción de que el direccionamiento en I2C es diferente.
Algunas especificaciones:
Voltaje: 5v
Current: 15mA Typ. 3mA Standby.
Frecuencia: 40KHz
Rango: 3cm -6m.
Conexión Standard I2C Bus.
Sensor de luminosidad
Rango de unidades reportadas en uS, mm o pulgadas.
Dimensiones: 43 x 20 x 17mm altura
Peso: 11 g.
Guía para instalar el CHDK
Los materiales para instalar el CHDK son:
Φ Tarjeta SD
Φ Cámara Canon powershot compatible. (aqui)
Φ Lector de tarjetas SD
Φ El programa CARDTRIKS para usuarios Windows
Φ El editor hexadecimal de tu preferencia
Lo primero que se tiene que hacer es checar la versión de FIRMWARE que tiene nuestra cámara. Para esto creamos un archivo Dummy llamado vers.req el cual no necesita ningún contenido especial (es decir puede ser un archivo de 0kb). Es importante que para este paso como todos los demás se útiles un lector de tarjetas que nos reconozca nuestra memoria como un disco externo (o como una memoria usb estandar) pues si se usa el cable usb que trae la cámara no se tiene acceso al directorio de mas alto nivel de la tarjeta, solo a la carpeta de fotos.
El archivo vers.req se copia a la tarjeta y después colocamos la tarjeta en la cámara. Prendemos la cámara en el modo de reproducción de fotografías y presionamos el botón de SET por un segundo. Después de esto se presiona el botón de DISP sin haber soltado el de SET, esto provocara que se despliegue una pantalla con la versión de FIRMWARE que tenemos, en nuestro caso es el GM1.00A.
Una vez que se conoce la versión de firmware bajaos el CHDK para nuestra cámara bajamos la versión adecuada del CHDK (http://mighty-hoernsche.de/)
Antes de instalar el CHDK en la tarjeta tenemos que prepararla como un disco de arranque. Los usuarios Windows deberán usar el programa que se menciono al principio. Los usuarios de mac y linux (entre otros OS basados en unix) pueden usar la línea de comandos para realizar el procedimiento. En este caso se formatea la tarjeta como FAT16 (es importnate notar que esto solo es para tarjetas menores a 4 gigas),.
Después en la línea de comandos de la terminal (para usuarios mac) usas el comando de dd if=/dev/diskXsX of=BootSector.bin bs=512 count=1 donde diskXsX se cambia por el identificador de la tarjeta (algo como disk1s1) y esto copia a tu computadora el sector de arranque de la tarjeta. El comando en ubuntu seria dd if=/dev/sdx1 of=BootSector_G9.bin bs=512 count=1 donde sdx1 es el identificador de la tarjeta. Esto crea el archivo Bootsector.bin en la carpeta “home” del usuario que estés usando en ese momento.
Después de este paso se abre el archivo que se copio al disco duro con un editor hexadecimal y en el sector 40 hexadecimal (64 decimal) agregas la palabra BOOTDISK, salvas el archivo y ahora realizas el procedimiento inverso, copias el archivo a la memoria (al sector de arranque) en Windows se puede usar un programa para esto, en mac se usa una línea de comando en terminal muy parecida a la anterior. dd if=BootSector.bin of=/dev/diskXsX bs=512 count=1 donde diskXsX se remplaza por el identificador del disco como es disk1s1. La línea de comando en ubuntu dd if=BS.bootable of=/dev/sdx1 bs=512, donde sdx1 es el identificador de la tarjeta.
IMPORTANTE en caso de que alguno de los comandos de terminal te marque un error como “dd: /dev/disk1s1: Resource busy” significa que la tarjeta esta siendo usada por el sistema operativo, así que debes “desmontarla”, en UBUNTU se puede hacer desde la línea de comandos, en MAC entras a DiskUtility y seleccionas UNMOUNT, es importante notar que esto no es lo mismo que expulsar el disco, si se expulsa la tarjeta esta pierde toda conexión con la computadora, en este caso lo que hacemos es solo desconectar el controlador que permite que el sistema operativo realice acciones sobre la tarjeta (como copiar archivos o explorar el contenido de la tarjeta) pero la tarjeta sigue teniendo comunicación con la computadora.
Una vez que nuestra tarjeta esta lista se puede instalar el CHDK, lo primero que se hace es descomprimir el archivo que se descargo y lo colocamos en la tarjeta, todo el programa va dentro de una tarjeta conocida como CHDK en el root de la tarjeta. Una vez que se hizo esto se inserta la tarjeta a la cámara pero teniendo cuidado de que el switch de LOOK este activado, este switch indica que no se permite escribir archivos en la tarjeta y es necesario pues en teoría no se puede escribir sobre el disco que usas como arranque, pero el CHDK sobrescribe por software esta función para que la tarjeta se puede usar para tomar fotos.
Finalmente solo nos queda prender la cámara y disfrutar las funciones del CHDK.
Si se quiere usar un programa extra se puede ir a
http://chdk.wikia.com/wiki/UBASIC/Scripts
donde existe una serie de fundones extras programadas para el CHDK. Uno muy interesante es el script que detecta movimiento, la demostración del mismo se hará en clase.
http://chdk.wikia.com/wiki/UBASIC/Scripts:_Multipurpose_Motion_Detection
Para usar estos scripts solo basta copiarlos a la tarjeta y cargarlos desde el menú del CHDK.
viernes, 20 de febrero de 2009
Resumen de Protocolo I2C
Para resolver este problema, Phillips desarrolló Inter-IC o I2C en la década de los 80s. I2C es un protocolo de distancias cortas y bajo ancho de banda. Todos los dispositivos se conectan mediante dos cables. Como ya hemos mencionado anteriormente, ell sensor ultrasónico SRF08 con el que cuenta nuestro equipo está diseñado para trabajar con el protocolo I2C.
A continuación se mencionan algunas de las características más importantes de este protocolo.
•Se necesitan solamente dos líneas, la de datos (SDA) y la de reloj (SCL).
•Cada dispositivo conectado al bus tiene un código de dirección seleccionable mediante software. Habiendo permanentemente una relación Maestro/Esclavo entre el micro y los dispositivos conectados
•El bus permite la conexión de varios Maestros, ya que incluye un detector de colisiones.
•El protocolo de transferencia de datos y direcciones posibilita diseñar sistemas completamente definidos por software.
•Los datos y direcciones se transmiten con palabras de 8 bits.
Las líneas SDA y SCL transportan información entre los dispositivos conectados al bus. Cada dispositivo es reconocido por su código (dirección) y puede operar como transmisor o receptor de datos. Además, cada dispositivo puede ser considerado como maestro o esclavo. El maestro es el dispositivo que inicia la transferencia en el bus y genera la señal de reloj. El esclavo es el dispositivo direccionado.
Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales, conectadas al positivo de la alimentación a través de las resistencias de pull-up. Cuando el bus está libre, ambas líneas están en nivel alto.
La transmisión bidireccional serie (8-bits) de datos puede realizarse a 100Kbits/s en el modo estándar o 400 Kbits/s en el modo rápido.
La cantidad de dispositivos que se pueden conectar al bus está limitada, solamente, por la máxima capacidad permitida: 400 pF.
martes, 10 de febrero de 2009
viernes, 6 de febrero de 2009
Módulos del Robot Vigilante
Módulo 1. Cámara y procesamiento de imágenes: en este módulo se va a realizar todo lo referente a la programación de la cámara, tal como intervalos de tiempo entre fotografías, o toma de fotografías cuando se detecta movimiento, el almacenamiento de las mismas en una PC, así como el procesamiento de imágenes requerido para lograr los objetivos del proyecto.
Módulo 2. Estructura Física: este módulo se va a encargar de diseñar y crear la estructura donde se van a montar todos los módulos, la cámara, los controladores, motores, la batería, etc.
Módulo 3. Sensores: es el encargado de adquirir las señales de los distintos sensores, para detectar obstáculos, calibrar trayectoria y determinar posición actual del robot, además de determinar si el robot es levantado.
Módulo 4. Movimiento y Trayectoria: módulo encargado del control de los motores, así como también de la programación de la trayectoria.
Módulo 5. Documentación: encargado de evidenciar el proceso de elaboración del robot, así como de elaborar las descripciones detalladas de cada uno de sus módulos y las especificaciones para el usuario.
miércoles, 4 de febrero de 2009
EYE FI
Encontramos unas fotos en Flickr donde abrieron la tarjeta EYE FI, de esta forma podemos apreciar mejor como esta la tarjeta por adentro. vemos que tenemos un chip de memoria SAMSUNG, el chip para el inalámbrico es ATHEROS (el ROCm que es usado en celulares con WI-FI). Además esta el chip de GPS que solo se encuentra la versión mas cara de la misma. .
http://www.flickr.com/photos/sniperninja123/3245581254/in/photostream/
También esta otra página donde explican a fondo que es cada chip y sus especificaciones. (http://www.ikontools.com/articles/eyefi-dissected)
martes, 3 de febrero de 2009
miércoles, 28 de enero de 2009
Presentación de Actuadores Eléctricos
WIFIBOT
WIFIBOT es una compañía que se dedica ha hacer robots con cámaras y conexiones WiFi, la compañía se encuentra en Francia y aun que no es muy grande tiene robots muy interesantes, incluyendo algunos que además de cámaras tienen brazos robóticos.
En el video vemos como alguien creo un cliente para la consola portátil de Sony (PSP) para mandar el video del robot de forma inalámbrica, aun que por las limitaciones de procesamiento la trasmisión tiene un serio retardo y son muy pocos los cuadros que se reciben por segundo es un video interesante que muestra el potencial de las tecnologías existentes.
martes, 27 de enero de 2009
Con ustedes … Los técnicos.
Areacely – una líder por naturaleza, sabe como motivar al equipo para cumplir los objetivos además de amplios conocimientos en el área de electrónica de potencia.
Leslie-Bella y peligrosa, cuando no esta manejando un cautín se encuentra desafiando las leyes de la gravedad construyendo péndulos invertidos.
Michell- Experta en matemáticas y algoritmos, realizo estudios avanzados en la universidad de san Angelo en el área de matrices, incluyendo la resolución de matrices jacobinas de mas de 2 dimensiones.
Adrián-Experto programador, domina tanto ensamblador como C. galardonado a nivel nacional en concursos de electrónica.
Oscar-Con amplia experiencia en la industria tiene un enfoque practico y habilidades poco comunes, un amplio conocimiento del diseño de piezas y modelado computacional
Tito-Experto en el manejo de sensores, tiene estrecha relación con diferentes proveedores de componentes electrónicos a nivel nacional e internacional.
Julio- Guru en el área de electrónica analógica. Conoce mejor que nadie el manejo de filtros y el funcionamiento de amplificadores operacionales.
Diego- Con un gran dominio del área de procesamiento digital de señales y una implacable curiosidad puede programar transformadas rápidas de fourier incluso en los micros mas básicos.
#algunas de las habilidades fueron exageradas con motivo humorístico.
Pila
jueves, 22 de enero de 2009
viernes, 16 de enero de 2009
Comenzamos
Nuestro proyecto consiste en un robot vigilante que tomara fotografías en intervalos de tiempos y va a seguir una ruta definida durante la noche.