LCD Nokia 132x132px. Color 12-bits.

sábado, 20 de agosto de 2011 1 Comentarios, Dejar un Comentario
La LCD del Nokia 6100 es un Display de 132x132 pixeles que son un total 17,400 pixeles el cual cada pixel tiene la posibilidad de desplegar 12-bits de color ósea 4096 colores diferentes, es una display pequeño pero bastante potente, o lo mínimo para un buen proyecto de electrónica.

Existen variedad de tutoriales acerca de como hacer funcionar este display, así como bibliotecas para el Arduino, PIC, MSP430 y muchos otros microcontroladores, yo he decidió utilizar una ATmega2561 que es el microcontrolador que utiliza la tarjeta Wiring en su versión 1.1 lo cual facilita todo el proceso.


Esta pantalla se comunica a travez de SPI de 9-bits donde el noveno bit es el que le dice al controlador de este display si lo que estamos enviando es un Comando o es un Dato, En esta pantalla puede tener dos diferentes controladores, un EPSON o un Phillips. Las Bibliotecas que se pueden encontrar de este display para el arduino trabajan con cualquiera de los dos controladores, aunque convendría conocer cual es el que tenemos y reducir el código que no sea necesario.

La creación de fuentes es algo bastante sencillo pero laborioso, ya que hay que examinar letra por letra y pasarla a un arreglo, o bien conseguir un programa que lo haga por ti, las únicas licitantes del programa es que no siempre va a haber del tamaño de fuente que tu necesitas, ese fue mi caso ya que yo quería una fuente de 8x12 por lo que tuve que escribir letra por letra, pero es satisfactorio el resultado.


Y lo mejor de todo es la posibilidad de desplegar imágenes:


La Bibliotecas que he usado son: Nokia_lcd de Gravitech y ColorLCDShield del Arduino y las he combinado en una para aprovechar lo mejor de las dos. He cambiado el tipo de fuente y organizando la biblioteca para que se pueda editar con mayor facilidad.


Espero sus comentarios. :D

Simulado un Dispositivo Dynamixel en Controladores Bioloid

jueves, 11 de agosto de 2011 12 Comentarios, Dejar un Comentario
Existe una forma de agregar sensores como acelerometros, gyros etc. a tu controlador Bioloid compatible con la comunicación de los servos Ax-12, esto se logra simulando ser un servo pero enviando datos de este tipo de sensores además de ser compatible con Daisy Chain lo cual ahorra conectores hacia tu placa controladora y conectandolos directamente a cualquiera de tus servos.

Cuenta con características como tener un ID y solo responder tras ciertos comandos acordes con el protocolo que manejan los servos Dynamixel Ax-12, Ademas su pueden combinar varios sensores en un mismo dispositivo como lo es el Gyro, sensores de temperatura y todo tipo de sensor según tus necesidades.

He usado un Arduino para el envío de datos hacia el controlador Bioloid por su fácil programación y gran variedad de códigos que te ayudaran a implementar nuevas funciones en el Dispositivo.


De esta forma ya no será necesario conectar una fuente en el Jack o USB ya que se alimentara de la misma fuente de los servos, evitando exceso de cables en tu robot. Posteriormente podrás construir tu propia placa arduino con componentes SMD para la reducción de su tamaño.


Debido a que la librería HardwareSerial no es tan rápida como los servos Ax-12 tendremos que sacrificar la velocidad a unos 200,000 bps para que al arduino no le cueste procesar las peticiones del controlador Bioloid, tendrás que reducir la velocidad de todos los servos a la misma que el Arduino para lograr una buena comunicación con todos los dispositivos.

Los pines o cables  que saldran de este nuevo dispositivo serán los mismos que el de un servo Ax-12, Pin GND-> Conectado al GND del arduino, pin Vin-> Conectado al pin Vin del arduino y pin Data-> Conectado a los pines Tx y Rx del Arduino por ser un Half Duplex Usart.

Descagar Sketch Arduino Half Duplex Usart Sensor for Bioloid. 

En el Sketch la velocidad esta definida por BAUD_RATE  a 9600, cambiar este si se desea utilizar una diferente. El acelerómetro tendrá que ir conectado a A1 y A2 siendo eje x y eje y respectivamente.

