Maker Pro
Raspberry Pi

How to Connect a TCS34725 RGB Color Sensor With Raspberry Pi Zero W

October 10, 2019 by Jonathan Miller

Learn how to interface the TCS34725 RGB color detector with a Raspberry Pi Zero and use color in your next project!

They say that colors speak louder than words, but did you know that colors also have their own words and language?

The color RGB and hex is a model representation of red, green, and blue light added together. These give the details of how much red, green, or blue is present in color, while hex is the short representation of RGB. In this tutorial, I’ll show you how to interface the TCS34725 RGB color detector with a Raspberry Pi Zero.

Required Hardware

  • 1 TCS34725 RGB Sensor
  • 1 Raspberry Pi Zero
  • 1 16x2 LCD Module
  • 1 10k Potentiometer
  • 1 10K Ohms Resistor

Circuit Diagram


Fig 1. Circuit diagram

How the TCS34275 Works With a Raspberry Pi

The color sensor used in this tutorial’s circuit is an Adafruit TCS34725 color sensor. It has a 3 x 4 photodiode array and four ADC converters to convert the light to photodiode current to a 16-bit digital value.

Raspberry Pi Zero W is set up as a headless Pi. It runs using the Raspbian Lite version OS without the graphical user interface, since the project is mostly using the Raspberry Pi Zero W to process the data gathered without the need of a graphical interface. An LCD 16x2 digital display is used to output the result in lieu of a GUI.

Note: This guide is based on a Raspberry Pi Zero W with a Raspbian headless setup, but can also work with full version of Raspbian OS.

Raspberry Pi Zero Setup

In the project, a headless or screenless setup will be used since we will be using a 16x2 LCD module instead of displaying the output to the display of the Raspberry Pi Zero W.

Before we proceed with interfacing the color sensor and LCD module, there are few steps that need to be done on the Raspberry Pi Zero W.

  1. First, set a headless booting for the Raspberry Pi Zero W.
  2. Before installing modules to the Raspberry Pi Zero W OS, always update and upgrade so there won’t be any errors later on.
$sudo apt-get update -y
$sudo apt-get upgrade -y

3. Enable the I2C interface by typing the following command in the terminal:

$sudo raspi-config

Select the interfacing option.


Fig 2. Interface Option


Fig 3. Select P5 I2C


Fig 4. Select Yes

Reboot the Raspberry Pi Zero W for these commands to take effect by typing the following command:

$sudo reboot

Interfacing the Adafruit TCS34725

With the Raspberry Pi Zero W I2C interface enabled, interfacing the Adafruit TCS34725 color sensor using I2C connections is possible.


Fig 5. Adafruit TCS34725

1. For the physical connection of the TCS34725 and Raspberry Pi Zero W, refer to the table below. Note that the Raspberry Pi Zero W must be turned OFF during the connection.

Pin Connections

Raspberry Pi Zero W
Pin 9 (GND)
Pin 1 (3V3)
Pin 5 (GPIO3)
Pin 3 (GPIO2)

2. Once the connections are done, turn-on and connect again to the device.

3. For this project, Python3 is used. To Install Python3, use the following command:

$sudo apt-get install python3-pip

4. Install git to clone libraries.

$sudo apt-get install git

5. Clone the library for the Python TCS34725 by inputting the command below on the terminal.

$git clone

6. After cloning the library, navigate to the Adafruit_CircuitPython_TCS34725 folder.

$cd Adafruit_CircuitPython_TCS34725

Install the using:

$sudo python3 install

Interfacing the 16x2 LCD Module

Use the table below to connect the 16x2 LCD module to the Raspberry Pi Zero and Potentiometer.

Pin Connection

16x2 LCD Module
Raspberry Pi Zero / Potentiometer
Middle potentiometer pin
Pin 37 (GPIO 26)
Pin 35 (GPIO19)
Pin 33 (GPIO 13)
Pin 31 (GPIO 6)
Pin 29 (GPIO 5)
Pin 38 (GPIO 20)

7. The library for the LCD module is supported by the GNU/Linux system for the Raspberry Pi, which can be installed locally from PyPI using the command below.

7. The library for the LCD module is supported by the GNU/Linux system for the Raspberry Pi, which can be installed locally from PyPI using the command below.

$sudo pip3 install adafruit-circuitpython-charlcd


import time
import board
import adafruit_tcs34725
import busio
import digitalio
import adafruit_character_lcd.character_lcd as character_lcd

lcd_columns = 16
lcd_rows =2 

lcd_rs = digitalio.DigitalInOut(board.D26)
lcd_en = digitalio.DigitalInOut(board.D19)
lcd_d7 = digitalio.DigitalInOut(board.D21)
lcd_d6 = digitalio.DigitalInOut(board.D5)
lcd_d5 = digitalio.DigitalInOut(board.D6)
lcd_d4 = digitalio.DigitalInOut(board.D13)

lcd = character_lcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6,lcd_d7, lcd_columns, lcd_rows)

i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)

With the TCS34725 color sensor and Pi Zero interfaced, you can start making your own projects to share with the community!

To learn more about how you can use color sensors with other boards, check out these tutorials:

How to Make a Color Sensor Using a TCS3200 Module (uses the PIC16F1516)

Using an RGB sensor with a Raspberry Pi 4 or an Arduino (uses a different RGB sensor, the TCS3200)


Jonathan Miller

I love to explore and make things that incorporate new modules and familiar dev boards. Learning as much as I can to create things I can use!

Related Content


You May Also Like