수행기록퀘스트2

Quest 2 제출
2023. 12. 17 (일) 03:02 최종수정 2023. 12. 17 (일) 23:14 자작공작소 조회 978 좋아요 0 스크랩 0 댓글 0

그림. 퀘스트용 IoT 구성

 

□ IoT를 활용한 어떤 문제나 응용 분야에 대한 아이디어 제안

여러 환경 측정 데이터(온도, 습도, 기압, IAQ)를 여러 단말기의 웹브라우저 대시보드 형태로 확인이 가능한 서비스를 제공하여 건강한 삶을 영위할 수 있도록 한다.

 

□ 해당 아이디어가 어떤 가치를 제공하고, 어떤 문제를 해결할 수 있는지에 대한 설명

환경 센서(Bosch Sensortec BME680)에는 여러가지가 있으며 이런 데이터를 중앙 서버에서 수집(influxDB)하여 사용자에게 대시보드 형태로 제공한다.

각 환경 측정기기의 경우 개별 기기별로 측정하고 기기에서만 확인이 가능하지만(일부기기는 전용앱으로 확이 가능) 서버 형태(라즈베리 파이)로 수집하고 웹 브라우저에서 대시보드 형태(node-RED Dashboard, Grafana Dashboard)로 제공하여 데이터를 활용할 수 있는 방법이 다양해 질 수 있다.

 

□ 개발에 필요한 HW/SW적 구성 및 일정 계획

2023. 11. 27 (월) 00:00 ~ 2023. 12. 17 (일) 23:59

- 1주 : 센서 인터페이스 구성 (온도, 습도, 기압, IAQ 센서 데이터를 수집)

- 2주 : 센서 데이터 저장용 DB 서버 구성 (라즈베리파이 상에 DB를 구축하고 센서 데이터 저장)

- 3주 : 센서 데이터 제공용 대시보드 제작 (라즈베리파이 상에 를 사용하여 센서 데이터를 웹페이지로 표시)

 

□ 실행

환경 센서에는 여러가지가 있습니다. 그 중에서 현재 가지고 있는 Bosch Sensortec BME680 가스 센서를 가지고 시작하였습니다.

 

그림. Quest에 사용한 Bosch Sensortec BME680 센서와 Raspberry Pi 3B+

 

센서 인터페이스는 I2C를 사용할 예정이어서 Raspberry Pi 3B+의 시스템 설정에서 I2C가 활성화 되어 있는지 확인하고 와이어를 연결합니다.

센서에서 데이터 수집은 파이썬으로 읽기 위해 아래 위치에서 센서 Library를 설치합니다.

※ Library 설치 : https://github.com/pimoroni/bme680-python

위 Library를 설치하면 기본 사용 예제가 있어 이를 참고하여 센서 데이터를 얻어옵니다.

센서가 제공하는 값은 온도, 상대습도, 대기압, IAQ (VOC) 입니다.

 

다음은 IoT세미나에서 소개해 주신 MQTT, node-RED 환경을 Raspberry Pi에 설정합니다.

※ MQTT 설치 : https://mqtt.org/

※ node-RED, Dashboard 설치 : https://nodered.org/

 

추가로 센서데이터를 저장하기 위한 시계열 데이터베이스인 influxDB와 Grafana Dashboard를 설치합니다.

※ influxDB 설치 : https://www.influxdata.com/

※ Grafana Dashboard 설치 : https://grafana.com/oss/grafana/

 

우선 node-RED Dashboard를 위한 Flow를 만들고 동작을 확인합니다.

그림. node-RED Dashboard용 Flow

 

그림. node-RED Dashboard

 

다음은 센서에서 수집한 데이터를 Database에 저장하고 Grafana Dashboard에 연동하는 작업을 합니다.

influxDB를 설치 후 기본 admin외에 사용자를 추가하고 DB를 생성합니다.

pi@raspberrypi:~ $ influx

Connected to http://localhost:8086 version 1.6.7~rc0

InfluxDB shell version: 1.6.7~rc0

> create database BME_SENSOR_DB

> show databases

name: databases

name

----

_internal

BME_SENSOR_DB

> show users

user admin

---- -----

> CREATE USER pi WITH PASSWORD 'pi' WITH ALL PRIVILEGES

> show users

user admin

---- -----

pi   true

> quit

 

에제 Python코드에서 mqtt로 퍼블리싱 된 센서 데이터를 DB에 넣을 수 있도록 Flow를 작성합니다.

그림. 최종 완성된 node-RED Dashboard 및 Grafana Dashboard용 Flow

 

이제 Grafana Dashboard보드의 UI를 설정합니다. 기본 배치는 node-RED의 기본 Dashboard와 유사한 레이아웃으로 작성합니다.

※ Grafana Dashboard 편집 : http://raspberrypi:3000/

 

최종 완성된 Grafana Dashboard는 아래 그림과 같습니다.

그림. 최종 완성된 Grafana Dashboard

 

새벽이라 온도가 조금씩 내려가고 있고 반비례해서 대기압은 조금씩 높아지고 있습니다.

위 Dashboard는 같은 공유기를 사용하는 휴대폰에서도 동일하게 볼 수 있으며 외부에서 보려면 공유기 포트 설정을 조금 변경해야 합니다.

 

그림. node-RED Dashboard 및 Grafana Dashboard의 휴대폰 접속 화면

 

Grafana Dashboard의 경우 설정할 수 있는 기능이 다양해서 상업용으로 사용해도 좋은 솔루션이라고 생각이 됩니다.

InfluxDB와 Grafana Dashboard의 경우 처음 사용해 보는것이라 세팅하는 것에 시간이 많이 걸렸지만 결과물의 품질이 상당히 만족스러웠습니다.

IoT 데이터의 성격상 일회용으로 소비되는 부분과 동시에 저장하여 빅데이터로 관리해야하는 필요성이 있기 때문에 DB에 저장하여 사용하는 방식이 의미가 있습니다.

이번 Quest를 진행하연서 평소 구현해 보고 싶었던 IoT 구성을 만들어 볼 수 있어서 좋은 기회였다고 생각합니다.

[시연연상]

 

첨부파일
bme680_mqtt.zip 다운로드

로그인 후
참가 상태를 확인할 수 있습니다.