domingo, 19 de febrero de 2012

Consumo de batería de nuestra aplicación


Es importante tener en cuenta el uso de batería de nuestro celular, por eso como desarrolladores de aplicaciones es también importante saber cuanta batería puede estar usando nuestra aplicación. Es decir, nadie usara una aplicación que consuma la batería de su celular muy rápidamente porque esto dejaría inservible al celular para otras cosas.
Para eso conoceremos los servicios del celular que consumen mas batería.
Para comenzar utilizaremos las siguientes unidades:

Gasto que se hace de energía: mA
Capacidad: mAh

La capacidad de batería de algunos celulares (con android) varia, tomare de referencia el del ejemplo que subi en la entrada pasada del celular Samsung S II que era de:

1500 mAh

Aquí una lista de los gastos más comunes en nuestro celular:

  • Modo avión: 2 mA
  • Modo espera 3G / EDGE: 5 mA
  • Modo espera WIFI: 12 mA
  • LCD normal: 90 mA
  • CPU 50% - 100%: 110 mA
  • Sensores: 80 mA
  • GPS: 85 mA
  • 3G transferencia máxima: 150 mA
  • EDGE transferencia máxima: 250 mA
  • WIFI transferencia máxima: 275 mA
Aplicación de estos consumos en ejemplos reales tomando en cuenta los 1500 mAh del Samsung S II y las medidas expresadas anteriormente, para obtener los gastos se hace una división entre los 1500 por cada actividad obtenemos un consumo aproximado en tiempo.

  • Ver Youtube: 340 mA = 4.4 horas
  • Navegar por la Web usando 3G: 225 mA = 6.7 horas
  • Uso típico: 42 mA (de media) = 35 horas
  • Modo avión en espera: 2 mA = 31 días

Ahora haremos una estimación de una aplicación que podría ser la nuestra:
Consumo estimado en una hora si estamos transferiendo  6 MB por WIFI (1 Mbps): 330 mA * 48 segundos = 4,4 mAh
Hay cosas que consumen mas pila del celular que otras por eso es importante conocer cuánto usa cada servicio del celular y asi saber cuanta batería usara la aplicación que vamos a crear.

Bibliografía:



Tendencias Futuras

Aquí algunos ejemplos de lo que se plantea en algún futuro para los dispositivos móviles y toda la tecnología.

Microsoft presentó el año 2011, un video llamado “Office 2019”. En el se muestra como ellos ven el futuro de la tecnología, y el uso de los dispositivos móviles. El video ha recibido varias críticas por ejemplo, en el solo se muestran personas bonitas, o se piensa que esa tecnología solo llegaría para un estatus social muy alto. Otro detalle seria que en el video no se muestra por ningún lado papel solo gadgets de avanzada tecnología.



En este otro ejemplo vemos mas tendencias futuristas, este es parte de una serie de videos presentados por una compañía llamada CORNING especializada en la proyección de interfaces sobre superficies solidas como vidrio y cerámica. Tambien es muy inspirador este video.



En este tercer video el uso del móvil muestra una comunicación mas humana y parece ser este un futuro mas cercano con el uso de touch como ahora lo conocemos, por eso pensar que este podría ser un futuro mas cercano comparado con los primeros dos videos. Producido por Rimino.

Bibliografía:

http://techcrunch.com/2011/10/27/microsofts-vision-of-the-future-includes-touch-sensitive-everything-and-beautiful-people-only/
http://diarioux.tumblr.com/
http://www.corning.com/index.aspx 


jueves, 16 de febrero de 2012

Celular vs Notebook (Samsung)

Para esta entrada quise comparar dos productos de una misma marca para ver asi las diferencias y semejanzas en las que un mismo fabricante puede ponerle a sus equipos. La marca es la mundialmente conocida Samsung que desarrolla todo tipo de tecnología como televisores, celulares, equipos de cómputo, línea blanca, etc.

Tome el celular Galaxy S II y la notebook modelo RV410 la selección fue al azar en el inicio de la página web del fabricante y con ayuda de las especificaciones que muestran en su misma página web.




Ya conociendo las especificaciones de estos dos productos podemos obtener algunas conclusiones, por ejemplo en un celular la batería puede durar menos que una laptop dependiendo del uso frecuente o moderado.
Una computadora siempre a tenido mucho mas capacidad de memoria que un celular. Aunque en cuanto a procesador se a llegado a portar dentro de un celular procesadores de doble nucleo como en el ejemplo del celular. Físicamente, tanto los celulares como las computadoras van reduciendo su tamaño todo esto para comodidad del usuario. La resolución de pantalla y definición han ido de la mano, es decir, la tecnología usada en una pantalla para laptop se a podido incorporar tambien en un celular.


