miércoles, 15 de febrero de 2012

Componentes del proyecto

Introducción y descripción de componentes importantes del proyectose utilizara el Rover DFRobotShop (un móvil kit Arduino), VRbot reconocimiento de voz módulo Veear, dos módulos XBee,  un Arduino, XBee dos escudos y algunos otros  componentes

Rover DFRobotShop

El Rover DFRobotShop - es un tanque versátil robot móvil basado en el popular microcontrolador Arduino Uno. El Rover utiliza el popular Tamiya caja de cambios de doble motor y la pista de Tamiya y juego de ruedas. El PCB DFRobotShop Rover incorpora una norma Arduino UNO (montaje en superficie ATMega328), L293B controlador de motor (conectado a los pines de 5 a 8), regulador de voltaje y el área de prototipos al tiempo que contribuye a la estructura mecánica del robot. El regulador de tensión de a bordo permite que toda la junta para ser alimentado con tan poco como 3,7 a ~ 9V *.

Modulo Easy VR

EasyVR es un módulo de voz multi-propósito el reconocimiento, concebida para agregar discurso eficaz versátil, robusto y económico y las capacidades de reconocimiento de voz para prácticamente cualquier aplicación. EasyVR es la versión de segunda generación del módulo VRbot éxito y se basa en las características y funcionalidades de su predecesor.

El módulo EasyVR se puede utilizar con cualquier host con una interfaz UART accionado a 3,3 V - 5V, tales como el CFP y placas Arduino. It is ideal for applications such as home automation (voice controller light switches, locks, beds) or adding hearing to most popular robots on the market. Es ideal para aplicaciones como la automatización del hogar (de voz interruptores de la luz del controlador, cerraduras, camas) o la adición de audiencia a los robots más populares en el mercado.

Xbee

Los módulos Xbee proveen 2 formas amigables de comunicación: Transmisión serial transparente (modo AT)  y el modo API que provee muchas ventajas.Los módulos Xbee pueden ser configurados desde el PC utilizando el programa X-CTU o bien desde tu microcontrolador. Los Xbee pueden comunicarse en arquitecturas punto a punto, punto a multi punto o en una red mesh. La elección del módulo XBee correcto pasa por escoger el tipo de antena (chip, alambre o conector SMA) y la potencia de transmisión (2mW para 300 pies o 60mW para hasta 1 milla) 

ArduinoUno

El Uno Arduino es una placa electronica basada en el ATmega328 ( ficha técnica ). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz crystal oscillator, a USB connection, a power jack, an ICSP header, and a reset button. Cuenta con 14 entradas / salidas digitales pines (de los cuales 6 pueden ser utilizados como salidas PWM), 6 entradas analógicas, un oscilador de cristal de 16 MHz, una conexión USB, un conector de alimentación, una cabecera de ICSP, y un botón de reinicio. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started. Contiene todo lo necesario para apoyar a la micro, sólo tiene que conectarlo a un ordenador con un cable USB o el poder con un adaptador AC-DC o la batería para empezar.


Escudos
Comunicación del robot oruga hacia con el modulo de reconocimiento de voz

La forma en que se comunicaran sera por el protocolo de comunicación Zigbee y sera comandado por reconocimiento de voz humana como proyecto a futuro se le controlara por la mente pero por el momento solo por voz .

Microcontroladores VS Microprocesador

Diferencia entre Microprocesador y Microcontrolador
Ciertamente la gran mayoría de nosotros hemos escuchado hablar acerca de microprocesadores y microcontroladores y tal vez no sepamos cual es la diferencia entre uno y otro, o peor aún, nos podemos confundir al emplear cualquiera de las dos palabras.
Existe mucha información en internet acerca de microprocesadores y microcontroladores. Pero a veces la información es muy extensa y no muy fácil de comprender. 


