jueves, 24 de mayo de 2012

Proyecto Integrados - Carrito controlado arduino + android

Descripcion:
Es un pequeño carro de juguete armado por nosotros, que se mueve por medio de indicaciones del celular con Android que son recibidas por el arduino por medio de blutooth del android y un modulo de blutooth que se le puso al arduino uno.


Materiales:
  • Arduino UNO

  • Android

  • Modulo Bluetooth


  • Motores

  • Placa de carrito
  • Llantas


  • Esqueleto de carrito
  • Pilas



Herramientas:
  • Processing



  • IDE arduino


  • SDK android

Elaboracion:
Se programo el android por medio de Processing, el arduino con su IDE, se armo el carrito con piezas y materiales encontrados de cada integrante de juguetes cuando eramos pequeños, se fueron haciendo pruebas  con arduino y processing, y tambien con difierentes carritos armados, hasta que por fin el carro que les presentamos pudo dar sus primeros pasos.

Primer intento:


Segundo y final intento:





Codigo:



Funcionamiento:

El carro solo da en dos direcciones hacia adelante y hacia atra, cuando da de reversa el carro levanta las llantas traseras para poder asi girar sobre su propio eje y poder dar vuelta.


Video:

miércoles, 23 de mayo de 2012

Tecnicas de optimizacion


Tecnicas de Optimización:


Simpre que se implementa  cierto codigo ya sea para programacion para computo integrado o algun codigo esencial y de suma importancioa siempre se tiene que tener en cuenta variso factores:

1-. El tiempo de procesamiento de los datos
2-. Cantidad de memoria utilizada

En especial estas dos anteriores son muy importantes para lso diferentes circuitos integraods pos su baja memoria y su cpu.

y siempre es necesario estimar la entrada de datos del problema comunmente esto se le llama complejidad del problema.

La optimizacion o las tecnicas de la optimizacion son meramente diferentes tipos de herramientas  para resolver diferentes tipos de problemas complejos ya sea meramente de informatica o mejorar series de pasos o procesos para una mejor ejecución


Cuando es adecuado utilizar la optimización.

Varias de las veces el programador intenta realizar la optimizacion mientras esta codificando y esto esta meramente incorrecto ya que si es algo nuevo que realizarmo es realmente dificil que resulte algo bueno de la optimizacion sin antes conocer el problema o cierto algoritmo.

Lo primero que se tiene que realizar es crear el codigo o el algoritmo de tal manera que quede lo mas entendible para el programador y posteriormente realizar la optimización.

Existen diferentes tipos de herramientas que nos pueden ayudar a verificar la optimizacion  para realizar pruebas de combertura de codigo y de memoria que es lo mas importante para CPU integrados:

GNU Cov: http://www.sunsite.ualberta.ca/Documentation/Gnu/gcc-3.0.2/html_node/gcc_133.html#SEC133
GNU Prof:http://projects.gnome.org/memprof/
Memprof: http://projects.gnome.org/memprof/

Posteriormente de esto podemos utilizar varias tecnicas para optimizar:



1-. Eliminar codigo inecesario
2-. Evitar los bluces lo mayot posible
3-.  Optimizar el acceso a la memoria (importante para los TLC o CPU integrados)
4-.Identificar partes del codigo mas pesado y enfocarse en esas partes del codigo

Ventajas de la Optimización:



Una de las primeras ventajas es que mejora considerablemente el codigo y al hora de ejecutarlo.

En caso de los integrados:

1- Mejora el tiempo de oscilacion del reloj
2-. Es mas eficiente al entrar la memoria
3-. Ocurren menos fallas.


Aqui una imagen o una grafica de como se puede manejar la optimizacion dependiendo del problema:



Referencias:
http://www.tufuncion.com/optimizar-codigo
http://msdn.microsoft.com/es-es/library/xz7ttk5s(v=vs.80).aspx






domingo, 20 de mayo de 2012

Ambientes inteligentes