Bibliografía:
http://www.samsung.com/mx/consumer/mobile-phones/mobile-phones/telcel/GT-I9100LKLTCE
http://www.samsung.com/mx/consumer/monitor-peripherals-printer/ultra-mobile-pc/essential/NP-RV410-A01MX-spec
http://www.samsung.com/mx/parking/

miércoles, 15 de febrero de 2012

La historia de Android

Quise enfocarme en la plataforma que desarrollare mi aplicación, en este caso es Android y hablare un poco sobre la historia de este sistema operativo y su influencia en los dispositivos móviles hasta la actualidad.
Andy Rubin-Trabajo para Apple y Microsoft
antes de fundar Android


Fundador
 El pionero de este sistema operativo es Andy Rubin, graduado de la Universidad de Utica, Nueva York en la licenciatura en Ciencias de la Computación. Tras graduarse trabaja como ingeniero en empresas como General Magic que es de Apple y en Artemis Research que es de Microsoft, ambas enfocadas en el desarrollo de sistemas operativos para móviles. Y finalmente en 2005 funda Android Inc.



Google compra Android
En ese mismo año Google, buscando incursionar en el mundo de los celulares compra la compañía de Andy Rubin  y aquí empieza a desarrollarse mas a fondo el sistema operativo. Pero no es hasta dos años mas tarde el 5 de Noviembre de 2007 cuando Google anuncia oficialmente Andoid. Y hasta esta fecha Google es el dueño de esta compañía con Andy Rubin como vicepresidente de ingeniería de Google.
Primer celular con Android

Primer Android
El primer teléfono, el T-Mobile G1, fue liberado en Octubre del 2008. Desde entonces, se han lanzado una infinidad de equipos de todos tamaños, marcas, modelos y formas, por lo que desarrollar en Android puede llegar a ser un reto.

Versiones
by: www.elandroidelibre.com
Las versiones de Android han tomado nombres de postres, en orden alfabético desde la versión 1.5 (Cupcake), seguido por 1.6 (Donut), aún que en ocasiones, comparte el nombre a pesar del cambio de número, como es el caso de Eclair (2.0, 2.1), y fue seguido Froyo (2.2, 2.2.x, el nombre viene de Frozen Yogurt), y Gingerbread (2.3), Honeycomb (3.0), diseñado para tabletas, y finalmente Ice Cream Sandwich (4.0).


Software
Android es un sistema operativo móvil basado en Linux .Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio.
Aunque la mayoría de las aplicaciones están escritas en Java, no hay una máquina virtual Java en la plataforma. El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable Dalvik y corre en la Máquina Virtual Dalvik. Dalvik es una máquina virtual especializada, diseñada específicamente para Android y optimizada para dipositivos móviles que funcionan con batería y que tienen memoria y procesador limitados. El soporte para J2ME puede ser agregado mediante aplicaciones de terceros como el J2ME MIDP Runner.
 Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del sistema. Estas características se exponen a los desarrolladores a través del marco de trabajo de aplicaciones de Android; algunas son: System C library (implementación biblioteca C estándar), bibliotecas de medios, bibliotecas de gráficos, 3D y SQLite, entre otras.
Hardware
El sistema operativo Android se usa en teléfonos inteligentesordenadores portátilesnetbookstabletsGoogle TVrelojes de pulseraauriculares y otros dispositivos,siendo este sistema operativo accesible desde terminales de menos de 100 euros hasta terminales que superen los 600, obviando, evidentemente sus diferencias técnicas.
La plataforma de hardware principal de Android es la arquitectura ARM. Hay soporte para x86 en el proyecto Android-x86, y Google TV utiliza una versión especial de Android x86
Android soporta cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, termómetro, aceleración 2D y 3D.


Aplicaciones
Las aplicaciones se desarrollan habitualmente en el lenguaje Java con Android Software Development Kit (Android SDK), pero están disponibles otras herramientas de desarrollo, incluyendo un Kit de Desarrollo Nativo para aplicaciones o extensiones en C o C++Google App Inventor, un entorno visual para programadores novatos y varios cruz aplicaciones de la plataforma web móvil marcos.
El desarrollo de aplicaciones para Android no requiere aprender lenguajes complejos de programación. Todo lo que se necesita es un conocimiento aceptable de Java y estar en posesión del kit de desarrollo de software o «SDK» provisto por Google el cual se puede descargar gratuitamente.
Android Market es la tienda en línea de software desarrollado por Google para dispositivos Android. Una aplicación llamada "Market" está preinstalada en la mayoría de los dispositivos Android y permite a los usuarios navegar y descargar aplicaciones publicadas por los desarrolladores. Google retribuye a los desarrolladores el 70% del precio de las aplicaciones.



