Sommario:

Esercitazione Java sul sensore di umidità relativa e temperatura Raspberry Pi HTS221: 4 passaggi
Esercitazione Java sul sensore di umidità relativa e temperatura Raspberry Pi HTS221: 4 passaggi

Video: Esercitazione Java sul sensore di umidità relativa e temperatura Raspberry Pi HTS221: 4 passaggi

Video: Esercitazione Java sul sensore di umidità relativa e temperatura Raspberry Pi HTS221: 4 passaggi
Video: Raspberry Pi SI7021 Humidity & Temperature Java Sensor Tutorial 2024, Novembre
Anonim
Image
Image

HTS221 è un sensore digitale capacitivo ultra compatto per umidità relativa e temperatura. Include un elemento di rilevamento e un circuito integrato specifico per applicazioni a segnale misto (ASIC) per fornire le informazioni di misurazione tramite interfacce seriali digitali. Integrato con così tante funzioni, questo è uno dei sensori più appropriati per misurazioni critiche di umidità e temperatura. Ecco la dimostrazione con un codice java utilizzando Raspberry Pi.

Passaggio 1: ciò di cui hai bisogno.

Quello di cui hai bisogno..!!
Quello di cui hai bisogno..!!

1. Lampone Pi

2. HTS221

3. Cavo I²C

4. Scudo I²C per Raspberry Pi

5. Cavo Ethernet

Passaggio 2: connessioni:

Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
Connessioni
Connessioni

Prendi uno scudo I2C per lampone pi e spingilo delicatamente sui pin gpio di lampone pi.

Quindi collegare un'estremità del cavo I2C al sensore HTS221 e l'altra estremità allo schermo I2C.

Collega anche il cavo Ethernet al pi oppure puoi utilizzare un modulo WiFi.

I collegamenti sono mostrati nell'immagine sopra.

Passaggio 3: codice:

Codice
Codice

Il codice Python per HTS221 può essere scaricato dal nostro repository github-Dcube Store

Ecco il link per lo stesso:

github.com/DcubeTechVentures/HTS221/blob/master/Java/HTS221.java

Abbiamo usato la libreria pi4j per il codice java, i passaggi per installare pi4j su raspberry pi sono descritti qui:

pi4j.com/install.html

Puoi anche copiare il codice da qui, è fornito come segue:

// Distribuito con una licenza libera.

// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che rientri nelle licenze delle opere associate.

// HTS221

// Questo codice è progettato per funzionare con il Mini Modulo HTS221_I2CS I2C.

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;

public class HTS221{ public static void main(String args) genera un'eccezione

{

// Crea I2CBus

I2CBus bus = I2CFactory.getInstance(I2CBus. BUS_1);

// Ottieni il dispositivo I2C, l'indirizzo I2C di HTS221 è 0x5F(95)

I2CDevice device = bus.getDevice(0x5F);

// Seleziona il registro di configurazione medio

// Campioni medi di temperatura = 16, campioni medi di umidità = 32

device.write(0x10, (byte)0x1B);

// Seleziona il registro di controllo1

// Accensione, blocco aggiornamento dati, velocità dati o/p = 1 Hz

device.write(0x20, (byte)0x85);

Thread.sleep(500);

// Legge i valori di calibrazione dalla memoria non volatile del dispositivo

// Valori di calibrazione dell'umidità

byte val = nuovo byte[2];

// Legge 1 byte di dati dall'indirizzo 0x30(48)

val[0] = (byte)device.read(0x30);

// Legge 1 byte di dati dall'indirizzo 0x31(49)

val[1] = (byte)device.read(0x31);

int H0 = (val[0] & 0xFF) / 2;

int H1 = (val[1] & 0xFF) / 2;

// Legge 1 byte di dati dall'indirizzo 0x36(54)

val[0] = (byte)device.read(0x36);

// Legge 1 byte di dati dall'indirizzo 0x37(55)

val[1] = (byte)device.read(0x37);

int H2 = ((val[1] & 0xFF) * 256) + (val[0] & 0xFF);

// Legge 1 byte di dati dall'indirizzo 0x3A(58)

val[0] = (byte)device.read(0x3A);

// Legge 1 byte di dati dall'indirizzo 0x3B(59)

val[1] = (byte)device.read(0x3B);

int H3 = ((val[1] & 0xFF) * 256) + (val[0] & 0xFF);

// Valori di calibrazione della temperatura

// Legge 1 byte di dati dall'indirizzo 0x32(50)

int T0 = ((byte)device.read(0x32) & 0xFF);

// Legge 1 byte di dati dall'indirizzo 0x33(51)

int T1 = ((byte)device.read(0x33) & 0xFF);

// Legge 1 byte di dati dall'indirizzo 0x35(53)

int raw = ((byte)device.read(0x35) & 0x0F);

// Converti i valori di calibrazione della temperatura a 10 bit

T0 = ((grezzo & 0x03) * 256) + T0;

T1 = ((grezzo & 0x0C) * 64) + T1;

// Legge 1 byte di dati dall'indirizzo 0x3C(60)

val[0] = (byte)device.read(0x3C);

// Legge 1 byte di dati dall'indirizzo 0x3D(61)

val[1] = (byte)device.read(0x3D);

int T2 = ((val[1] & 0xFF) * 256) + (val[0] & 0xFF);

// Legge 1 byte di dati dall'indirizzo 0x3E(62)

val[0] = (byte)device.read(0x3E);

// Legge 1 byte di dati dall'indirizzo 0x3F(63)

val[1] = (byte)device.read(0x3F);

int T3 = ((val[1] & 0xFF) * 256) + (val[0] & 0xFF);

// Legge 4 byte di dati

// ronzio msb, ronzio lsb, temp msb, temp lsb

byte dati = nuovo byte[4]; device.read(0x28 | 0x80, data, 0, 4);

// Converti i dati

int ronzio = ((data[1] & 0xFF) * 256) + (data[0] & 0xFF);

int temp = ((data[3] & 0xFF) * 256) + (data[2] & 0xFF);

if(temp > 32767)

{

temperatura -= 65536;

}

doppia umidità = ((1.0 * H1) - (1.0 * H0)) * (1.0 * ronzio - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

doppia cTemp = ((T1 - T0) / 8.0) * (temp - T2) / (T3 - T2) + (T0 / 8.0);

doppia fTemp = (cTemp * 1.8) + 32;

// Invia i dati allo schermo

System.out.printf("Umidità relativa: %.2f %% RH %n", umidità);

System.out.printf("Temperatura in gradi Celsius: %.2f C %n", cTemp);

System.out.printf("Temperatura in Fahrenheit: %.2f F %n", fTemp);

}

}

Passaggio 4: applicazioni:

HTS221 può essere impiegato in vari prodotti di consumo come umidificatori d'aria e frigoriferi, ecc. Questo sensore trova anche la sua applicazione in un'arena più ampia tra cui l'automazione domestica intelligente, l'automazione industriale, le apparecchiature respiratorie, il monitoraggio di beni e beni.

Consigliato: