Pinguino as a remote controller for your Linux machine

Yeison is one of the contributor of Pinguino IDE. He’s the one who wrote most of the Python code in the X.3 version. His new deal is to use Pinguino as a remote controller for a Linux machine. Using this python code you can send a shell command with the CDC module and execute it on your computer. We can imagine an IR receiver connected to Pinguino and use a TV remote controller to drive your computer.

First of all, you need to change permissions on the serial port used:
sudo chmod a+rw /dev/ttyACM0

then execute the python code ( download it on Yeison website )

In the Pinguino board, this is a simple example to open the terminal and take a screenshot:

void setup() {
void loop() {
    //Open terminal
    CDC.println("shell: gnome-terminal");
    //Take a screenshot
    CDC.println("shell: gnome-screenshot");

Follow Yeison blog to learn more about Pinguino ( in spanish ).

Pinguino 26J50 !!

A new 8 bit board is available with full support in the last SVN revision. Regis and André published their work this week and made a lot of work to incorporate it in Pinguino IDE.
This board uses a 18F26J50 and a new bootloader rewritten from scratch and based on the DIOLAN Bootloader.
18F26J50 is a 8 bits PIC with many features:

  • 64 kbytes
  • 3800 bytes of RAM
  • a CTMU module ( to build capacitive sensors )
  • 2 Serial port
  • 2 SPI/I2C
  • operating voltage from 2 to 3,6V with 5,5V tolerant input

As usual, everything is published as Open Source and Open Hardware. Feel free to build the board and give your opinion.

Kicad files, bootloader and schematic are available on the website.


PINGUINO32-DIY is ready !!

Pinguino32-DIY is now fully functional. The board is working with its own HID boot loader.
We have now some work to do to incorporate this board in the Pinguino IDE. The job should be done this week and we should propose a new version of the IDE next week-end !!
At this moment,’GENERIC250F128′ works with a 8 Mhz crystal for a finally system frequency of 40 Mhz. The goal is to make it work with the internal oscillator.

All the files can be downloaded on the google code area of the project. Design has been made with KICAD. The compressed file contain:
– KICAD design to build the board
– HID bootloader to be burned to the chip
– a simple application program to be used to test upload with ubw32

This design is published as GPL and you are free to build it, modify it and of course improve it. It is pin to pin compatible with the PIC32MX220F032B wich can be used with the same bootloader.
We are proud to propose this board as ( probably ) the first 32 bits home-made system.
With this board, Pinguino IDE keep is DIY spirit !!

The Development Team……

Pinguino X.3 !!

PinguinoX.3 is now available in the download area for both Linux and Windows computer.
With the help of all the users and the developers team, many improvement have been added to make Pinguino a better development environment.
Still in Beta, as usual, but to be improved with your remarks, critics, suggestions…..
Many thanks to the users,
Congratulations to the development team:

  • Regis Blanchot
  • Marcus Fazzi
  • Jesus Carmona Esteban
  • Alfred Broda
  • Yeison Cardona
  • Henk Van Beek
  • Björn Pfeiffer
  • Alexis Sanchez

Download revision 381 on website.


Finally, we designed a new board with a low cost 32 bits PIC. This board will become the generic-PIC32-board in Pinguino. Based on a PIC32MX250F128B, with 128k of flash and 32k of RAM, 17 I/O, 2 UART etc….
The same board can be used with a PIC32MX220F032B, the same chip used on OLIMEX Pinguino-MX220. We are working on the bootloader which should work with the internal oscillator of the chip ( no external crystal on this board ).

This board can be built ‘in a garage’ as usual !! With this new design, Pinguino stay in its original spirit. Kicad files and even a Gcode file to build it with a milling machine should be soon available.

Stay connected !!

Support for PIC32-PINGUINO-MX220

Hi Guys

PinguinoX.2 revision 290 is now online with support for the PIC32-PINGUINO-MX220. Many of those boards were distributed free of charge during Embedded World 2012. We would really appreciate it if you would give us some feedback, this is very important for the future development of this version.



How to use interrupt on Pinguino32

Pinguino32 doesn’t support interrupt routines without writing a code in an assembler file. We decided to open interrupt to everybody. To do this, we used some of the special attribute directive of GCC. Now you can deal with Interrupt without assembler.

This example show how to use the Timer 1 to increment a counter.

// Using interrupt with Pinguino32
// Jean-Pierre MANDON 2011

#include <interrupt.c>

unsigned int counter=0;

void ISR_wrapper_vector_4(void) __attribute__ ((section (".vector_4")));
// Put the ISR_wrapper in the good place

void ISR_wrapper_vector_4(void) { Tmr1Interrupt(); }
// ISR_wrapper will call the Tmr1Interrupt()

void Tmr1Interrupt(void) __attribute__ ((interrupt));
// Tmr1Interrupt is declared as an interrupt routine

// define here the code to execute when an interrupt occure
void Tmr1Interrupt(void)
if (IFS0bits.T1IF)		// Timer Interrupt flag
	TMR1=0;			// reset the timer register
	IFS0CLR=0x10;		// Clear the timer interrupt flag
	counter++;		// increment the counter

// configure timer 1 
void init_timer1(void)
IntConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);	// interrupt mode (interrupt.c)
T1CON=0;		// reset timer 1 configuration
TMR1=0;			// reset timer 1 counter register
PR1=0x9999;		// define the preload register
IPC1SET=0x7;		// select interrupt priority and sub-priority
IFS0CLR=0x10;		// clear interrupt flag
IEC0SET=0x10;		// enable timer 1 interrupt
T1CONSET=0x8010;	// start timer 1 and set prescaler

void setup()

void loop()
CDC.printf("%d\n\r",counter);	// counter is incremented at each timer 1 overflow

Be careful, some interruption are already used by Pinguino32. Vector_8 (timer 2) is used by the function millis(). vector_24 (Serial1 interrupt) and vector_32 (Serial2 interrupt) are used by the serial module. vector_35 ( RTCC ) is used by the real time clock module.
All the test have been made with a PIC32-PINGUINO-OTG board and Linux IDE.


Arduino’s idea is to hide the processor and complex C features, working with pins and libraries. Piguino do the same, but it is also a powerful pegagogical tool to learn embedded systems and C. The Kidules follow this objective, and associate to the learning steps dedicated hardware that allows to concentrate on the software. Once the C and hardware features of the processor are mastered, any application with any C compiler can be envisionned, part of the application being initially tested on the Kidules.


The Ki18F2550 board features two 8-bit ports on which application and test circuits are connected. Each slave module has a simple and clear functionnality:

– the Dice with 7 leds and a push-button helps with the understanding of bits and bytes. Using tables and byte access replace the writing of pages of digitalWrite (..); instructions.

– the Traffic light is good to think about specifications, before its easy programming.

– the Elevator has a motor and 3 sensors. It prepares for robots and exercises the notion of state machines

– the Clock helps understanding stepping motors. I2C clock circuit is an option.

Other Kidules allows to understand motors, sensors, internal PIC registers and their configuration. See

The Kidules are specially suited for the first part of a Robotic or Embedded system lab.

The KiCar (not shown) is similar to the Ki2550, with ports for motors and sensors, ready to control a robot avoiding obstacles.

Documentation is mostly in French now. Ask to be updated : .


Pingubot is a small robot based on Pinguino 8 bits. Furri and Bastian designed this board to teach how to drive a robot with Pinguino.

The first PinguBot workshop will take place in the OSHWcon event in Madrid. Unfortunately, there is only 16 participant and registering is already closed.
We hope we will have soon another workshop somewhere in Spain.

Congratulations for this great initiative.

More info:
Pingubot website
OSHWcon website
Furri website

Pinguino robot !!

Julio is a teacher and he uses Pinguino to develop real robot with students.
This one is the last robot they built with recycled parts.

Congratulations to Julio and all the students working on this project.

Visit Julio’s blog, it’s a great source of information for Pinguino and electronic.