martes, 9 de diciembre de 2014

ICARO en Nicaragua

En octubre fue el congreso anual de FUDCON-LATAM (fedora users and developers conference), la conferencia anual de usauarios y desarrolladores del sistema GNU/Linux FEDORA.
Este Año participe (como hace 4 años ya) en el evento, el cual se realizo en la ciudad de Managua (Nicaragua).
En el congreso, di un taller de electronica, con idea a enseñar a fabriar circuitos y programar los microcontroladores usados en el proyecto ICARO. Mi experiencia fue muy linda, los chicos estaban muy interesados y logramos armar cosas muy divertidas.
En Nicaragua, con mi amigo Nevill Cross, estamos armando un laboratorio para fabricar el hardware de icaro, la idea es poder fabricar directamente alla todo, desde el pcb a conseguir los componentes electronicos y distribuir en los colegios tecnicos del pais para poder impulsar el software y hardware libre en centro america. Hay muchisimo por hacer, pero el griupo de gente que logramos juntar es muy bueno, asi que tengo espectativas para que el año que viene ICARO este plenamente instalado en centro america.


 El robot que lleve para demostraciones


 Con los chicos de la comunidad FEDORA


Dando mi taller de diseño de PCBs con KICAD

miércoles, 17 de septiembre de 2014

controlando un robot con señales MIDI

El estándar MIDI (Musical Instrument Digital Interface) es un protocolo muy usado en la industria musical para transmitir información entre dispositivos musicales, como teclados, samplers, equipos para sincronizar dispositivos, etc etc. Si bien es un estándar bastante antiguo, sigue siendo valido y aun hoy es una de las formas mas común de controlar distintos equipos musicales.
En los sistemas GNU/LINUX, también implementan una forma de controlar distintos software y hardware a través de señales MIDI, de esa forma, uno puede tener un controlador MIDI o un teclado con salida MIDI  y controlar distintos programas de audio como LMMS, Hydrogen, Ardour o algunos sintes digitales como qsynth.
La forma de trabajar con auido en GNU/LINUX, puede ser un tanto complicadod e entender al principio, hay varios motores de sonido (OSS, ALSA) pero ademas, esta JACK, que se encarga de capturar el hardware y ser un buffer (o proxy si se quiere) que toma las entradas y salidas de los distintos software y los envía a la placa de audio, permitiendo hacer cosas como tomar la salida de LMMS y meterla dentro de un canal de Ardour y la salida maestra de Ardour derivarla a un multi efecto como Rakarrack, y después, todo eso a la salida de la paca de audio.


Ejemplo de Jack con su front-end qjackctl y LMMS

La idea del proyecto siguiente es poder hacer una interface que tome datos MIDI a traves de Jack y las re envié al puerto /dev/ttyACM0 para poder controlar un robot y hacer música. Para eso, use las librerías de pygame para control MIDI, que si bien son unas librerias gigantes, estan empaquetadas en casi todas las distribuciones GNU/LINUX (Y obviamente en FEDORA) y hay mucha documentación. Para el control del robot usao el modulo apicaro, que forma parte del proyecto ICARO y que me permite andar señales a la placa mediante python-serial y un firmware especial del lado del PIC (firmware tortucaro, que se carga desde la pantalla de icaro-bloques).

boton de carga para el firmware Tortucaro 
(para controlar la placa desde puerto /dev/ttyACMx)




Video de un robot que toca el xilofon, 
controlado mediante LMMS y tambien un teclado controlador MIDI.

 Aca el código fuente del robot, no es muy difícil de entender, básicamente son 2 clases que controlan el MIDI y el puerto serie (usando apicaro)
import pygame
import time
import pygame.midi
import apicaro


class ROBOT:
    """ clase robot, cotrola mediante apicaro los dos servomotores
    de moviento del robot (izquierda/derecha, arriba/abajo """
    escala={
            "c":30,
            "d":60,
            "e":80,
            "f":110,
            "g":130,
            "a":155,
            "b":180,
            "c2":205
            }
    golpe={
            "sube":60,
            "baja":29
            }
    
    def __init__ (self):
        """ Class initialiser """
        
        self.icaro=apicaro.puerto()
        self.band=self.icaro.iniciar()
    def mover(self,tecla):
        self.icaro.activar_servo(1,self.escala[tecla])
    def golpear(self):
        self.icaro.activar_servo(2,self.golpe["baja"])
        time.sleep(0.07)
        self.icaro.activar_servo(2,self.golpe["sube"])
        

