Aunque habíamos arrancado de forma conjunta en la asociación (ARDE) la creación y el pedido de placas Pinguino entre varios socios, todavía no han llegado, y no he podido esperar tanto como para no hacerme la mía propia. El resultado seguro que no es tan profesional como la que nos llegará. Pero al fin y al cabo era una cuestión de eficacia. Pensé: «Vamos, de tenerla cuanto antes para cacharrear con ella.»
Re-diseño
La versión que elegimos hacer era la «Simplified 2550». Sin embargo, en la página de HackingLab todavía no existe un circuito en condiciones en formato Eagle o KiCAD similar de esa versión (ni de ninguna) para poder hacer modificaciones o mejoras, o simplemente para sacar tu propia PCB. Así que los socios decidimos crear nuestra propia versión. Aunque divagamos mucho, finalmente las versiones no fueron una, sino dos: La realizada por Heli y la que realizamos entre varios socios. Aquí dejo la vista de ambas placas, que varían mínimamente de la original:
|
|
Podéis descargar estas versiones desde el hilo del foro de ARDE sobre el Pinguino.
Yo me decanté por hacer la versión de Heli, ya que la que encargamos fue la otra. La placa la hice por la técnica de transferencia de tóner.
Aquí van las imágenes del que hice :
![]() ![]() |
Como se puede ver también en las imágenes, la «serigrafía»(por decirlo así) no es de lo más fina, pero cumple con su misión. La hice con etiquetas adhesivas imprimibles.
Preparar el PIC 18F2550
En esta página (referida como Tutorial de Pinguino) puedes descargar los 2 bootloaders que se pueden utilizar con este PIC. Para cargar el bootloader en el PIC necesitas un Hardware y un Software programador. Yo utilizo un programador JDM, y uso PikLab para programar el PIC. Una vez que tengas el PIC con el Bootloader, ya lo puedes transferir a tu placa Pinguino.
Dependiendo de la versión que descargues, la operativa con Pinguino será ligeramente distinta a la hora de cargar un programa desde el IDE y ponerlo a correr:
Con el bootloader1:
– Pulsar el botón de RESET.
– El diodo RUN se apagará o estará apagado.
– Pulsar el botón de «subir código»(Upload) al Pinguino. Este:
![]() |
– Una vez que el programa esté cargado, pulsar el botón de RUN en el Pinguino.
– Se enciende la luz de RUN y el programa ya estará ejecutándose.
Con el bootloader2:
– Pulsar el botón de RESET.
– Espera 3 segundos.
– Cuando el led de RUN esté apagado, pulsa el botón de «subir código»(Upload) al Pinguino. Este:
![]() |
– Pasados 5 segundos el programa comenzará a ejecutarse.
En cuanto al IDE y su programación
Me gusta bastante la sencillez de manejo. No he tenido experiencias con Arduino, pero me imagino que da un acceso similar. No sé si las librerías son suficientes para hacer cosas complejas, pero lo averiguaré.
Hay detalles del editor que parecen no están muy logrados, y creo que serán fáciles de arreglar. El código del IDE está principalmente en Python, y no parece muy difícil de entender.
Los detalles a los que me refiero, son por ejemplo que durante la edición el cursor que se muestra, no está efectivamente ahí editando, si no que por ejemplo, al borrar carácteres con el botón de retroceso, se comienza a borrar 2 o 3 caracteres por detrás ¿?
A continuación pongo el típico programa para hacer parpadear un diodo led conectado a uno de los puertos numerados. En esta url del tutorial tienes más detalles y ejemplos. Hay que tener en cuenta la numeración de los puertos que hace Pinguino, y olvidarse de la numeración y nombre de los puertos del PIC. Por eso es importante que tu placa tenga serigrafía de un modo u otro, porque si no te vas a perder.
// test de luz parpadeante Pinguino
|
Para ver algunos ejemplos muy interesantes de programación con el IDE os recomiendo que veáis detenidamente estos trabajos del compañero de ARDE ubanov:
– Control de luces desde Pinguino
– Control de Servos desde Pinguino
Espero poder dedicarle algo de tiempo a estudiar como está hecho el IDE (con intención de mejorarlo) y algo de código, porque ya tengo alguna idea sobre a qué proyecto destinar uno de estos Pinguinos…
saludos ..me podrias aclarar una duda respecto al pinguino? el led que indica que el programa esta corriendo (pin RA4), podria usarse como salida para indicar algun evento durante la ejecucion de algun programa? puesto que temo que de usarse como salida, si se presiona el boton y la salida se coloca en alto se quemaria el puerto… por otra parte …perfectamente podria utilizar el pulsador de run (entrada) en cualquier aplicacion cierto? no se cual es la funcion del JUMPER en el pin R4, aun no me ha llegado el PIC pero estoy investigando al respecto, y estoy es empezando con C18, puesto que me interesa aprender la estructura y configuracion del 18F2550, puesto que creo ello me facilitara el uso y compresion en caso de que necesite usar otros PICs. Podria usar el bootloader del pinguino para cargar un .hex sin tener que utilizar el C del pinguino? espero no molestarle mucho con mis preguntas…saludos
Me gustaMe gusta
Hola Juan, al contrario, me parece estupendo que la gente pregunte. Eso demuestra interés. Así que muchas gracias.
Vamos al tema:
– Cierto, ese pin podría utilizarse para otra cosa, ya que el micro lo tiene disponible como entrada/salida. PERO el proyecto Pinguino lo utiliza para indicar que el programa está ejecutándose. Al fin y al cabo es una manera de hacer debug de la placa, ¿ no ? Si quisieses utilizarlo con pinguino, habría que modificar el programita bootloader que lleva, para que no lo usase. De otro modo, desde el entorno de Pinguino no lo puedes utilizar. Con Pinguino nos tenemos que olvidar de ese pin. Y no, no podrias utilizar el botón «run» para otra aplicación si ya tienes el susodicho bootloader cargado. El jumper lo que hace es bypass del botón run, para que en el mismo instante que Pinguino sea energizado, la aplicación empiece a ejecutarse. Sin necesidad de que el botón sea pulsado. Esto, en algunos casos puede ser deseable. Depende de tu aplicación.
– No he programado en C18. Pero si quieres conocer la estructura del 18F2550, puedes hacerlo de varias maneras. Por supuesto, el datasheet del micro te va a dar todo tipo de detalles sobre él, y además lo deberás tener como referencia para casi cualquier cosa que hagas. Ahora, yo te recomiendo que le eches un vistazo a algún otro micro un poco más pequeño de Microchip si no has trabajado antes con ninguno. El 18F2550 es de la gama de 16bits, pero puedes empezar por el archiconocido 16F84A. Es un micro muy divulgado, y muy utilizado para iniciación. Yo empecé con él hace unos tres años, y me ha servido de base para comprender este 18F2550 y otros. Te recomiendo también que le eches un vistazo a la programación de más bajo nivel. Me refiero al ensamblador. Si quieres controlar todas las interioridades de estos microcontroladores, te será de mucha ayuda tener una base de este tipo. Te recomiendo un curso introductorio de programación al 16F84A que tenemos en la Wiki de la Asociación de Robótica y Domótica de España: http://wiki.webdearde.com/index.php?title=Tutorial:_Programaci%C3%B3n_de_PICs_en_Ensamblador
– Por ultimo, Para cargar un HEX … Un bootloader es un pequeño programa que se graba en la memoria del PIC, que te permite cargar más código (programas) sobre el micro sin necesidad de emplear un programador/quemador(hardware. Este solo lo necesitarías la primera vez para cargar el bootloader). El bootloader de Pinguino te permite cargarlo por USB, y después ejecutarlo presionando el botón de run. Si tu aplicación no requiere la estructura de la placa de pinguino para funcionar, puedes buscar otro bootloader. Puedes encontrar otros por internet o en la misma página de microchip:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en546974
Aqui va otro articulo sobre bootloaders: http://www.neoteo.com/-19871-bootloader-para-18f2550-entrenador-neoteo.neo
Espero haberte ayudado.
Un saludo,
Sphinx.
Me gustaMe gusta