Node.js를 사용한 Raspberry Pi 코딩 : 신호등

Python 용 Raspberry Pi ( Python 기사 읽기 ), Java ( Java 기사 읽기 ), C ( C 기사 읽기 ), Swift ( Swift 기사 읽기 ) 와 함께 Low Voltage Labs 신호등 을 사용하는 방법을 설명하는 가이드를 작성 했습니다 . Bash 스크립팅 ( Bash 기사 읽기 ) 및 Go ( Go 기사 읽기 ), Nore RED ( Node RED 기사 읽기 ), Arduino ( Arduino 기사 읽기 ), Node.js 에는 해당되지 않습니다 . Node.js는 Pi에서 최신 JavaScript를 작성하기위한 훌륭한 환경이며 npm 의 기성 패키지로 구성된 거대한 에코 시스템을 가지고 있습니다.바퀴를 재창조하지 않고도 작업을 완료 할 수 있습니다. 신호등 LED를 제어하는 ​​데 어떻게 사용할 수 있는지 살펴 보겠습니다.

이 가이드를 독립형 가이드로 만들기 위해 여기에있는 이전 기사의 콘텐츠를 일부 재사용 할 것입니다.

쇼핑리스트

이를 시도하려면 다음이 필요합니다 (여기 링크는 대부분 Adafruit 로 이동합니다 . 영국 고객은 Pimoroni 를 영국 기반 대안으로 고려할 수 있습니다 . Amazon에는이 모든 것이 아니지만 대부분이 있습니다) :

  • 라즈베리 파이는 (여기 파이 3 모델 B를 사용 하겠지만, GPIO 핀 어떤 모델이 작동합니다 - 당신은 당신이 그것에 어떤 헤더를 납땜해야합니다 파이 제로를 사용하려는 경우). 40 핀이있는 Pi 2 또는 3이 있다고 가정하겠습니다.
  • 전원 공급 장치 당신의 파이를위한
  • 어떤 종류의 케이스 는 아마도 Pi를 보호하는 데 좋은 아이디어 일 것입니다 (하지만 조명을 연결하기 위해 GPIO 핀을 노출하려면 뚜껑을 열어 두어야합니다)
  • 마이크로 SD 카드 에 운영 체제를 설치 (또는 하나 얻을 사전 설치된 OS를 ). 운영 체제를 직접 설치하려면 SD 카드 리더가있는 Mac, PC, Linux 시스템이 필요합니다.
  • Low Voltage Labs신호등 세트 (2 개 팩은 좋은 가치)
  • Pi에 입력 할 모든 USB 키보드
  • Pi의 출력을 표시하는 모든 HDMI 디스플레이

Low Voltage Labs 신호등은 4 개의 핀을 사용하여 Pi에 연결됩니다. 이 중 하나는 접지되어야하고 나머지 세 개는 각 개별 LED를 제어하는 ​​데 사용되는 실제 GPIO 핀입니다.

Pi의 전원을 켜기 전에 신호등을 연결하여 핀이 빨간색으로 강조 표시된 GPIO 핀에 연결되도록합니다.

pinout.xyz의 Raspberry Pi GPIO 핀아웃

완료되면 다음과 같이 보일 것입니다. (오른쪽에 있는지 확인하는 쉬운 방법은 하단에 USB 포트가있는 Pi를 볼 때 왼쪽 핀 행에있는 표시등을 찾는 것입니다. 그런 다음 8 개의 핀을 세고 거기에 조명을 부착하십시오).

아직 Pi를 켜지 마십시오. 먼저 운영 체제 이미지를 준비해야합니다.

운영 체제 설정

공식 Raspberry Pi 사이트에서 다운로드 할 수있는 Raspbian Stretch Lite OS를 설치합니다 . 도움이 필요한 경우 훌륭한 설치 가이드를 찾을 수도 있습니다 . Resin.io 의 무료 Etcher 도구는 운영 체제 이미지를 마이크로 SD 카드로 전송할 때 도움이됩니다.

운영 체제를 설치했으면 로그인이 가능한지 확인하고 유선 또는 Wi-Fi 인터넷 연결이 구성되어 있는지 확인하십시오.

이제 계속해서 조명을 켜고 끌 수 있습니다!

Node.js 설치

“Lite”Raspbian은 최소한의 배포이기 때문에 Node.js가 사전 설치되어 있지 않습니다. NodeSource 에서 최신 버전의 Node.js를 추가해 보겠습니다 .

