AS7262 6-channel Visible Light Sensor Guide Datasheet by Adafruit Industries LLC

View All Related Products | Download PDF Datasheet
adafrull learning system
Adafruit AS7262 6-channel Visible Light Sensor
Created by Dean Miller
Last updated on 2018-08-22 04:06:46 PM UTC
2
3
6
6
6
6
8
8
8
9
9
10
13
13
13
13
14
14
17
18
18
18
18
Guide Contents
Guide Contents
Overview
Pinouts
Power Pins:
Logic pins:
UART Logic pins:
Arduino Wiring & Test
I2C Wiring
Download Adafruit_AS726x library
Load Test Example
TFT Demo
Adafruit 0.96" 160x80 Color TFT Display w/ MicroSD Card Breakout
Python & CircuitPython
CircuitPython Microcontroller Wiring
Python Computer Wiring
CircuitPython Installation of AS726x Library
Python Installation of AS726x Library
CircuitPython & Python Usage
Python Docs
Downloads
Documents
Schematic
Dimensions
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 2 of 19
‘i ‘7'» «m m
Overview
The colors of the rainbow, so pretty in the sky
Are also in this sensor, controlled by you and I!
Detect trees of green, and red roses too with the new Adafruit AS7262 6-Channel Visible Light / Color Sensor
Breakout. This sensor from AMS has 6 integrated visible light sensing channels for red, orange, yellow, green, blue,
and violet. These channels can be read via the I2C bus as either raw 16-bit values or calibrated floating-point values.
There is also an on-board temperature sensor that can be used to read the temperature of the chip, and a powerful
LED flash to reflect light off objects for better color detection.
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 3 of 19
UMT Imedace O O O O 0 O 0 957262 Uisible s-Bin Specn'al Sensor‘ 0 K “[336755 0:2«2 ew-o , «1 Channels: 45Enm,588nm,558nm, 57Bnm,686nm,5580 Uin&Uloqic: S‘SUDC O O O O O O O rzc [nlerlacn
The 6 channels on the AS7262 are realized by silicon interference filters at 450nm, 500nm, 550nm, 570nm, 600nm,
and 650nm. This breakout uses the I2C interface on the chip by default, but a UART interface that accepts AT
commands is also selectable.
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 4 of 19
We’ve p‘aced the sensor on a PCB for you and included an SPI flash chip preprogrammed with the devrce firmware, 2:
We've placed the sensor on a PCB for you and included an SPI flash chip pre-programmed with the device firmware, a
3.3V regulator, I2C level shifting, and the recommended LED with 5700K color temperature. Both the I2C and UART
interfaces are broken out, making this breakout an excellent all-in-one solution for all your color-sensing needs. The
pinout for the UART interface is plug-and-play compatible with the Adafruit FTDI Friend.
We've also prepared software libraries to get you up and running in Arduino or CircuitPython with just a few lines of
code!
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 5 of 19
Pinouts
This sensor has 4 mounting holes and 2 header breakout strips.
Power Pins:
Vin - this is the power pin. Since the sensor uses 3.3V, we have included an onboard voltage regulator that will
take 3-5VDC and safely convert it down. To power the board, give it the same power as the logic level of your
microcontroller - e.g. for a 5V micro like Arduino, use 5V
3Vo - this is the 3.3V output from the voltage regulator, you can grab up to 100mA from this if you like
GND - common ground for power and logic
Logic pins:
SCL - this is the I2C clock pin, connect to your microcontrollers I2C clock line. There is a 10K pullup on this pin
and it is level shifted so you can use 3 - 5VDC. If UART mode is selected, this pin acts as RX.
SDA - this is the I2C data pin, connect to your microcontrollers I2C data line. There is a 10K pullup on this pin and
it is level shifted so you can use 3 - 5VDC. If UART mode is selected, this pin acts as TX.
RST - this is the reset pin. When it is pulled to ground the sensor resets itself. This pin is level shifted so you can
use 3-5VDC logic.
Solder closed the UART SELECT jumper to switch the sensor into UART mode.
UART Logic pins:
TX - this is the UART transmit pin, connect to your microcontrollers UART RX line. There is a 10K pullup on this
pin and it is level shifted so you can use 3 - 5VDC. If I2C mode is selected, this pin acts as SCL.
RX - this is the UART receive pin, connect to your microcontrollers UART TX line. There is a 10K pullup on this pin
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 6 of 19
and it is level shifted so you can use 3 , SVDC. If IZC mode is selected. this pin acts as SDA.
and it is level shifted so you can use 3 - 5VDC. If I2C mode is selected, this pin acts as SDA.
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 7 of 19
..fi ..g_m......... ... . .. z. ......
Arduino Wiring & Test
You can easily wire this breakout to any microcontroller, we'll be using an Adafruit Metro M0 Express (Arduino
compatible) with the Arduino IDE. But, you can use any other kind of microcontroller as well as long as it has I2C clock
and I2C data lines.
I2C Wiring
Connect Vin to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of.
For most Arduinos, that is 5V
Connect GND to common power/data ground
Connect the SCL pin to the I2C clock SCL pin on your Arduino.
On an UNO & '328 based Arduino, this is also known as A5, on a Mega it is also known as digital 21 and on a
Leonardo/Micro, digital 3
Connect the SDA pin to the I2C data SDA pin on your Arduino.
On an UNO & '328 based Arduino, this is also known as A4, on a Mega it is also known as digital 20 and on a
Leonardo/Micro, digital 2
This sensor uses I2C address 0x49.
Download Adafruit_AS726x library
To begin reading sensor data, you will need to download Adafruit_AS726x from our github repository. You can do that
by visiting the github repo and manually downloading or, easier, just click this button to download the zip
https://adafru.it/AUn
https://adafru.it/AUn
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 8 of 19
Rename lhe uncompressed folder Adafru ,AS726x and check that the AdafruILAS726x folder 0 cmlzmmmm) 7 D X \I “A! map: 31 V101,“: 171 Blue: 327 Green: 624 Yellw: 637 Grime: 619 Red: 269 run: 31 lee:: 172 Blue: 323 Green: 626 Yellw: 637 Ora-we: 623 Bed: 261 Tenw: 31 Violet: 175 Blue: 323 Green: 626 Yellow: 639 Orange: 630 Fed: 282 Ienp: 31 Violet: 175 Blue: 325 Green: 616 Venus: 636 (range: 631 Bed: 261 Temp: 31 molen: 175 mne: 32: Green: 62! Yellow: 63: orange: 632 lied: 231 Ian: 31 vro1ec: 175 Mme: 326 Green: 627 Xenon: 639 orange: 632 : 2112 1m: 31 Violet: 176 Blue: 326 Green red 626 Yellw: 639 orange: 632 Std: 262 Ian: 31 lee:: 175 Blue: 323 Green: 626 Yellow: 639 Ora-we: 619 Bed: 261 Tenp: 31 Violet: 173 rune: 325 Green: 626 Yellow: 636 orange: 623 Ian: 26» Ienp: 31 Violet: 171 Blue: 326 Green: 610 Yellow: 633 (range: 615 Bed: 271 Emu-ml "an yummy—
Rename the uncompressed folder Adafruit_AS726x and check that the Adafruit_AS726x folder
contains Adafruit_AS726x.cpp and Adafruit_AS726x.h
Place the Adafruit_AS726x library folder your arduinosketchfolder/libraries/ folder.
You may need to create the libraries subfolder if its your first library. Restart the IDE.
We also have a great tutorial on Arduino library installation at:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use (https://adafru.it/aYM)
Load Test Example
Open up File->Examples->Adafruit_AS726x->AS7262_test and upload to your Arduino wired up to the sensor. This
example connects to the sensor and starts taking readings.
Once uploaded to your Arduino, open up the serial console at 9600 baud speed to see the readings. Your sensor will
read the temperature and it's 6 visible light channels. Your serial monitor will look something like this:
TFT Demo
You can create a nice bar graph of the sensors 6 color channels using a 0.90 inch TFT from Adafruit.
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 9 of 19
“/vtq fr m a C D S m m M w Y H D E D T F T m o C 0 8 x 0 m we 9. 0 m m d A
Wire the TFT up as shown:
Upload the following code to your board through the Arduino IDE (the code is also available under File->Examples-
>Adafruit_AS726x->color_graph)
Adafruit 0.96" 160x80 Color TFT Display w/ MicroSD Card
Breakout
$19.95
IN STOCK
ADD TO CART
/***************************************************************************
This is a library for the Adafruit AS7262 6-Channel Visible Light Sensor
This sketch reads the sensor and creates a color bar graph on a tiny TFT
Designed specifically to work with the Adafruit AS7262 breakout and 160x18 tft
----> http://www.adafruit.com/products/3779
----> http://www.adafruit.com/product/3533
These sensors use I2C to communicate. The device's I2C address is 0x49
Adafruit invests time and resources providing this open source code,
please support Adafruit andopen-source hardware by purchasing products
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 10 of 19
Luau): :upuul l Mualuul aHuupel 7»;qu vmluwale uy pmumn g pluuuLL>
please support Adafruit andopen-source hardware by purchasing products
from Adafruit!
Written by Dean Miller for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#include <Wire.h>
#include "Adafruit_AS726x.h"
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS 10
#define TFT_RST 9 // you can also connect this to the Arduino reset
// in which case, set this #define pin to -1!
#define TFT_DC 8
#define SENSOR_MAX 5000
#define BLACK 0x0000
#define GRAY 0x8410
#define WHITE 0xFFFF
#define RED 0xF800
#define ORANGE 0xFA60
#define YELLOW 0xFFE0
#define LIME 0x07FF
#define GREEN 0x07E0
#define CYAN 0x07FF
#define AQUA 0x04FF
#define BLUE 0x001F
#define MAGENTA 0xF81F
#define PINK 0xF8FF
uint16_t colors[] = {
MAGENTA,
BLUE,
GREEN,
YELLOW,
ORANGE,
RED
};
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
//create the object
Adafruit_AS726x ams;
//buffer to hold raw values (these aren't used by default in this example)
//uint16_t sensorValues[AS726x_NUM_CHANNELS];
//buffer to hold calibrated values
float calibratedValues[AS726x_NUM_CHANNELS];
uint16_t barWidth;
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 11 of 19
void setup() {
Serial.begin(9600);
tft.initR(INITR_MINI160x80); // initialize a ST7735S chip, mini display
tft.setRotation(3);
tft.fillScreen(ST7735_BLACK);
barWidth = tft.width() / AS726x_NUM_CHANNELS;
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
//begin and make sure we can talk to the sensor
if(!ams.begin()){
Serial.println("could not connect to sensor! Please check your wiring.");
while(1);
}
ams.setConversionType(MODE_2);
//uncomment this if you want to use the driver LED (off by default)
//ams.drvOn();
}
void loop() {
if(ams.dataReady()){
//read the values!
//ams.readRawValues(sensorValues);
ams.readCalibratedValues(calibratedValues);
for(int i=0; i<AS726x_NUM_CHANNELS; i++){
uint16_t height = map(calibratedValues[i], 0, SENSOR_MAX, 0, tft.height());
tft.fillRect(barWidth * i, 0, barWidth, tft.height() - height, ST7735_BLACK);
tft.fillRect(barWidth * i, tft.height() - height, barWidth, height, colors[i]);
}
}
}
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 12 of 19
Python & CircuitPython
It's easy to use the AS7262 with Python or CircuitPython and the Adafruit CircuitPython
AS726x (https://adafru.it/C2x) module. This module allows you to easily write Python code that reads color data and
temperature from the sensor.
You can use this sensor with any CircuitPython microcontroller board or with a computer that has GPIO and
Python thanks to Adafruit_Blinka, our CircuitPython-for-Python compatibility library (https://adafru.it/BSN).
CircuitPython Microcontroller Wiring
You can easily wire this breakout to a microcontroller running CircuitPython. We will be using a Metro M0 Express.
Connect Vin to the power supply, 3-5V is fine
Connect GND to common power/data ground
Connect the SCL pin to the I2C clock SCL pin on
your Feather or Metro M0 (on a Gemma M0 this
would be Pad #2/ A1)
Connect the SDA pin to the I2C data SDA pin on
your Feather or Metro M0 (on a Gemma M0 this
would be Pad #0/A2)
Python Computer Wiring
Since there's
dozens
of Linux computers/boards you can use we will show wiring for Raspberry Pi. For other
platforms, please visit the guide for CircuitPython on Linux to see whether your platform is
supported (https://adafru.it/BSN).
Here's the Raspberry Pi wired with I2C:
Pi 3V3 to sensor VIN
Pi GND to sensor GND
Pi SDA to sensor SDA
Pi SCL to sensor SCL
This sensor uses I2C address 0x49.
CircuitPython Installation of AS726x Library
You'll need to install the Adafruit_CircuitPython_AS726x library (https://adafru.it/C1M) library on your CircuitPython
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 13 of 19
board
board.
First make sure you are running the latest version of Adafruit CircuitPython (https://adafru.it/Amd) for your board.
Next you'll need to install the necessary libraries to use the hardware--carefully follow the steps to find and install these
libraries from Adafruit's CircuitPython library bundle (https://adafru.it/zdx). Our introduction guide has a great page on
how to install the library bundle (https://adafru.it/ABU) for both express and non-express boards.
Remember for non-express boards you'll need to manually install the necessary libraries from the bundle:
adafruit_as726x.mpy
adafruit_bus_device
adafruit_register
You can also download the adafruit_as726x.mpy from it's release page on Github. (https://adafru.it/C1N)
Before continuing make sure your board's lib folder or root filesystem has the adafruit_as726x.mpy,
adafruit_register, and adafruit_bus_device files and folders copied over.
Next connect to the board's serial REPL (https://adafru.it/Awz)so you are at the CircuitPython >>> prompt.
Python Installation of AS726x Library
You'll need to install the Adafruit_Blinka library that provides the CircuitPython support in Python. This may also
require enabling I2C on your platform and verifying you are running Python 3. Since each platform is a little different,
and Linux changes often, please visit the CircuitPython on Linux guide to get your computer
ready (https://adafru.it/BSN)!
Once that's done, from your command line run the following command:
sudo pip3 install adafruit-circuitpython-as726x
If your default Python is version 3 you may need to run 'pip' instead. Just make sure you aren't trying to use
CircuitPython on Python 2.x, it isn't supported!
CircuitPython & Python Usage
To demonstrate usage we will initialize the sensor and read it's onboard temperature sensor from the board's Python
REPL.
Run the following code to import the necessary modules and initialize the I2C connection with the sensor:
now you can read the temperature property from the sensor:
import board
import busio
from adafruit_as726x import Adafruit_AS726x
i2c = busio.I2C(board.SCL, board.SDA)
sensor = Adafruit_AS726x(i2c)
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 14 of 19
As long as you get a reasonable temperature (usually around 28 degrees C) you know your sensor is wired up
correctly and working!
Below is a complete example that reads all color channels and prints them out as a graph in the REPL. Save this
as main.py on your board and open the REPL to see the output.
Running the above code should something like this in your REPL:
print('Temperature: {0}C'.format(sensor.temperature))
import time
import board
import busio
from adafruit_as726x import Adafruit_AS726x
#maximum value for sensor reading
max_val = 16000
#max number of characters in each graph
max_graph = 80
def graph_map(x):
return min(int(x * max_graph / max_val), max_graph)
# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
sensor = Adafruit_AS726x(i2c)
sensor.conversion_mode = sensor.MODE_2
while True:
# Wait for data to be ready
while not sensor.data_ready:
time.sleep(.1)
#plot plot the data
print("\n")
print("V: " + graph_map(sensor.violet)*'=')
print("B: " + graph_map(sensor.blue)*'=')
print("G: " + graph_map(sensor.green)*'=')
print("Y: " + graph_map(sensor.yellow)*'=')
print("O: " + graph_map(sensor.orange)*'=')
print("R: " + graph_map(sensor.red)*'=')
time.sleep(1)
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 15 of 19
I :om" Tungmv n m m 32mg (v m v'undtw Hr‘p
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 16 of 19
Python Docs
Python Docs (https://adafru.it/AUp)
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 17 of 19
. | s I 0000- M‘ WWW" momma [0- ., m .Eu u ENE III M a 1% m.“ M m |m _ nun run m.- -\vll WI! lumi- 1/1 5
Downloads
Documents
AS726x Datasheet (https://adafru.it/C1O)
AS726x Arduino Driver (https://adafru.it/C1P)
AS726x CircuitPython Driver (https://adafru.it/C1M)
Fritzing object in the Adafruit Fritzing Library (https://adafru.it/aP3)
AS7262 Breakout PCB files (EAGLE format) (https://adafru.it/C1Q)
Schematic
click to enlarge
Dimensions
in inches. Click to enlarge
© Adafruit Industries https://learn.adafruit.com/adafruit-as7262-6-channel-visible-light-sensor Page 18 of 19
© Adafruit Industries Last Updated: 2018-08-22 04:06:41 PM UTC Page 19 of 19

Products related to this Datasheet

AS7262 6-CHANNEL VISIBLE LIGHT