Raspberry Pi 3를 원격 모니터링 솔루션에 연결하고 Node.js를 사용하여 원격 펌웨어 업데이트를 사용하도록 설정
이 자습서에서는 Raspberry Pi 3에 대해 Microsoft Azure IoT 스타터 키트를 사용하여 다음을 수행하는 방법을 보여 줍니다.
- 클라우드와 통신할 수 있는 온도 및 습도 판독기를 개발합니다.
- 원격 펌웨어 업데이트를 설정하고 수행하여 Raspberry Pi에서 클라이언트 애플리케이션을 업데이트합니다.
이 자습서에서는 다음을 사용합니다.
- Raspbian OS, Node.js 프로그래밍 언어 및 Node.js용 Microsoft Azure IoT SDK를 사용하여 샘플 디바이스를 구현합니다.
- 클라우드 기반 백 엔드로 미리 구성된 IoT Suite 원격 모니터링 솔루션
개요
이 자습서에서는 다음 단계를 완료합니다.
- Azure 구독에서 미리 구성된 원격 모니터링 솔루션의 인스턴스를 배포합니다. 이 단계에서는 여러 Azure 서비스를 자동으로 배포하고 구성합니다.
- 사용자 컴퓨터 및 원격 모니터링 솔루션과 통신하도록 디바이스 및 센서를 설정합니다.
- 샘플 디바이스 코드를 업데이트하여 원격 모니터링 솔루션에 연결하고 솔루션 대시보드에서 볼 수 있는 원격 분석을 보냅니다.
- 샘플 디바이스 코드를 사용하여 클라이언트 애플리케이션을 업데이트합니다.
사전 요구 사항
이 자습서를 완료하려면 활성 Azure 구독이 필요합니다.
참고
계정이 없는 경우 몇 분 만에 무료 평가판 계정을 만들 수 있습니다. 자세한 내용은 Azure 평가판을 참조하세요.
필수 소프트웨어
Raspberry Pi의 명령줄에 원격으로 액세스할 수 있도록 데스크톱 컴퓨터에 SSH 클라이언트가 필요합니다.
- Windows에서는 SSH 클라이언트를 포함하지 않습니다. PuTTY를 사용하는 것이 좋습니다.
- 대부분의 Linux 배포판 및 Mac OS는 명령줄 SSH 유틸리티를 포함합니다. 자세한 내용은 Linux 또는 Mac OS를 사용하는 SSH를 참조하세요.
필수 하드웨어
Raspberry Pi의 명령줄에 원격으로 연결할 수 있는 데스크톱 컴퓨터이며
Raspberry Pi 3용 Microsoft IoT 시작 키트 또는 동등한 구성 요소입니다. 이 자습서에서는 키트에서 다음 항목을 사용합니다.
- Raspberry Pi 3
- MicroSD 카드(NOOBS 포함)
- USB 미니 케이블
- 이더넷 케이블
- BME280 센서
- 브레드보드
- 점퍼 와이어
- 저항기
- LED
솔루션 프로비전
계정에서 미리 구성된 원격 모니터링 솔루션을 미리 프로비전하지 않은 경우 다음 작업을 수행합니다.
- Azure 계정 자격 증명을 사용하여 azureiotsuite.com에 로그인한 다음, +를 클릭하여 솔루션을 만듭니다.
- 원격 모니터링 타일에서 선택을 클릭합니다.
- 미리 구성된 원격 모니터링 솔루션에 솔루션 이름 을 입력합니다.
- 솔루션을 프로비전하는 데 사용할 지역 및 구독을 선택합니다.
- 솔루션 만들기 를 클릭하여 프로비전 프로세스를 시작합니다. 일반적으로 이 프로세스는 실행하는 데 몇 분 정도 걸립니다.
프로비전 프로세스가 완료될 때까지 대기
- 프로비전 상태인 솔루션 타일을 클릭합니다.
- Azure 서비스가 Azure 구독에 배포될 때 프로비전 상태 입니다.
- 프로비전이 완료되면 준비상태로 바뀝니다.
- 타일을 클릭하여 오른쪽 창에 솔루션의 세부 정보를 표시합니다.
참고
미리 구성된 솔루션을 배포하는 데 문제가 발생하면 azureiotsuite.com 사이트에 대한 사용 권한 및 FAQ를 검토하세요. 문제가 지속되면 포털에서 서비스 티켓을 만듭니다.
목록에는 없지만 솔루션에 대해 참조하고 싶은 세부 정보가 있나요? 사용자 의견에 기능 제안을 보내주세요.
경고
원격 모니터링 솔루션은 Azure 구독에서 Azure 서비스 세트를 프로비저닝합니다. 배포는 실제 엔터프라이즈 아키텍처를 반영합니다. 불필요한 Azure 사용료가 부과되지 않도록 하려면 배포가 완료된 후 azureiotsuite.com에서 미리 구성된 솔루션 인스턴스를 삭제합니다. 미리 구성된 솔루션이 다시 필요하면 쉽게 다시 만들 수 있습니다. 원격 모니터링 솔루션이 실행되는 동안 소비를 감소하는 방법에 대한 자세한 내용은 데모 목적으로 미리 구성된 Azure IoT Suite 솔루션 구성을 참조하세요.
솔루션 대시보드 보기
솔루션 대시보드를 사용하면 배포된 솔루션을 관리할 수 있습니다. 예를 들어 원격 분석 보기, 디바이스 추가 및 메서드 호출 작업을 수행할 수 있습니다.
프로비전이 완료되고 미리 구성된 솔루션에 대한 타일이 준비를 가리키면 시작을 선택하여 새 탭에서 원격 모니터링 솔루션 포털을 엽니다.
기본적으로 솔루션 포털에 대시보드가 표시됩니다. 페이지 왼쪽의 메뉴를 사용하여 솔루션 포털의 다른 영역으로 이동할 수 있습니다.
디바이스 추가
미리 구성된 솔루션에 연결하는 디바이스는 유효한 자격 증명을 사용하여 IoT Hub에 자신을 식별할 수 있어야 합니다. 솔루션 대시보드에서 디바이스 자격 증명을 검색할 수 있습니다. 이 자습서의 뒷부분에서는 클라이언트 애플리케이션에 있는 디바이스 자격 증명을 포함합니다.
원격 모니터링 솔루션에 사용자 지정 디바이스를 추가하지 았다면 추가합니다. 솔루션 대시보드에서 다음 단계를 완료합니다.
대시보드의 왼쪽 아래 모서리에서 디바이스 추가를 클릭합니다.
사용자 지정 디바이스 패널에서 새로 추가를 클릭합니다.
직접 나만의 디바이스 ID 정의를 선택합니다. 디바이스 ID(예: rasppi)를 입력하고 ID 확인을 클릭하여 솔루션에서 해당 이름이 이미 사용되고 있는지 확인한 다음, 만들기를 클릭하여 디바이스를 프로비전합니다.
디바이스 자격 증명(디바이스 ID, IoT Hub 호스트 이름 및 디바이스 키)을 적어 둡니다. 원격 모니터링 솔루션에 연결하려면 Raspberry Pi의 클라이언트 애플리케이션에 다음 값이 필요합니다. 완료를 클릭합니다.
솔루션 대시보드의 디바이스 목록에서 디바이스를 선택합니다. 그런 다음, 디바이스 세부 정보 패널에서 디바이스 사용을 클릭합니다. 현재 디바이스 상태는 실행 중입니다. 이제 원격 모니터링 솔루션은 디바이스에서 원격 분석을 수신하고 디바이스에서 메서드를 호출할 수 있습니다.
Raspberry Pi 준비
Raspbian 설치
처음으로 Raspberry Pi를 사용하는 경우 키트에 포함된 SD 카드에서 NOOBS를 사용하여 Raspbian 운영 체제를 설치해야 합니다. Raspberry Pi 소프트웨어 가이드는 Raspberry Pi에 운영 체제를 설치하는 방법을 설명합니다. 이 자습서에서는 Raspberry Pi에 Raspbian 운영 체제를 설치했다고 가정합니다.
참고
Raspberry Pi 3용 Microsoft Azure IoT 시작 키트에 포함된 SD 카드에는 이미 NOOBS가 설치되어 있습니다. 이 카드에서 Raspberry Pi를 부팅할 수 있으며 Raspbian OS를 설치할 수 있습니다.
하드웨어 설정
이 자습서에서는 Raspberry Pi 3용 Microsoft Azure IoT 시작 키트에 포함된 BME280 센서를 사용하여 원격 분석 데이터를 생성합니다. Raspberry Pi 솔루션 대시보드에서 메서드 호출을 처리하는 경우를 나타내는 데 LED를 사용합니다.
브레드보드의 구성 요소는 다음과 같습니다.
- 빨강 LED
- 220옴 저항기(빨강, 빨강, 밤색)
- BME280 센서
다음 다이어그램에서는 하드웨어를 연결하는 방법을 보여 줍니다.
다음 표에서는 Raspberry Pi에서 브레드보드의 구성 요소로의 연결을 요약합니다.
Raspberry Pi | 브레드보드 | Color |
---|---|---|
GND(14 핀) | LED -ve 핀(18A) | 보라 |
GPCLK0(7 핀) | 저항기(25A) | Orange |
SPI_CE0(24 핀) | CS(39A) | 파랑 |
SPI_SCLK(23 핀) | SCK(36A) | 노란색 |
SPI_MISO(21 핀) | SDO(37A) | 흰색 |
SPI_MOSI(19 핀) | SDI(38A) | 녹색 |
GND(6 핀) | GND(35A) | 검정 |
3.3V(1 핀) | 3Vo(34A) | 빨간색 |
하드웨어 설정을 완료하려면 다음을 수행해야 합니다.
- Raspberry Pi를 키트에 포함된 전원 공급 장치에 연결합니다.
- 키트에 포함된 이더넷 케이블을 사용하여 Raspberry Pi를 네트워크에 연결합니다. 또는 Raspberry Pi에 대해 무선 연결을 설정할 수 있습니다.
이제 Raspberry Pi의 하드웨어 설정을 완료했습니다.
터미널 로그인 및 액세스
Raspberry Pi의 터미널 환경에 액세스하는 두 가지 옵션이 있습니다.
키보드 및 모니터가 Raspberry Pi에 연결된 경우 Raspbian GUI를 사용하여 터미널 창에 액세스할 수 있습니다.
데스크톱 컴퓨터에서 SSH를 사용하여 Raspberry Pi의 명령줄에 액세스합니다.
GUI에서 터미널 창 사용
Raspbian에 대한 기본 자격 증명은 사용자 이름 pi 및 암호 raspberry입니다. GUI의 작업 표시줄에서 모니터 모양의 아이콘을 사용하여 터미널 유틸리티를 시작할 수 있습니다.
SSH를 사용하여 로그인
Raspberry Pi에 명령줄 액세스를 위해 SSH를 사용할 수 있습니다. SSH(Secure Shell) 문서에서는 Raspberry Pi에서 SSH를 구성하는 방법 및 Windows 또는 Linux 및 Mac OS에서 연결하는 방법을 설명합니다.
사용자 이름 pi 및 암호 raspberry로 로그인합니다.
선택 사항: Raspberry Pi의 폴더 공유
필요에 따라 다음 데스크톱 환경을 사용하여 Raspberry Pi의 폴더를 공유할 수 있습니다. 폴더를 공유하면 nano
또는 vi
을 사용하는 대신 원하는 데스크톱 텍스트 편집기(예: Visual Studio Code 또는 Sublime Text)를 사용하여 Raspberry Pi의 파일을 편집할 수 있습니다.
Windows 폴더를 공유하려면 Raspberry Pi Samba 서버를 구성합니다. 데스크톱에서 SFTP 클라이언트를 포함한 기본 제공 SFTP 서버를 사용합니다.
SPI 사용
샘플 애플리케이션을 실행하기 전에 Raspberry Pi에서 SPI(Serial Peripheral Interface) 버스를 사용하도록 설정해야 합니다. Raspberry Pi는 SPI 버스를 통해 BME280 센서 디바이스와 통신합니다. 다음 명령을 사용하여 구성 파일을 편집합니다.
sudo nano /boot/config.txt
다음과 같은 줄을 찾습니다.
#dtparam=spi=on
줄의 주석 처리를 제거하려면 시작 부분에서
#
을 삭제합니다.변경 내용을 저장하고(Ctrl-O, Enter) 편집기를 종료합니다(Ctrl-X).
SPI를 사용하려면 Raspberry Pi를 다시 부팅합니다. 다시 부팅하면 터미널의 연결이 끊어지므로 Raspberry Pi를 다시 시작할 경우 다시 로그인해야 합니다.
sudo reboot
샘플 다운로드 및 구성
이제 Raspberry Pi에서 원격 모니터링 클라이언트 애플리케이션을 다운로드하고 구성할 수 있습니다.
Node.js 설치
아직 그렇게 하지 않은 경우 Raspberry Pi에 Node.js를 설치합니다. Node.js용 IoT SDK에는 Node.js 0.11.5 이상 버전의 Node.js가 필요합니다. 다음 단계에서는 Raspberry Pi에 Node.js v6.10.2를 설치하는 방법을 보여 줍니다.
다음 명령을 사용하여 Raspberry Pi를 업데이트합니다.
sudo apt-get update
다음 명령을 사용하여 Raspberry Pi에 Node.js 이진 파일을 다운로드합니다.
wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-armv7l.tar.gz
다음 명령을 사용하여 이진 파일을 설치합니다.
sudo tar -C /usr/local --strip-components 1 -xzf node-v6.10.2-linux-armv7l.tar.gz
다음 명령을 사용하여 Node.js v6.10.2를 성공적으로 설치했는지 확인합니다.
node --version
리포지토리 복제
아직 해당 작업을 수행하지 않은 경우 Pi에서 다음 명령을 실행하여 필요한 리포지토리를 복제합니다.
cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit.git
디바이스 연결 문자열 업데이트
다음 명령을 사용하여 nano 편집기에서 샘플 구성 파일을 엽니다.
nano ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/config/deviceinfo
자리 표시자 값을 이 자습서를 시작할 때 만들어 저장한 디바이스 ID 및 IoT Hub 정보로 바꿉니다.
완료되면 deviceinfo 파일 내용이 다음과 같이 표시됩니다.
yourdeviceid
HostName=youriothubname.azure-devices.net;DeviceId=yourdeviceid;SharedAccessKey=yourdevicekey
변경 내용을 저장하고(Ctrl-O, Enter) 편집기를 종료합니다(Ctrl-X).
샘플 실행
다음 명령을 실행하여 이 샘플에 대한 필수 구성 요소 패키지를 설치합니다.
cd ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advance/1.0
npm install
이제 Raspberry Pi에서 샘플 프로그램을 실행할 수 있습니다. 다음 명령을 입력합니다.
sudo node ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/1.0/remote_monitoring.js
다음 샘플 출력은 Raspberry Pi의 명령 프롬프트에 표시되는 출력의 예입니다.
Ctrl+C를 눌러 언제든지 프로그램을 종료합니다.
원격 분석 보기
이제 Raspberry Pi는 원격 분석을 원격 모니터링 솔루션으로 전송합니다. 솔루션 대시보드에서 원격 분석을 볼 수 있습니다. 솔루션 대시보드에서 Raspberry Pi로 메시지를 보낼 수 있습니다.
- 솔루션 대시보드로 이동합니다.
- 볼 디바이스 드롭다운에서 디바이스를 선택합니다.
- Raspberry Pi의 원격 분석은 대시보드에 표시됩니다.
펌웨어 업데이트 시작
펌웨어 업데이트 프로세스는 Raspberry Pi에 업데이트된 버전의 디바이스 클라이언트 애플리케이션을 다운로드하고 설치합니다. 펌웨어 업데이트 프로세스에 대한 자세한 내용은 IoT Hub를 사용한 디바이스 관리 개요에서 펌웨어 업데이트 패턴 설명을 참조하세요.
디바이스에서 메서드를 호출하여 펌웨어 업데이트 프로세스를 시작합니다. 이 메서드는 비동기적이고 업데이트 프로세스를 시작하는 즉시 반환됩니다. 디바이스는 보고된 속성을 사용하여 업데이트의 진행률에 대한 솔루션을 알려 줍니다.
솔루션 대시보드의 Raspberry Pi에 대한 메서드를 호출할 수 있습니다. Raspberry Pi가 먼저 원격 모니터링 솔루션에 연결되는 경우 지원되는 메서드에 대한 정보를 보냅니다.
솔루션 대시보드에서 디바이스를 클릭하여 디바이스 페이지로 이동합니다. 디바이스 목록에서 Raspberry Pi를 선택합니다. 그런 다음 메서드를 선택합니다.
메서드 호출 페이지의 메서드 드롭다운에서 InitiateFirmwareUpdate를 선택합니다.
FWPackageURI 필드에 https://raw.githubusercontent.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit/master/advanced/2.0/raspberry.js를 입력합니다. 이 파일에는 펌웨어 버전 2.0 구현이 포함됩니다.
InvokeMethod를 선택합니다. Raspberry Pi의 앱은 솔루션 대시보드로 승인 메시지를 전송합니다. 그런 다음 새 버전의 펌웨어를 다운로드하여 펌웨어 업데이트 프로세스를 시작합니다.
펌웨어 업데이트 프로세스 확인
디바이스에서 실행될 때, 솔루션 대시보드에서 보고된 속성을 검토하여 펌웨어 업데이트 프로세스를 확인할 수 있습니다.
Raspberry Pi에서 업데이트 프로세스의 진행률을 볼 수 있습니다.
참고
업데이트가 완료되면 원격 모니터링 앱이 자동으로 다시 시작됩니다.
ps -ef
명령을 사용하여 실행 중인지 확인합니다. 프로세스를 종료하려면 프로세스 ID와 함께kill
명령을 사용합니다.디바이스에서 보고하는 펌웨어 업데이트의 상태를 솔루션 포털에서 볼 수 있습니다. 다음 스크린샷은 각 업데이트 프로세스 단계의 상태 및 기간과 새로운 펌웨어 버전을 보여 줍니다.
대시보드를 다시 이동하여 디바이스가 펌웨어 업데이트 후에도 계속 원격 분석을 보내는 것을 확인할 수 있습니다.
경고
Azure 계정에서 원격 모니터링 솔루션을 실행하는 경우 실행하는 동안 요금이 청구됩니다. 원격 모니터링 솔루션이 실행되는 동안 소비를 감소하는 방법에 대한 자세한 내용은 데모 목적으로 미리 구성된 Azure IoT Suite 솔루션 구성을 참조하세요. 사용을 마친 경우 Azure 계정에서 미리 구성된 솔루션을 삭제합니다.
다음 단계
Azure IoT에 대한 추가 샘플 및 설명서를 보려면 Azure IoT 개발자 센터를 방문하세요.