All posts by Kim

RasPiDeck Gives Your Raspberry Pi 5V I/O Capability

A few months ago,  Kornel, one of our customers, told us that he wanted something similiar to PiFace. Inspired by this product, I thought that I could make something else which utilizes the shields and sensors designed for Arduino.  There are thousands of different kinds of shields and sensors for Arduino already existing in the market. They are mature in hardware and most of them are provided with open source code.

I told my idea to Kornel and he said the stuff I was going to design is already in the market. However, I decide to design something has more features compared to Cooking Hacks’ Raspberry Pi to Arduino Bridge. I named the product RasPiDeck because it was designed to load  exteral shields or sensors. Here is some features which I think might  be useful or nessessary for RasPiDeck.

  1. It should handle 5V input without any off-board component
  2. It could drive shields/sensors which only accept 5V logic
  3. It must have its own 5V-3.3V LDO, since the LDO on Raspberry Pi is already heavily loaded.
  4. The SPI/I2C interface of RasPiDeck should be able to work on both 3.3V and 5V device.

After a month working(schematics, layout, component sourcing and PCB manufacturing), the first version of RasPiDeck looks like this


It has 19 jumpers on board which are used to select the direction of the header pins,  the logic level of I2C and SPI interface and the source of the referece voltage for onboard ADC.  After my colleague Peng saw this, he said “If I were a newbie, I will be overwhelmed by the jumpers, and it is quite inconvenient to manually config 19 jumpers”  I decided to take his advise and make revision to the first editon.  I was involved in another project which has higher priority after a few days working on the second revision, so after two months the second revision comes true


I replace all the jumpers with SPDT analog switches and add a I2C IO expander to control the switches. Now, it looks less overwhelming and user could use code to config the IO directions/voltage levels and the logic level of I2C and SPI interface.

Below is what it looks like when it sits on a Raspberry Pi,


This product will be handed over to factory next week and it will be ready in about three weeks. As all of our products,  the board color will be blue and the pad will be gold plated. The datasheet will be ready before the product is ready to market and all the technical details will be there.




A bizaare short circuit female header connector

I was fiddling around with a newly designed shield for Arduino and I just can not get the shield to work properly after a few tries.  Then I grabed my DVM and measured power supply pin of one of the ICs on the shield. The shield is supposed to be powered by the 3.3V pin on Arduino.  Superisingly, I found it was 5V!

Then I quickly disconnected the USB cable and pulled off the shield from Arduino.  I measured the 3.3V and 5V pins on the shield. There was no short. Then I measured the 3.3V and 5V pins on the Arduino. There was no short either!!!

I powered the Arduino alone and measured the 3.3V pins, and it gives a good value of 3.35V.

I realized that there may be something wrong with the 6-pin female header of Arduino, and then I tear off the housing of the header and I found there is a weakly contacted solder bridge as shown below:

short-circuit female header 1 short-circuit female header 2

It is a quite old device, I bought it online back in year 2011 or 2010. I had been using this device for years and the symptom shows up today! The problem only happens after a shield is applied to the Arduino.

It seems that the soldering bridge is due to excess solder, excess diameter of the through hole and the unsealed buttom of the header.

This is just another story of how bad soldering affects the long term reliability of an electronics device.

MP3 Audio Shield with DTMF Support


This shield is designed for audio playback and recording. A pair of 3.5mm audio connectors are used for connecting earphone/speaker and microphone for audio playback and recording, respectively. Another pair of 3.5mm audio connectors can be used with e.g. an external GSM modules. This audio shield can work as an answer machine for recording voice messages. Further more, it supports DTMF decoding, which provides the possibilities for interactive control functionality. (e.g. “Dial 6 to switch off the light in living room.”) All functionality can be controlled via I2C, which includes audio playback and recording, DTMF decoding, channel switching etc. An Arduino library is provided for every function that is supported by this shield. The audio playback and recording function is performed by the WT2000 chip and the DTMF decoding is done by MT8870.

Continue reading

SC18IS602 I2C to SPI Bridge Module


This module is designed to serve as an interface between a standard I2C-bus of a microcontroller and an SPI bus. This allows the microcontroller to communicate directly with SPI devices through its I2C-bus. This module operates as an I2C-bus slave-transmitter or slave-receiver and an SPI master. It controls all the SPI bus-specific sequences, protocol, and timing.

This module is useful when there is no SPI interface on the microcontroller or the SPI interface is occupied for something else. Due to the multi-slave characteristics of I2C bus, multiple such modules could be added to the system at the same time.

Continue reading

SC16IS750 I2C/SPI to UART Bridge Module


