ConnDuino intrefaces to add-on modules

This is the region where add-on devices may be plugged to ConnDuino, as shown in the picture below. Several pin headers exist here, which interface the pinout of some common modules such as TFT display, LCD display, real time clock and more. The mapping of these pin headers to the Arduino compatible digital or analog pins (in other words the Atmega328p pins), has been designed in such a way that no conflict occurs. This means that all pin headers may be utilized concurrently, to install the respective number of add-on devices, while still some digital and analog pins remain free for other uses!

In the next sections the details for each installable add-on module are described. Quick links for each one:

 

TFT display screen, with SPI interface (based on ILI9341 driver).

Such TFT modules are very widespread lately. They are very economical (prices range at 5-10$ in ebay) and come in convenient sizes for small embedded projects (i.e. 1.8”, 2.2”, 2.4” diagonals). They are capable of much richer output compared to a customary 16x2 lcd display. There are several TFT module designs to choose from. Except for their size, the most important criterion, when buying one, should be the interface they use to communicate with the microcontroller. Some designs require 8 or 16 wires for pixel drawing only. Obviously, these ones are not practical in our case, where the Atmega328p is used, with 13+6=19 available pins in total. Instead, TFT designs that rely on the SPI interface would be a much better choice (also the I2C interface, but it seems, there is nothing on offer currently). The requirements for the SPI interface are only 3+1 wires, with the 3 of them being sharable with other SPI devices.

Fortunately, there exist such TFT boards, mostly using the ILI9341 driver chip. There is a drawback however. According to the datasheet, this chip accepts up to 3.3V for logic and supply. Consequently, it seems incompatible with the 5V Arduino logic. There are two paths to overcome the obstacle though: run the microcontroller at 3.3V too or use a level shifter between microcontroller and TFT module. Here is short discussion about each one:

  1. Run the microcontroller at 3.3V. As a result its logic (the pins high voltage) would be also 3.3V, and the TFT module with the ILI9341 driver would be natively pluggable to the Atmega328p pins. This option normally requires the reduction of microcontroller clock speed at 10 or 12 MHz, as discussed in another article.
  2. Use a level shifter, that converts the signals from their native to the desired voltage level, in our case form 5V to 3.3V. CD4050 chip (datasheet) is ideal in this role because it supports the required voltages, features six one-way channels for conversion, just enough for the TFT module pins.

ConnDuino supports both options! As described in this section, the microcontroller can be set to 3.3V, by placing the appropriate jumper in the VCC-SEL headers. The CD4050 chip should not be installed at all, makingt the circui simpler. But it is required to short the solder pads, in order to restore the wiring between the microcontroller and the TFT pins. There are five solder pads in the back side of the board, as shown in the picture below. This method is suggested if other devices in the circuit are not tolerant to 5V too, or if simplicity is preferred over speed.

On the other hand, the installation of a CD4050 chip is also facilitated. In this case the TFT module will receive commands and data at 3.3V, while the microcontroller transmits them at 5V. The solder pads in the back of the board should be left open (no solder), otherwise the level shifting channels of the CD4050 would be bypassed. This method is suggested if other devices in the circuit operate strictly on 5V, or if speed is preferred over simplicity.

The next image shows the ConnDuino TFT related pins. Their functionality is described in table below.

ConnDuino TFT display pins
Pin Comments

+3v3

To positive 3.3V supply.

GND

To ground

CS

Chip Select (SPI signal). Wired to digital pin 8 through gates 11-12 of the CD4050 chip or the respective backside solder pads.

RST

Reset. Wired to digital pin 9 through gates 9-10 of the CD4050 chip or the respective backside solder pads.

DC

Data/Command control. Wired to digital pin 10 through gates 6-7 of the CD4050 chip or the respective backside solder pads.

MOSI

Master Out-Slave In (SPI signal). Wired to digital pin 11 through gates 4-5 of the CD4050 chip or the respective backside solder pads.

SCK

Serial Clock (SPI signal). Wired to digital pin 13 through gates 14-15 of the CD4050 chip or the respective backside solder pads.

LED

Backlight control. If the “TFTDIM” jumper header is shorted, this pin is directly connected to the 3.3V supply. If not, the pin is connected to the digital pin 3, from which its output may be adjusted using PWM.

NC

Not connected. This pin is normally called MISO in the TFT board. Such a signal is not occurring by a TFT screen. Furthermore, it runs in the opposite direction (from the device towards the microcontroller) and interfacing it through the CD4050 chip is impossible. So, it is not connected to any other pin on the ConnDuino board.

 

The backlight of the TFT may be dimmed or turned off, at the expense of a dedicated digital pin. It was decided not to fix this mapping, but to offer a per-project configuration. For some projects one more free pin may be critical. The jumper header “TFTDIM” achieves this. Here, its behavior is described:

  • If “TFTDIM” is shorted, the backlight is always on. The digital pin 3 is available for any use. The transistor T1 and resistor R11 may be omitted. The resistor R8, in series with the led, should be installed (50Ω recommended) to close the circuit and protect the led.  
  • If “TFTDIM” is not shorted the backlight luminosity may be controlled by the digital pin 3, using PWM output. The transistor T1 should be installed in order to amplify the pin current. The MMBT2222A transistor which is the SOT23 version of 2N2222, has a maximum collector current of 600mA, which seems more than enough for the backlight. The R11 resistor that protects the transistor gate should be installed too (1~5K recommended). Also, the R8 resistor, in series with the led, should be installed (50Ω recommended) to close the circuit and protect the led.  

