ESP8266 - WIFI temperatur datalogger - MCP9808 (3 / 8 steg)
Steg 3: Driver genomförandet
Allmänna överväganden:
Detta är för Tambient > 0° C endast. Ta en titt i MCP9008 datablad .
Om du behöver det också på den negativa temperaturskala då du behöver göra några extra transformationer som temperaturdata lagras i 16-bitars skrivskyddad omgivningstemperaturen registrera Ta som 13-bitars data i två komplement format.
Som MCP9808 har en I2C kompatibel kompatibla gränssnitt, är bygga en drivrutin för det i NodeMCU det en ganska straigh framåt process:
1. Init I2C bus/gränssnitt
dev_addr = 0x1F,
init = funktion (själv, sda, scl)
Self.ID = 0
I2C.Setup (self.id, sda, scl, i2c. LÅNGSAM)
slutet
2. läsa / skriva till/från önskat registrera platsen
Läs Registreringsfunktionen
read_reg = funktion (själv, dev_addr, reg_addr)
I2C.start(Self.ID)
I2C.address (self.id, dev_addr, i2c. SÄNDAREN)
I2C.write(Self.ID,reg_addr)
I2C.stop(Self.ID)
I2C.start(Self.ID)
I2C.address (self.id, dev_addr, i2c. MOTTAGARE)
c=I2C.Read(Self.ID,2)
I2C.stop(Self.ID)
returnera c
slutet
Läs Färgtemperatur
readTemp = function(self)
h, l = string.byte (self: read_reg(0x1F, 0x05), 1, 2).
H1=bit.band(h,0x1F)
--Kontrollera om Ta > 0C eller Ta < 0C
SGN = bit.band(h,0x10)
--transform - tydligt sjunga lite om Ta < 0C
H2 = bit.band(h1,0x0F)
TP = h2 * 16 + l/16
--SLUTET beräkna temperatur för Ta > 0
returnera tp
slutet