lunes, 29 de junio de 2009

Ultimas gastadas

Ya estan aqui las gastadas, se acercan multitud de horas de entretenimiento frikil.

Contenido:
6 x panel pvc amarillo 30x40mm
3 x Receptor IR TSOP4838
1 x Cable adaptador mando PS2
1 x separadores 20mm



Recepcion IR con Arduino (protocolo NEC)




Lo que tenemos aqui es un receptor IR 38khz TSOP4838 y la idea es programar el Arduino para que reciba los codigos IR de mandos a distancia, en concreto los mandos que he probado parecen usar el protocolo NEC que esta bastante extendido

El primer paso es conectar el receptor IR como se ve en la foto, con el positivo a una resistencia de 220 ohm, aqui abajo se muestra el esquema de conexionado del datasheet, pero voy a obviar algunos componentes por simplificar la tarea.







Seguidamente nos descargamos la libreria NECIRcv de  http://wikiputer.org/arduino/NECIRrcv.zip y la copiamos el directorio usual arduino-013/hardware/libraries/

Podemos cargar el ejemplo que viene con la libreria pero hay que añadir un include al principio para que la compilacion no de errores, quedaria como lo siguiente:
// look for IR codes and print them as they are received
#include <WProgram.h>
#include <NECIRrcv.h>
#define IRPIN 8    // pin that IR detector is connected to

NECIRrcv ir(IRPIN) ;

void setup()
{
Serial.begin(9600) ;
Serial.println("NEC IR code reception") ;
ir.begin() ;
}

void loop()
{
unsigned long ircode ;

while (ir.available()) {
ircode = ir.read() ;
Serial.print("got code: 0x") ;
Serial.println(ircode,HEX) ;
}
}

Una vez compilado y subido al arduino abrimos la consola serie y pulsando alguno de los botones de los mandos los codigos HEX salen en pantalla



Mandos usados para las pruebas, mando para receptor Yamaha RX-V340 y mando para sintonizador TDT-USB Zappa:




Referencias:
- post original: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556/0
- informacion util sobre protocolos IR: http://www.sbprojects.com/knowledge/ir/ir.htm

Mas gastadas, MicroFresadora Proxxon MF70 + motores CENECE 23HR56

Llegaron las ultimas gastadas para el proyecto del cacharro CNC, aqui estan algunas imagenes ilustrativas de los elementos:
motores Cenecé 23HR56 de 400 pasos:

motor encima de una misteriosa caja

el carton lleva dentro un misterioso contenido

aqui esta el ansiado articulo
mesa de coordenadas que lleva la maquina
en el interior esta lo interesante
varios angulos del aparato


Referencias:
http://www.cenece.com
http://www.proxxon.com/  

viernes, 17 de abril de 2009

Arduino + LM35





Para poder leer la temperatura del sensor LM35 en Arduino solo hay que conectar el sensor como el siguiente esquema:



Donde R1 es una resistencia de 100K conectada a tierra formando un "Pull-Down", una vez hecho esto cargamos el siguiente codigo en el IDE de Arduino y abrimos el puertos serie donde deberia mostrar cada 5 segundos la temperatura recogida.

PD: lo mas importante precio menos de 2€

/*
 *
 * Lectura de temperatura de sensor LM35
 *                    
 * LM35 pinout
 *    pin Vs a arduino +5V
 *    pin Vout a analogpin y resistencia de 100K a GND (Pull-Down)
 *    pin GND a arduino GND                
 */

int analogPin = 0; // Pin analogico 0 de Arduino
int temperature = 0;
int lm35read;

void setup()
{
  Serial.begin(9600);
}

void loop ()
{

  lm35read = analogRead(analogPin);
  temperature = (5.0 * lm35read * 100.0)/1024.0;
  Serial.print(temperature);
  Serial.println("C");
  delay(5000);
 
}