Un usuario llega a la oficina y de forma automática unos dispositivos electrónicos adaptan la luz y la temperatura de la sala. El ordenador se conecta y activa los programas más utilizados habitualmente. Todo el entorno físico está personalizado y se adapta a las necesidades de cada persona: son los ambientes inteligentes, una de las grandes apuestas tecnológicas para el futuro que modificará nuestro entorno más próximo a escala doméstica, social y laboral.


¿Que son los ambientes inteligentes?
Es una propuesta. A todas aquellas personas que piensen que la comodidad es algo importante, que les guste mantenerse a la vanguardia en la tecnología, las que con una pequeña inversión quieran hacer ganar plusvalía a una propiedad en muy corto tiempo, o las que piensen que la seguridad de su familia es algo primordial.

Propiedades

Ubicuidad, transparencia e inteligencia son las tres propiedades básicas de los ambientes inteligentes: ubicuidad para encontrarlos en el punto donde esté el usuario, transparencia para pasar desapercibidos en el medio físico e inteligencia para adaptarse a las preferencias de cada individuo. "La capacidad de alimentación autónoma -comenta López Villegas- es uno de los aspectos más significativos de los dispositivos. Por esto, tenemos que encontrar metodologías eficientes, es decir, materiales y sistemas que puedan aprovechar al máximo la energía y para reducir al mínimo el consumo de las unidades de emisión-recepción".

¿Qué es la domótica?

Domótica es el término "científico" que se utiliza para denominar la parte de la tecnología (electrónica e informática), que integra el control y supervisión de los elementos existentes en un edificio de oficinas o en uno de viviendas o simplemente en cualquier hogar. También, un término muy familiar para todos es el de "edificio inteligente" que aunque viene a referirse a la misma cosa, normalmente tendemos a aplicarlo más al ámbito de los grandes bloques de oficinas, bancos, universidades y edificios industriales.

¿QUÉ APORTA LA DOMÓTICA?

La domótica contribuye a mejorar la calidad de vida del usuario:
  • Facilitando el ahorro energético: gestiona inteligentemente la iluminación, climatización, agua caliente sanitaria, el riego, los electrodomésticos, etc., aprovechando mejor los recursos naturales, utilizando las tarifas horarias de menor coste, y reduce de esta manera la factura energética. Además, mediante la monitorización de consumos, se obtiene la información necesaria para modificar los hábitos y aumentar el ahorro y la eficiencia.
  • Fomentando la accesibilidad: facilita el manejo de los elementos del hogar a las personas con discapacidades de la forma que más se ajuste a sus necesidades, además de ofrecer servicios de teleasistencia para aquellos que lo necesiten.
  • Aportando seguridad de personas, animales y bienes: controles de intrusión y alarmas técnicas que permiten detectar incendios, fugas de gas o inundaciones de agua, etc.
  • Convirtiendo la vivienda en un hogar más confortable: gestión de electrodomésticos, climatización, ventilación, iluminación natural y artificial…
  • Garantizando las comunicaciones: recepción de avisos de anomalías e información del funcionamiento de equipos e instalaciones, gestión remota del hogar, etc.

Tipo de Arquitectura
La arquitectura de un sistema domótico, como la de cualquier sistema de control, especifica el modo en que los diferentes elementos de control del sistema se van a ubicar. Existen dos arquitecturas básicas: la arquitectura centralizada y la distribuida.

Arquitectura centralizada:
Es aquella en la que los elementos a controlar y supervisar (sensores, luces, válvulas, etc.) han de cablearse hasta el sistema de control de la vivienda (PC o similar). El sistema de control es el corazón de la vivienda, en cuya falta todo deja de funcionar, y su instalación no es compatible con la instalación eléctrica convencional en cuanto que en la fase de construcción hay que elegir esta topología de cableado.

Arquitectura distribuida:
Es aquella en la que el elemento de control se sitúa próximo al elemento a controlar. Hay sistemas que son de arquitectura distribuida en cuanto a la capacidad de proceso, pero no lo son en cuanto a la ubicación física de los diferentes elementos de control y viceversa, sistemas que son de arquitectura distribuida en cuanto a su capacidad para ubicar elementos de control físicamente distribuidos, pero no en cuanto a los procesos de control, que son ejecutados en uno o varios procesadores físicamente centralizados.

