9/23/2016

Recuperar archivos borrados

Saludos,

a más de uno nos ha ocurrido que la hemos liado parda, borrando cosas que no había que borrar, o algo tan simple como restaurar el sistema sin haber extraído antes documentos importantes. El hijo de un amigo me ha pedido ayuda en este sentido y me he puesto a mirar que programas podíamos emplear para ello.

He buscado en google y he encontrado en un blog , los mejores programas de recuperación de archivos gratis. Si suena a virus de la muerte, pero en este caso he probado el primero y ha ido muy bien. 


Es muy recomendable no instalar, mover copiar gran cantidad de archivos si queremos recuperar la máxima información, su los nuevos archivos ocupan el espacio de memoria del disco de los datos que queremos recuperar estarán corruptos o serán irrecuperables.Comencemos.

Tutorial de Dmde

Nos descargaremos de la página el enlace que nos interese, si es windows será el primer enlace. Lo descomprimiremos allá donde nos interese, recomiendo escritorio. Una vez descomprimido entramos en la carpeta y ejecutamos dmde.exe. El programa se ejecutará y veremos algo parecido a esto. 








Seleccionas el physical Drive 0, si tienes más discosduros selecciona aquel donde estaban los archivos que quieres recuperar y pulsas Ok.








En la siguiente ventana solo tienes que pulsar Full Scan.







 En esta nueva ventana pulsaremos Search, después te saldrá otra ventana, nadie dijo que sería fácil...








En esta nueva ventana se estará un buen rato, hasta que este el 100% del disco escaneado, tiempo para un café, una tila, un episodio de tu serie favorita, etc, pero no en el ordenador que estamos escaneando.







Una vez finalizado, es decir al 100%, pulsamos grabar y grabamos el log del escaneo, esto es importante porque no ahorra el tiempo de espera del anterior paso si queremos recuperar otros archivos más tarde. Para cargarlo sería pulsar Load y buscar ese archivo.







 Tras guardar el archivo .log pulsamos el Open Volumen.








Verán una lista de carpetas de extensiones, en la versión Free de este software solo nos deja seleccionar un tipo de documento por ejecución, es decir no puedes marcar diferentes carpetas. Selecciona  por ejemplo la carpeta jpg, la marcas y haces doble clic sobre ella para acceder. Ahí estarán la lista de archivos con esa extensión que se pueden recuperar. Ahora desde ahí, has de pulsar el botón de recovey que es el que os indico en la siguiente imagen. 








Selecciona una carpeta donde ponerlo, y le das a OK. Por defecto te lo pone en Documentos, pero mejor crear una carpeta, porque empezara a extraer las fotos.








Aviso: Si quieres recuperar más tipos de documento, haz que te extraigan los archivos en otro disco duro o en un pendrive, para evitar que la recuperación sobrescriba espacios del disco con información que necesites recuperar.

Eso si luego te tocara hacer el trabajo más duro revisar las imágenes y borrar todas las que no os interesa, que habrá muchas. Las imágenes que no se vean bien o estén corruptas son irrecuperables.

9/20/2016

Tentáculo 2

Saludos,


continuamos en este mes de septiembre que poco tiempo me ha dejado para rolear y mucho para desarrollar e montar. En este publicación continuare con el hilo “El tentáculo que quería reptar”. Si como de un Chthonian  se tratase he hecho dos tentáculos que tenían que participar en una performance, emulando a “creepy worm”, pero de la performance ya hablare cuando tenga el vídeo de la misma.






Como ya más o menos explique el sistema iba a estar controlado con dos motores, cada motor controla de forma inversa dos tendones, cuando uno se estira el otro se encoje. A diferencia de sistemas determinista, como un brazo realizado con servos, con los tentáculos no podemos determinar la posición final pues el sistema tiene juego. Es decir, con la misma posición de motores puede adoptar diferentes formas.


Mecanismo de los motores



Detalle en los motores sin moverse, diferentes posiciones que puede tomar el tentáculo.



Esto lo hace un sistema difícil de controlar y más de simular, pero también resulta interesante, pues quizá no podemos predecir la posición final que tomara, pero si determinar cómo quedara por los movimientos que haya hecho. Ya sé que suena extraño, pero cuando lo controlas llega un momento que eres capaz de llevarlo donde quieres. Ahora bien, lo difícil será hacer que un algoritmo controle eso. Eso se verá en el futuro.




La placa de control que hemos empleado es “homemade”, utilizamos el microcontrolador Teensy 3.2 y los drivers L272M para controlar los motores. Los motores que he empleado son  Micro metal DC con reductora 298:1, son unos motores con muy bajo consuno y un alto par, para el tamaño que tienen, eso sí son muy lentos. El primer test que hice con el tentáculo fue con motores 75:1 y la velocidad de movimientos era considerable.


Planca Teensy 3.2 con Bluetooth, I2c, Motor Driver y RGB control. 

El bus “control switch” era para instalar unos finales de carrera en el tentáculo para evitar que el motor se sobrecargue, que finalmente no he instalado pues no hubieran resultado útiles, dado la manera de moverse del tentáculo. Lo mejor sería un sensor de corriente  para controlar el consumo de los motores y protegerlos de quemarse.

El i2c es para ponerle una IMU en la cabeza del tentáculo que proporciona información sobre la orientación, aceleración y brújula.


El “RGB” iba a emplear leds rgb, pero finalmente emplee tira de leds rgb a 12v que teníamos disponible, El tentáculo se mueve sin problemas con la tensión de alimentación que le proporciona el usb, pero para encender los leds necesitábamos de una fuente externa.


Esquema del circuito


Para controlar el sistema mediante bluetooth definimos la trama de mensaje que íbamos a enviar:


Head
M
M1*
M2*
Time
Tail