$ curl -sL https://deb.nodesource.com/setup_10.x|sudo -E bash -

$ sudo apt-get install -y nodejs

$ node --version
v10.6.0
$ npm --version
6.1.0

Raspbian Lite와 함께 설치되지 않지만 추가하기 쉬운 git도 필요합니다.

$ sudo apt-get install git
$ git --version
git version 2.11.0

시작하려면 GitHub에서 예제 코드를 가져 와서 모듈 종속성을 설치하고 시작합니다.

$ git clone https://github.com/simonprickett/nodepitrafficlights.git
$ cd nodepitrafficlights
$ npm install
$ npm start

종료하려면 Ctrl + C를 누릅니다. 이렇게하면 모든 표시등이 꺼지고 프로그램이 종료됩니다.

작동 원리

다음 은 기존 콜백 피라미드 를 사용 async하고 await제거하는 데 도움이 되는 전체 소스 코드에 대한 간략한 설명입니다 .

가장 먼저해야 할 일은 Pi의 GPIO 핀과의 상호 작용을 처리 require하는 onoff 모듈 입니다. 라인 3–5는 세 개의 조명 각각에 대해 개체를 설정 onoff하여 사용할 핀과 출력으로 사용할 핀을 알려줍니다 .

Node.js가 라인의 상태를 변경하기 전에 구성 가능한 시간 동안 대기하도록하기 위해, 우리 sleep는 원하는 휴면 시간 (밀리 초)을 매개 변수로 취하는 함수를 라인 7에 정의합니다 . 이 함수는 적절한 대기 기간이 만료 된 후 해결 된 약속을 반환합니다.

13-37 행은 async영원히 반복 되는 기능을 정의 하고 onoff 모듈의 writeSync기능을 사용 하여 원하는 신호등 시퀀스 단계에 따라 각 표시등을 켜거나 (1) 끕니다 (0). 각 단계에서 sleep일정 시간 (예 : 2000 밀리 초 = 2 초) 동안 조명을 현재 상태로 유지하기 위해 함수가 호출됩니다. sleep약속을 반환하므로 await해결 방법이 있습니다.

39-43 행은 모든 조명을 끄는 편의 기능을 정의합니다.

45-49 행은 SIGINT신호 를 차단하는 핸들러 함수를 등록합니다 .이 신호는 사용자가 조명을 보는 데 지루해하고 Ctrl + C를 누를 때마다 프로그램에 전송됩니다. 핸들러 함수는 모든 조명을 끄고 Node.js를 깨끗하게 종료합니다.

마지막으로 51 행은 모든 조명을 끄고 runLights사용자가 Ctrl + C를 눌러 SIGINT핸들러 를 호출 할 때까지 연속 루프로 실행되는 호출 을 통해 항상 올바른 상태에서 시작 하도록 합니다.

async, await및 promise를 사용 하고 onoff 모듈에서 제공하는 동기 함수를 사용하면 코드를 읽기가 훨씬 쉬워지고 중첩 된 콜백을 방지 할 수 있습니다.

이 프로젝트의 소스 코드는 GitHub에서 무료로 사용할 수 있습니다 . Raspberry Pi, Node.js 또는이 둘의 조합으로 무엇을하고 있는지 듣고 싶습니다. 시간이되면 더 많이 써보도록하겠습니다.

받은 편지함에서 직접 최고의 소프트웨어 거래 받기

Suggested posts

JavaScript 테스트의 기초

JavaScript 테스트의 기초

"잠깐만 요, JavaScript 테스팅에 대한 또 다른 기사"라고 생각할 수 있습니다. 예, JavaScript 테스트의 기본 사항에 대해 더 많이 이야기하고 싶은 이유는이 주제에 대한 많은 기사가 JavaScript 테스트를 작성하기위한 코드 스 니펫과 도구를 보여줌으로써 매우 유사한 방식으로 작성 되었기 때문입니다.

Big-O 렌즈를 통한 Javascript의 배열 및 객체 성능

Big-O 렌즈를 통한 Javascript의 배열 및 객체 성능

프로그램의 효율성은 요소의 검색, 정렬, 액세스, 삽입 및 제거와 같은 작업을 수행하기 위해 엄청난 양의 데이터를 처리 할 때 시간 복잡성에 직접적으로 의존합니다. 성능 향상의 필요성에 따라 객체와 배열을 선택적으로 사용할 수 있습니다.