En los sistemas de arquitectura distribuida que utilizan como medio de transmisión el cable, existe un concepto a tener en cuenta que es la topología de la red de comunicaciones. La topología de la red se define como la distribución física de los elementos de control respecto al medio de comunicación (cable).

Cada elemento del sistema tiene su propia capacidad de proceso y puede ser ubicado en cualquier parte de la vivienda. Esta característica proporciona al instalador domótico una libertad de diseño que le posibilita adaptarse a las características físicas de cada vivienda en particular.

Aplicaciones.

Seguridad
Detección de intrusos, de humo, gas e incendio; control de válvulas de agua. Sistema completo de seguridad que también permite programar códigos de usuario para la seguridad y personalizarlos con eventos. Programa 8 números telefónicos para notificación en caso de emergencia.

 
Vigilancia: Vigile a sus seres queridos, bríndeles tele asistencia, proteja sus bienes patrimoniales y su seguridad personal. Por medio de sistema de vigilancia con cámaras análogas o IP (para verlas desde internet), grabe los acontecimientos, las cámaras le notifican si sucede algo o responda su video portero desde donde esté.



Control de Acceso:Por teclados, etiquetas, tarjetas de proximidad o simplemente con la huella de su dedo, puede controlar el acceso a ciertas áreas de la residencia o armar escenas completas.









Control de Iluminación: Control de iluminación por horarios, detección de movimientos, apertura de puertas etc. Crea eventos como relax, lectura, luces on y off, romántico y demás escenas que le proporcionan comodidad en el hogar. Puede operar dispositivos de diferentes marcas y tener una completa integración.



Confort.
Termostatos: Los termostatos le permiten controlar. La temperatura del hogar, programarlos por horarios o eventos como (en casa dormido, ausente, etc.). Control total de la temperatura en, lugares como los áticos, sótanos, patios, cavas, etc. Y teniendo un control inteligente de estos, reducimos el consumo de energía innecesaria




Distribución de Audio y Video: Disfrute de la música en cualquiera de las zonas de la casa u oficina, y seleccione en cualquier momento la fuente que desee. Controle los horarios y programación del entretenimiento por TV y audio para los más pequeños, disfrute de una buena película, una fiesta y de la tranquilidad que solo la música le puede dar.





Accesibilidad: En la accesibilidad se incluyen las aplicaciones o instalaciones de control remoto del entorno que favorecen la autonomía personal de personas con limitaciones funcionales, o discapacidad.
La domótica aplicada a favorecer la accesibilidad es un reto ético y creativo pero sobre todo es la aplicación de la tecnología en el campo más necesario, para suplir limitaciones funcionales de las personas. El objetivo de estas tecnologías es favorecer la autonomía personal. Los destinatarios de estas tecnologías son todas las personas, ya que por enfermedad o envejecimiento, todos somos o seremos discapacitados, más pronto o más tarde.

Bibliografias: 
http://noticias.universia.es/ciencia-nn-tt/noticia/2005/01/25/609407/ambientes-inteligentes.html 
http://www.monografias.com/trabajos35/domotica/domotica.shtml 
http://ambientes-inteligentes.com/gpage.html

Dispositivos Perifericos

Las Computadoras son una herramienta esencial, prácticamente en casi todos los campos de nuestras vidas; es útil, ayuda a la mejora y excelencia del trabajo; lo que lo hace mucho mas fácil y práctico

El papel que juegan los dispositivos periféricos de la computadora es esencial, ya que sin tales dispositivos la computadora no sería útil a los usuarios.

Los dispositivos periféricos nos ayudan a introducir a la computadora los datos para que esta nos ayude a la resolución de problemas y por consiguiente obtener el resultado de dichas operaciones, es decir; estos dispositivos nos ayudan a comunicarnos con la computadora, para que esta a su vez nos ayude a resolver los problemas que tengamos y realice las operaciones que nosotros no podamos realizar manualmente. 




Dispositivos perifericos de entreada
Un dispositivo periférico que genera entradas para la computadora, tal como un teclado, explorador, etc.

