Raspberry Pi HTS221 relativ fuktighet och temperatur Sensor Java Tutorial (3 / 4 steg)
Steg 3: kod:
Python koden för HTS221 kan hämtas från vår github repository-ControlEverythingCommunity
Här är länken för samma:
https://github.com/ControlEverythingCommunity/HTS2...
Databladet för HTS221 kan hittas här:
http://www.St.com/Web/en/Resource/Technical/DOCUME...
Vi har använt pi4j bibliotek för java-kod, stegen för att installera pi4j på raspberry pi som beskrivs här:
Du kan också kopiera koden från här, det ges enligt följande:
Distribueras med en fri vilja licens.
Använda det något sätt du vill, vinst eller gratis, förutsatt att den passar i licenser av dess tillhörande arbeten.
HTS221
Denna kod är utformad att fungera med HTS221_I2CS I2C Mini modulen tillgänglig från ControlEverything.com.
https://www.controleverything.com/content/Humidit...
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
allmän klass HTS221 {public static void main (String args[]) kastar undantag
{
Skapa I2CBus
I2CBus buss = I2CFactory.getInstance(I2CBus.BUS_1);
Får I2C enheten, HTS221 I2C adress är 0x5F(95)
I2CDevice device = bus.getDevice(0x5F);
Välj genomsnittliga konfigurationen register
Temperaturen genomsnittliga prover = 16, luftfuktighet genomsnittliga prover = 32
Device.write (0x10, (byte) 0x1B);
SELECT-kontrollen register1
Start, block data update, data rate o/p = 1 Hz
Device.write (0x20, (byte) 0x85);
Thread.Sleep(500);
Läs kalibreringsvärden från icke-flyktigt minne enheten
Fuktighet kalibreringsvärden
byte [] val = nya byte [2].
Läsa data-1 byte från adress 0x30(48)
val [0] = (byte)device.read(0x30);
Läsa data-1 byte från adress 0x31(49)
val [1] = (byte)device.read(0x31);
int H0 = (val [0] & 0xFF) / 2;
int H1 = (val [1] & 0xFF) / 2;
Läsa data-1 byte från adress 0x36(54)
val [0] = (byte)device.read(0x36);
Läsa data-1 byte från adress 0x37(55)
val [1] = (byte)device.read(0x37);
int H2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Läsa data-1 byte från adress 0x3A(58)
val [0] = (byte)device.read(0x3A);
Läsa data-1 byte från adress 0x3B(59)
val [1] = (byte)device.read(0x3B);
int H3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Temperaturen kalibreringsvärden
Läsa data-1 byte från adress 0x32(50)
int T0 = ((byte)device.read(0x32) & 0xFF);
Läsa data-1 byte från adress 0x33(51)
int T1 = ((byte)device.read(0x33) & 0xFF);
Läsa data-1 byte från adress 0x35(53)
int rå = ((byte)device.read(0x35) & 0x0F);
Konvertera temperatur kalibreringsvärden till 10-bitar
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
Läsa data-1 byte från adress 0x3C(60)
val [0] = (byte)device.read(0x3C);
Läsa data-1 byte från adress 0x3D(61)
val [1] = (byte)device.read(0x3D);
int T2 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Läsa data-1 byte från adress 0x3E(62)
val [0] = (byte)device.read(0x3E);
Läsa data-1 byte från adress 0x3F(63)
val [1] = (byte)device.read(0x3F);
int T3 = ((val [1] & 0xFF) * 256) + (val [0] & 0xFF);
Läs 4 byte data
hum msb, hum lsb, temp msb, temp lsb
byte [] data = nya byte [4]. Device.Read (0x28 | 0x80, data, 0, 4);
Konvertera data
int hum = ((data [1] & 0xFF) * 256) + (data [0] & 0xFF);
int temp = ((data [3] & 0xFF) * 256) + (data [2] & 0xFF);
IF(temp > 32767)
{
Temp-= 65536;
}
dubbel fuktighet = ((1.0 * H1)-(1.0 * H0)) * (1.0 * hum - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
Double cTemp = ((T1-T0) / 8.0) * (temp - T2) / (T3 - T2) + (T0 / 8.0);
Double fTemp = (cTemp * 1,8) + 32;
Utdata till skärm
System.out.printf ("relativ luftfuktighet: %.2f %% RH %n", fuktighet);
System.out.printf ("temperaturen i Celsius: %.2f C %n", cTemp);
System.out.printf ("temperaturen i Fahrenheit: %.2f F %n", fTemp);
}
}