El Procesador
n microprocesador o procesador como un elemento de hardware que se encarga como su nombre mismo lo dice procesar datos a partir de ciertas instrucciones de entrada arrojando cierto resultado, todo esto en base a su set de instrucciones que incorpora.
procesador_01_small
Un microprocesador por si solo seria prácticamente inservible,  para que funcione necesita estar conectado mediante diferentes buses a otros elementos como la memoria RAM, y dispositivos de entrada y salida (E/S) y otro tipo de memoria especial llamada EEPROM que almacena los datos de forma permanente aun sin energía eléctrica.
La mayora de los procesadores de las PCs personales  suelen utilizar la arquitectura Von Neuman. En esta arquitectura el procesador comparte la memoria RAM para almacenar las instrucciones del programa y los datos.
Debemos comprender que en una PC, cuando se carga un programa en memoria, a éste se le asigna un espacio de direcciones de la memoria que se divide en segmentos, de los cuales típicamente tenderemos los siguientes: código (programa), datos y pila. Es por ello que podemos hablar de la memoria como un todo, aunque existan distintos dispositivos físicos en el sistema (HDD, RAM, CD, FLASH).
Utilizar la arquitectura tiene ventajas y desventajas, una de ellas es que al utilizar la misma memoria para almacenar los datos de programa y las instrucciones, solo se utilizan tres buses (de control, de datos y de direcciones) de estar separadas utilizaríamos otros tres buses mas, que con respecto al diseño seria más costosa.
Como desventaja principal de esta arquitectura encontramos que el procesador no puede acceder a los datos de programa y a las instrucciones al mismo tiempo, sino que debe almacenar una de ellos en los registros del procesador y volver a consultar las instrucciones para ejecutar, esto se traduce en pérdida de tiempo ya que el procesador tendrá que acceder dos veces a la memoria para poder ejecutar una sola instrucción.
También existe otro tipo de arquitectura llamada Harvard que es utilizada comúnmente por supercomputadoras o Mainframes. Esta define que la memoria de datos de programa y las instrucciones deben estar separadas. Con esto se tienen que crear otros tres buses a la otra memoria que incorporamos. Pero vale la pena ya que podemos procesar la información mas rápido, pues se puede acceder a la memoria de datos y a las instrucciones al mismo tiempo.

Set de instrucciones del procesador
Define las operaciones básicas que puede realizar el procesador, que conjugadas y organizadas forman lo que conocemos como software. El conjunto de instrucciones vienen siendo como las letras del alfabeto, el elemento básico del lenguaje, que organizadas adecuadamente permiten escribir palabras, oraciones y cuanto programa se le ocurra. 
Existen dos tipos de set de instrucciones: CISC y RISC
Las instrucciones CISC (Complex Instruction Set Computer, Computadora de Conjunto de Instrucciones Complejo) se caracterizan por tener un repertorio amplio de instrucciones, que pueden hacer cálculos muy complejos. Pero también se complica su uso.
El tipo RISC (Reduced Instruction Set Computer, Computadora con Conjunto de Instrucciones Reducido) se distingue por sus pocas instrucciones, y tamaño un tamaño fijo por instrucción además permite el paralelismo en la ejecución.

El Microcontrolador
Fue necesario definir algunas de las características principales de un procesador porque conociendo lo anterior definiremos al Microcontrolador.
Un Microcontrolador en realidad no es otra cosa más que una mini computadora  embebida dentro de un solo encapsulado del tamaño de un chip. Este cuenta con procesador, memoria RAM, Memoria ROM y periféricos de entrada y  salida.
microMicrocontrolador_diam
Técnicamente un Microcontrolador lleva dentro un Microprocesador.  Este a su vez cuenta con buses de datos, control y dirección hacia la memoria y hacia los periféricos o puertos.
La arquitectura de estos dispositivos es la Harvard quiere decir que poseen 2 memorias una memoria RAM que almacena los datos y otra de tipo EPROM o EEPROM que almacena el programa. Al usar esta arquitectura tiene la ventaja de poder usar simultáneamente los dos tipos de memoria y en lugar de ser una desventaja como lo era con una PC normal puesto que todo se encuentra en un solo encapsulado puede implementarse fácilmente.
 El set de instrucciones es del tipo RISC las cuales ya vimos anteriormente. El lenguaje nativo de estos dispositivos es el lenguaje ensamblador. Aunque en la actualidad hay muchas empresas que se dedican a desarrollar compiladores que funcionan con la sintaxis de C o Basic que después traducirán a lenguaje máquina para  programar el Microcontrolador.