Los dispositivos de entrada más comunes son:

  • Teclado (Keyboard)
  • Ratón (Mouse)
  • Bola de guía (Trackball)
  • Lápiz óptico (Optical reader)
  • Explorador (Scanner)
  • Palanca de juegos (JoyStick)
  • Cámara digital (Digital camera)
  • Micrófono (Microphone).
Dispisitivos perifericos de salida
Cualquier dispositivo periférico que recibe la salida de la computadora, tal como una pantalla de vídeo, impresora, perforadora de tarjetas o unidad de comunicaciones. A pesar de que los discos y cintas reciben la salida de la computadora, son considerados dispositivos de almacenamiento.

Los dispositivos de salida más comunes son:

  • Monitor (Monitor)
  • Impresora (Printer)
  • Graficadores (Plotter)
  • Bocinas.
Dispositivos de almacenamiento
Es todo aparato que se utilice para grabar los datos de la computadora de forma permanente o temporal. Una unidad de disco, junto con los discos que graba, es un dispositivo de almacenamiento. A veces se dice que una computadora tiene dispositivos de almacenamiento primarios (o principales) y secundarios (o auxiliares). Cuando se hace esta distinción, el dispositivo de almacenamiento primario es la memoria de acceso aleatorio (RAM) de la computadora, un dispositivo de almacenamiento permanente pero cuyo contenido es temporal. El almacenamiento secundario incluye los dispositivos de almacenamiento más permanentes, como unidades de disco y de cinta.


  • Discos flexibles
  • Discos duros.
  • Cintas magnéticas
  • CD-ROMs 

Dispositivos de entrada y salida
Son aquellos dispositivos que pueden enviar datos y que a su vez pueden recibir datos. Entre ellos se encuentran.
  • El Módem 
  • El Fax/Módem 
  • Tarjetas de red.


¿Cómo se instalan?

Dependiendo del tipo de dispositivo elegido, como un teclado, ratón,grabadora de formato DVD o Blu-ray, tarjeta de sonido y disco duro, se lleva a cabo un proceso de instalación muy distinto a los demás. En base hay dos grandes grupos. Por un lado, los dispositivos y accesorios que se instalan en el equipo informático mediante el uso de una conexión USB o inalámbrica.

  
En este caso los propios dispositivos envían una señal al ordenador desde la conexión USB para transmitirles todos los datos de instalación. Con este tipo de accesorios sólo hay que esperar unos minutos, ya que el ordenador se encargará absolutamente de todo el proceso. Algunos dispositivos de instalación por USB son la cámara Logitech HD Webcam C510 por 40 euros enPCComponentes.com y el Kensington ValuKeyboard por 9,20 euros enAcuista.com.

Por otro lado están los dispositivos que requieren una instalación directamente en la torre del ordenador, siendo un requisito imprescindible abrirla y buscar el lugar adecuado para cada componente. Esta instalación es un poco más complicada, y se recomienda apagar el equipo al completo para no sufrir ninguna avería. Una vez se han colocado las piezas se vuelve a montar el equipo tal y como estaba la primera vez. Un buen ejemplo es el WE Caviar Green por 68,90 euros en Alternate.es, constatado el 30 de julio de 2011.

En resumen, los dispositivos periféricos son accesorios imprescindibles, en su justa medida, como el teclado y el ratón, y se instalan en base a dos procesos: con conexión automática USB o realizando un añadido de componentes dentro del ordenador.


Caracteristicas de los dispositivos perifericos
Duración
Es la permanencia sin alteración de los datos a lo largo del tiempo. Algunos soportes van perdiendo la señal escrita a lo largo del tiempo y acaban perdiendo los datos por obsolencia física del soporte.

Tipo de acceso
Característica vinculada al dispositivo lector/grabador. Un dispositivo es de acceso secuencial si para acceder a un dato determinado debemos acceder primero a todos los que le preceden físicamente (Ejemplo: las cintas magnéticas). Se dice, en cambio, que un dispositivo permite el acceso directo si podemos acceder a un dato sin necesidad de pasar por los datos que le preceden (Ejemplo: disco magnético).

