首页 > 其他分享 >树莓派红外测温

树莓派红外测温

时间:2022-11-27 23:24:39浏览次数:36  
标签:__ 树莓 temp bus 测温 MLX90614 红外 data self

https://blog.csdn.net/Hao_ge_666/article/details/117170782

 

 

 

 

接好线之后

首先安装IIC库(这个一般树莓派操作系统自带)

sudo apt install i2c-tools

  再装专门为python的smbus

sudo apt install python-smbus

  安完上面两个,就可以打开IIC

sudo raspi-config

  之后就可以查看模块的地址了(下面代码如果运行不了,自己加管理员权限sudo)

i2cdetect -y -a 1

  如果树莓派SDA和SCL接的是SDA.1和SCL.1,那么模块地址就是0*5a,如图

 这样就说明检测到了模块,地址为0*5a

import smbus
from time import sleep
 
class MLX90614():
 
    MLX90614_RAWIR1=0x04
    MLX90614_RAWIR2=0x05
    MLX90614_TA=0x06
    MLX90614_TOBJ1=0x07
    MLX90614_TOBJ2=0x08
 
    MLX90614_TOMAX=0x20
    MLX90614_TOMIN=0x21
    MLX90614_PWMCTRL=0x22
    MLX90614_TARANGE=0x23
    MLX90614_EMISS=0x24
    MLX90614_CONFIG=0x25
    MLX90614_ADDR=0x0E
    MLX90614_ID1=0x3C
    MLX90614_ID2=0x3D
    MLX90614_ID3=0x3E
    MLX90614_ID4=0x3F
 
    comm_retries = 5
    comm_sleep_amount = 0.1
 
    def __init__(self, address=0x5a, bus_num=1):
        self.bus_num = bus_num
        self.address = address
        self.bus = smbus.SMBus(bus=bus_num)
 
    def read_reg(self, reg_addr):
        err = None
        for i in range(self.comm_retries):
            try:
                return self.bus.read_word_data(self.address, reg_addr)
            except IOError as e:
                err = e
                #"Rate limiting" - sleeping to prevent problems with sensor
                #when requesting data too quickly
                sleep(self.comm_sleep_amount)
        #By this time, we made a couple requests and the sensor didn't respond
        #(judging by the fact we haven't returned from this function yet)
        #So let's just re-raise the last IOError we got
        raise err
 
    def data_to_temp(self, data):
        temp = (data*0.02) - 273.15
        return temp
 
    def get_amb_temp(self):
        data = self.read_reg(self.MLX90614_TA)
        return self.data_to_temp(data)
 
    def get_obj_temp(self):
        data = self.read_reg(self.MLX90614_TOBJ1)
        return self.data_to_temp(data)
 
 
if __name__ == "__main__":
    sensor = MLX90614()
    print(sensor.get_amb_temp())
    print(sensor.get_obj_temp())

  

 

标签:__,树莓,temp,bus,测温,MLX90614,红外,data,self
From: https://www.cnblogs.com/gooutlook/p/16930988.html

相关文章