Responsive Advertisement

Node.js와 Raspberry Pi를 활용한 프로젝트 가이드

Raspberry Pi는 저렴하고 소형의 컴퓨터로, 다양한 IoT 프로젝트와 임베디드 시스템 개발에 많이 사용됩니다. 특히 Node.js와 같은 자바스크립트 런타임 환경을 이용하면, Raspberry Pi에서 웹 서버를 구축하거나 하드웨어를 제어하는 등 다양한 작업을 효율적으로 수행할 수 있습니다. 이번 글에서는 Raspberry PiNode.js를 연동하여 프로젝트를 진행하는 방법을 단계별로 알아보겠습니다.

Raspberry Pi에 Node.js 설치하기

Raspberry Pi에서 Node.js를 사용하려면 먼저 Node.js를 설치해야 합니다. Raspberry Pi는 ARM 기반의 컴퓨터이므로, 공식 웹사이트에서 ARM용 Node.js 바이너리를 제공하고 있습니다.

1. Node.js 설치 확인

Raspberry Pi에 기본적으로 Node.js가 설치되어 있을 수 있습니다. 이를 확인하려면 터미널에서 다음 명령어를 입력합니다.

$ node -v
$ npm -v

위 명령어를 입력했을 때 버전 정보가 나오면 Node.js와 npm(Node.js 패키지 매니저)이 이미 설치되어 있는 상태입니다. 그렇지 않다면 아래 방법을 통해 Node.js를 설치할 수 있습니다.

2. Node.js 설치

Raspberry Pi에 최신 버전의 Node.js를 설치하려면 다음 명령어를 터미널에 입력합니다.

$ curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
$ sudo apt install -y nodejs

이 명령어는 NodeSource를 통해 최신 버전의 Node.js를 설치합니다. 설치가 완료되면 node -vnpm -v 명령어로 설치된 버전을 확인할 수 있습니다.

Raspberry Pi에서 Node.js 프로젝트 시작하기

이제 Raspberry Pi에 Node.js가 설치되었으므로, 간단한 프로젝트를 만들어보겠습니다. 이 예제에서는 웹 서버를 실행하는 방법과 Raspberry Pi의 GPIO 핀을 제어하는 방법을 설명하겠습니다.

1. 간단한 Node.js 웹 서버 만들기

Node.js는 웹 서버를 간단히 만들 수 있는 기능을 제공합니다. Raspberry Pi에서 웹 서버를 만들어보겠습니다.

// server.js

const http = require('http');

// 서버 생성
const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello, Raspberry Pi with Node.js!\n');
});

// 서버 포트와 IP 설정
const port = 3000;
const hostname = '0.0.0.0';

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

이 코드는 HTTP 서버를 생성하여 "Hello, Raspberry Pi with Node.js!" 메시지를 반환합니다. 서버를 실행하려면 다음 명령어를 입력합니다.

$ node server.js

이후 브라우저에서 Raspberry Pi의 IP 주소와 포트 3000을 입력하여 서버가 제대로 작동하는지 확인할 수 있습니다. 예: http://192.168.1.10:3000

2. Raspberry Pi GPIO 핀 제어하기

Raspberry Pi의 강력한 기능 중 하나는 GPIO 핀을 통해 하드웨어를 제어할 수 있다는 점입니다. Node.js를 사용해 LED를 켜고 끄는 간단한 예제를 만들어보겠습니다. 이를 위해 onoff라는 Node.js 패키지를 사용할 수 있습니다.

GPIO 핀 제어를 위한 준비

먼저 onoff 패키지를 설치합니다.

$ npm install onoff

이제 GPIO 핀을 제어하는 간단한 코드를 작성해보겠습니다. 이 예제에서는 Raspberry Pi의 GPIO 17번 핀에 연결된 LED를 켜고 끕니다.

// gpio_control.js

const Gpio = require('onoff').Gpio;
const led = new Gpio(17, 'out');  // GPIO 17번 핀을 출력 모드로 설정

// LED를 켜고 1초 후에 끄는 함수
const blinkLED = () => {
    led.writeSync(1);  // LED 켜기
    console.log('LED ON');
    setTimeout(() => {
        led.writeSync(0);  // LED 끄기
        console.log('LED OFF');
    }, 1000);
};

// LED 깜빡이기
blinkLED();

// 프로그램 종료 시 GPIO 리소스 해제
process.on('SIGINT', () => {
    led.unexport();
});

이 코드는 GPIO 17번 핀에 연결된 LED를 1초 동안 켠 후 끕니다. 프로그램을 실행하려면 다음 명령어를 입력합니다.

$ sudo node gpio_control.js

주의: GPIO 제어는 루트 권한이 필요하므로 sudo 명령어를 사용해야 합니다.

Node.js와 Raspberry Pi를 활용한 프로젝트 아이디어

Node.js와 Raspberry Pi를 활용하면 다양한 IoT 및 하드웨어 제어 프로젝트를 만들 수 있습니다. 다음은 Raspberry Pi와 Node.js를 활용할 수 있는 몇 가지 프로젝트 아이디어입니다.

  • 스마트 홈 자동화: Raspberry Pi와 Node.js를 사용해 집안의 조명, 온도 조절기 등을 제어하는 스마트 홈 시스템을 구축할 수 있습니다.
  • 온도 및 습도 모니터링: 센서를 이용해 실시간으로 온도와 습도를 측정하고 Node.js 서버를 통해 데이터를 시각화할 수 있습니다.
  • 카메라 보안 시스템: Raspberry Pi 카메라 모듈과 Node.js를 연동해 실시간 비디오 스트리밍 및 모션 감지 시스템을 구현할 수 있습니다.
  • 로봇 제어: Node.js와 GPIO 핀을 사용해 모터와 센서를 제어하여 Raspberry Pi 기반 로봇을 제작할 수 있습니다.

결론

Raspberry Pi와 Node.js는 강력한 조합으로, 웹 서버 구축부터 하드웨어 제어까지 다양한 프로젝트에 활용할 수 있습니다. 이번 글에서는 Raspberry Pi에 Node.js를 설치하고 간단한 웹 서버와 GPIO 제어 예제를 살펴보았습니다. 이 가이드를 바탕으로 IoT와 하드웨어 제어 프로젝트를 시작해 보세요!

이전최근

댓글 쓰기