Source code for SEEL.SENSORS.MLX90614
from __future__ import print_function
from numpy import int16
[docs]def connect(route,**args):
return MLX90614(route,**args)
[docs]class MLX90614():
NUMPLOTS=1
PLOTNAMES=['Temp']
ADDRESS = 0x5A
name = 'PIR temperature'
def __init__(self,I2C,**args):
self.I2C=I2C
self.ADDRESS = args.get('address',self.ADDRESS)
self.OBJADDR=0x07
self.AMBADDR=0x06
self.source=self.OBJADDR
self.name = 'Passive IR temperature sensor'
self.params={'readReg':range(0x20),
'select_source':['object temperature','ambient temperature']}
try:
print ('switching baud to 100k')
self.I2C.configI2C(100e3)
except:
print ('FAILED TO CHANGE BAUD RATE')
[docs] def select_source(self,source):
if source=='object temperature':
self.source = self.OBJADDR
elif source=='ambient temperature':
self.source = self.AMBADDR
[docs] def readReg(self,addr):
x= self.getVals(addr,2)
print (hex(addr),hex(x[0]|(x[1]<<8)))
[docs] def getVals(self,addr,bytes):
vals = self.I2C.readBulk(self.ADDRESS,addr,bytes)
return vals
[docs] def getRaw(self):
vals=self.getVals(self.source,3)
if vals:
if len(vals)==3:
return [((((vals[1]&0x007f)<<8)+vals[0])*0.02)-0.01 - 273.15]
else:
return False
else:
return False
[docs] def getObjectTemperature(self):
self.source = self.OBJADDR
val=self.getRaw()
if val:
return val[0]
else:
return False
[docs] def getAmbientTemperature(self):
self.source = self.AMBADDR
val=self.getRaw()
if val:
return val[0]
else:
return False