Search in Pinguino World !!

Tuesday, December 29, 2009

Python on WRT54GL

Now i can run python on my WRT54GL.
First, install an SD CARD on the router:

Then install Python packages on the SD CARD and run Python:

Everything is ready to drive Pinguino with Python serial and OpenWRT !!

Pinguino with WRT54GL

This new tutorial is dedicated to the linksys router WRT54GL. We connected it to Pinguino via is internal serial port.

A complete tutorial is on the tutorial website.

Friday, December 25, 2009

Sunday, November 29, 2009

Pinguino in India

Vijay Anand from india sent us a picture of its Pinguino.

Nice job Vijay.

Sunday, November 22, 2009

Pinguino Eagle

Benoit Espinola designed an eagle version of the simplified 2550.

It will be available soon for download.

JAL with Pinguino

I discovered JAL and tried to make it usable with Pinguino bootloader. It's done !!
How to do this ?

Upgrade your pinguino with bootloader 2.12
Create your program and compile it with JAL ( i use piklab to do this ),
Convert your program with our jal2pinguino converter: ./ jalprog.hex pingprog.hex
Upload your program with

Add the option -loader18 8224 -no-fuse to the JAL command line.

pinguino bootloader 2.12
jal2pinguino converter written with python
vascoboot uploader written with python

The next Pinguino version will both support Arduino langage and JAL.

Thanks to Vasile, Sébastien Lelong and Albert Faber from the jallib group.

Pinguino bootloader version 2.12

A new version of the bootloader is available. Some bugs were removed ( particulary the start delay wich was a little short for windows computer ) and the bootloader is now compatible with JAL with our hex file converter ( see the next post ).

download it here

Monday, September 28, 2009


Yet another walter application. Pinguino is connected to the fonera with the serial port. The Fonera run Lighttpd web server with LUA CGI-BIN. The Iphone is connected to the Fonera web server and drive Fonera GPIO and Pinguino.
Thanks for the video Walter, you did a great job.......

Monday, September 14, 2009

Virtual Pinguino

Walter from madrid works on a virtual pinguino model with ISIS on windows.
The bootloader works and Pinguino IDE can recognize the module as a real board. There is only a problem of speed when trying to download the code.
We will try to fix this.

Good idea and good job.......

Tuesday, September 8, 2009

Pinguino on 18F2455/18F4455

Finally, i tested Pinguino on 18F2455 and 4455. These chips offer the same functions but less memory capacity.
Everything is OK with bootloader V2, but i programmed the chips with 18F4550 checked. If i check 18F4455 on my programer software, nothing works !!
I use a home made JDM programer and IC-PROG with wine.
Maybe it will be useful for other users.........

Sunday, September 6, 2009

Pinguino beta 7

Pinguino beta 7 is now available for Linux, Windows and MAC OSX.
You can download it here.

Saturday, September 5, 2009

Bootloader V2 upgraded

Vasile ( FreeJALduino project ) sent me an email to report a problem. With bootloader alpha V2, when Pinguino is external powered, the program didn't start.
This bug is corrected in bootloader4550V2.hex

Thanks for submitting this bug.

Thursday, September 3, 2009

FreeJALduino works !!

Vasi made FreeJALduino, a 18F2550 board exactly like an arduino ( see this post ).
I am happy to know that the first test works with a modified version of Pinguino.
I plan to integrate a FreeJALduino directive in the next version of pinguino.
Congratulations for this nice job Vasi.

Vasi website

Tiny 4550 on a proto-board

This is the last design of tiny pinguino 4550 on a proto-board.

It was drawn with Inkscape:

You must cut the tracks marked with a red point.
I used this home made tool to do this:

Now you can sold components and wires. The 18F4550 must be mounted on a suport.

This version offers the same functionalities as the PCB version.

The booloader V2 must be used with this design.

Last upgrade 29/09/2009: Cutting points were modified, thanks to André.

Sunday, August 30, 2009

Pinguino on a proto-board

Cristian from colombia built its pinguino on a proto-board.

Its Pinguino 2550 works with the bootloader V2.

Thursday, August 27, 2009

Pinguino tutorial started

I started a Pinguino tutorial.

If somebody want to contribute, original drawings are made with inkscape ( bread board and Pinguino board ).

I will put some other examples soon.

Pinguino tutorial

Tuesday, August 25, 2009

Alpha beta 7 upgraded

It seems that there was an error in the tar.gz file of beta 7.
This file was upgraded now.

Saturday, August 22, 2009

