Brazo robótico (Arduino+Bluetooth+Android)

Para la asignatura de Sistemas Empotrados y en Tiempo Real del Grado en ingeniería informática de la URJC teníamos que hacer un proyecto con Arduino. La temática era libre, solo debía tener cierta originalidad y dificultad. Nuestro grupo decidimos hacer un brazo robótico que controlaríamos a través de bluetooth desde un dispositivo android.

El martes pasado, fue la presentación de los proyectos, y la nuestra fue todo un desastre. Nervios + tocar cosas que funcionan a ultima hora = desastre. Aunque al final acabamos con nota aceptable (6,7 de la clase, y 9 del profesor) decidí que esto no podía quedar así y debía mostrar al resto como funcionaba de verdad el brazo. A si que he decidido poner aquí los videos del brazo. Pero no, no son del brazo terminado, si no de algunas pruebas hechas antes terminarlo. Cuando me lleguen los dos servos que me faltan (uno se rompio y otro era del Kit de arduino que nos prestó el profesor y que ya se lo hemos devuelto) grabaremos un vídeo en condiciones y lo mostraré… mientras tanto…


Si, lo se, se me da muy mal editar vídeos…

Arduino y el driver Motorola MC14499

Puff… hace mas de un año que no escribo nada en el blog, casi se me ha olvidado como se hace, y eso que este año ha sido un año interesante. A si que vamos a empezar despacito…

El otro día un amigo me dejo una pequeña placa (PCB) que se había encontrado. Seguramente sea de una maquina de vending o algo por el estilo ya que tiene 4 displays de 7 segmentos y otros 4 pulsadores. Venía con un cable plano de 16 hilos, y trae en soldado a la placa un chip MC14499P. Obviamente lo primero que hice, fue buscar en internet el datasheeet del chip. Este es un driver para 4 displays de 7 segmentos que se puede enlazar en cascada a otros drivers para controlar mas displays. La forma de comunicarnos con el es a traves de tres señales: DATA, CLOCK y ENABLE. Al no haber libreria de arduino para este chip, tuve que pensar como comunicarme con el, y como su interfaz es tán parecida a la de los registros de desplazamiento (Shift Registers ->74HC595) pues probé con el mismo método. La función ShiftOut, y con un poco de prueba y error saque las posiciones de cada digito. Aquí dejo el vídeo:

Y el código:

#define LATCH   6
#define CLK     7
#define DATA    8

// 128.64.32.16.8.4.2.1 // 0 0 0 0 1 1 1 1

void setup() {
  Serial.begin(9600);
  Serial.println("startup");

  pinMode(LATCH,OUTPUT);
  pinMode(CLK,  OUTPUT);
  pinMode(DATA, OUTPUT);
}

void loop(){
    digitalWrite(LATCH, LOW);
    shiftOut(DATA, CLK, MSBFIRST, 80);   //80 = 0 1 0 1 | 0 0 0 0  [ 5 | 0 ]
    shiftOut(DATA, CLK, MSBFIRST, 233);  //229= 1 1 1 0 | 1 0 0 1 [ - | 9 ]
//Resultado 9 - 0 5
    digitalWrite(LATCH, HIGH); // Activando el latch indicamos de que ya están todos los datos
    delay(1000);   // Lo mostramos durante un segundo
    digitalWrite(LATCH, LOW);  // Bajamos el latch para introducir mas datos. 
    shiftOut(DATA, CLK, MSBFIRST, 33);  //33 = 0 0 1 0 | 0 0 0 1 [ 2 | 1 ]
    shiftOut(DATA, CLK, MSBFIRST, 2);   //2 = 0 0 0 0 | 0 0 1 0 [ 0 | 2 ]
// Resultado : 2 0 1 2
    digitalWrite(LATCH, HIGH);
    delay(1000);
}

CAN Sniffer con Arduino + Secuduino

Para quien no conozca que es el CAN-bus, copio de la wikipedia

CAN (acrónimo del inglés Controller Area Network) es un protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en entornos distribuidos.

Analizar del bus CAN

Can Sniffer

Lee la entrada completa

Matriz de diodos – Test 3

Está hecho con Arduino, un array de pares darlington (ULN2003A) y un shift register 74HC595. Solo falta montarlo en una placa, soldarlo con unos cuantos mas shift registers y tendremos una marquesina. Esuqema de conexion de la matriz de 8×8:
8x8 Led matrix

Las resistencias que hay entre los integrados y la matriz, a mi me ha funcionado con resistencias de entre 0,5K Ohm y 1k Ohm
El codigo está aquí.

Voltimetro para baterias (de airsoft) [Battery Tester]

Lo mejor de esto es el comprender que esa asignatura llamada fundamentos físicos de la informática está sirviendo para algo. Si antes fueron los transistores bipolares, ahora es el “Divisor de tensión“. Incomprendido hasta hoy este circuito hace honor a su nombre dividiendo la tensión de entrada dependiendo de los valores de las resistencias:

Divisor de Tensión

Eagle + POV RAY =

ISP Shield

Ahora me ha dado por buscar un programador de micros ATmega. He visto dos opciones, el USBasp o desde el propio arduino. Me gustaba bastante el USBasp de Olek ya que es como un pendrive pero es casi todo SMD y para mis manos inexpertas no es viable. A si que me decido por la placa ISP para arduino. Viendo lo sencilla que es se me a ocurrido modificarla para que porte un zócalo de 28 pines para no tener que usar cables a la hora de programar, aunque no he eliminado ese conector. Este es el resultado de tener que estar estudiando, que haces de todo menos estudiar. El día que tenga que preparar unas oposiciones seguro que construyo un avión o una central nuclear. A ver si después de exámenes lo llevo a la realidad y vemos si AVRDUDE puede programar a traves de eso.

Sustituir un Inverter ó Como reparar la pantalla de un portatil que se ve muy oscuro

El otro día llego mi hermano con el portátil estropeado. Al encenderlo no se veía nada en la pantalla. Luego observe que si se veían sombras e imágenes pero muy oscuras. Le faltaba la retro-iluminación o backlight. Como ya tiene unos años el portátil decidí arreglarlo yo y prescindir de los estafadores del pccity o cualquier otro S.A.T.
Inverter Acer 1350
Investigando vi que podía ser que se hubieran fundido las lamparas que iluminan (cosa muy improbable) o que hubiese muerto el inversor. Viendo foros y googleando vi que esto último era algo frecuente, a si que me puse manos a la obra.