This module is designed to enable I2C/SPI to UART conversion. It works in I2C/SPI slave mode and interfaces with devices working in I2C/SPI master mode. There are also 4 extra GPIOs for IO expansion. NXP SC16IS750 is used as the key component on this module. Flow control and modem signals are also supported. This module is useful when extra UART interface is needed. Due to the multi-slave characteristics of I2C and SPI, many UART interfaces could be added to the system at the same time.

Continue reading

AIRduino and AIRdongle


AIRduino and AIRdongle are designed to work together. AIRduino is basically an Arduino Uno with 2.4G RF connectivity. This 2.4G connectivity can be used to upload firmware (sketch, in Arduino term) to AIRduino. Everything works in the same ways as with the official Arduino Uno, except that the USB cable connecting the PC to Arduino is replaced by a 2.4G RF link. This is extremely useful in case AIRduino has to be placed far away from the PC. It is also very useful when working with multiple AIRduinos.


AIRduino and AIRdongle each has a sophisticated designed block on board, which provides the transparent serial port connection over 2.4G RF. The block contanins an STM32 MCU, a NRF24L01+ RF transceiver, and an RF frontend IC (power amplifier and LNA). With future firmware upgrade to the STM32 MCU, more features are going to be added. For example, it will be possible to send and receive 2.4G RF packets from the AIRduino sketch via I2C.

Continue reading

I2C Passive Extender/ Patch Board


This I2C extender has eight 4-pin interlock connectors on board. The pinout of the connector is the same as on Arduino Sensor Shield, which is, from top to bottom, GND, VCC, SDA, and SCL. All pins with the same function are connected in parallel. By using a 4-pin cable connected to an Arduino Sensor Shield, the power and signal are duplicated on all the rest seven connectors. This eases the wiring for your I2C peripherals or modules. You only need to use a 4-pin cable to connect your module to any of the seven remaining connectors in order for your module to be powered and hooked onto the SDA and SCL bus.

Continue reading

Active I2C Long Cable Extender P82B715 Module


This module is designed to enable long range I2C communications which extends the cable length from several meters to about 50 meters. It is ideal for applications that need to run over long wires such as the CAT5e Ethernet cable that is commonly used to make connections between rooms. Operating with any I2C master, slave or bus buffer is the primary advantage of this module. NXP P82B715 I2C bus extender IC is used as the main component on this module. The module has four pull-up resistors on board: two on the unbuffered bus side and another two on the buffered bus side. Additionally, there are two LEDs indicates the SCL and SDA activities on the bus. Both the LEDs are driven by transistors which draw negligibly small current from the SCL and SDA lines.

Continue reading

DTMF Enabled SIM900 GPRS/GSM Shield


This shield provides GPRS/GSM service to Arduino. With this shield attached (together with a SIM card), Arduino could join its local mobile service provider’s cellphone network and start communication via SMS, Voice, DTMF, and GPRS service.

This shield connects to Arduino with long-wire headers, which keeps the pin layout intact and allows another shield to be stacked on top.

Continue reading

PoE Enbled Ethernet/TF Card Shield


This Ethernet shield gives Arduino TCP/IP network access capability. Thanks to the onboard W5100 chip, TCP/IP stacks has already been implemented on this chip. Benefit from the integrated protocol stack, Arduino only need to operate on sockets, which dramatically reduces the complexity of implement TCP/IP connectivity and saves a lot of RAM and ROM space for user application.

Continue reading

Breakout Shield for Arduino UNO or AIRduino


This breakout shield was designed for Arduino UNO R3. It has all 14 digital I/Os, all 6 analog inputs broke out. Additionally, it has I2C, SPI, UART and two analog input interlock connectors broke out. There are six LEDs on the board, which could be used to indicate the status of the I2C, SPI, and UART activities. All the LEDs are buffered by transistors, drawing insignificant current from I2C, SPI, and UART lines, so the LEDs will not affect the state of those lines. The two additional input interlock connectors, denoted as A and B, could be connected to A0 to A5 by jumpers.

Continue reading

I2C DS1307 RTC/Real-Time Clock Module


This module has a DS1307, a battery socket and three pull-up resistors on the PCB. It uses I2C protocol to communicate with external I2C master (Arduino board, PIC, AVR, etc.). The SQW/OUT pin of DS1307 is broke out via a 3-pin interlock connecter. A 4-pin connector eases the wiring to an Arduino Sensor Shield. The three pull-up resistors are connected to SDA, SCL, and SQW respectively, and they are clearly noted on the silkscreen of the PCB. User could take them off board if those pull-up resistors have already been implemented somewhere else off the module.

Continue reading