alpha beta 7 for Linux available

This version offer full support of 18F4550.
I work on packaging for windows and MAC OSX.

download alpha beta 7 for linux, see examples folder to see how to use 18F4550.

Reports are welcome.

Tuesday, August 18, 2009

Bootloader version 2

Alpha version of bootloader version 2 is available !!
This booloader is compatible with our 18F4550 design but can be used with the old 18F2550 pinguino design.
It doesn't need a run button. Run is automatic after 5 seconds.

All functionalities are currently under testing.
Download alpha version.

09/05/2009: Alpha version is out of date.
see this post.

Monday, August 17, 2009

Tiny 4550 is ready for test !!

The kicad file to build the board can be downloaded here.
An implant png file and a ps file of the PCB were added to the compressed file.

Saturday, August 15, 2009

18F4550 tiny board

A tiny board was designed for 18F4550. This board, without external power supply will be used to test beta 7. It was designed with Kicad.




Wednesday, August 12, 2009

Pinguino beta 6

Pinguino beta 6 is available for download.
Thanks to Ulises for MAC OSX test.

- corrected bug on comment in source (UTF8)
- added function CTRL-ESC to see special functions in editor
- implementation of I2C function ( see examples )
- implementation of eeprom PIC memory function ( see examples )
- Support of 4800 bauds for Serial

Monday, August 10, 2009

Pinguino extended board

It's a chance !! Pingino can be plugged on two breadboard giving more space to the test area.......


FreeJALduino is another PIC based Arduino. Initiated by Funlw65 ( vasi ), the goal is to build a PIC based board compatible with Arduino shields.
Originally made to work with JAL ( just another langage ), it would be used with Pinguino.
I work on Pinguino and FreeJALduino compatibility.

Nice project Vasi and good idea, congratulations.

Vasi website

18F4550 schematic

Pinguino 18F4550 is now defined. This is a tiny version USB powered. The run switch disappeared and 29 I/O are available. 8 analogic inputs.
Linux and windows version will be soon available and the KICAD PCB is in test.

Schematic upgraded. The last was buggy, led on pin 6 must be connected to Vcc because RA4 is an open collector output. Kicad board is OK. Thanks to walter for info.

Monday, August 3, 2009


Beta 6 of pinguino is available for Linux and Windows. Because i can't have access to a MAC, i'm trying to find somebody to test it on MAC OSX.

Who can help me ?

Wednesday, April 22, 2009

Pinguino IRC channel

Pinguino has its own IRC channel on Freenode. Channel is Pinguino.
Thanks to Alejo from Locus Sonus lab.

Saturday, April 4, 2009

Pinguino with 18F4550

This is my first test of Pinguino with a 18F4550.

What are the differences with the 18F2550 version:
- 30 digital input/output, 13 input can be used as analogic input
- 470 resistors suppressed on the outputs,
- Run switch was suppressed, run is automatic after 5 seconds,
- Run can be manually controlled with a switch,
Processor will be defined in the IDE by a radio button or #define directive in the code.

The new bootloader will be compatible with the 18F2550 board version 1.
The development environment will be compatible with all software already written.

This modifications will be integrated in the beta 6 version. This version should be available april 30th. Other improvements in this version are:
- full support of UTF8 in the source, comments can be redacted in many langage.
- corrected some bugs in comments ( keywords are not accepted in comments for beta 5 ).
- case sensitive help in the editor.

Monday, March 16, 2009

Processing library for Pinguino

Last week, Stéphane Cousot wrote a basic library for communicating between Processing and Pinguino. This the first release but it was tested and is fully functional. Stéphane made a package with a processing sketch and the Pinguino program associated. You can download this package on Stéphane website.
This library is the result of our work with Douglas Edric Stanley. The goal is to build a USB interface wich can be driven by many different software ( Processing, Python, Pure data, java ... ).
Pinguino is the hardware part of this project.
Douglas Edric Stanley Blog.

Sunday, March 15, 2009

8 PWM output on Pinguino !!

This is an interrupt code example. It show how to build 8 PWM output on pin 0 to 7 with the timer 1. The PWM frequency is about 400 Hz. With the 2 analogWrite output, you can now drive 10 PWM outputs and this code can be adapted to drive 16 PWM outputs.
Applications are motors, lights and others analogic outputs.

// How to use interrupt on Pinguino
// add 8 analog outputs ( PWM ) to your Pinguino
// can be extended to 16
// Jean-Pierre MANDON 2009

When copied to the blog, this file is corrupted.
You can download the source here.