Transportabilidad
Un soporte de información es transportable, si es susceptible de ser trasladado de una unidad periférica a otra. Ejemplo: el disquete puede ser utilizado en distintas disqueteras de su mismo formato. Por el contrario hay soportes de información fijos, que no pueden extraerse de la unidad correspondiente. (Ejemplo disco duro).

Bibliografia:
http://disperifericos.galeon.com/
http://es.over-blog.com/Que_son_los_dispositivos_perifericos_y_como_se_instalan-1228321779-art318123.html

jueves, 17 de mayo de 2012

Poyecto PIC

Auto Increible. 
Lo que se realizo fue un programa que prende y apaga 8 led´s secuencialmente de ida y de regreso. Simulando las luces del auto increible XD.


Componenetes
Pic16f628a 

8led´s

8 resistencias de 330 ohms

Cable 

Protoboard

IDE PCW

Proteus



Diagrama en proteus:


Programador: Micro PRO

Codigo:

Problemas:

 
Cuando se programaba el pic, cada vez que se elejia un .hex a cargar los fuses que estaban preseleccionados se quitaban entonces se tenian que volver a poner, por lo tanto no prendian los led´s despues de muchos intentos y cambiar eso este fue el resultado.

martes, 15 de mayo de 2012

Programando para arduino

En esta ocacion les hablare un poco sobre los diferentes puertos que tiene el arduino en especial los puertos seriales que es el tx (pin 1) y rx (pin 0).


El "TX" que básicamente significa transmisión de datos, como su nombre nos indica nos sirve para resivir datos de dispositivos Seriales como las usb o desde un modulo de bluetooth que explicare mas adelante.

El otro puerto  rx es para enviar información desde el arduino asía algún puerto serial.

Es necesario configurar las velocidades de transmisión de datos de los bytes.

Para configurar el modulo de bluetooth desde linux es necesario instalar el "man bluetooth", ya que el que tiene como default no funciona mucho para este tipo de cosas, este paquete se puede instalar desde el synaptic o desde el centro de software de ubuntu. Ya instalado, es necesario que el modulo de bluetooth este en funcionamiento,esto lo podemos realizar con ayuda de nuestro arduino. conectamos el VCC del modulo con el pin de voltaje de 3.3 y con algun pin de tierra para su funcionamiento, ya realizando esto el man bluetooth lo detectara y podremos configurarlo sin ningun problema como serial y modificar los diferentes tiempos de transferencia.





Transferencia actualmente ocnfigurada: 115200

Ahora el programa de ejemplo en android :


En este ejemplo tenemos dos variables, una variable booleana que no guarda el String resivido por parte del serial, y una variable estado que controlara el funcionamiento de un led.

dentro del metodo inicial "setup" agregamos la linea sobre la tasa de trnasferencia de la informacion que tiene que ser la misma que el serial  y declarar el pin que se utilizara para salidas.

dentro de nuestro ciclo repetitivo tenemos  la instruccion "if (Serial.available() > 0) " esto quiere decir que si detencta que los puertos estan en funcionamiento o resiven algun dato lo dara como verdadero en caso que no sera 0 y no entrara en el cliclo.

la instruccion " incomingByte = Serial.read();" le los datos resividos por el puerto "RX" y posteriormente sigue una serie de condiciones para apagar o prender un led.


Algo de programación con Processing para bluetooth
Para poder conectarnos con los diferentes dispositivos de bluetooth en este caso con algun modulo de bluetooth, es necesario la creacion de diferentes sockets para la entrada de datos y salida de datos.


Para poder activar el dispositivo de bluetooth es necesario las siguientes lineas :


void onStart()
{
  super.onStart();
  println("onStart");
  adaptador = BluetoothAdapter.getDefaultAdapter();
  if (adaptador != null)
  {
    if (!adaptador.isEnabled())
    {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }
    else
    {
    }
  }
}






En el celular nos mostrara o preguntara que si queremos activar el dispositivo de bluetooth. posteriormente si se activa el dispositivo de bluetooth se pueden hacer muchas cosas como conectarse con el dispositivo automáticamente o mostrar los dispositivos.

A Continuaciin unas variables importantes:


