실내 환경을 간편하게 모니터링 ~⑩BME280(대용)로부터 온도/습도/기압을 Java로 취득한다(I2C/Pi4J)~

이전에 이 기사에서 소개한 환경 정보를 모니터링하는 간단한 도구는 온도, 습도 및 기압 정보를 Texas Instruments의 SensorTag CC2650에서 가져옵니다. 다만, BLE 환경 센서 태그로서, 오랫동안 세계적으로 알려진 SensorTag CC2650은 생산 중단 때문에, 향후, 입수가 곤란해질 것으로 생각됩니다. 그래서 다른 센서에도 대응하기로 했습니다.

※2020년 12월 16일 현재, SensorTag CC2650의 생산 중지의 기술이 발견되지 않습니다. 이전, 그러한 기술을 보았다고 기억하고 있습니다만… 덧붙여 상기 「텍사스 인스트루먼트사의 SensorTag CC2650」로 링크한 URL의 Wiki는, 2021년 1월 15일에 서포트를 종료한다고 하고, 필요한 파일이나 그 외의 컨텐츠를 다운로드하는 것을 추천합니다 ,입니다.

세상에는 온습도 센서가 많이 존재하고, 어느 것을 선택하면 좋은지 정직 고민합니다. 그때 그때 참고가 되는 정보 를 찾아 결과 Bosch BME280 를 선택했습니다. 합리적인 가격이며 수백 엔으로 사용할 수 있습니다.

BME280 센서란?



이 센서는 온도, 습도, 기압을 측정할 수 있습니다. 덧붙여 온도는 기압의 측정치를 보정하는 용도가 메인과 같습니다만, 절각이므로 값 그 자체도 이용합니다. 인터페이스는 I2C와 SPI를 지원하지만 여기에서는 I2C를 사용합니다. I2C 주소에는 0x76 or 0x77 중 하나를 지정할 수 있습니다. 또한 Raspberry Pi 3B or 4B의 I2C 버스는 01의 두 가지가 있으므로 Raspberry Pi 3B or 4B에서는 BME280을 최대 4개 동시에 사용할 수 있습니다.


작성한 BME280의 Java 라이브러리( bme280-driver )는 Github에서 공개하고 있습니다. OS와 센서의 설정 순서도 써 두었습니다. 또, 이 라이브러리를 짜넣은 환경 정보 모니터링의 간이 툴은, 여기 Github 으로 공개하고 있습니다.

Java 라이브러리의 기본 사용법



bme280-driver 의 간단한 사용법을 보여줍니다. 다음 샘플 코드는 I2C 버스 = 1 , 주소 = 0x76 를 지정합니다.
import com.pi4j.io.i2c.I2CBus;

import io.github.s5uishida.iot.device.bme280.driver.BME280Driver;

public class MyBME280 {
    private static final Logger LOG = LoggerFactory.getLogger(MyBME280.class);

    public static void main(String[] args) {
        BME280Driver bme280 = null;
        try {
            bme280 = BME280Driver.getInstance(I2CBus.BUS_1, BME280Driver.I2C_ADDRESS_76);
            bme280.open();

            while (true) {
                float[] values = bme280.getSensorValues();
                LOG.info("temperature:" + values[0]);
                LOG.info("humidity:" + values[1]);
                LOG.info("pressure:" + values[2]);

                Thread.sleep(10000);
            }
        } catch (InterruptedException e) {
            LOG.warn("caught - {}", e.toString());
        } catch (IOException e) {
            LOG.warn("caught - {}", e.toString());
        } finally {
            if (bme280 != null) {
                bme280.close();
            }
        }
    }
}

이렇게 사용법은 간단합니다. Pi4J 이라는 Raspberry Pi의 GPIO를 사용하기 위해 Java 라이브러리를 사용하여 만들었습니다.

마지막으로



이 Java 라이브러리를 포함하는 단순화된 도구에는 각 센서 값을 대시보드에서 모니터링하는 기능과 JSON 형식으로 MQTT 브로커에 전송하는 기능이 있습니다.

마지막으로, 간단한 도구는 여기 Github 에서 공개하고 있습니다.

일련의 기사



이 시리즈는 다음 기사로 구성됩니다.
1. 동기와 개념
2. Bluetooth LE 광고 신호를 Java로 잡기 (Bluetooth LE / bluez-dbus)
관련 Github은 여기
3. TI SensorTag CC2650에서 온도 / 습도 / 조도 등을 Java로 취득 (Bluetooth LE / bluez-dbus)
관련 Github은 여기
4. MH-Z19B로부터 CO2 농도를 Java로 취득한다 (시리얼 통신 / jSerialComm)
관련 Github은 여기
5. PPD42NS에서 PM2.5 농도를 Java로 얻는다 (GPIO / Pi4J)
관련 Github은 여기
6. 산업 자동화 기기의 가동 정보를 Java로 취득 (OPC-UA / Eclipse Milo)
관련 Github은 여기
7. 간단한 도구로 결합
관련 Github은 여기
8. 후기
9. 모션 검출 (HC-SR501 / RCWL-0516)을 Java로 취득 (GPIO / Pi4J)
관련 Github은 이쪽(HC-SR501)여기 (RCWL-0516) .
10. BME280(대용)으로부터 온도/습도/기압을 Java로 취득한다(I2C/Pi4J)(이번)
관련 Github은 여기
11. BH1750FVI (대용)로부터 조도를 Java로 취득 (I2C / Pi4J)
관련 Github은 여기

좋은 웹페이지 즐겨찾기