CodeBlocks model Released !!

CodeBlocks model for Pinguino released to be conform to beta 5 of the IDE.
The new file can be downloaded here..........

How to use Interrupt with Pinguino......

With beta 5 you can use interrupt in a Pinguino program. This is a simple example to blink a led with timer 1. Nothing to do in the main loop because level of the led is changed by the interrupt routine.

// How to use interrupt on Pinguino
// simple example blink a led with timer 1
// led is connected on output 0
// Jean-Pierre Mandon 2009

void UserInterrupt()
// timer 1 interrupt flag in register PIR1
if (PIR1bits.TMR1IF)
// reset interrupt flag
// reverse state of pin 0 ( blink )

void setup()
// led is connected on output 0
// timer 1 configuration
// you can write T1CON=0xB1; or
// timer1 register is 16 bits
// clock source for timer 1 is derived from clock
// prescale value 1/8
// timer 1 oscillator is shut off ( internal clock )
// T1SYNC is not used ( internal clock )
// timer clock is internal clock ( Fosc/4 )
// timer 1 is On
// FOSC is 48 Mhz => Internal clock = 48 Mhz / 4 = 12 Mhz
// clock period is 83 nS
// prescale for timer 1 is 8 => clock period for timer 1 is 667 nS
// timer 1 is incremented every 667 nS
// timer 1 is a 16 bits register, it will overflow every 667nS*65536 = 43.6 mS
// when timer 1 overflow it generate an interrupt
// Interrupt configuration
// enable interrupt for timer1 in register PIE1
// Here you can write INTCON|=0xC0; or
// enable peripheral interrupt
// global enable interrupt
// now an interrupt will be generated by timer1 every 43,6 mS

void loop()
// nothing to do in the main loop :-)

Sunday, March 8, 2009

beta 5 for MAC OSX......

MAC OSX beta 5 version of Pinguino is Here.......

But will be tested tomorrow :-)

Pinguino beta 5 Windows....

The windows packaging of beta 5 is Here........

Pinguino beta 5 Linux is available......

The beta 5 release is online with many new improvements.

- Full support of UserInterrupt
- millis() instruction
- fast analogWrite on output 11 and 12 without affect on the process speed
- standart c variable initialisation
- possible use of user libraries.

You can download this version for Linux here.......

Windows and MAC OS version will be soon available.

Friday, March 6, 2009

Pinguino on a proto-board....

Fabi from Madrid built his Pinguino on a proto-board. Very good idea !!
Maybe we can build a tiny Pinguino on a breadboard :-)
I will try..............

Thursday, March 5, 2009

Pinguino with Processing

I tried to connect Pinguino with Processing with the LibUSB java wrapper. It works without problem. This is the Processing test sketch:

// This is a simple example to communicate with Pinguino
// based on the LibusbJava wrapper
// Jean-Pierre MANDON 05/03/2009

import ch.ntb.usb.Device;
import ch.ntb.usb.USB;
import ch.ntb.usb.USBException;
import ch.ntb.usb.logger.LogUtil;

// define Pinguino Product ID and Vendor ID
int VID = 0x04D8;
int PID = 0xFEAA;
// declare public USB device
Device Pinguino;
// declare output buffer
byte[] data = new byte[] { 'W', -1 };

