[라즈베리파이] node.js로 서보모터(SG90) 구동
2020. 4. 5. 22:39ㆍRaspberry 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 |
---|