Head y Tail son elementos que empleo de control dándoles un valor conocido 0x01
M  Indica que vamos a hablar de los motores 0x6D o 109 en decimal
M1, M2  Determina el estado de los motores que viene a ser: 

            0: parado
            1: sentido horario
            2: sentido anti horario

*Nota: si empleamos motores con una reducción menor podemos jugar con la velocidad de los motores enviando la información en un byte.

            0: parado
            1-127: sentido horario
            128-255: sentido anti horario

D à determina la duración del movimiento:

0: 50ms, 1:100ms, 2:200ms, 3:300ms, 4:400ms, 5:500ms, 6:1s, 7:1.5s, 8:2s, 9:3s

El Color se enviaba en una trama similar

Head
C
R(0..255)
G(0..255)
B(0..255)
Tail

Donde la única diferencia es en la palabra de control, que en este caso es C ,0x43 o 67 en decimal. Y el mensaje de los colores son tres bytes.

En definitiva, la placa que habíamos montado simplemente está montada para controlar el tentáculo, y recibir instrucciones del exterior. Finalmente, quien controlaría el tentáculo sería un sistema que correría en un ordenador, o similar. Para la performance, se optó por realizar un control en Python, un simple control remoto. También se realizó una aplicación para Android con Mit App inventor 2.

Aplicación de Python para conectar serie o bluetooth desde Windows.
  
Para procesar esta información desde el teensy o Arduino yo empleo este tipo de programa

void loop() {
                aux=0;
                n_bytes=0;
while (Serial1.available() > 0) {
                               input[aux] = Serial1.read();
                               //Serial1.print(input[aux], HEX);
                                aux++;
                               n_bytes = aux;
               }
               if ((input[0] == 0x01) && (input[n_bytes - 1] == 0x01)) {//mensaje correcto
                               Serial1.println("ok");
                               switch(input[1]){
                               case 0x6D:
                                              dirM1=int(input[2]);
                                              dirM2=int(input[3]);
                                              timeDelay=int(input[4]);
                                              Motores(dirM1,dirM2,timeDelay);
                                              break;
                               case 0x43:
                                              Cred=int(input[2]);
                                              Cgreen=int(input[3]);
                                              Cblue=int(input[4]);
                                              led(Cred,Cgreen,Cblue);
                                              break;
     
                                }
Clean_input();
} else Serial1.flush();

}


Si empleáis la placa Arduino y usáis la librería SoftwareSerial funciona igual.

Y ahora os dejo uno vídeos de los tentáculos.



Jugando con la aplicación de Python



Previo a la performance, con sus primos Dynamixel, aquí controlados con el móvil.



Anakleto.  

9/08/2016

Introducción a Dynamixel

Saludos,
como ha sido el final de las vacaciones?... Pues imagino que traumático para casi todos, al segundo día ya estábamos mirando el calendario a ver cuándo caían las siguientes. Pero como era de esperar, hay mucho trabajo que hacer.


Hoy os hablare de mi pequeña experiencia con los servos Dynamixel, recordáis la anterior publicación del "el tentáculo que quería reptar",  pues la historia continua. Los tentáculos se emplearán para un Workshop la semana que viene, pero también para la semana que viene tengo que tener tres brazos como estos, para realizar una performance entre otros robots.







Con los servos Dynamixel tenía ganas de trabajar, pues son los 100% bellota de los servos, al igual que su precio. Pero descubrí que hay una familia de pequeñines los XL-320 con un precio razonable. Igual que paso con casi todos los sensores, motores, placas etc. Buscas en google como conectar/controlar con Arduino/Genuino, hay otros tantos, pero es como las consultas de Linux, de Ubuntu hay mas información. Y de cómo controlar estos servos.





Pues es algo tan sencillo como bajarse la librería, abrir uno de sus ejemplos básicos “XL320_servo_example” y a correr. Explicar que este ejemplo emplea la librería <SoftwareSerial.h> para no usarla, el pin de data está conectado directamente al TX del serial Pin 1. Pero podemos emplear el SoftwareSerial y conectar el data al pin 11, y el serial emplearlo de debugger.





Que problemas os encontrareis. Bien el programa “XL320_servo_set_baud_rate_or_id” sí que o cambia el baud rate de comunicación con el servo, pero no nos cambia la dirección, y esto es porque los servos se ponen automáticamente a 9600 baud cuando se le va a cambiar la id, si la velocidad es otra pasa de ti. Aquí os dejo una versión modificada,  simplemente a la variable newID le asignáis la dirección que queréis dar al servo, cargáis el programa conectáis el servo, solamente el que vais a programar y pulsáis el reset, si la configuración se ha realizado correctamente el servo se moverá aleatoriamente, eso si os los dejara a 9600.


Hacer el setup de uno en uno


Otro problema que tendréis, es la imposibilidad de tener feedback del servo, al solo emplear el pin de transmitir, no recibiréis nada del servo y si puenteáis los pines TX/RX tampoco os funcionara. Es malo esto, depende de lo que quieras hacer, tener un servo con muy buenas prestaciones y no poder hacer uso de ellas.





Algunas posibles soluciones 


Soluciones unas cuantas, 74HC126, 74LS241, lo que me obligaba a ir de compras… La mayor fuerza del progreso es la pereza, aunque también es su problema. Porque digo esto, tratar de evitar tenerme que dar un paseo me ha hecho mirar y remirar en webs, foros, etc. Tenía pensado hacer una prueba con el MAX485 que sé que tengo en el trabajo, pero he encontrado algo más simple en esta web. Lo que me ha hecho buscar en las estanterías componentes para conseguir este simple circuito. Pues bien funciona, se puede enviar y recibir información.





Hay una ligera desviación de la orden de movimiento y la lectura que hace pero no es preocupante.



Anakleto.