Bibliografía:

http://www.elandroidelibre.com/2011/08/la-historia-y-los-comienzos-de-android-el-sistema-operativo-de-google.html
http://www.elandroidelibre.com/2011/12/un-repaso-a-la-historia-de-android.html
http://es.wikipedia.org/wiki/Open_Handset_Alliance
http://es.wikipedia.org/wiki/Android

miércoles, 8 de febrero de 2012

Microcontrolador vs Microprocesador


Después de conocer un poco sobre estos dos conceptos ahora vamos a ver una comparación entre los mismos. Sus diferencias y similitudes.
Se suele pensar que un microcontrolador es lo mismo que un microprocesador, pero eso no es cierto. Se diferencian en varios aspectos.

Funcionalidad:
El primero y más importante a favor de un microcontroladores su funcionalidad. Por otro lado, para que se pueda usar un microprocesador, se le deben añadir otros componentes, por ejemplo la memoria. Aunque un microprocesador es una poderosa máquina de cálculo, no está preparado para la comunicación con el entorno exterior; para que esto sea posible se le deben añadir circuitos especiales. Las primeras computadoras se hicieron al agregar periféricos externos tales como memoria, líneas de entrada/salida, temporizadores y otros al microprocesador. Con la mejora en la fabricación de circuitos integrados se logró incluir tanto el microprocesador como los periféricos en un solo chip. A este chip se le dio el nombre de microcontrolador.

Arquitectura:
Los Microprocesadores tradicionales se basan en la arquitectura de Von Newmann, mientras que los microcontroladores trabajan con arquitectura de Harvard.

Componentes:
El microcontrolador está diseñado para agrupar todas las funciones en una sola unidad. No se necesitan componentes externos (periféricos) para su aplicación, porque todos los circuitos necesarios ya están incorporados.
El microcontrolador le lleva una gran ventaja a los microprocesadores ya que todo lo que contiene el microprocesador por llamarlo así el microcontrolador es como una mini computadora ya que contiene las 3 funciones principales de  la computadora dentro de un mismo chip o circuito integrado:
·        CPU (Unidad Central de Procesamiento)
·        Memora de Datos y Programa
·        Unidades de E/S
Por ejemplo la configuración mínima básica de un microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28 Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines; pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por lo que implica una gran ventaja en varios factores:

Tiempo y dinero:
En el circuito impreso por su amplia simplificación de circuiteria, el costo para un sistema basado en microcontrolador es mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se disminuye considerablemente.

Programación:
Ambos se programan en un lenguaje de bajo nivel.

Otros:
Los microcontroladores representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs más especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa, usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.

Bibliografía:
http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%20PIC16f84.pdf
http://paginas.fisica.uson.mx/horacio.munguia/aula_virtual/Recursos/Introduccion%20PIC16f84.pdf
http://altf4edb.blogspot.com/2008/11/microcontroladores.html
http://es.wikipedia.org/wiki/Microcontrolador

Microcontroladores


Ahora hablaremos un poco sobre los microcontroladores, su funcionamento y componentes del mismo.


Es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres unidades funcionales principales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada y salida.

Esto es a lo que nosotros también conocemos como PIC, el pic forma parte de la grande familia de microcontroladores que existen.
Son diseñados para reducir el costo económico y el consumo de energía de un sistema en particular. Por eso el tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación.  Estos microcontroladores se encuentran en muchos lugares funcionando como pueden ser componentes eléctricos, electrodomésticos donde funcionan sin la interacción con un ser humano, es decir son invisibles.


Ejemplos donde podemos encontrarlos:



Micro porque son  pequeños, y controladores, porque controlan máquinas o incluso otros
controladores. Los Microcontroladores, por definición entonces, son diseñados
para ser conectados más a máquinas que a personas. Son muy útiles porque
usted puede construir una máquina o artefacto, escribir programas para
controlarlo, y luego dejarlo trabajar para usted automáticamente.


Los dispositivos de entrada pueden ser un teclado, un interruptor, un sensor, etc.
Los dispositivos de salida pueden ser LED's, pequeños parlantes, zumbadores, interruptores de potencia u otros dispositivos como relés, luces, un secador de pelo, en fin.. lo que quieras.
Microchip es la empresa que fabrica los microcontroladores PIC. En los últimos tiempos esta familia de microcontroladores ha revolucionado el mundo de las aplicaciones electrónicas. Tienen una facilidad de uso y programación tales, que junto a las inmensas posibilidades de E/S que brindan han conquistado a programadores y desarrolladores. Su principal ventaja (y según sus detractores la principal desventaja) es su carácter general, la flexibilidad que les permite ser empleados en casi cualquier aplicación. Otras familias de microcontroladores son más eficaces en aplicaciones específicas.
La familia PIC se divide en cuatro gamas, gamas que podemos llamar mini, baja, media y alta. Las principales diferencias entre estas gamas radica en el número de instrucciones y su longitud, el número de puertos y funciones, lo cual se refleja en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones.







Bibliografía:
http://es.wikipedia.org/wiki/Microcontrolador
http://microcontroladores-e.galeon.com/
http://www.robotshop.com/content/PDF/what's-a-microcontroller-1.1-spanish-28122.pdf
http://r-luis.xbot.es/pic1/pic01.html
http://www.pic16f84a.org/
http://www.neoteo.com/microcontroladores

Microprocesadores

Investigando un poco sobre los microprocesadores y microcontroladores que los hardware que esteremos usando este curso para programas, en si primero definimos cada uno de estos y después encontramos diferencias y similitudes entre los mismos. Para programar se necesita lenguaje maquina como el assembler y es el lenguaje que usan estos componentes.


Un microprocesador es un sistema que explora secuencialmente una información  almacenada, llamada programa, la interpreta y la ejecuta.
En un sistema en el cual interviene un Microprocesador, este por si solo no funcionaría como debe, con solo aplicarle voltaje en sus terminales. Se le deben de integrar al sistema mas componentes o circuitos.
Por lo que un sistema basado en un microprocesador está compuesto por cuatro partes principales:
·         MEMORIA
·         PUERTOS PROGRAMALES DE I/O
·         PERIFERICOS
·         MICROPROCESADOR
Memoria
La unidad de almacenamiento de memoria es donde se mantienen las instrucciones y los datos mientras se ejecuta un programa en la computadora. La unidad de almacenamiento recibe solicitudes de datos por parte de la CPU, transfiere datos de la memoria al CPU, y transfiere datos del CPU  a la memoria.
La memoria físicamente es un conjunto de circuitos electrónicos que se usan para almacenar una gran cantidad de datos binarias (1 y 0).
Tipos de memoria:
·         R O M (Read Only Memory).
·         R A M (Random Access Memory).

Interconexión con Buses
Es   un   conjunto  de  interconexiones   común  a  varios dispositivos (procesador, memoria, puertos, etc.), que   permiten  la   comunicación o intercambio  de información en un tiempo exacto a la vez.
Un BUS está constituido por varios caminos de comunicación, o  líneas.
Cada línea es capaz de transmitir señales binarias representadas por “1” y por “0”. En un intervalo de tiempo, se  puede  transmitir  una  secuencia  de  dígitos  binarios  a  través  de una única  línea. Se pueden utilizar  varias  líneas del bus para transmitir dígitos binarios simultáneamente (en paralelo). Por ejemplo, un dato de 8 bits puede transmitirse mediante ocho líneas del bus.
Se clasifican en tres grupos funcionales:
·         BUS DE DATOS
·         BUS DE DIRECCIONES
·         BUS DE CONTROL

Tipos de registros
Un registro es un medio de almacenamiento temporal para el microprocesador, de pocos bits (8,16,32,64,128, etc.), para poder guardar los datos y operandos que provienen de memoria o de otros registros. Son como localidades de memoria dentro del microprocesador.

Registro de 16 bits (ejemplo)


1. Registro de Instrucciones
Es donde se deposita el código de la instrucción a ejecutar, que posteriormente se decodificará y ejecutará. En microprocesadores actuales manejan hasta un 1Mb.
2. Registro Apuntador de Instrucciones
Llamado también CONTADOR DE PROGRAMA, y es el que lleva la secuencia del programa que se está ejecutando, por medio de una dirección  a  memoria, donde está depositado el código de la instrucción. Este es actualizado automáticamente por el microprocesador.
3. Registros Auxiliares
Estos permiten almacenar los datos dentro del microprocesador para que posteriormente sean tratados de acuerdo a la instrucción que se esté ejecutando.
4. Registro de Estados o Banderas
Este registro manejara situaciones de estados debido a una al resultado de una operación aritmética o lógica, y también para algún control que se quiera manipular en el microprocesador.








Unidad de Control




Ejemplo de los dos microprocesadores comerciales con mayor uso en el mercado actual:




