viernes, 27 de febrero de 2009

Inauguración del blog en INGLÉS

Esta semana nos complace el anunciar que los contenidos de nuestro blog serán agregados a un blog en inglés. En el mismo encontraremos toda la información que hasta la fecha encontramos en este blog.

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

Acudimos a la página de ayuda en materia de robótica:

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)
Para mas informacion:

Especificaciones del sensor ultrasónico SRF08

El SRF08 es uno de los sensores con los que equiparemos a nuestro robot vigilante. Gracias a el mismo podremos detectar los obstáculos con los que se encuentre y poder evitarlos, siguiendo en la misma ruta.

É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

El CHDK es un programa que corre sobre el firmware de fabrica de varios modelos de cámaras canon. Por su naturaleza el CHDK no es destructivo y en caso de que no se quiera mas en la cámara que se instalo es fácil desinstalarlo.
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

PPT sensores

Resumen de Protocolo I2C

Cuando se conectaban múltiples dispositivos a un microcontrolador, la dirección y las líneas de datos de cada dispositivo se conectaban por convención individualmente. Esto quitaba pines útiles del microcontrolador, que resultaba en muchas pistas en el PCB y requerían que más componentes se conectaran. A su vez, esto hacía que los sistemas fueran costosos y susceptibles a interferencia y ruido.

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

Controladores

Módulos del Robot Vigilante


Descripción de los 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

Alternativa de Camara




Esta es una alternativa a la camara que podmeos usar

Alternativa de Camara

Esta es una alternativa a la camara que podmeos usar


R2BEER2 !!!!!!!!!!