Home » Raspberry Pi and Si1145 sensor example

Raspberry Pi and Si1145 sensor example

by shedboy71

In this article we will connect a Si1145 sensor to an Raspberry Pi

First the sensor

The Si1145/46/47 is a low-power, reflectance-based, infrared proximity, ultraviolet (UV) index, and ambient light sensor with I2C digital interface and programmableevent interrupt output. This touchless sensor IC includes an analog-to-digital converter, integrated high-sensitivity visible and infrared photodiodes, digital signal processor, and one, two, or three integrated infrared LED drivers with fifteen selectable drive levels. The Si1145/46/47 offers excellent performance under a wide dynamic range and a variety of light sources including direct sunlight. The Si1145/46/47 can also work under dark glass covers.

The photodiode response and associated digital conversion circuitry provide excellent immunity to artificial light flicker noise and natural light flutter noise. With two or more LEDs, the Si1146/47 is capable of supporting multiple-axis proximity motion detection. The Si1145/46/47 devices are provided in a 10-lead 2×2 mm QFN package and are capable of operation from 1.71 to 3.6 V over the –40 to +85 °C temperature range.

 

Parts List

Name Link
Pi Zero Raspberry Pi Zero W (Wireless) (new 2017 model)
Si1145 SI1145 UV IR Visible Sensor I2C GY1145 Light Breakout Board Module
Connecting wire Free shipping Dupont line 120pcs 20cm male to male + male to female and female to female jumper wire

Schematic

We chose a Pi Zero, any Raspberry Pi should work just fine.

 

pi and Si1145

pi and Si1145

Code

The example library and code examples come from https://github.com/THP-JOE/Python_SI1145

I used the simpletest.py example

[python]

#!/usr/bin/python

# Author: Joe Gutting
# With use of Adafruit SI1145 library for Arduino, Adafruit_GPIO.I2C & BMP Library by Tony DiCola
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

# Can enable debug output by uncommenting:
#import logging
#logging.basicConfig(level=logging.DEBUG)

import time
import SI1145.SI1145 as SI1145


# Default constructor will pick a default I2C bus.
#
# For the Raspberry Pi this means you should hook up to the only exposed I2C bus
# from the main GPIO header and the library will figure out the bus number based
# on the Pi's revision.
#
# For the Beaglebone Black the library will assume bus 1 by default, which is
# exposed with I2C1_SCL = P9_17 and I2C1_SDA = P9_18
# Header pinout: http://beagleboard.org/static/images/cape-headers-i2c.png
# Configure the pins for I2C with these pins:
#   sudo config-pin p9.17 i2c
#   sudo config-pin p9.18 i2c

sensor = SI1145.SI1145()

print 'Press Cntrl + Z to cancel'

while True:
        vis = sensor.readVisible()
        IR = sensor.readIR()
        UV = sensor.readUV()
        uvIndex = UV / 100.0
        print 'Vis:             ' + str(vis)
        print 'IR:              ' + str(IR)
        print 'UV Index:        ' + str(uvIndex)

        time.sleep(3)

[/python]

you can run this by typing the following in the terminal

sudo python simpletest.py

Output

In the terminal you should see something like this

Links

https://www.silabs.com/documents/public/data-sheets/Si1145-46-47.pdf

You may also like

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More