Referencias:
  • Datasheet de LM35


  • http://www.arduino.cc/en/Tutorial/DigitalPins
  • Ultima gastada, controladora CNC 3 ejes




    Ya me llego la controladora para el proyecto CNC que estoy montando, seguire informando de los avances de la construccion del cacharro.

    Caracteristicas:
    Stepperworld FET-3, controladora por puerto paralelo de 3 Ejes con soporte de motores paso a paso unipolares de hasta 15A por fase, lleva 12 transistores Mosfets, 2 salidas auxiliares TTL para relés y 3 entradas para interruptores de fin de carrera.

    Referencias:
    http://www.stepperworld.com/fet3.htm

    lunes, 16 de marzo de 2009

    Video con µoled-128-G1 + Arduino

    Aqui esta el esperado video de ejemplo de Arduino controlando un display µoled-128-G1 reproduciendo video.

    PD: en la realidad se ve mejor el display, es cosa del video



    El ejemplo usado es el siguiente:
    #include <oled.h>


    void setup() {

    Serial.begin(9600);
    pinMode(8, OUTPUT); // sets the digital pin as output

    //function from Oscar's library, using pin8 to control reset of the OLED
    OLED_Init();

    //cler screen
    OLED_Clear();

    }

    void loop() {
    // Video
    Serial.print(0x40, BYTE); // extCmd
    Serial.print(0x56, BYTE); // @V Play video
    Serial.print(0, BYTE); // x
    Serial.print(0, BYTE); // y
    Serial.print(128, BYTE); // width
    Serial.print(128, BYTE); // height
    Serial.print(16, BYTE); // colourMode
    Serial.print(0, BYTE); // delay in milliseconds
    Serial.print(0x2, BYTE); // frames msb
    Serial.print(0x2c, BYTE); // frames lsb ( 022C = 556 frames)
    Serial.print(0, BYTE); // sectorAdd hi
    Serial.print(16, BYTE); // sectorAdd mid
    Serial.print(0, BYTE); // sectorAdd lo
    OLED_GetResponse();

    }// end loop

    Libreria: Uoled_latest.tar.gz
    Manual de usuario: uOLED-128-G1_Users_Manual_Rev1.0.pdf
    Referencias:
       
  • http://www.4dsystems.com.au


  •    
  • http://arduino.cc/en/Serial/Print
  • Arduino + Sparkfun Keypad 4x3

    - SparkFun Keypad 4x3

    Sparkfun Keypad


    Para hacer funcionar este keypad con Arduino hay que realizar una serie de modificaciones en la libreria (ver descarga al final del post), ya que este modelo de keypad usa un pineado no standard, ademas aprovechando las caracteristicas del microcontrolador Atmel168 usaremos los "pull-ups" internos para ahorrarnos un par de resistencias en las entradas. Ver el enlace sobre sobre DigitalPins en arduino mas abajo para leer mas sobre los "pull-ups".

    Editar el archivo "keypad.cpp"

    - Cambiar los defines:

    #define COL0    6
    #define COL1    5
    #define COL2    4
    #define COL3    7
    #define ROW0    3
    #define ROW1    2
    #define ROW2    1
    #define ROW3    0


    - Por los siguientes:
    #define COL0      11  // #05
    #define COL1      12  // #01
    #define COL2      13  // #03
    #define COL3      5   // not used as this is a 3 Col x 4 Row keypad
    #define ROW0      7  // #02
    #define ROW1      8  // #07
    #define ROW2      9  // #06
    #define ROW3      10  // #04




    Editar el archivo "keypad.cpp"
    Seccion original "solo funcion init"):
    void keypad::init ()
    {
    for (int c=0; c<num_cols; c++)
    {
    pinMode(col[c],OUTPUT);                        // Set column pins as outputs for writing
    digitalWrite(col[c],HIGH);                  // Make all columns inactive to start with.
    }
    col_select = 0;                                    // Start with the first column.
    }

    New: "añadir el texto marcado en rojo"
    void keypad::init ()
    {
    for (int c=0; c<num_cols; c++)
    {
    pinMode(col[c],OUTPUT);                        // Set column pins as outputs for writing
    digitalWrite(col[c],HIGH);                  // Make all columns inactive to start with.
    }

    for (int r=0; r<num_rows; r++)
    {
    digitalWrite(row[r],HIGH);                  // Make all rows turn on pullup resistor.
    }

    col_select = 0;                                    // Start with the first column.
    }


    - Una vez hecho las modificaciones y subido el programa al Arduino procedemos a conectar los pines como lo siguiente:


    Row0 = keypad pin 2 -> Arduino pin 7
    Row1 = keypad pin 7 -> Arduino pin 8
    Row2 = keypad pin 6 -> Arduino pin 9
    Row3 = keypad pin 4 -> Arduino pin 10
    Col0 = keypad pin 3 -> Arduino pin 11
    Col1 = keypad pin 1 -> Arduino pin 12
    Col2 = keypad pin 5 -> Arduino pin 13


    - Una vez ejecutandose en el Arduino debemos ver los numeros pulsados en el "serial-monitor" del IDE del Arduino

    - Finalmente el resultado se veria asi (el video no esta sincronizado lo se)




    Libreria: http://www.arduino.cc/playground/uploads/Main/matrixKeypad.zip
    Referencias:
      

  • http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1209003950/0




  •   

  • http://www.arduino.cc/en/Tutorial/DigitalPins




  •   

  • http://www.arduino.cc/playground/Main/KeypadTutorial




  •   

  • http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235495599/0#0
  • jueves, 12 de marzo de 2009

    Tutorial de display slideshow con uOLED-128-G1 paso a paso

    - Primer paso, descargar e instalar el programa Graphics Composer de la pagina del fabricante: "http://www.4dsystems.com.au/downloads/Graphics_Composer/Ver2.XX/GraphicsComposer.zip"



    - Una vez instalado, crear un nuevo proyecto con "File->New" y añadir las imagenes con "Add->Multiple->Image":




    - IMPORTANTE el programa deja mucho que desear en cuanto al tratamiento de imagenes, con lo cual para evitar problemas es muy recomendable tratar las imagenes con algun software de edicion (Ej. Irfanview) y reescalar las imagenes a 128x128 pixeles, esto evitara futuros dolores de cabeza y frustraciones.

    - Despues de añadir las imagenes quedaria como lo siguiente:





    - Para poder visualizar la secuencia correctamente añadiremos un delay de 4 segundos entre fotograma para poder ver cada imagen correctamente





    - Quedando como lo siguiente:




    - A continuacion entraremos en el menú de opciones de carga donde elegiremos la unidad donde tendremos la tarjeta micro-sd, mediante un adaptador usb, lector de tarjetas o similar





    - En este caso elegiremos la opcion "Serial Command Platform" ya que es la que viene por defecto, y la letra que corresponde a la tarjeta micro-sd






    - Finalmente pulsar en el boton de "Load Device"






    - Si todo el proceso fue correcto, deberia aparecer la siguiente imagen mostrando el resultado:






    - Aqui esta el video del resultado final, una linda secuencia de imagenes de bellas marmotitas, acaso no son adorables?




    miércoles, 11 de marzo de 2009

    martes, 10 de marzo de 2009

    µOLED-128-G1

    Video del display oled µOLED-128-G1 conectado mediante un adaptador usb-serie µUSB-CE5 al PC

    jueves, 5 de marzo de 2009

    Reprogramacion de Arduino bootloader con Pololu Orangutan USB

    Sencillos pasos para subir el bootloader al Arduino mediante el programador Polulu Orangutan via conector ISP
    - Abrir el archivo "arduino-012/hardware/programmers.txt"  y añadir:
    avrispv2.name=AVR ISP v2
    avrispv2.communication=serial
    avrispv2.protocol=avrispv2

    - Abrir arduino y elegir menu "Tools->Burn Bootloader->w/AVR ISP v2"

    Y success!!!




    Fotos de referencia:

    - Programador Pololu Orangutan USB
    Pololu Orangutan USB

    sábado, 21 de febrero de 2009

    Recuperacion de bootloader en Arduino

    No es nada extraño que por algun problema hardware/software el bootloader del arduino quede corrupto y no se pueda volver a subir sketchs para mucha gente es un error faltal y creen que ya no se puede recuperar, pero no es asi la cosa pues hay varias alternativas para volver a cargar el bootloader.

    La opcion mas facil, rapida y asequible es una que realizando una pequeña modificacion en la propia placa de arduino podemos volver a cargar el bootloader y revivir nuestra plaquita alegrandonos el dia, este sistema usa el modo BitBang del chipset usb-serie que lleva incorporado el arduino permitiendo usarlo como programador AVR.

    En este enlace se puede ver como se realiza el asunto: http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html