- 전제 조건
- 필수 구성 요소
- Raspberry Pi에 Node-RED 설치
- Raspberry Pi에서 Node-RED 실행
- Node-RED 인터페이스 이해
- 회로도
- Node-RED에서 흐름 생성
- Raspberry Pi를 사용하여 Node-RED 인터페이스에 푸시 버튼 / 스위치 추가
코드를 작성하거나 코딩없이 실용적인 고급 프로젝트를 빌드 할 필요없이 IoT 솔루션의 간단한 프로토 타입 을 만들 수있는 방법이 있는지 궁금한 적이 있습니다. 예, 이것은 Node-Red 플랫폼으로 가능합니다. IBM에서 개발 한 Node-RED는 새롭고 흥미로운 방식으로 하드웨어 장치, API 및 온라인 서비스를 연결하기위한 오픈 소스 프로그래밍 도구입니다. 한 번의 클릭으로 런타임에 배포 할 수있는 팔레트의 광범위한 노드를 사용하여 ' 흐름' 을 쉽게 연결할 수있는 브라우저 기반 편집기를 제공합니다.
Node-RED 는 프로그래밍 구성 요소를 단순화하는 것을 목표로 사물 인터넷 (IoT) 애플리케이션을 구축하기위한 강력한 도구입니다.
그것은 사용하는 비주얼 프로그래밍 으로 알려져 연결 코드 블록, 당신을 수 있습니다 노드 작업을 수행하기 위해 함께. 오늘의 자습서에서는 Node-RED를 사용하여 raspberry pi에 간단한 프로젝트를 배포 하는 방법을 살펴 보겠습니다. 라즈베리 PI 노드 레드 튜토리얼 포함한다;
- Raspberry Pi에 Node-RED 설치.
- Node-RED 사용자 인터페이스 소개
- Node-RED 흐름을 설정하는 방법
- Node-RED로 Raspberry Pi GPIO 핀을 제어하는 방법
- Node-RED 입력, 출력 및 if-else와 같은 스위치를 사용한 의사 결정 사용 방법
전제 조건
이 튜토리얼은 Raspbian stretch OS를 기반으로하며 Raspberry Pi 를 설정하는 데 익숙하고 퍼티와 같은 터미널 소프트웨어를 사용하여 Pi에 SSH를 사용하는 방법을 알고 있다고 가정합니다. 이와 관련하여 문제가있는 경우이 웹 사이트에 도움이 될 수있는 수많은 Raspberry Pi 자습서 가 있습니다.
튜토리얼을 쉽게 완료하려면 라즈베리 파이에 연결된 모니터를 사용하거나 VNC 뷰어 소프트웨어를 사용하는 것이 좋습니다. 모니터가없고 Pi로 새로 시작하는 경우이 헤드리스 Raspberry Pi 설정을 읽고이 자습서를 진행할 수 있습니다. Node-Red는 웹 브라우저에서 실행되고 Pi의 IP 주소를 통해 Pi가 연결된 PC에서 액세스 할 수 있지만 VNC / 모니터 경험이 더 나은 방법을 제공 할 것이라고 믿습니다.
Node-Red의 작동 방식을 보여주는 데모로 Node-RED를 사용하여 Raspberry Pi를 프로그래밍하여 GPIO에 연결된 LED를 제어 하고 나중에 Pi에 연결된 촉각 누름 버튼에서 LED를 제어 할 수 있도록 프로그램을 수정합니다. GPIO.
필수 구성 요소
이 프로젝트를 빌드하려면 다음 구성 요소가 필요합니다.
- Raspbian Stretch가 사전로드 된 SD 카드가 사전로드 된 Raspberry Pi 3
- 100 옴 저항기 (1)
- LED (1)
- 브레드 보드 (1)
- 수-암 점퍼 와이어
- 촉각 누름 버튼 (1)
Raspberry Pi에 Node-RED 설치
Node-Red는 Raspbian Stretch OS에 사전 설치되어 제공되지만 최신 기능 중 일부를 즐기려면 먼저 업그레이드해야합니다. Node-Red를 업그레이드 하면
- 기존 사용자를 LTS 8.x 또는 10.x Node.js 및 최신 Node-RED로 업그레이드
- 팔레트 관리자를 통해 관리 할 수 있도록 전역 적으로 설치된 기존 노드를 사용자 ~ /.node-red 공간으로 마이그레이션합니다. 사용자가 설치 한 기존 노드를 업데이트하지 않습니다. 이는 사용자가 수동으로 수행해야합니다 (아래 참조).
- 선택적으로 전체 Raspbian Pi 이미지에 사전 설치된 추가 노드를 (다시) 설치합니다.
그러나 Node-Red를 업그레이드하는 프로세스는 새 설치와 유사하므로이 자습서에서는 다른 OS 버전을 사용하는 사람들이 따라 할 수 있도록 새 설치처럼 처리합니다.
아래 단계에 따라 Raspberry Pi에 Node-RED를 설치 / 업그레이드하십시오.
우리는 업그레이드가 시작하고 파이를 업데이트하면 이 날짜와 피할 호환성 문제까지입니다에 모든 것을 보장하기 위해. 터미널을 열거 나 ssh를 통해이를 수행하고 실행하십시오.
Sudo apt-get 업데이트
뒤에
sudo apt-get 업그레이드
이 작업이 완료되면 터미널에서 아래의 bash 스크립트를 실행하십시오.
bash <(curl -sL
bash는 스크립트는 다음과 같은 일을 할 것입니다
- 추가 Pi 노드를 (재) 설치할 것인지 묻습니다.
- / usr / lib / node_modules 에있는 전역 적으로 설치된 노드-레드 노드 목록을 저장합니다.
- apt-get 기존 Node-Red 제거
- / usr / bin 및 / usr / local / bin에서 노드 빨간색 바이너리를 제거하십시오.
- / usr / lib / node_modules 및 / usr / local / lib / node_modules에서 노드 빨간색 모듈을 제거하십시오.
- Node.js가 Node.js 패키지 또는 Debian에서 설치되었는지 감지
- v8 이상이 아닌 경우-적절하게 제거하고 최신 v8 또는 v10 LTS (apt를 사용하지 않음)를 설치합니다.
- npm 캐시 및.node-gyp 캐시를 정리하여 코드의 이전 버전을 제거합니다.
- Node-RED 최신 버전 설치
- 이전에 전역 적으로 설치된 모든 노드를 사용자 계정으로 다시 설치합니다.
- 필요한 경우 추가 Pi 노드를 다시 설치하십시오.
- 모든 노드 다시 빌드-최신 Node.js 버전과 일치하도록 바이너리를 다시 컴파일합니다.
- node-red-start, node-red-stop 및 node-red-log 명령을 / usr / bin에 추가합니다.
- 메뉴 바로 가기 및 아이콘 추가
- 시스템 스크립트 추가 및 사용자 설정
- Pi에서 CPU 온도 추가-> IoT 예
위의 bash 스크립트는 sudo 로 많은 명령을 실행하고 기존 Node.js 및 핵심 Node-RED 디렉토리를 삭제합니다. 실행하기 전에이 GitHub 페이지에서 스크립트의 내용을 확인하여 이미 Pi에있는 프로젝트에 영향을주지 않는지 확인할 수 있습니다.
설치가 완료되면 메뉴의 프로그래밍 앱 목록 아래에 Node-Red 아이콘이 표시됩니다.
Raspberry Pi에서 Node-RED 실행
Node-Red는 라즈베리 파이 데스크톱의 메뉴 섹션, 터미널 또는 ssh를 통해 시작할 수 있습니다.
라즈베리 파이의 바탕 화면에서 실행하려면 라즈베리 아이콘을 클릭하고 프로그래밍에 마우스를 올려 놓고 Node-RED (메뉴> 프로그래밍> NodeRed)를 클릭하여 실행합니다.
ssh 또는 터미널에서 실행 하여 시작할 수도 있습니다.
노드 레드 스타트
데스크탑에서 노드 레드 실행을 보여주는 아래와 같은 창이 나타납니다.
이것이 표시되면 menu-> internet으로 이동 하여 chromium 웹 브라우저를 실행하십시오 . Raspberry pi는 Node-Red를 실행하기 위해 인터넷이 필요하지 않지만 브라우저를 인터페이스로 사용합니다.
Chromium이 시작 되면 주소 표시 줄에 localhost: 1880 을 입력 한 다음 Enter 키를 누릅니다. 1880은 Node-Red가 통신하도록 미리 설정된 라즈베리 파이의 포트입니다. 그러면 아래 이미지와 같이 Node-Red 인터페이스 가 표시됩니다.
Node-RED 인터페이스 이해
노드 레드 인터페이스 의 포함 흐름 패널, 노드 팔레트, 디버그 콘솔과 정보를 콘솔 위의 이미지에서 강조한다.
흐름 패널은 노드가 노드 레드의 흐름이라고하는 프로그램을 만들기 위해 함께 결합되는 곳 동안이며, 노드 팔레트 장치와 관련된 기능을 하드웨어, 프로토콜 및 소프트웨어의 대표 객체로 구성되어있다. 여기에는 IoT 용 MQTT와 같은 프로토콜, 라즈베리 파이와 같은 보드 용 GPIO 출력 및 입력 모드가 포함됩니다. 정보 콘솔은 강조 / 선택된 개체에 대한 정보를 제공하는 동안 디버그 콘솔Arduino 직렬 모니터처럼 작동하며 흐름이 실행되는 동안 피드백을 제공 할 수 있습니다. 배포 버튼은 대상 하드웨어에 흐름을 업로드하는 데 사용됩니다. 메뉴 버튼에는 프로젝트를 최대한 활용하는 데 도움이되는 다양한 업로드 유형이 있습니다. Node-Red를 가동하고 실행하면 이제 데모 프로젝트 빌드를 진행할 수 있습니다.
회로도
소개에서 언급했듯이 오늘의 데모 프로젝트 는 Node-RED 흐름을 사용하여 Raspberry Pi의 GPIO 를 제어하는 것 입니다. GPIO 상태의 변화를 보여주기 위해 특정 GPIO 핀이 켜지면 LED가 켜지고 그 반대로 LED가 켜지도록 LED를 GPIO에 연결합니다.
아래 회로도에 표시된대로 LED를 Raspberry PI에 연결합니다.
또한 브레드 보드, LED, 저항 및 일부 연결 와이어를 사용하여 하드웨어에 동일하게 구축합니다. 내 하드웨어 설정은 일단 연결되면 다음과 같이 보입니다.
이 프로젝트는 LED를 릴레이 및 AC 기기로 교체하는 것만 으로 쉽게 홈 오토메이션 프로젝트 로 전환 할 수 있습니다. 다양한 홈 오토메이션 프로젝트를 통해 수행하는 방법을 배우십시오.
Node-RED에서 흐름 생성
LED가 연결되면 흐름 개발을 진행할 수 있습니다. NodeRed의 프로그램 은 Arduino IDE에서 스케치 라고 부르는 것처럼 흐름 이라고합니다. 흐름은 노드 조합을 사용하여 생성됩니다. 동시에 실행할 수있는 여러 흐름을 만들 수 있지만이 자습서에서는 LED를 켜거나 끄는 단일 흐름을 만듭니다.
시작하려면 Nodes 팔레트의 맨 아래로 스크롤하면 rpigpio 라는 레이블이 붙은 두 개의 노드가있는 끝쪽으로 raspberry pi nodes 섹션이 표시 됩니다. 이러한 노드는 라즈베리 파이의 GPIO와 통신하는 데 사용됩니다. 노드 중 하나는 입력 용이고 다른 하나는 라즈베리 파이 로고의 위치에 따라 구별되는 출력용입니다. 위해 입력 노드 에 대한 상태, 로고, 문자 앞에 오는 노드 출력 로고 텍스트 뒤에 오는 아래 그림에 도시 된 바와 같이.
이 자습서에서는 출력 노드를 사용하여 인터페이스의 흐름 섹션으로 드래그합니다. 이 단계는 pinMode () 명령을 사용하여 Arduino의 특정 핀을 출력으로 선언하는 것과 유사합니다. 출력 노드를 두 번 클릭하면 노드 속성을 편집 할 수있는 팝업 창이 아래와 같이 열립니다.
핀 속성 섹션 에서 GPIO17 (핀 11)을 선택합니다. 그런 다음 type 속성을 " digital Output "으로 설정하고 " Initialize pin state?"를 선택합니다. 확인란을 선택하면 " 초기 핀 수준 "옵션을 낮음 (0)으로 둡니다. 원하는 이름을 노드에 지정하고 완료 버튼을 클릭합니다.
노드의 이름은 속성 설정에서 입력 한 이름으로 자동 변경됩니다. 예를 들어 LED로 이름을 지정 했으므로 노드 이름도 아래와 같이 LED로 변경됩니다.
LED를 켜고 끄려면 동작을 유도하는 입력을 사용해야합니다. 누름 버튼을 사용할 수 있지만이를 사용하여 메시지를 흐름에 삽입 할 수있는 Node-RED의 기능을 도입하고 싶습니다. 이러한 기능을 인 젝트 노드 라고합니다. 두 개의 인 젝트 노드를 사용할 것입니다. 하나는 LED를 켜고 다른 하나는 끄는 것입니다.
노드 팔레트로 이동하여 주입 노드를 흐름으로 끕니다. 화살표가있는 팔레트의 첫 번째 노드이며 주입 노드는 아래 이미지에서 강조 표시됩니다.
속성을 편집하려면 두 번 클릭하십시오. 페이로드 앞의 드롭 다운을 클릭하여 데이터 유형을 문자열로 변경하고 페이로드 상자에 1을 입력합니다. 페이로드 상자의 값은 노드를 누를 때 흐름에 주입되는 값입니다. 노드 이름을“ON”으로 설정하십시오.“완료”버튼을 눌러 저장하십시오.
두 번째 노드에 대해 위의 과정을 반복하여 페이로드 값을 "0"으로 설정하고 이름을 "off"로 설정합니다.
속성 기능 에서 반복 드롭 다운을 사용하여 주입을 자동화 할 수 있으므로 버튼이 간격을두고 누를 수 있습니다. 이것은 깜박임 효과를 만드는 데 사용할 수 있습니다. 아래 그림과 같이 노드 중 하나의 회색 점을 다른 노드로 드래그하여 노드를 결합하여 흐름을 만듭니다.
이제 우리는 첫 번째 Node-Red 흐름을 완료했습니다.
다음 단계는 라즈베리 파이에 흐름 을 배포하는 것 입니다. 빨간색 배포 버튼을 클릭합니다. 아래와 같이 화면 상단에 "성공적으로 배포 됨"플래시가 표시되어야합니다.
주입 노드 뒤에있는 회색 버튼을 클릭하여 각 노드를 활성화합니다.
"on"주입 노드를 클릭하면 성공적으로 주입 된 "on"이 표시되고 LED가 켜집니다. "off"주입 노드를 클릭하면 LED가 꺼져 야합니다.
그게 다야. 이 설정의 전체 작업은이 페이지 하단에 링크 된 비디오에서 찾을 수 있습니다.
Raspberry Pi를 사용하여 Node-RED 인터페이스에 푸시 버튼 / 스위치 추가
입력 요소를 흐름에 연결 / 추가하는 방법을 설명 하기 위해 주입 노드를 대체하는 푸시 버튼을 추가하여 위의 흐름을 추가로 진행합니다.
푸시 버튼을 라즈베리 파이에 연결합니다. 그러면 푸시 버튼의 한쪽 다리가 접지에 연결되고 다른 쪽 다리는 라즈베리 파이의 GPIO 핀 4 (핀 11)에 연결됩니다.
이 작업이 완료되면 Node-Red로 돌아가서 노드를 클릭하고 키보드에서 삭제를 누르거나 노드를 두 번 클릭하고 팝업 창에서 삭제를 눌러 이전에 사용한 두 개의 주입 노드를 삭제합니다. 완료되면 노드 팔레트를 아래로 스크롤하여 라즈베리 파이 섹션으로 이동하고 입력 노드를 선택합니다. 노드 이름 앞에 왼쪽에 라즈베리 파이 아이콘이있는 것입니다.
노드를 흐름으로 끌어서 두 번 클릭하여 속성을 편집합니다. 핀을 GPIO 4 (핀 11)로 설정하고 저항기 앞의 드롭 다운을 풀업으로 설정합니다. 그러면 GPIO 4가 HIGH로 "풀업"됩니다. 속성 설정 후 완료 버튼을 클릭합니다.
GPIO4를 접지로 단락시키는 대신 스위치를 눌렀을 때 논리적 결정을 내릴 수 있도록 스위치 노드를 사용합니다. 노드 팔레트의 함수 섹션에서 검색하고 흐름으로 끕니다.
스위치 노드를 사용하면 "if"문과 유사한 방식으로 결정을 내릴 수 있습니다. 입력 값에 따라 다른 출력을 갖도록 설정할 수 있습니다. 이 자습서에서는 msg.payload 속성이 1 (스위치를 누르지 않음)이면 첫 번째 경로를 따라야하고 다른 입력이 있으면 두 번째 경로를 따라 가도록 두 개의 출력 경로로 구성합니다. 입력에서 1 이외의 것이 관찰됩니다 (스위치를 누름). 경로는 "+ 추가"버튼을 사용하여 추가됩니다. 노드를 두 번 클릭하고 위에서 설명한대로 구성하십시오. 완료되면 완료를 클릭하십시오.
완료 버튼을 누르 자마자 두 개의 경로가 스위치 노드 의 전망에 반영되는 것을 볼 수 있습니다. 이제 출력에 두 개의 접합이있을 것입니다.
다음으로 "변경"노드를 가져와야합니다. 변경 노드는 인수 노드 의 결과에 따라 LED 상태를 설정하는 데 사용됩니다.
두 개의 변경 노드를 사용할 것입니다. 첫 번째 페이로드는 아래 이미지와 같이 0으로 설정되고 두 번째 페이로드는 1로 설정됩니다. 둘 다에 대한 속성을 편집 한 후 완료를 클릭합니다.
더 잘 설명하기 위해 풀업 저항을 사용했던 것을 기억하십니까? 따라서 버튼을 누르지 않았을 때 해당 핀의 출력은 HIGH (1)가됩니다. 즉, 스위치 노드를 통과하면 LED가 "켜짐"상태가됩니다. "change"노드를 사용하여 LOW (0)로 설정합니다. 두 번째 "변경"노드는 값을 1로 설정하는 데 사용됩니다. GPIO 핀 4의 HIGH 상태가 아닌 다른 것이 감지되면 푸시 버튼이 눌 렸음을 의미하므로 LED가 "켜져 야"합니다. 아래 이미지와 같이 변경 노드와 나머지 노드를 함께 연결합니다.
이 작업이 완료되면 이제 프로젝트를 배포 할 준비가되었습니다. 연결을 검토하여 모든 것이 정상인지 확인한 다음 배포 버튼을 클릭합니다. 평소와 같이 성공하면 배포 성공 팝업이 표시되고 이제 스위치를 사용하여 LED를 제어 할 수 있습니다.
Node-Red를 사용하면 코드에 대한 걱정없이 빌드를 쉽고 빠르게 프로토 타이핑 할 수 있지만 실제로는 특히 프로그램에 대한 유연성과 제어를 원하는 숙련 된 개발자에게는 적합하지 않을 수 있습니다. 그럼에도 불구하고 몇 분 안에 프로토 타입 빌드를 수행 할 수있는 훌륭한 도구입니다.
다음 시간까지!