void setup()
LibusbJava.usb_init(); // init libusbjava
LibusbJava.usb_find_busses(); // find all usb busses
LibusbJava.usb_find_devices(); // find all devices
try {
Pinguino=USB.getDevice( (short) VID , (short) PID ); // create a new device,0,-1); // try to open it ( configuration 3, interface 0 )
println("Pinguino found"); // it's OK
catch (USBException e) // error
println("Pinguino not found"); // Pinguino is not connected !!

byte lastposition=-1;
byte position;

void draw()
rect(mouseX,40,20,20); // draw a rectangle
position=byte(mouseX/50); // position modulo 8
if (position!=lastposition)
try {
if (lastposition!=-1) data[1]=lastposition;
else data[1]='C'; // WC clear all leds
Pinguino.writeBulk(0x01,data,2,200,false); // send command to Pinguino
data[1]=position; // led to be lighted
Pinguino.writeBulk(0x01,data,2,200,false); // send command
catch (USBException e) {}

void stop()
data[1]='C'; // clear all when stop
try {
catch (USBException e) {}

Now this is the Pinguino side:

// test Pinguino with Processing
// Jean-Pierre MANDON 2009

int i;
uchar caractere,caractere1;

void setup()
for (i=0;i<8;i++)

void loop()
if (USB.available())
if (caractere=='W') if (USB.available())
if (caractere1=='C')
for (i=0;i<8;i++) digitalWrite(i,LOW);

And you can see the result here.

Friday, February 27, 2009

Pinguino with CodeBlocks............

Pinguino can be used with CodeBlocks. To do this, you need to install SDCC and GPUTILS. CodeBlocks recognize if SDCC is installed.
First you must download the CodeBlocks model for Pinguino.
Then you have to configure CodeBlocks to work with SDCC.

Create a new empty project in the same folder than the CodeBlocks model,
Go to the Settings menu/Compiler and debugger and choose SDCC in the Selected compiler panel,
Click the compiler settings tab and Compiler flags tab and select:
  • Be verbose
  • [CPU] PIC 16 bits
  • ouput intel hex
Select the Other Options panel and type:
  • --optimize-goto --denable-peeps --obanksel=9 --opt-code-size --optimize-cmp --optimize-df
Then all the general settings for the compiler are OK. You must now configure the specific options for Pinguino.
Select the Project/Build Options menu,
Click on the Compiler Settings tab and Other Options tab,
type -p18f2550 in the field.
Click now on the Linker Settings panel.
In the Other Linker Options field, type:
--no-crt -Wl-s18f2550.lkr,-m
In the Link Libraries field, click on add and select this files:
libpuf.lib wich is in the project folder,
libc18f.lib wich is in the /usr/share/sdcc/lib/pic16 folder ( Linux )
wich is in the /usr/share/sdcc/lib/pic16 folder ( Linux )

Now you can click on the Build button and an hex file should be generated.
All the code must be written in the application_main() in main.c

To upload the code to the PIC, you can use the Python downloader wich can be downloaded here.

I hope to propose some models of applications.

Monday, February 23, 2009

Pinguino group on Google

This group was created to develop Pinguino and it wil be a space where questions can be posed. Hope it will be useful for you.

Google Groupes

Visit this group

Pinguino PCB with Inkscape

It seems that there is some problems to draw the PCB. An inkscape picture can be downloaded on hackinglab website.
This picture is scaled and can be used to build the PCB.

this is the link to the SVG file

Sunday, February 22, 2009

Pinguino/LA FONERA serial interface

La fonera work with a 3,3V power supply. This assembly converts levels from 3,3V to 5V for Pinguino and from 5V to 3,3V for LA FONERA. The Fonera serial connector is inside the box, on the right side.
Be careful, this Pinout is only for FONERA 2100.

Saturday, February 21, 2009

Pinguino with LA FONERA

we worked Friday with Benoit espinola on the link beetween LA FONERA and Pinguino. It Works !!
The FONERA was flashed with openwrt 7.09 and the ser2net package was installed. A small interface was build to convert 3,3V signal from the ttyS0 to 5V for the PIC UART.
The last step is to link a FONERA 2 with Pinguino but it seems that i must write a driver for USB.
Benoit Espinola wrote a small processing sketch to test the link:

boolean onoff;

Client c;
String data;

void setup() {
size(200, 200);
onoff = true;
c = new Client(this, "", 2001); // Connect to FONERA on port 2001
c.write("W01"); // write W output (0) state of the output (1)
// this is the protocol we defined in the pinguino program

void draw() {
if (c.available() > 0) { // If there's incoming data from the client...
data = c.readString(); // ...then grab it and print it

// press the mouse change the state of the output

void mousePressed(){
onoff = !onoff;
c.write("W0" + int(onoff));

// the led is darked when program stop

void stop(){

Nice job Benoit !!

Sunday, February 15, 2009

Pinguino at the MediaLab Madrid

The last week end, Pinguino was presented for Interactivos'09 in Madrid.
It was the first public presentation of this project. I make a point of thanking all the staff and participants. There was a lot of interesting project. It was the first time i saw a RepRap in construction.
I hope to return to the medialab soon !!

Pinguino in Linux Magazine ( France )

Pinguino is described in the february issue of Linux Magazine.

Sunday, January 4, 2009

Pinguino in UBUNTU 8.10

Rules for usb device have changed in the latest version of Ubuntu.
For a full access to Pinguino, download this file:
Put this file in /etc/udev/rules.d

You must now go in the administration panel and select 'users and groups'.
Create a new group microchip,
select the microchip group and check your name to be in this group.

Pinguino beta 4 available !!

Pinguino Beta 4 is now online with full support of usb.

Mac OS X package will be available ASAP