viernes, 3 de agosto de 2012

ICARO en Tecnopolis

La gente de conectar igualdad me invito a participar dentro de la feria  Tecnopolis con el proyecto ICARO.
La idea era fabricar unas plataformas móviles (parecidas a las del proyecto Butia). Como en la feria hay muchísimo transito de personas (y niños), pensamos en actividades simples donde los chicos controlaran una netbook del plan conectar igualdad y mediante una red wifi movieran el robot (usando sockets y un pequeño servidor escrito en python que desarrolle para tal motivo).

aca van algunas fotos de los robots que armamos:








y aca algunas del evento:






y un video:


sábado, 21 de julio de 2012

robot bipedo

La idea era poder fabricar un robot bípedo con la mínima cantidad de servos y usando solo los 5 conectores de la placa np05.
Si bien también se pueden usar los 8 conectores del PORTB (puerto de expansión) y los 8 conectores analógicos (PORTA), la meta era tener que tocar lo menos posible el código fuente C que usa icaro y no agregar mas electronica.

 Robot de frente

Otra visión del robot 

Detalle de los pies con los servos


Primeras pruebas de caminata.

En las primeras prueba, el robot solo caminaba para adelante. Después le agregue un sensor CNY70 para que detectara cuando esta cerca de una pared blanca y retrocediera.


 Configuración para que el robot camine para adelante

Para que el robot camine hay que hacer una serie de 6 movimientos con una pausa mínima de 200 Ms, para que retroceda hay que repetir a la inversa los movimientos del servo


 Configuración para que el robot gire


Como repetir cada uno de esos movimientos es muy incomodo y dificultaría la lectura del código final, para eso use llamadas a funciones.
Para hacer eso, grabamos nuestros bloques con la opción "guardar como función" dentro de la carpeta -función- de icaro-bloques (todavía es experimental pero funciona). Después usamos el bloque "incluir" para agregar esa función a nuestro código, y después para llamar a esa función, usamos los bloques "acción"

Robot que avanza y gira.

El paso siguiente fue ponerle un sensor cny70 para que detecte cuando choque con una pared blanca y retroceda.

 
Con un bloque "si".

Cuando el sensor cny70 toque una pared blanca retrocederá y girara  a la izquierda.

 Con el sensor cny70 en el frente 


 Vista de costado


Detalle del circuito del sensor con un cny70 y un CD40106


Vídeo del robot

domingo, 24 de junio de 2012

usando el puerto de expansion

La placa NP05 posee un puerto de expansión (concretamente el PORTB del micro controlador 18f4550) que se puede usar para tener salidas o entradas digitales de propósito general.
Con icaro-bloques se puede mandar información al puerto de expansión usando el bloque "activar".

Bloque "activar" con una variable como instrucción 


 al igual que en la placa NP03 de puerto serie, para activar los pines del puerto, hay que mandar un valor decimal que el micro controlador representara en valor binario, cada bit es uno de los pines del puerto, encendido o apagado.
Asi, para que se encienda el pin 1 del puerto haremos "activar 1" (00000001) el pin 2 "activar 2" (00000010), el pin 3 "activar 4" (00000100) y asi exponencial-mente hasta el pin 8 que es el valor 128 (10000000).
si bien se podría hacer un programa que simplemente enviara la señal activar ocho veces con los valores 1, 2, 4, 8, 16, 32, 64, 128, en el ejemplo siguiente preferí mostrar como usar una variable para generar un bucle donde en cada iteración la variable "a" se suma a si misma (un acumulador).



programa para encender leds en icaro-bloques

Con el programa anterior, si conectamos una placa con leds (el circuito es bastante simple y se puede hacer con una placa universal) veremos como cada led se va prendiendo en pasos hasta llegar al led 8 donde vuelve a empezar. Los programas en icaro-bloques por regla general son un bucle infinito donde se lee desde el bloque "inicio" hasta llegar al ultimo bloque pegado a la cadena, y luego vuelve a empezar, aunque hay formas para evitar eso (con bucles "while True" vacios al final).
 


