Measure PAR in μmol/M²/S
- Spectral Range: 400~700nm
- Accuracy: ±5%
- Range: 0 - 2500 μmol/M²/S
- Interface: I2C
- Voltage Range: 3.3 - 5 V
If you use the Qwiic connector, it is keyed and can only be inserted one way.
A 2.54mm through-hole header is also available. The pins are as follows:
|EC Probe Interface||Master device|
|3.3/5v||3.3 - 5 V power source|
PAR Sensor Connections
The sensor is connected to the sensing circuit by three wires, red (power), green (ground), and yellow (signal). The connector on the board is a push to fit connector; push the red wire into the slot labeled R, green into the G slot, and yellow into the Y slot.
To disconnect the wires, depress the small hole on each slot and pull out the wire.
I2C Bus Pull-ups
There only needs to be one device with active pull-up resistors. Each board comes with the resistors active. Several boards can typically be connected with active resistors, however if connection problems are present, choose one board to keep the resistors active and disable to rest.
Each device comes with 4.7k resistor pullups on the I2C bus. They pass through a 3-pad solder paste jumper. The outer pads are connected to the middle pad by thin traces. To disable the pullups, use a utility knife to cut both traces. To re-enable the pullups, connect all three pads together with solder.
To start using the device, you need to install a library for your board/platform.
Arduino IDE: go to the library manager (Sketch / Include Library / Manage Libraries...) and search for
uFire PAR Sensor.
PlatformIO: install the library using the library manager (PlatformIO / PlatformIO Home / Libraries) and search for
uFire PAR Sensor.
Particle.io: search for
uFire PAR Sensorin the Libraries section of the IDE.
Raspberry Pi: clone the GitHub repo. The library is located in the
python/RaspberryPidirectory. Have a look at the README for instructions. Be sure to read the section below for instructions.
Rust: Download/install/documentation for the crate
Before you can begin, you will need to enable software I2C. The Pi's hardware I2C implementation has a clock-stretching bug that will prevent it from working reliably. From a terminal, type:
sudo nano /boot/config.txtand scroll to the bottom
<pin>with whatever pin you'd like to use. Refer here for the pin functions, you will need to use the orange GPIO xx labels in the picture to locate the pins.
ctrl + xto exit,
yto save, and
enterto confirm the filename.
The shell Example
An interactive shell interface is provided and is a quick and easy way to get started using the device. You will find the equivalent commands in the code area below when applicable. Upload it to your device, start a serial terminal and you will get a
> prompt where you can enter commands and receive a response like a terminal or REPL. It is often quicker to experiment with things this way rather than rewriting, compiling, and uploading new versions every time.
Changing the I2C Address
If needed, the I2C address can be changed programatically by calling setI2CAddress. The device will permanently change the address and continue to use it after a power reset. If you forget the new address, you will need to use an I2C bus scanner to recover it.
- C++: There are several class constructors available.
- Custom I2C Address:
- ESP32 I2C Pins (SDA, SCL):
uFire_PAR par(19, 23);
- ESP32 I2C Pins and I2C Address:
uFire_PAR par(19, 23, 0x4B);
- Raspberry Pi Python: You can optionally pass the I2C address and/or bus.
par = uFire_PAR()
- Custom I2C Address:
par = uFire_PAR(address=0x4B)
- I2C System Bus:
par = uFire_PAR(i2c_bus=3)
- I2C System Bus Address:
par = uFire_PAR(i2c_bus=3, address=0x4B)
- Rust: Always pass the I2C system bus, and I2C address.
let mut par = PARSensor::new("/dev/i2c-3", 0x3c);
The sensor comes pre-calibrated and no further calibration is needed.
Position the sensor at the location and height to measure PAR. The sensor includes a bubble level to ensure the probe is perfectly horizontal; the ideal angle of light hitting the sensor is perfectly vertical.
Each PAR measurement takes 250ms.