It is important to note that ConnDuino TFT pin header interfaces the display driver on the TFT module. However, some TFT modules are not just displaying pixels but may feature a touch sensitive screen and/or an SD card slot. These functions are not interfaced with the ConnDuino TFT pin header. Additional wiring is required if we want to use them. Fortunately, their interface is SPI too, and the appropriate SPI pins may be used. For the touch screen, the controller is typically the XPT2046 chip (datasheet), which supports both 3.3V and 5V. So, it can always be used with no restrictions. On the other hand, SD-cards operate strictly on 3.3V and in this case it is recommended to power the microcontroller with 3.3V, through the “VCC_SEL” jumper header.

LCD 16x2 display, with I2C interface.

These devices are very popular for textual output. They provide 2 lines of 16 characters each, they are simple to use, and come in many distinctive backlight or font colors. If only they required less pin connections… Typically, using the 4-bit parallel mode, to send data to the lcd, six dedicated pins are required, plus an extra one for the backlight led control, plus the supply and ground pins. Using the 8-bit mode, 10 data pins are required, plus the led and the power. Fortunately, the I2C serial interface comes to the rescue. Special adapter modules have been emerged that plug into the standard 14 pin header of the lcd modules and interface them to the microcontroller using just the two I2C lines SDA and SCL. Two additional wires are needed for powering and grounding both modules (lcd and adapter). No additional pin for the backlight led is required. In effect, remarkable savings in pin allocation are achieved that excuse the small cost for these adapter modules (about 1$ in ebay). Conveniently, some stores offer LCD modules with the I2C adapter already soldered in place.

As a result, ConnDuino design offers a special I2C header for connecting an LCD display through the I2C adapter. Of course, it may be used for any other purpose, since it is just another slot for the shared I2C lines. Its only difference is that the supply pin is fixed to the 5V power rail and is not affected by the “VCC-SEL” jumper header. The SDA and SCL lines however are affected by the “I2C-SEL” jumper header.

The next image shows the ConnDuino LCD related pins. Their functionality is described in table below.

ConnDuino LCD (with i2C interface) pins
Pin Comments

GND

To ground

+5v

To positive 5V supply. Not affected by the  “VCC-SEL” jumper header.

SDA

I2C serial data line

SCL

I2C serial clock line

 

Radio receiver or transmitter modules at 433MHz frequency.

These modules are considered nowadays the cheapest solution to enable wireless communication between remote embedded systems. They are very simple to use, with a basic feature set and an expected range up to 20m (~60ft) with an antenna (based on my own experience). They are perfect for remote sensors sending data back to a master station in a home environment.

There are two forms of these modules: the transmitter and the receiver. ConnDuino facilitates the installation of either module. The on-board three pin layout matches the receiver pins, so one receiver may be directly plugged in. The transmitter module uses a slightly different pin arrangement and in order to be connected through the specific pin header some jumper wires should be used.

The pin header powers the modules through the 5V power rail. In fact, these modules are capable of up to 12V supply, and their range is increased with higher voltage, so the maximum of the two available ConnDuino power rails was selected to power them.

The next image shows the ConnDuino radio module related pins. Their functionality is described in table below.

.

ConnDuino rf module pins
Pin Comments

GND

To ground

+5v

To positive 5V supply. Not affected by the  “VCC-SEL” jumper header.

@D4

Data send or receive. Connected to the digital pin 4.  

 

Real time clock (RTC) module

With I2C interface (based, among others, on DS1307, DS3231, DS3232 chips). Several breakout board implementations are available with different pin layouts. The layout selected for ConnDuino conforms to those DS3231 RTC modules, priced under 2$ in ebay. However, this selection doesn’t prevent any other I2C RTC board from connecting. Some jumper wires will do the trick. The Maxim DS3231 chip integrates a temperature compensated crystal, so high accuracy is possible even during outdoor use and also supports interrupts. The modules are typically equipped with a battery holder and a 32K eeprom device, interfaced through I2C too.

The next image shows the ConnDuino RTC related pins. Their functionality is described in the table below.

ConnDuino real time clock (rtc) pins
Pin Comments

GND

To ground

Vcc

To positive voltage (either 5V or 3.3V, same to the microcontroller voltage). The DS3231 chip has a range of 2.3V~5.5V supply.

SDA

To I2C SDA bus (i.e. analog pin 4).

SCL

To I2C SCL bus (i.e. analog pin 5).

SQW

This pin outputs the interrupt signals from the rtc or alternatively a square-wave signal. If the nearby INTR jumper header is shorted, the signal reaches digital pin #2, which is one of the two Arduino Uno pins, capable to handle interrupts.

32K

This pin outputs the oscillator signal from the rtc chip. The DS3231 chip integrates a 32KHz crystal. This signal is not mapped to any of the Arduino pins, but instead a nearby duplicated 32K header is provided, in order to forward it anywhere, if need be.

 

 

See also

Additional information regarding the ConnDuino board design and functionality can be found in the following articles:

An introduction to ConnDuino

The Arduino in ConnDuino

ConnDuino power supply

Expanding ConnDuino: push buttons and breadboard

ConnDuino quick reference

 

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.