• Electronic Kid
  • Useful-news
  • Forum
  • Fellowship
  • E-Library
  • All

Pinguino – PIC microcontroller based Open Source

Pinguino is a PIC microcontroller based Open Source Hardware prototyping platform like Arduino ( AVR microcontroller based ). The Pinguino prototyping platform have a IDE same like Arduino, standard libraries and different prototyping boards to make it happens.

About Pinguino project

The Pinguino project was started in 2008 with a aim of making a Arduino like prototyping platform for PIC microcontroller.  In Arduino prototyping platform, the microcontrollers inside the boards doesn’t have a native USB interface on the chips. The Pinguno projects tries to overcome this problem with a PIC microcontroller with USB interface. Also the code length of Arduino programs in the old versions are littile messy.
The IDE of Pinguino is built with Python. At the beginning, an integrated preprocessor in Pinguino IDE translates specific Arduino instructions directly into C. This preprocessor reduces the code length and the execution speed and Pinguino hardware is based on a 18F2550. This chip has an integrated native USB module and an UART for serial link.

Pinguino IDE

Later the Pinguino IDE is become a stand alone application with a C compiler (SDCC), assembler and linker (GPUTILS) and a bootloader based on the PUF VASCO project.
Also now this Pinguino IDE is available for different operating systems like Windows, Mac os x and Linux. This IDE can support 8 bit and 32 bit Pinguino hardware.
We can download Pinguino IDE from Pinguino wiki page at here.

 Pinguino IDE Download


TTL, RS232, DCE, DTE......
This is where you can find informations and learn how to connect your Pinguino with a computer or a modem on a serial port.

The Pinguino serial I/O is TTL level ( 0..5V ). It can not be directly connected with an RS232 equipment.
If you want to connect it with a computer, wich is a DTE ( Data Terminal Equipment ), you need to build this converter:

This converter use only discrete components. NPN transistor can be used, such as 2N1711, 2N2222 etc...
Note that the DB9 connector is a female connector because DB9 on Data Terminal Equipment is always a Male connector.
This converter can be powered with a 3,3V or a 5V power supply.

If you want to connect Pinguino with a Modem, wich is a DCE ( Data Communication Equipment ), you need to build this version:

Some libraries are still under development by the Pinguino Dev. Team (Ethernet & Android ADK) and some others will not be supported due to a lack of time or a lack of interest (SoftwareSerial, Matrix & Sprite). You're welcome to provide these "unsupported" libraries to the community ;o)
Most of the libraries are enriched with specific Pinguino instructions (for example, you can use Serial.printf with the Serial library).
32-bit Pinguino programs are compiled with a C/C++ Compiler which is a GNU-Mips toolchain based on GCC 4.5.2, binutils 2.21 and Newlib 1.19.
8-bit Pinguino uses the SDCC 3.2.1 compiler which is only for C language. As Arduino mainly uses C++ there are necessarily substancial differences versus Pinguino.

Supported Arduino Libraries Status


  • EEPROM - reading and writing to "permanent" storage
  • Ethernet - for connecting to the internet using the Arduino Ethernet Shield
  • LiquidCrystal - for controlling liquid crystal displays (LCDs)
  • SD - for reading and writing SD cards
  • Servo - for controlling servo motors
  • SPI - for communicating with devices using the Serial Peripheral Interface (SPI) Bus
  • Stepper - for controlling stepper motors
  • Wire - Two Wire Interface (TWI/I2C) for sending and receiving data over a net of devices or sensors.

Communication (networking and protocols)

  • OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.
  • XBee - for communicating with XBees in API mode
  • Debounce - for reading noisy digital inputs (e.g. from buttons)
  • Improved LCD library fixes LCD initialization bugs in official Arduino LCD library
  • GLCD - graphics routines for LCD based on the KS0108 or equivalent chipset.

Frequency Generation and Audio

  • Tone - generate audio frequency square waves in the background on any microcontroller pin

Motors and PWM

  • TLC5940 - 16 channel 12 bit PWM controller.


  • DateTime - a library for keeping track of the current date and time in software.


  • PS2Keyboard - read characters from a PS2 keyboard.
  • TextString aka String - handle strings
  • PString - a lightweight class for printing to buffers
  • Streaming - a method to simplify print statements

Pinguino Specific Libraries

  • Interrupt - Simple interrupt manipulation library (OnEvent, OnTimer0, OnChange, ...)
  • PWM - Native PWM hardware support
  • DS18B20 - specific one-wire temperature sensor library
  • Zigbee - MRF24J40 wireless module
  • Android ADB - provides an Android class to use Pinguino 32 with devices with Android 1.6 and up
  • Android ADK - provides an Android class to use Pinguino 32 with devices with Android 2.3.4 and up
  • RTCC - Real Time Clock and Calendar library
  • USB - Native USB hardware support with CDC (USB-Serial), host and OTG (On-The-Go) support
  • PCF8574 - I2C I/O expander library
  • LCDI2C - for controlling liquid crystal displays (LCDs) with I2C protocol
  • List - High-level library to manipulate lists
  • DCF77 - Read and decode the atomic time broadcasted by the DCF77 radiostation
  • printf - Print formatted data to output (CDC, LCD, Serial, ...)
  • Charge Time Measurement Unit - Interface with capacitive touch sensors, Capacitance Measurement
  • Oscillators - change CPU clock frequency on-the-fly
  • Low-power - Run your Pinguino in low power modes (Watchdog, Sleep and Deep Sleep)
  • ST7565
  • PID

Unsupported Arduino Standard and Contributed Libraries (TODO)

  • Firmata - for communicating with applications on the computer using a standard serial protocol.
  • SoftwareSerial (NewSoftSerial) - for serial communication on any digital pins (Pinguino32 gives you up to 9 serial channels)
  • Matrix - Basic LED Matrix display manipulation library
  • Sprite - Basic image sprite manipulation library for use in animations with an LED matrix
  • Messenger - for processing text-based messages from the computer
  • Simple Message System - send messages between Arduino and the computer
  • SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)
  • Webduino - extensible web server library (for use with the Arduino Ethernet Shield)
  • X10 - Sending X10 signals over AC power lines
  • SerialControl - Remote control other Arduinos over a serial connection
  • LedControl - for controlling LED matrices or seven-segment displays with a MAX7221 or MAX7219.
  • LedControl - an alternative to the Matrix library for driving multiple LEDs with Maxim chips.
  • LedDisplay - control of a HCMS-29xx scrolling LED display.
  • Metro - help you time actions at regular intervals (supported in Interrupt library)