Existen muchos fabricantes como Intel, Motorola, Texas Instruments, etc. Pero los más conocidos son los PICs de Microchip y los AVR de Atmel.
Actualmente a los microcontroladores se les puede hallar en muchísimos electrodomésticos como lavadoras, hornos de micro ondas, DVDs etc. Por su bajo precio, fácil programación y la extensa información que circula en internet estos se han vuelto muy utilizados en la electrónica y ramas afines.
 

lunes, 6 de febrero de 2012

Lenjuage Asembly Ventajas y Desventajas


Las computadoras son máquinas diseñadas para ejecutar las instrucciones que se le indican, de manera de resolver problemas  o  hacer algún otro tipo de cosas. Dichas instrucciones básicas no suelen ser más
complicadas  que  realizar una suma o resta, una comparación, leer un dato o escribir un resultado en la
memoria. Además, lo normal es que cada instrucción esté almacenada mediante un código en la memoria,
de forma que la computadora “ve” esos números y los entiende como instrucciones. También, estoscódigos son específicos de cada tipo de CPU. A este conjunto de instrucciones codificadas se le llama  lenguaje de máquina y es el único lenguaje que una computadora entiende.

Ahora bien, como programador, no resulta reconfortante pensar y escribir programas como una secuencia  de números, de la manera en que la computadora los quiere ver, sino que es natural verlos como una secuencia de instrucciones. Para ello, se define un lenguaje, en principio, que es un mapeo directo de esos  códigos a instrucciones comprensibles por un humano. A este lenguaje se lo denomina assembly o lenguaje de ensamble y al programa encargado de tomar programas escritos en assembly y generar los  códigos que la computadora entenderá se lo denomina assembler o ensamblador. Como veremos, no todas las instrucciones de assembly se corresponden directamente con instrucciones de lenguaje de máquina, sino que varias son instrucciones para el ensamblador mismo

Ventajas y desventajas del Lenguaje Ensamblador
El proceso de evolución trajo consigo algunas desventajas, que ahora veremos cómo las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje de alto nivel:

1.Velocidad
2.Eficiencia de tamaño
3.Flexibilidad

Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como C, C++, java, etc. 
El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy técnicas que serian difíciles, si no es que imposibles de realizar en un lenguaje de alto nivel.

El conocimiento del lenguaje ensamblador permite una comprensión de la arquitectura de la maquina que ningún lenguaje de alto nivel puede ofrecer. 

Aunque la mayoría de los especialistas en Software desarrolla aplicaciones en lenguajes de alto nivel, que son más fáciles de escribir y de dar mantenimiento, una practica común es recodificar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento.

Los programas residentes y rutinas de servicio de interrupción casi siempre son desarrollados en el lenguaje ensamblador

Por otro lado, al ser un lenguaje más primitivo, el Ensamblador tiene ciertas desventajas respecto a los lenguajes de alto nivel:
1.Tiempo de programación
2.Programas fuente grandes
3.Peligro de afectar recursos inesperadamente
4.Falta de portabilidad

Como para y donde que implementar un tipo de ensamblador.
El lenguaje ensamblador se puede implementar directamente desde la descripción de los estados en un block de notas, para realizar operaciones de bajo nivel que se son necesitarías en un programa para facilitar todo esto.

Para que se utilice el lenguaje ensamblador pero lo que investigue es que él se utiliza para realizar operaciones de memoria y facilitan los cosos porque un lenguaje de alto nivel tiene que decodifica las operaciones.

Para qué se usa
Porque hay aplicaciones o programas que deben tratar directamente con los registros de la máquina, la memoria, dispositivos de E/S, etc. Un programa ensamblador “bien hecho” produce un ejecutable más rápido y corto. 

El proceso de traducción se realiza en dos pasos:
* Primero: se recorre el programa fuente; por cada instrucción implementa el contador según el código de la instrucción. Comprueba si tiene o no etiqueta, y si la tiene coloca su símbolo y su dirección en la tabla de símbolos. Después compara el símbolo del código de operación con una tabla de símbolos posibles; si es válido sustituye el código real y si no emite un mensaje real; a continuación comprueba la síntasis.
* Segundo: recorre las instrucciones del módulo fuente reemplazando los símbolos por sus direcciones reales tomadas de la tabla.

Bibliografia
http://www.datuopinion.com/lenguaje-ensamblador
es.wikipedia.org/wiki/Lenguaje_ensamblado
weblidi.info.unlp.edu.ar/catedras/organiza/descargas/apunte4.pdf