초보자 IoT 튜토리얼: 라즈베리 파이에서 온도 데이터 스트리밍하기
"Hello World!" – 이는 코딩을 배울 때 처음 작성한 프로그램의 출력일 것입니다. 온도 데이터를 스트리밍하도록 장치를 설정하는 것은 빠르게 IoT(사물인터넷) 버전 "Hello World!" 프로젝트가 되고 있습니다. 처음 "Hello World!"를 출력하는 것이 길고 답답한 일이었다면 다시는 프로그램을 작성하지 않았을지도 모릅니다. 여러분의 첫 IoT 프로젝트는 얼굴에 큰 미소를 짓게 해야 합니다. 이 재미있고 쉬운 프로젝트로 IoT 데이터 스트리밍의 멋진 세계를 만나보세요.
이 프로젝트 전체의 비디오 튜토리얼은 다음에서 볼 수 있습니다:
https://youtu.be/HMqPbfvCshs
필요한 준비물:
- 인터넷에 연결된 라즈베리 파이 또는 선택한 단일 보드 컴퓨터.
- DS18B20 온도 센서 (https://www.adafruit.com/product/381).
- 간단한 회로 배선용 브레드보드 (Adafruit 파이 스타터 키트 포함).
- 4.7K~10K 저항 (Adafruit 파이 스타터 키트 포함).
1단계: 하드웨어 설정
DS18B20 온도 센서는 디지털 출력을 가지며 파이에는 온보드 ADC가 없기 때문에 라즈베리 파이와 잘 작동합니다. 라즈비안에는 센서 출력을 읽는 인터페이스가 포함되어 있습니다. 온도를 가져와 파싱하는 약간의 코드만 작성하면 됩니다. Adafruit에 이를 사용하는 훌륭한 튜토리얼이 있으니 화면에 출력하는 대신 스트리밍하도록 수정해 따라해 보겠습니다.
하드웨어 설정은 간단합니다. DS18B20 빨간 선을 3.3V, 검은 선을 GND, 파란 선을 풀업 저항과 파이의 GPIO 4번 핀에 연결하세요.
2단계: 온도 읽기
온도 센서 읽기 인터페이스를 시작하려면 두 명령을 실행해야 합니다. 파이의 명령 프롬프트로 가거나 SSH로 접속하세요. 다음 명령을 입력하세요:
sudo modprobe w1-gpio
sudo modprobe w1-therm
이제 온도 센서 출력이 파이의 파일에 기록됩니다. 해당 파일을 찾으려면
cd /sys/bus/w1/devices
이 디렉터리에 "28-"로 시작하는 하위 디렉터리가 있습니다. "28-" 뒤에 오는 것이 센서의 일련번호입니다. 그 디렉터리로 cd 하세요. 안에는 w1_slave라는 파일이 있는데 여기에 센서 출력이 들어 있습니다. 파일 내용은 대략 다음과 같습니다:
a2 01 4b 46 7f ff 0e 10 d8 : crc=d8 YES
a2 01 4b 46 7f ff 0e 10 d8 t=26125
"t=" 뒤의 숫자가 원하는 값입니다. 이는 1/1000 도 섭씨 단위의 온도입니다(위 예시에서는 26.125°C). 이 파일을 읽고 해당 숫자를 파싱하는 간단한 프로그램이 필요합니다. 다행히 Adafruit가 이미 이를 수행하고 화면에 온도를 출력하는 파이썬 스크립트를 만들었습니다. 파이에 새 파일(예: temperature.py)을 만들고 다음 코드를 복사-붙여넣기 하세요:
여기를 클릭해 코드 보기
스크립트 실행("sudo python temperature.py")으로 화면에 온도 센서 출력을 확인하세요.
3단계: 온도 스트리밍
여기서 Adafruit 튜토리얼에서 벗어납니다. 화면에 온도를 보내는 것은 지루합니다. 현재 온도뿐만 아니라 기록된 온도 이력도 볼 수 있고(텍스트로 된 온도 뭉치를 '읽고' 싶은 사람은 없죠; 예쁜 데이터 시각화를 원하니까) 어딘가로 데이터를 스트리밍하고 싶습니다. 먼저 Initial State 스트리머를 설치해 온도 측정값의 목적지를 만드세요 (설정 방법은 여기로; 매우 쉽고 2분도 안 걸립니다). 위 스크립트를 수정해 화면 출력 대신 Initial State 계정으로 온도를 스트리밍합니다. 수정 사항:
여기를 클릭해 코드 보기
Initial State 계정과 연결된 클라이언트 키를 6번 줄의 따옴표 사이에 복사-붙여넣기 하세요. 계정 설정이나 로그인 후 랜딩 페이지에서 클라이언트 키를 찾을 수 있습니다.
방금 만든 수정 사항:
- 4번 줄: Initial State 데이터 스트리머 모듈 임포트.
- 6번 줄: "Temperature Stream"이라는 새 버킷을 생성하고 클라이언트 키로 계정과 연결.
- 30번 줄: read_temp() 함수가 섭씨 온도만 반환하도록 수정.
- 34번 줄: read_temp() 출력을 화씨로 변환.
- 35, 36번 줄: 두 온도를 스트리밍.
자세한 내용: IoT 101 Project: Stream Temperature from your Raspberry Pi