라즈베리 파이에서 GY-91 모듈로 견고한 온도 및 센서 API 구축하기
라즈베리 파이에서 플라스크(Flask) API를 만들어 GY-91 멀티 센서 모듈로부터 온도, 기압, 습도 등을 읽는 방법을 배워보세요. 이 가이드는 배선, 소프트웨어 설정, 자체 프로젝트에 적용 가능한 샘플 코드를 안내합니다.
GPIO로 센서 연결
GY-91 보드는 4핀 I²C 인터페이스를 사용합니다. 핀을 다음과 같이 연결하세요:
- 3.3V → 핀 1 (3V3POWER)
- GND → 핀 6 (GROUND)
- SCL → 핀 5 (I²C Clock)
- SDA → 핀 3 (I²C Data)
정확한 핀 색상과 레이아웃은 GY-91 회로도를 참조하세요.
파이썬 의존성 준비
라즈베리 파이에 파이썬 3을 설치하세요. 다음 명령으로 최신 3.6.x 릴리스를 소스에서 설치해 센서 라이브러리에 필요한 모든 라이브러리를 확보하세요.
$ sudo apt-get update
$ sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
$ wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
$ tar xf Python-3.6.5.tar.xz
$ cd Python-3.6.5
$ ./configure
$ make
$ sudo make altinstall
다음으로 센서 데이터를 노출할 경량 웹 스택을 설치하세요:
$ pip3 install flask flask-cors flask-restful
샘플 코드
최소 플라스크 API 스켈레톤과 센서 래퍼가 포함된 바로 실행 가능한 저장소를 복제하세요.
$ git clone https://gist.github.com/wdelenclos/4f0c4b8d564aa5c58f47653fd184eaa7
프로그램의 핵심은 bme280 드라이버에서 데이터를 가져오며, 이는 다시 GY-91 보드의 MPU9250과 BMP280 칩과 통신합니다. 단 한 줄로 모든 관련 판독값을 가져옵니다:
temperature, pressure, humidity = bme280.readBME280All()
다른 모든 라우트는 최신 센서 값을 JSON으로 반환하는 표준 플라스크 핸들러입니다.
API 실행
로컬에서 서버 시작:
$ python3 app.py
백그라운드에서 서비스를 계속 실행하려면:
$ sudo nohup python3 app.py &
데모
실행 후 https://your-pi-ip:5000/status에 접속해 센서 판독값의 실시간 JSON 페이로드를 확인하세요. 원본 페이지의 예제는 이 엔드포인트를 Ajax로 가져와 웹 대시보드에 표시하는 방법을 보여줍니다.
댓글로 추가 설명이나 커스터마이징을 요청하세요.
출처: Environmental sensor API with a RPi