BluetoothAdapter adaptador; 
BluetoothDevice dispositivo;  // guardar el dispositivo a usar
BluetoothSocket socket;  // para enviar y resivir informacion
InputStream ins;  // para resivir informacion
OutputStream ons; // enviar informacion


Para poder conectarse al dispositivo es necesario realizar las conexiones con los sockets.

    dispositivo = (BluetoothDevice) dispositivos.get(elegido); //  aqui se conecta con el dispositivo elegido de una lista o manera automatica.

    socket = dispositivo.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));


   

    socket.connect();     
    ins = socket.getInputStream();     
    ons = socket.getOutputStream();  
Y ya para enviar datos solo se ase lo siguiente:


        ons.write(0);  // en algun metodo ya sea dentro de algun escuchador de algun boton




Referencia y tutoriales con android, process y arduino
http://webdelcire.com/wordpress/archives/1045
http://wiki.processing.org/w/Android
http://arduino.cc/en/Reference/serial

domingo, 13 de mayo de 2012

Sistemas operativos especificos


Sistema embebido




Es un sistema de computación diseñado para realizar pocas o algunas operaciones diseñadas específicamente o dedicadas a un sistema de computo en tiempo real.
Estos sistemas se diseñan y se implementa para tareas especifico, la mayoría de estos sistemas los podemos encontrar el la placa madre de una computadora, como en las tarjetas de vídeo, de red, audio y entre otras cosas mas.

En lo general un sistema embebido consiste en un sistema con un microprocesador cuyo hardware y software están específicamente diseñados y optimizados para resolver un problema concreto eficientemente, Común mente  ineractuan con el contorno para vigilar o controlar algún proceso mediante una serie de sensores.

Componentes de un sistema embebido:

1-. el microprocesador que aporta la capacidad de computo del sistema
2-. Comunicación del sistema puede incluir RS-232RS-485SPII²CCANUSBIPWi-FiGSMGPRS entre otros.
3-. Actuadores que son los elementos electronicos a controlar
4-. Entradas y salidas analogias y digitales
5-. Modulo del reloj es el oscilador del sistema que se encarga de enviar las señales en cierto tiempo.
6-. Modulo de energia se encarga de modular la energia para todo el sistema embebido.


Aplicaciones de los Sistemas embebido:

Fabricas
Maquinarias
Puntos de ventas
Decodificadores
Sistemas de radar de aviones
Cajeros

Entre otras mas


Windows Embedded NavReady


Otro de los sistemas operativos especificos es uno de navegacion que saco Microsoft ase tiempo llamado Windows Embedded NavReady


Ahora este sistema operativo esta basado en la version 5.0 de windows CE otro sistemas operativo especifico, y funciona con procesadores ARM con arquitectura de 32 bits. Este sistema ofrece gran soporte para trabajar con diferentes dispositivos, comunicacion, ofrese un soporte de trabajar en tiempo real y los diferentes servicios que ofrece Microsoft.


 Pocket PC OS



 Este sistema se desarroll mas que nada para el movil de Palm OS en los PDA.  Este sistema operativo o estos dispositivos esta mas orientado para las empresas ya que son especificos para diferentes redes de trabajo, y no es especificamente hecho para los consumidores. Este dispositivo ofrece una seguridad mayor a comparacion de otros dispositivos por cuestiones de trabajo, a la vez de poder controlar ciertos dispositivos o terminales mediante una red empresarial.


TinyOS



Este sistema especifico fue uno de los primeros sistemas creados para sensores inalambricas de redes.Este sistema trabaja en un lenguaje llamado nesc un lenguaje muy parecido al lenguaje c como un conjunto de procesos y tareas que trabajan entre si.Ademas este sistema operativo ofrece configuraciones especificas, interfaces,y un estilo modelo de trabajo  multithreading.
 modulos que permiten a los programadores trabajar mas a gusto.




ligas:
http://www.benito.org.mx/blog/software/microsoft-presenta-sistema-operativo-especifico-para-
dispositivos-de-navegacion.html
http://www.os.catacamas.net/Sistemas%20integrados/sistemas%20operativos%20integrados.html