WeMos začal prodávat moduly SHT30 s čidly SHT30-DIS, které komunikují na standardní sběrnici I2C. Dlouho jsem se mořil s tím je zprovoznit, nakonec se to povedlo...
Základní údaje
Interface: I2CAdresy: 0x45 (po vyzkratování propojky ADDR 0x44)
Přesnost měření vlhkosti: ±3%RH
Přesnost měření teploty: ±0.3°C
Pin datového vodiče (SDA): D2
Pin hodin (SCL): D1
Na desce je také vyveden ALERT, který je čip schopen automaticky ovládat podle nastavení vnitřních registrů a měřené teploty. Správně nastavený chip tak nepotřebuje ke své činnosti nadřazený MCU.
Program
Jednoduchý program, který změří a vypíše teplotu a vlhkost.-- SHT30 -- -- https://www.wemos.cc/sites/default/files/2016-11/SHT30-DIS_datasheet.pdf -- init i2c id = 0 sda = 2 -- pin D2 scl = 1 -- pin D1 dev_addr = 0x45 i2c.setup(id, sda, scl, i2c.SLOW) -- -- send command i2c.start(id) i2c.address(id, dev_addr, i2c.TRANSMITTER) i2c.write(id, 0x2C, 0x06) -- HIGH Repeatability, Clock stretching ENABLED i2c.stop(id) -- tmr.delay(13500) -- wait for data measuring (13.5 ms for HIGH Repeatability) -- get data i2c.start(id) i2c.address(id, dev_addr, i2c.RECEIVER) data = i2c.read(id, 6) -- read 6 bytes i2c.stop(id) -- -- calculate temperature and humidity (2 data bytes + 1 checksum byte) temp = ((((data:byte(1) * 256.0) + data:byte(2)) * 175) / 65535.0) - 45 humidity = ((((data:byte(4) * 256.0) + data:byte(5)) * 100) / 65535.0) -- -- print data print("temperature: "..temp.." degC") print("humidity: "..humidity.." %") --
Žádné komentáře:
Okomentovat