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.

viernes, 23 de diciembre de 2011

icaro - bloques


Comenzó como un estudio sobre programación orientada a objetos , python, y la integración de pygame (SDL) con pygtk (GTK+). Al final, después de un mes de programación termine haciendo este programa para la generación de código C++ para compilador SDCC y las librerías pinguino-usb (hacking labs).
La idea es un entorno grafico parecido a TurtleArt, con la diferencia que en ves de generar codigo LOGO y controlar una tortuga, se genera codigo C++ y se carga en un pic 18f4550 mediante el bootloader VASCO-PUF y las librerías pinguino-usb.



Pantalla del programa de bloques icaro.

En la imagen anterior se puede ver el entorno echo en pygtk con un  drawing area donde se inserta la libreria grafica pygame para poder manipular imagenes, dibujar primitivas etc etc. En el menu de la derecha estan lo botones para poder insertar los bloques de color que representan instrucciones completas de C++ que luego pueden ser cargadas en la placa pinguino-usb.
Cada bloque se "pega" al bloque de arriba y puede arrastrar a los bloques pegados abajo suyo como si estuvieran "imantados".
Es demasiado BETA para poder ser usado, tiene muchos errores que hay que depurar, pero la idea  es poder generar código para cargar en los 18f4550 y crear pequeños robots autónomos sin necesidad de tenerlos conectados a la computadora (tal ves robots insectos).

En este ejemplo diseñe un brazo robot de 5 servos, al cual le cargo los parámetros de movimiento mediante el programa (todavía no tiene nombre), luego de cargarle el programa, el pic ejecutara todas las instrucciones en bucle y solo usara el cable USB para la alimentación del pic y los servos (+5 volts).


Detalle de la pinza con un micro servo


vista de costado

del otro lado (se pueden apreciar los servos)


El pcb pinguino-usb y una protoboard donde conecto la alimentación de los servos
chip 18f4550


aca se ven los bloques del programa.

En la imagen anterior se ven los bloques que representan los 5 servos y pausas, el programa comienza en el bloque "inicio" va moviendo los servos para mover el brazo. La librería Pinguino para control de servos permite controlar varios servos al mismo tiempo usando interrupciones (timer1) por lo que todo el tiempo se esta generando PWM en las salidas seleccionadas, y los servos quedan trabados en una posición.
Por lo pronto el programa esta muy verde, pero la idea es poder montarlo en SUGAR y desarrollar un pcb basado en pinguino-usb para crear robots autonomos, controlarlos desde tutrleart o generar ventanas de control con PYcaro.




video del funcionamineto del brazo




otra vista del brazo

martes, 29 de noviembre de 2011

taller de robotica con icaro

Adrian Frapiccini de bahia blanca esta usando ICARO para un taller de robotica con chicos y tuvo la amabilidad de mandarme unas fotos para subir al blog.



las placas ICARO np04 fueron fabricadas por adrian



el robot va montado sobre dos motores paso a paso 

Aca un video de los motores paso a paso (creo que tuvieron problemas con el peso, los motores pap suelen no ser muy fuertes)




Jugando con los leds de la placa


Muchas gracias a Adrian por el apoyo al proyecto y espero que todo siga super bien.

viernes, 25 de noviembre de 2011

ICARO y conectar igualdad

El lunes 14 de noviembre fui invitado por Javier Castrillo del programa CONECTAR IGUALDAD a dar un taller interno para su equipo sobre robotica y las netbooks de la nacion.
La idea era fabricar un pequeño robot que pudiera trabajar con las netbooks classmate y utilizarlo como demostración en los colegios a los que van.
Aprovechando que las netbooks vienen con doble boot (windows y linux), trabajamos sobre el ubuntu que traen y le instalamos los paquetes básicos para poder trabajar con ICARO (python, turtleart, apicaro).
La experiencia fue muy linda y un gran inpulso para la robotica educativa con software libre.





Primeros pasos from Javier Castrillo on Vimeo.
Aca se puede ver el robotito caminando por primera ves




Ícaro from Javier Castrillo on Vimeo.
Controlado remotamente con otra notebook


Las siguientes fotos son de una demostración de ICARO en el colegio san Antonio de areco en bs as donde se puede ver ca los alumnos "jugando" con el robot y las classmate.





lunes, 21 de noviembre de 2011

ICARO en el congreso LATINOWARE

Del 19 al 21 de octubre, se realizo en foz do iguaço (brasil) la 8º edición de la latinoware, el evento de software libre mas grande de latino américa, y donde fui invitado por danilo cesar (rovoticalibre) para dar una charla sobre robotica educativa con software libre.
En brasil, me encontré con Igor soares un gran amigo que conoci en panama y también fedora ambassador con el que compartimos habitación en el hotel.

Con Igor en el stand de fedora

Tuvimos la oportunidad de tener un stand del proyecto FEDORA, donde aproveche para mostrar la XO que me entregaron los chicos de sugarlabs para demostraciones de ICARO con el entorno SUGAR.
También di un curso sobre robotica, usando python y micro controladores PICs en el laboratorio de robotica del evento, que por suerte se entendió bien y salimos muy contentos todos.



con los chicos del laboratorio
 los chicos del curso donde hable una introduccion 
al lenguaje assembler de pics y un poco de python

Mi charla giro en torno al uso de robotica y el proyecto ICARO, era una de las ultimas charlas, y ya había menos gente que en los primeros días, lo que permitió tener un dialogo mas directo con la gente.




haciendo pruebas con una Xo del programa OLPC


El auditorio estaba bastante mas tranquilo que los días anteriores


Una de las cosas que mas rescato, fue conocer personalmente a Juan Gonzáles Gómez, un referente personal mio en todo lo que es robotica y que dio una charla increible sobre robotica imprimible usando impresoras 3d (reprap).