Solo sube este sketch a tu arduino haz las conexiones y estará listo para ser conectado al daisy chain de tu controlador Bioloid.*Puede ser que tengas que modificar un poco el coligo para ajustar tu sensor.

Espero tus comentario.

Biblioteca Dynamixel Download

134 Comentarios, Dejar un Comentario


Actualizado 13/06/2013              Version 1.2.1

Importante: En la actualización de la biblioteca V1.2.1 las instrucciones cambian de ser Ax12.instruccion a Dynamixel.instruccion ya que es capaz de trabajar con diferentes modelos de estos servomotores, también el nombre de la biblioteca a sido modificado siguiendo el estándar de notación CamelCase.

Online Documentation by CornDog: http://austinlpalmer.com/Projects/Documentr/#/home


SourceForge Project: Download Library



*SoftSerial remplazara al antiguo SoftwareSerial (El remplazo no afecta el comportamiento del SoftwareSerial solo hace algunas funciones publicas para poder ser llamadas por la Biblioteca Dynamixel ) y es necesaria incluirla en el Sketch #include “SoftwareSerial.h”

**Las versiones de Dynamixel Serial1, Serial2 y Serial3 solo son para Arduino Mega ya que los otros arduinos no cuentan con estos puertos seriales.

***La velocidad por SoftSerial se vera reducida ya que la comunicación es hecha a través de pines que no fueron diseñados para esa actividad. (La lectura por SoftwareSerial aun no funciona ya que Softwareserial no realiza una lectura correcta )
Recomiendo leer el Manual de estos servomotores para un mejor entendimiento.

Versiones anteriores de estas bibliotecas pueden ser descargados desde aquí.

- Special thanks to Ambarish Parasar for making the translation of the documentation.

Acelerómetro + Arduino

martes, 9 de agosto de 2011 17 Comentarios, Dejar un Comentario
Los acelerómetros son sensores muy útiles en el diseño de sistemas autónomos, los cuales puedan corregir o alterar su estado según los sean los datos, un acelerómetro como su nombre lo indica es aquel que es capaz de medir aceleraciones, existen de 1, 2 y 3 ejes (x,y,z), también pueden variar el tipo de interfaz ya sea analógico o digital, y entre los digitales varia el protocolo de comunicación (USART,I2C,SPI... etc.).


En este caso se trata de un acelerómetro analógico a 3.3v, con selector de precisión (GS1,GS2) y Sleep.
los pines x,y & z son las salidas de cada eje, las cuales tiene determinado voltaje según sea la aceleración medida en su respectivo eje. La conexión de este sensor con el arduino es muy sencillo ya que solo es necesario medir el voltaje con los ADC del arduino (A0,A1,A2...), para su fácil instalación decidí soldar un cable de vcc a sleep y conectarlos a 3v3 del arduino ya que a un voltaje más alto el sensor se quemaría.


Para este tipo de sensores no es necesaria ninguna Biblioteca y el código es bastante reducido:

void setup(){
     Serial.begin(115200);
     pinMode(14,OUTPUT);
     pinMode(18,OUTPUT);
     pinMode(19,OUTPUT);
     digitalWrite(14,LOW);
     digitalWrite(18,HIGH);
     digitalWrite(19,HIGH);
}

void loop(){
Serial.print(“ Eje x:   ");
    Serial.println(analogRead(A1));

Serial.print(“ Eje y:   ");
    Serial.println(analogRead(A2));

Serial.print(“ Eje z:   ");
    Serial.println(analogRead(A3));

delay(100);
}

Con este sencillo programa podemos ver los datos de cada eje en la terminal, puede usarse map(); para ajustar los rangos de valores deseados para el procesamiento en acciones de ciertas aplicaciones.

Variable = map(sensorX,0,1023,0,255);  // con esto se pierde resolución pero puede resultar ser mas sencillo de manejar datos pequeños.

Ejemplo: Podemos visualizar la posición de nuestro sensor por medio de una animación 3D (Un cubo RGB) que se va a mover según la posición de nuestro Acelerómetro. A continuación dejo los códigos.



Espero sus comentarios. :D