Video del puerto de expansión contando 8 pasos


Este programa es para hacer un contador de 255 pasos,  es mas sencillo porque solo necesitamos que la variable se sume a si misma en cara iteración.
 
Programa en icaro-bloques para un contador de 255 pasos



Video del PORTB contado 255 pasos

Con este puerto de expansión se puede agregar funcionalidades a la placa icaro, como prender luces o reles (para manejar un motor de potencia por ejemplo), y con un poco de maña también 8 servos mas (aunque implicaría tocar muchas cosas a nivel C).

viernes, 1 de junio de 2012

ICARO en villa maria

El 30 de mayo en la localidad de Villa Maria (provincia de Córdoba) fuimos con Javier Castrillo (del programa nacional Conectar Igualdad) a dar unos talleres de Robótica pedagógica en el marco de los festivales conectar .
Ayudarlo a Javier con los cursos (uno con casi 150 chicos) me permito ver algunas cosas con respecto a la metodología que se puede utilizar para enseñanza de robotica (sobre todo trabajando con muchos chicos).
quiero tambien aprovechar para agradecer a Gsutavo Cierra de la Tecnoteca que nos dio una gra mano en todo y le puso toda las pilas al trabajo.
algunas fotos del evento:

Los chicos usaron Turtleart en sus netbooks y aprendieron conceptos básicos de la programación 

 una flor

 Segun Javier Castrillo, una cara



 Haciendo las primeras pruebas con el robot que llevamos

Mas pruebas

La experiencia fue muy linda (aunque estuve los dos días afónicos) y creo que permitirá armar un lindo grupo de trabajo para poder desarrollar el hardware con los colegios técnicos de la zona y poder usarlos en varias instancias pedagogicas.


jueves, 3 de mayo de 2012

FLISOL la rioja

El sábado 28 de abril fui invitado a dar una charla en el marco de la FLISOL de la provincia La Rioja.
La rioja es la única provincia de Argentina que implemento la entrega de las netbooks Xo del plan OLPC mediante el programa Joaquin V Gonzalez. ICARO esta pensado para poder trabajar con las netbooks Xo y el entorno gráfico SUGAR, por lo que fue una jornada muy interesante para poder trabajar con gente que directamente esta trabajando con el programa Joaquin V gonzalez y coordinar esfuerzos.


Las charlas fueron organizadas por los chicos de GUSLAR.

hubo 60 inscritos y varias instalaciones.

 El robot de prueba que lleve para demostraciones


mostrando como usar un sensor analógico para leer datos desde TurtleArt

El domingo aproveche y me junte con Jorge Cabrera y su equipo, que amablemente me invitaron a comer un asado, y a charlar sobre el proyecto ICARO y las OLPC.
Me gustaría aprovechar para agradecer a Matias de la Puente por darme lugar en su casa y de paso recomendar a todas las personas que esten comenzando en esto de la programación de PICs y software libre, prueben el excelente I4UC programado por Matias y que yo uso para los firmware de ICARO.
Creo que lo que mas voy a extrañar de La Rioja son los barrolucos que comi en la vieja esquina.

Una verdadera belleza


martes, 24 de abril de 2012

ICARO en la escuela


Hace 3 semanas que estamos haciendo un taller de robótica con alumnos de un secundario rural de la localidad de "la carbonada", a 30 km de Córdoba capital donde los chicos, están desarrollando Robots para una competencia de SUMOBOT contra un robot diseñado por los profesores.
El centro educativo CBU Rural “La Carbonada” anexo del IPEM 320 “Jorge Cafrune” que funciona en las instalaciones de la escuela primaria “General Manuel de Escalada” tiene su domicilio en Paraje “La Carbonada”, zona rural. Dicho paraje se encuentra a 8 km sur-este de la ruta 9 sur a la altura del km 689.
La idea fue organizar un taller con los alumnos de 5 y 6 año (unos 6 chicos) y probar ICARO con chicos que en muchos caso nunca habían trabajado con una computadora y mucho menos con electrónica.
Nos separamos en grupos de 2 alumnos (aunque a veces venian mas) y compensamos a trabajar sobre la base de diseñar un robot capas de encontrar y empujar a otro robot en un Doyo de SumoBot.  Los chicos se han interesado bastante en el curso, como prueba que casi siempre nos excedemos en la hora y media asignada al taller y terminamos trabajando entre 2 y 3 horas.
hasta ahora desarrollaron 2 robots usando componentes de impresoras, rasti, motores viejos y unos pedazos de plástico de metacrilato sobrantes de los usados para remplazar una ventana de un aula.



El taller de trabajo, usamos esa mesa donde tiramos todo lo que encontramos para armar nuestros robots 
Un robot echo con Rastis, todavía no estaba puesta la placa de control


Este robot ya estaba listo para la pista, le falta programar la logica y sus sensores 

El robot de los docentes, contra el que competirán (y ganaran)

La idea de la competencia salio para motivarlos a trabajar sobre un problema concreto (aprendizaje basado en problemas), y competir contra los profesores evitaba rivalidades entre los chicos, solo tenían que "vencer al profe".

También, estamos trabajado con Lucas Costas de la escuela "Florentino Ameghino" de berazategui (Buenos Aires), que cuentan con excelentes instalaciones y están haciendo test sobre las placas NP05 para implementarlas en sus clases y hacer aportes al proyecto.


Osciloscopios de la escuela

Una vista general del laboratorio

Una placa ICARO pasada por el ociloscopio


Se pueden apreciar los picos de caída de tensión cuando se usa el puerto B, problema que ya sabia, pero no había tenido oportunidad de testear con un osciloscopio profesional.

domingo, 4 de marzo de 2012

placa np05 cpn PIC 18f4550 (pinguino)


Al fin llegaron los PCB que mande a fabricar para trabajar con los pic 18f4550. Este nuevo PCB esta diseñado para poder fabricar un robot de forma sencilla sin necesidad de electrónica adicional, el driver de control para motores CC (l293d) esta integrado, con su propia fuente (lm7805) y ocupa 4 pines del PORTD, también tiene reservados 5 pines para control de servomotores y 4 digitales así como 8 entradas analógicas y todo el PORTB para usos adicionales.

El PCB fabricado por una empresa de Córdoba

También coincidió con la entrega de los 10 PICs pedidos a FARNELL, que por problemas de importación con argentina, tardan 5 semanas en entregarlos.

vista del lado del cobre y serigrafia

Las características principales de la placa son:

  1. Control para 2 motores CC con driver L293D.
  2. 5 conectores para servomotores.
  3. 8 entradas analógicas.
  4. 4 entradas digitales con bornera.
  5. PORTB libre para expansiones. 
  6. 2 fuentes lm7805 (5 volt) para alimentar el pic y los motores CC.
  7. Conector usb hembra tipo D.
  8. Boton de RESET con luz indicadora de funcionamiento.
  9. Boton de encendido con luz indicadora de tension. 

Este es un pequeño robot seguidor de linea con un brazo compuesto por 2 servos (codo y mano), aparte de la placa, no tiene ningún componente electrónico extra, todo esta integrado a la placa.

 placa np05


 robot con la placa montada



vista general de la placa y sus conectores usados


video de un robot seguidor de linea


 pantalla de icaro-bloques con el código fuente del robot

He decidido ordenar el esquema de trabajo con ICARO de la siguiente forma:


 En este nuevo esquema,  el código fuente escrito en C++ sera para trabajar con placas de puerto paralelo, para las placas  de puerto serie y puerto USB, trabajare directamente con python usando turtleart para controlar el robot conectado a la notebook, y para un robot autónomo usare icaro-bloques para generar codigo C++ para SDSS.

miércoles, 8 de febrero de 2012

nueva placa icaro basada en pinguino-usb

Una de las principales preocupaciones que tuve a la hora de encarar el proyecto de robótica ICARO era la de poder fabricar componentes de hardware de bajo costo y fácil adquisición para poder usar en ámbitos escolares (donde los alumnos podrían romper los equipos por falta de experiencia). Aparte la idea principal de ICARO, es hacer la robótica accesible para la mayor cantidad de personas, por lo tanto cualquier hardware que diseñara tendria que tener estas caracteriscticas minimas:

Bajo costo:

Como el desarrollo es para uso educativo, en el balance de costos calidad, un hardware caro y potente no es tan útil como uno barato y con mas posibilidades de adquisición por las instituciones (sobre todos colegios públicos)

Fácil fabricación:

la idea es que cualquier persona pueda fabricar las placas con un mínimo de conocimientos y herramientas como un soldador de estaño y una perforadora de mano. Eso genera algunas limitaciones con respecto al PCB.
  1. preferentemente debe ser un PCB de una sola cara.
  2. No usar componentes SMD (soldadura superficial).
  3. El ancho de las pistas debe  ser lo suficientemente grande para poder usar tecnicas de armados caseras como la transferencia termica de tonner mediante una plancha.
  4. tiene que ser posible usar PCBs universales para armar las placas
 accesible:

Mientras mas común sea el componente electrónico, sera mas fácil de adquirir en cualquier país.
Usar dispositivos difíciles de conseguir, no sirve para un proyecto que busca integrar la robótica en las aulas.

Reciclable:

No solo se abarata costos reciclando componentes, también permite dar una respuesta a la basura electrónica reutilizando motores, sensores y partes de impresoras, lectoras de CD y CPUS viejas. Aparte no encasilla tanto el desarrollo de los alumnos al obligarlo a usar piezas pre definidas.


Con lo expuesto arriba, son los avances que fui desarrollando a lo largo de los años con respecto al hardware de ICARO.
Actualmente, con la entrega de notebooks a los colegios por parte del gobierno (plan conectar igualdad en argentina, plan ceibal en uruguay), la necesidad de contar con un hardware capas de trabajar con USB se volvió fundamental. 
Si bien las placas ICARO np03 (puerto serie) son muy baratas (us$ 13 aprox), el tener usar un conversor serie/usb (FTL232) encarecia el costo total del circuito (un conversor serie/USB esta costando casi us$ 20), en ese sentido la idea de pasar a un microcontrolador 18F4550 o 18F2550, fue para poder trabajar con la netbooks que se entregan masivamente en los colegios publicos.
Un pic 18f45550 es casi 9 veces mas caro que un 16f628A, pero si restamos el conversor serie/usb (que aparte es cada ves mas dificil de conseguir) tenemos un costo mas o menos parecido y con muchas mas posibilidades de trabajo (señales analogicas, mayor velocidad de procesamiento, PWM, etc).
En el desarrollo de esta nueva placa tambien quise aprovechar para integrar electronica que normalmente tenia que armar por separado para manejar motores, servos o sensores. La idea es poder tener una placa-todo-en-uno, para que los alumnos o personas que esten interesadas en la robotica, puedan hacer proyectos con minimos conocimientos.
En esta nueva placa, el driver de control para motores CC esta integrado, ahora solo hay que conectar los dos motores, sin necesidad de usar hardware periferico (y tambien modifique el software para poder directamente mandar ordenes de "adelante", "atras", "izquierda", "derecha").


Un robot fabricado con la placa pinguicaro



Vista de arriba donde se puede apreciar la placa




Toda la electronica del robot queda en la placa pinguicaro




De costado



El pcb armado a mano con una impresora laser

 vista 3d echa con kicad

otra vista



plano y dimensiones


características de pinguicaro




Video de prueba del robot.


El nuevo esquema de trabajo que voy a implementar en función del hardware disponible, se centrara en 3 software:

turtleart (tortucaro) como interface de control conectado a la notebook

pycaro para generar ventanas de control remoto

icaro-bloques para las placas pinguicaros para cargar codigo C++ (sdcc) y armar robots autónomos (sin necesidad de tener la netbook conectada).


diagrama esquemático del proyecto ICARO.

Con este diagrama, dejo el lenguaje ICARO C++ para maquinas de muy bajo recursos y con puerto paralelo, el resto del hardware trabajar con turtleart, pycaro e icaro-bloques.