Foto con juan y el pequeño robot para pruebas que lleve.

 Uno de los robots impresos que llevo Juan.
Todo el chasis rojo de plastico, fue echo con una impresora 3D 
(como sacado de un libro de ciencia ficción)

El evento fue excelente, desde la organización hasta la calidad de los participantes, quiero aprovechar para agradecer al proyecto FEDORA que pago mi viaje y estadía (y al dia de la fecha sigo pensando que me malcrían demasiado), a Danilo por invitarme y la buena onda en general que hubo y a Igor por tenerme paciencia como compañero de cuarto (y casi como traductor personal).
Este tipo de eventos ayudan muchísimo al Software libre porque permite que se generen redes de trabajos mas solidas y nuevas propuestas de proyectos.

domingo, 16 de octubre de 2011

Xo robot (sugar y robots)

Este es un pequeño robot usando una Xo del programa OLPC con el sistema operativo sugar y turtleart.
La idea es mostrar que no hace falta grandes capacidades de procesamiento en una notebook para poder armar un robot educativo.


Vista lateral



El robot tiene un sensor cny70 para poder seguir una linea negra y una pinza manejada por un servo para abrir y cerrar.



video donde se puede ver el funcionamiento del robot, cuando el sensor pasa por la linea negra, el motor izquierdo se activa cuando el sensor no toca mas la linea negra, activa el motor derecho, haciendo que el robot avance en zigzag siguiendo el camino marcado por la linea. Cuando topa contra algún objeto , paran los motores, se abre la pinza, se cierra y el robot retrocede durante 5 segundos.

lunes, 29 de agosto de 2011

nueva placa NP04


Esta nueva placa esta diseñada para aprovechar los dos tipos de pics mas comunes del mercado, la gama 16F628A y 16F88.
Esencialmente la diferencia entre dos pics esta en los puertos de transmisión y recepción de señales seriales (Tx y Rx) que en los 16F628 están en los pones 7 y 8 y en los 16F88 están en los pines 8 y 11.
Para permitir trabajar con los dos pics, se selecciona los dos jumpers al lado del MAX232, ademas, tiene un conector para aprovechar la la salida de tension del 7805 (5 volt y la salida directa).
Este PCB no trae el integrado UNL2803 lo que ahorra la instalación de borneras, leds y resistencias y facilita conectar la placa a servomotores y drivers para manejo de motores CC (L293D).
El pcb esta diseñado para tener un conector para cada puerto del pic,


Detalle de la placa armada para pruebas


Controlando dos servomotores futaba

Las dimensiones de la placa esta diseñadas para poder armarlo con un pcb de cobre de 5 cm x 10 cm (medida estandar en argentina).

Esquema de componentes.


diagrama echo con Kicad

Grafico 3D echo con Kicad

Vista de arriba del PCB



Video de control de dos servomotores.

Esta placa requiere de mas conocimiento de electrónica que las placas np03 pero tienen mas posibilidades porque no hay que usar el UNL2803 (que para mover servos o motores cc no sirve).

para descargar el proyecto echo con Kicad:

http://valentinbasel.fedorapeople.org/serie/placa-np-04.tar

el firmware para pic 16F628A:

http://valentinbasel.fedorapeople.org/pic-caro/pic-caro.0.5.tar

Por ahora no arme ningún firmware para los pics 16F88, y hay varias cosas que me gustaría mejorar de esta placa (programación ICPS para no necesitar un programador para el pic por ejemplo).

lunes, 22 de agosto de 2011

icaro 0.6.3

Ya esta lista la nueva versión del firmware para placas icaro np03, Actualizado para usar el compilador SDCC en ves de escribir directamente en assembler.
La ventaja de poder escribir en un lenguaje de alto nivel como C es la facilidad para mantener actualizaciones, modificaciones etc etc.
Esta nueva versión del firmware icaro (icaro06) tiene las siguientes mejoras:

1) mejorada el manejo de servomotores (sin dejar 1500 Ms entre instrucción)
2) capacidad de generar una onda cuadrada de frecuencia audible
3) Reescrito íntegramente en SDCC

Se actualizo el lenguaje icaro a su versión 0.6.3 que permite usar las instrucciones "pausa" y "audio".
En las versiones anteriores del firmware, para poder controlar un servomotor, se enviaba el carácter "m" , el valor de los grados del motor (0-255) y el puerto (1-8) y el micro quedaba en un bucle cerrado de 1500 ms, donde no se podia enviar ninguna otra orden (con peligro de colgar el pic). Con el nuevo firmware, se resuelve ese BUG permitiendo mover mas rapidamente el servo y activar mas de un servo al mismo tiempo (enviando la misma señal a ambos).
La capacidad de generar ondas sonoras fue a pedido de Adrian Frapiccini que me comento que podía serle util para un curso. Para poder generar sonidos, hay que conectar un parlantito directamente a una de las salidas de la placa y usar la función audio(), a diferencia de Arduino, no se enviá la frecuencia de la señal a reproducir, si no la longitud de onda en funcion de eso se puede calcular la frecuencia de sonido.

Robot controlado remotamente.

Este es una prueba del nuevo firmware, usado para controlar un robot movido por dos motores CC y con una camra movil controlada por dos servomotores futaba.

Se puede apreciar la cámara montada sobre dos servomotores


Otro detalle de los servos





video del robot circulando por la casa


El robot es controlado mediante X11vnc con una interface echa con pygtk y usando apicaro 0.2.
Para descargar la nueva version del firmware (echa con el software I4UC):

pic-caro.0.5

la nueva version del lenguaje icaro:

icaro.0.6.3.140811

El api para python actualizado:

apicaro.0.2