This is a platform agnostic Rust driver for the MLX90614/MLX90615 infrared
thermometers using the embedded-hal
traits.
This driver allows you to:
- Read the last object temperature measurement. See:
object1_temperature()
. - Read the last ambient temperature measurement. See:
ambient_temperature()
. - Read the last raw IR measurement. See:
raw_ir_channel1()
. - Get/Set the emissivity. See:
set_emissivity()
. - Get the device ID. See:
device_id()
. - Set the device address. See:
set_address()
. - Put the device to sleep. See:
sleep()
. - Wake the device from sleep. See:
wake_mlx90614()
.
The MLX90614/MLX90615 are a infrared thermometers for non-contact temperature measurements. Both the IR sensitive thermopile detector chip and the signal conditioning ASSP are integrated in the same TO-39/TO-46 can. Thanks to its low noise amplifier, 17-bit/16-bit ADC and powerful DSP unit, a high accuracy and resolution of the thermometer is achieved.
Depending on the MLX90614 model they feature a single-zone or dual-zone thermopile.
The chips feature an 10-bit PWM and SMBus interface.
The readout resolution is 0.01°C (MLX90614) / 0.02°C (MLX90615).
This driver uses the SMBus interface.
Documentation:
- Datasheets: MLX90614, MLX90615
- SMBus communication with MLX90614
To use this driver, import this crate and an embedded_hal
implementation,
then instantiate the appropriate device.
Please find additional examples using hardware in this repository: driver-examples
use linux_embedded_hal::I2cdev;
use mlx9061x::{Mlx9061x, SlaveAddr};
fn main() {
let dev = I2cdev::new("/dev/i2c-1").unwrap();
let addr = SlaveAddr::default();
let mut sensor = Mlx9061x::new_mlx90614(dev, addr, 5).unwrap();
loop {
let obj_temp = sensor.object1_temperature().unwrap();
println!("Object temperature: {:.2}ºC", obj_temp);
}
}
To enable defmt (version 0.3.x
) support, when specifying the dependency on mlx9061x
, add the feature "defmt-03
".
[dependencies]
mlx9061x = { version = "0.3.0", features = ["defmt-03"] }
For questions, issues, feature requests, and other changes, please file an issue in the github project.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.