Bibliografía:
http://www.maestrosdelweb.com/principiantes/historia-de-los-microprocesadores/
http://es.wikipedia.org/wiki/Categor%C3%ADa:Microprocesadores_Intel
http://es.wikipedia.org/wiki/Planificador
http://es.wikipedia.org/wiki/Microprocesador


domingo, 5 de febrero de 2012

Introducción a lenguaje ensamblador


Para comenzar el curso empezaremos conociendo que es el lenguaje ensamblador que utilizaremos y algunos conceptos básicos del mismo:

Definición: El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.

La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.

Ahora vamos a ver como se usa el programa programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora.



Ejemplo:
Un procesador puede ejecutar la siguiente instrucción binaria como se expresa en código maquina:
Binario: 10110000 01100001
Hexadecimal: 0xb061
La representación equivalente en ensamblador es más fácil de recordar:
MOV AL , 061h
Esta instrucción significa:
Mueva el valor hexadecimal 61 (97 decimal) al registro “AL"


Cada instrucción de la máquina se transforma en una única instrucción en código simbólico. Pero además, para mejorar la legibilidad del programa, el código simbólico introduce instrucciones adicionales, que no corresponden a ninguna instrucción de la máquina y que proporcionan información. Se llaman "pseudo instrucciones“


El lenguaje de máquina está formado por instrucciones sencillas, que dependen de la estructura del microprocesador pueda especificar:
  • Registros específicos para operaciones aritméticas.
  • Direccionamiento o control de funciones.
  • Posiciones de memoria específicas.
  • Modos de direccionamiento usados para interpretar operandos.
Los microprocesadores están compuestos por circuitos lógicos (electrónica), en el cual interpretan en sus entradas niveles de voltaje. Nivel alto (3-5 volts) o nivel bajo (0 volts).
Estos niveles son interpretados como:

A los estados lógicos son llamados DIGITOS BINARIOS y se interpretan como BIT (Binary digIT).
Estos se pueden interpretar como:

Ya que estos dos estados lógicos por si solos no proporcionan mucha información, se agrupan en diferentes cantidades de bits para poder definir algún carácter (numérico, alfabético y especial) llamados PATRONES BINARIOS.

Bibliografía:
-http://es.wikipedia.org/wiki/Lenguaje_ensamblador
-http://homepage.mac.com/eravila/asmix86.html
-http://books.openlibra.com/pdf/pcasm-book-spanish.pdf
-http://dac.escet.urjc.es/~lrincon/uned/etc1/IntroduccionEnsamblador.pdf

jueves, 2 de febrero de 2012

Justificación de Proyecto

Hoy en día el uso de los celulares esta al alcance de todos, y su uso es indispensable para hacer muchas cosas durante el día. Las aplicaciones para los celulares cada vez crecen más y más, hoy en día se puede llegar a conectar hasta con un automóvil y es lo que tratara este proyecto. Para eso se realizó previamente un estudio de lo que ya existe.

En resumen: algunas interfaces están más completas que otras, por ejemplo en unas usan imágenes de volantes o palancas para simular el auto, y en otras simplemente botones. Hay ejemplos en android como para iPhone, las aplicaciones que encontré tienen un costo para su uso. Otro punto importante es que en su mayoría tiene la implementación con un arduino lo que permite conectividad por medio de bluethooth de estos dos aparatos y sea inalámbrico.
El mejor ejemplo que a mi consideración encontre:



Aquí mi cuadro de investigación:
Mi proyecto:
La idea es hacer la interfaz más amigable esto se lograra con el uso de metáforas por medio de botones lo que hará intuitivo a la hora de usar la aplicación. Tenga pocos elementos pero funcionales, la conectividad con bluethooth es la mas factible de las ideas en este momento, permitiendo así tener mayor movilidad por su conexión inalámbrica, si ven los proyectos que ya existen son buenos conceptos a seguir se necesita una aplicación mas sencilla y sobre todo que su distribución pueda ser más eficaz de forma que al final se planea publicar el proyecto de forma gratuita en algún store o en la web para así puedan surgir mas proyectos como estos y seguir mejorando.
Otra justificación para la elaboración de este proyecto sería que el siguiente semestre poder llevarlo a cabo de manera mayor, por ejemplo, implementando el sistema en algún automóvil real y no de juguete como ahora. Esto se lograría con la ayuda de compañeros de otras carreras a fines con el proyecto, pero esto ya se verá más delante si es que es posible. Mi proyecto lo realizare en Android por ser de distribución libre y obtener acceso al celular y poder hacer uso de estos elementos.
Bibliografía: