[라즈베리파이] node.js로 서보모터(SG90) 구동

2020. 4. 5. 22:39Raspberry Pi

반응형

0. node.js 환경 구축

https://half-asscoding.tistory.com/10

 

[라즈베리파이] node.js로 웹 서버 만들기

1. node.js, express 설치 curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs npm install express setup_12.x로 안정된 버전인 12.x를 설치하지만 나중에 설치한..

half-asscoding.tistory.com

 

1. pi-blaster, pi-servo, body-parser 설치

pi-blaster: pwm제어를 위한 모듈이지만 이번에는 더 간편한 pi-servo를 사용하기 위해 설치한다.

sudo apt-get install autoconf
git clone https://github.com/sarfata/pi-blaster.git
cd pi-blaster
./autogen.sh
./configure
make
sudo ./pi-blaster

pi-servo: 서보모터 각도를 쉽게 제어할 수 있다.

body-parser: 클라이언트의 POST 요청의 body를 파싱해준다.

npm install pi-servo
npm install body-parser

 

2. 라즈베리파이와 서보모터(SG90) 연결

GPIO핀 배열을 찾아보고 PWM제어가 가능한 18번 핀과 VCC, GND 핀에 서보모터를 연결한다.

 

3. servo.html 작성

on과 off 로 두 각도를 움직일 수 있게 만들었다.

<!DOCTYPE html>
  <html>
    <head>
      <title>Servo</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
      <h1>My Servo</h1>
      <form action = '/test' method = 'post'>
        <input type = 'submit' value = 'on' name = 'servo' >
        <input type = 'submit' value = 'off' name = 'servo' >
      </form>
    </body>
</html>

 

4. index.js 작성

var express = require('express'),
    http = require('http'),
    app = express(),
    server = http.createServer(app);
var bodyParser = require('body-parser');
var Piservo = require('pi-servo');
var sv1 = new Piservo(18);
     
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended : false }));

app.get('/test', function(req, res) {
      res.sendFile('servo.html', {root : __dirname });
      sv1.open();
});

app.post('/test', function(req, res) {
      var state = req.body.servo;
      if (state == 'on') {
          sv1.setDegree(20);
      }
      else {
          sv1.setDegree(0);
      }
      console.log(state);
      res.sendFile('servo.html', {root : __dirname });
});

server.listen(8888, function() {
    console.log('Express server listenling on port ' + server.address().port);
});

post 요청에서 servo를 파싱하고 state가 'on'이면 서보 각도를 20도로 돌린다.

 

5. 서버 실행

node index.js

 

반응형

'Raspberry Pi' 카테고리의 다른 글

[라즈베리파이] node.js로 웹 서버 만들기  (0) 2020.04.05