class MIDI:
    """ inicia pygame.midi y tiene un diccionario con algunas notas MIDI """
    notas={
            60:"c",
            62:"d",
            64:"e",
            65:"f",
            67:"g",
            69:"a",
            71:"b",
            72:"c2"
            }
    def __init__ (self):
        """ Class initialiser """
        pygame.midi.init()
        print "set player"
        self.player= pygame.midi.Input(1)
        print "set instrument"

midi=MIDI()
robot=ROBOT()
while robot.band:
    # nos fijamos si hay datos en el buffer
    flag = midi.player.poll()
    if flag == True:
        data = midi.player.read(10)
        senal = data [0][0]
        nota = senal[1]
        volumen = senal[2]
        #~ print volumen
        # si la nota esta dentro del diccionario, muevo el robot
        if midi.notas.has_key(nota):
            if volumen <>0:
                robot.mover(midi.notas[nota])
                time.sleep(0.2)
                robot.golpear()

miércoles, 16 de julio de 2014

ICARO en Tucumán

Mateo Carabajal (http://losaparatos.net/) me invito para ir a dar unas charlas sobre icaro en la ciudad de San Miguel de Tucuman y aprovechar para capacitarlos para un proyecto de robotica educativa que estan usando.
Fue una experiencia hermosa que espero que se repita.

 Las 3 plaquitas de pruebas que armamos para poder hacer analisis y ver la factibilidad de fabricarlas en Tucuman.


Mateo y Natalia me mostraron su editorial de libros y aprovecho para publicitarlos:
http://dichosaeditorial.blogspot.com.ar/

Libros y electrónica, una excelente combinación

En pleno proceso de soldado 


El pizarron de Mateo


Una placa ya lista y andando en la netboook de Conectar igualdad


 Dando la charla

  publico

Publico mirando el robot que lleve para pruebas 

 Mateo Carabajal

Hubo una muy linda convocatoria


 Robot Cuadrupedo para demostraciones con la placa Np06

Fue una experiencia hermosa poder compartir con la gente de Tucuman el proyecto ICARO, y espero que podamos seguir dandole continuidad.

viernes, 16 de mayo de 2014

ICARO en FISL15

el foro internacional de software libre (FISL) es uno de los eventos mas grandes de latino américa en torno a la comunidad del software libre. Todos los años se hace en la ciudad de Porto alegre (Brasil). Este año, al giual que el año pasado, la comunidad de FEDORA auspicio el proyecto ICARO para poder ir a brasil a dar una charla en el espacio "Paulo Freire" sobre robotica educativa usando software libre y hardware de especificaciones abiertas.
Fueron cuatro dias de donde aproveche para mostrar el proyecto a varias personas y volver a ver a viejos amigos que estan muy metidos en al robotica usando software y hardware libre.
Este año note la gran cantidad de proyectos sobre robotica usando software libre y me pone muy contento porque significa que cada ves mas gente se da cuenta de las posibilidades pedagógicas en torno a los robots.


Demostración del robot BUTIA de Uruguay.


Usando Arduino y plastilina para fabricar sensores y botones 



Una tortuga echa con una impresora 3D para aprener a programar



Bloques de control de la tortuga (cada bloque es una resistencia y el harwdare mide ese valor y arma una matriz) 



Brazo de 5 grados de libertad, echo con servos motores y una impresora 3D



Otra vista del Brazo  robot en el stand de FEDORA, se puede ver la placa ICARO NP06 que controla los movimientos del robot.



El stand de la comunidad de FEDORA 



En el espacio Paulo Freire, dando la charla sobre ICARO



Una gran convocatoria del ámbito educativo, se nota como los docentes y capacitadores comienzan a ver el softwre libre como una alternativa ética y de calidad en la enseñanza.