반응형



웹용 언어인줄로만  알았던 자바스크립트인데  하드웨어 제어도 됩니다. 참 신기합니다. 


어떤 장점이 있어서 사용하게 되었는지도 궁금하구요..  

찾아보면 Node.js나 비슷한 류를 기반으로 하는 임베디드 보드들도 꽤 있습니다.. 


2015.11.27

2109. 08.12 - node 설치 방법 변경




문제없이 동작하는 Node.js 버전이 정해져 있어서  해당 버전을 사용해야 합니다. 

onoff 깃허브 페이지에서 확인 가능합니다. 주소는 참고 [2]에 있습니다. 


다음과 같은 방법을 Node.js 4.8.4를 설치해줍니다.



$ sudo npm cache clean -f


$ sudo npm install -g n


$ sudo n 4.8.4





문제 없으면 다음처럼 버전으로 4.8.4가 출력됩니다. 



$ node -v

v4.8.4





이제 LED를 제어해보기 위해서 디렉토리를 생성하고 이동해서 



$ mkdir ledBlink && cd ledBlink





하드웨어 제어를 위해 사용할 onoff 노드 모듈을 설치합니다. 


 

$ npm install onoff





nano 편집기로 새로운 파일을 하나를 열어서 



nano led.js





다음 코드를 복사하여 붙여넣기합니다. 


'use strict';

const Gpio = require('onoff').Gpio; // Gpio class
const led = new Gpio(21, 'out');       // Export GPIO17 as an output

// Toggle the state of the LED connected to GPIO17 every 200ms
const iv = setInterval(_ => led.writeSync(led.readSync() ^ 1), 200);

// Stop blinking the LED after 5 seconds
setTimeout(_ => {
  clearInterval(iv); // Stop blinking
  led.unexport();    // Unexport GPIO and free resources
}, 5000);




LED의 긴 핀을 라즈베리파이의 40번 핀에 연결하고 LED의 짧은 핀을 39번 그라운드에 연결합니다. 

GPIO로는 21번에 해당해서 소스코드에는 21이라고 적어주었습니다. 




실행시켜보면 LED가 5초 정도 깜빡이다가 중지되고 프로그램이 종료되는 것을 볼 수 있습니다.  

 

sudo node index.js




나머지 예제들은 다음 링크에서 확인해보세요.

https://github.com/fivdi/onoff/tree/master/examples




참고


[1] https://github.com/fivdi/onoff


[2] https://stackoverflow.com/a/52109489





반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요.

  1. leopold 2019.08.13 11:06

    /home/pi/ledBlink/node_modules/onoff/onoff.js:9
    const HIGH_BUF = Buffer.from('1');
    ^

    TypeError: this is not a typed array.
    at Function.from (native)
    at Object.<anonymous> (/home/pi/ledBlink/node_modules/onoff/onoff.js:9:25)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/home/pi/ledBlink/index.js:2:16)
    at Module._compile (module.js:435:26)
    라는 에러가 뜨는데 어떻게 해결해야 하나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.08.13 14:13 신고

      nodejs 버전 문제였습니다.

      수정해놓았으니 다시 해보세요..
      예제 코드도 예전 건 동작 안합니다.

  2. sy 2020.07.21 17:32

    혹시 node js를 쓰면 다른곳에 있어서 다른 데이터나 와이파이를 잡아도 서버에 접속이 되나요???
    외부에서 접속하고싶은데 소켓통신은 외부에서 안되고 포트포워딩도 데이터핫스팟은 안되서
    node js를 통해 서버에 접속해서 라떼판다 gpio를 제어하는 방법밖에 생각이 안나는데 혹시 가능한가요????

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.07.21 19:27 신고

      아마 안될겁니다. 고정 IP를 사용해야 외부에서 접속이 가능합니다. 또는 언급하신 공유기의 포워드 기능을 써야 할듯 하네요

+ Recent posts