Raspberry Pi를 사용하여 Sense HAT로 온도를 모니터링하는 방법

라즈베리 파이를 이용한 온도 모니터링 방법

기상 관측 장비 구축의 일환으로 라즈베리 파이 단일 보드 컴퓨터를 활용하여 주변 온도를 측정하는 여러 방법이 존재합니다. 라즈베리 파이의 GPIO 핀에 직접 연결되는 외부 센서도 유용하지만, 여기에서는 Sense HAT가 장착된 라즈베리 파이를 사용하여 온도를 측정하는 방법에 대해 자세히 알아보겠습니다.

Sense HAT란 무엇일까요?


출처: 라즈베리 파이

라즈베리 파이 재단에서 설계 및 생산한 공식 하드웨어 애드온 보드인 Sense HAT는 본래 국제 우주 정거장의 우주비행사들을 위해 개발되었습니다. 2015년부터 두 대의 Sense HAT가 장착된 라즈베리 파이 컴퓨터가 과학 프로그램에 참여하는 학생들이 고안한 과학 실험에 사용되었으며, 아스트로 파이 프로젝트 이후에는 라즈베리 파이 4를 기반으로 고화질 카메라가 탑재된 업그레이드 버전으로 교체되었습니다.


출처: 라즈베리 파이

표준 Sense HAT 보드는 우주용 특수 은색 케이스는 없지만 기능은 동일합니다. 40핀 GPIO 헤더를 갖춘 모든 라즈베리 파이 모델과 호환되며, 주변 환경 모니터링 및 자체 방향과 움직임을 감지하는 다양한 온보드 센서를 제공합니다. 또한 텍스트, 데이터, 이미지 표시를 위한 8×8 RGB LED 매트릭스와 미니 5방향 조이스틱을 갖추고 있습니다.

Sense HAT의 주요 센서 기능은 다음과 같습니다.

  • 습도: STMicro HTS221 센서를 사용하여 0~100% 상대 습도 범위와 0°C~65°C ± 2°C(32°F~149°F)의 온도 감지 기능을 제공합니다.
  • 기압: STMicro LPS25HB 센서를 통해 260~1260hPa 범위와 15°C~40°C ±0.5°C(59°F~104°F)의 온도 감지 기능을 제공합니다.
  • 온도: 습도 또는 압력 센서로부터 읽거나 두 판독값의 평균을 내어 측정할 수 있습니다.
  • 자이로스코프: STMicro LSM9DS1 IMU를 사용하여 지구 표면을 기준으로 Sense HAT의 회전 및 회전 속도를 측정합니다.
  • 가속도계: IMU의 추가 기능으로 다양한 방향에서 가속도를 측정할 수 있습니다.
  • 자력계: IMU는 지구 자기장을 감지하여 자기 북쪽 방향을 파악하고 나침반 판독값을 제공합니다.

이제 이 다재다능한 라즈베리 파이 HAT가 무엇을 할 수 있는지 자세히 살펴보았으므로 프로젝트를 시작해 보겠습니다.

1단계: Sense HAT 장착

Sense HAT를 연결하기 전에 라즈베리 파이가 꺼져 있고 전원이 분리되어 있는지 확인하세요. 그런 다음 제공된 검정색 헤더 확장기가 장착된 상태에서 Sense HAT를 라즈베리 파이의 40핀 GPIO 헤더 위로 조심스럽게 밀어 넣습니다. Sense HAT 보드가 라즈베리 파이 보드 위에 정확히 위치하도록 하고 모든 핀이 올바르게 정렬되어 있는지 확인하세요. 나사형 스탠드오프를 사용하여 고정할 수도 있습니다.

40핀 GPIO 헤더를 갖춘 모든 표준 라즈베리 파이 모델을 사용할 수 있습니다. 하지만 라즈베리 파이 400의 경우 GPIO 헤더가 내장 키보드 뒤쪽에 있어 Sense HAT를 직접 장착하기 어렵습니다. 이 경우 GPIO 확장 케이블을 사용하여 연결할 수 있습니다.

2단계: 라즈베리 파이 설정

다른 프로젝트와 마찬가지로 USB 키보드와 마우스를 연결하고 라즈베리 파이를 모니터나 TV에 연결해야 합니다. 표준 라즈베리 파이 OS가 설치된 microSD 카드도 삽입되어 있어야 합니다. 아직 설치하지 않았다면 라즈베리 파이에 운영 체제를 설치하는 방법을 확인하세요. 이제 전원을 켤 준비가 되었습니다.

또는 모니터 없이 헤드리스 모드로 Sense HAT와 함께 라즈베리 파이를 사용하고 다른 컴퓨터나 장치에서 SSH를 사용하여 원격으로 라즈베리 파이에 연결할 수도 있습니다. 이 경우 Thonny Python IDE를 사용할 수 없으며 nano 텍스트 편집기를 사용하여 프로그램을 편집하고 명령줄에서 실행해야 합니다.

Sense HAT 펌웨어는 기본적으로 설치되어야 합니다. 확인하려면 터미널 창을 열고 다음 명령을 입력하세요:

 sudo apt install sense-hat 

패키지가 새로 설치된 경우 라즈베리 파이를 재부팅합니다:

 sudo reboot 

3단계: Python 프로그래밍 시작

스크래치 블록 기반 프로그래밍 언어로 라즈베리 파이 Sense HAT를 사용할 수도 있지만, 여기서는 Python을 사용하여 센서 판독값을 읽고 표시합니다.

Thonny IDE(통합 개발 환경)는 디버깅 기능을 포함하여 많은 유용한 기능을 제공하므로 라즈베리 파이에서 Python 프로그래밍을 하기에 적합한 선택입니다. 라즈베리 파이 OS 데스크톱 GUI에서 메뉴(왼쪽 상단 라즈베리 아이콘) > 프로그래밍 > Thonny IDE를 선택하여 실행하세요.

4단계: 온도 측정

Thonny IDE의 메인 창에 다음 코드를 입력합니다:

 
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp)

첫 번째 줄은 `sense_hat` Python 라이브러리(라즈베리 파이 OS에 사전 설치됨)에서 `SenseHat` 클래스를 가져옵니다. 그런 다음 이 클래스의 객체가 `sense` 변수에 할당됩니다. 세 번째 줄은 Sense HAT의 LED 매트릭스를 초기화합니다.

온도 판독값은 Thonny IDE의 쉘 영역에 출력됩니다. 이는 섭씨 단위이므로 화씨로 변환하는 것이 더 편리할 수 있습니다.

 temp = (sense.get_temperature() * 1.8 + 32) 

온도 센서 판독값은 소수점 이하 여러 자리로 나타날 수 있습니다. 따라서 `round` 함수를 사용하여 소수점 첫째 자리까지 반올림합니다.

 temp = round(temp, 1) 

`sense.get_temp()` 함수는 습도 센서에 내장된 온도 센서의 값을 읽습니다. `sense.get_temp_from_press()`를 사용하여 압력 센서에서 온도 판독값을 가져오거나 두 판독값의 평균을 계산하여 사용할 수도 있습니다.

5단계: Sense HAT에 온도 표시

Python 쉘에 단일 온도 판독값을 출력하는 것은 다소 번거로우므로, 정기적으로 새로운 판독값을 가져와 Sense HAT의 RGB LED 매트릭스에 표시해 보겠습니다. 스크롤되는 텍스트 메시지를 표시하려면 `show_message` 함수를 사용합니다. `while True` 루프를 사용하여 10초마다 새로운 값을 계속 읽습니다. 이를 위해 `time` 라이브러리의 `sleep` 함수를 활용합니다.

전체 프로그램은 다음과 같습니다.

from sense_hat import SenseHat
from time import sleep

sense = SenseHat()
sense.clear()

while True:
    temp = (sense.get_temperature() * 1.8 + 32)
    temp = round(temp, 1)
    message = "Temp: " + str(temp)
    sense.show_message(message)
    sleep (10)

이 코드를 실행하면 LED 매트릭스에 스크롤되는 각각의 새로운 온도 판독값을 확인할 수 있습니다. Sense HAT에 숨을 불어 온도가 변화하는지 확인해 보세요.

온도 판독값은 바로 아래에 있는 라즈베리 파이의 CPU에서 발생하는 열의 영향을 받을 수 있으므로 더욱 정확한 측정을 위해서는 조정이 필요할 수 있습니다. 스태킹 헤더를 사용하여 Sense HAT를 라즈베리 파이보다 높게 위치시키는 것도 한 가지 방법입니다.

라즈베리 파이를 활용한 온도 모니터링

이 프로젝트에서는 독립적인 온도 센서를 사용할 수도 있지만, Sense HAT를 사용하면 라즈베리 파이를 이용하여 온도를 쉽게 모니터링할 수 있습니다. 또한 이를 통해 기압 및 상대 습도와 같은 다양한 센서 값을 측정하고 LED 매트릭스에 표시할 수 있습니다.