Raspberry pi

2편 적외선 리모콘 (IR Remote Controller)

[혜안] 2017. 4. 16. 20:34
728x90

1편에 이어..

[Raspberry pi] - 1편 적외선 리모콘 (IR Remote Controller)

[Raspberry pi] - 2편 적외선 리모콘 (IR Remote Controller)

[Raspberry pi] - 3편 적외선 리모콘 (IR Remote Controller) + 음성인식

[Raspberry pi] - 4편 적외선 리모콘 (IR Remote Controller) + 음성인식 개선

[Raspberry pi] - 5편 적외선 리모콘 (IR Remote Controller) + TV 스피커리시버 연동




7. 발신부 연결

설정파일에 지정한대로 GPIO 23번 연결, GND 연결


회로는 아래 블로그를 참조

http://egloos.zum.com/hcpark0121/v/9275271

(회로도를 열심히 참조하긴 했지만, 결국 저항,TR 다 떼어냈다. 주방 TV 바로 옆에서 송신할꺼라 증폭도 필요없었다.)


irsend 명령으로 발신 시험

역시 아래 사이트 참조

http://www.lirc.org/html/irsend.html


$ irsend SEND_ONCE -# 10 dm-2901 KEY_CHANNELUP

콘솔창 두개 열고, 한쪽에서 irw, 한쪽에서 위 명령어 치면 아래와 같이 나와야 함.


8. 신호를 받고 제어할 웹서버 개발

역시 Googling, 깃허브에 훌륭한 샘플이 많다.

https://github.com/alexbain/lirc_node


위 소스로 별도 웹서버를 만들어도 되지만, 난 스마트콘센트 웹서버가 이미 있으므로 통합을 했다.


우선 lirc_node 패키지를 설치해야 한다.

$ npm install lirc_node


별거 없지만 full source 공개. 나도 폼나게 깃허브에 올릴까?

var express = require('express'),
http = require('http'),
app = express(),
server = http.createServer(app),
bodyParser = require('body-parser'),
lirc_node = require('lirc_node'),
GPIO = require('onoff').Gpio,
plug = new GPIO(2, 'out');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended : false }));

app.get('/plug', function(req, res) {
res.sendFile('/html/plug.html', {root : __dirname });
});

app.post('/plugdata', function(req, res) {
var state = req.body.switch;
if (state == 'ON') {
plug.writeSync(1);
}else {
plug.writeSync(0);
}

console.log(state);
res.sendFile('/html/plug.html', {root : __dirname });
});

lirc_node.init();

lirc_node.addListener(function(data){
console.log("Received IO keypress '" + data.key + "' from remote '" + data.remote +"'");
});

app.get('/remote', function(req, res) {
res.sendFile('/html/remote.html', {root : __dirname }) ;
});

app.post('/remotedata', function(req, res) {
var state = req.body.dm;

lirc_node.irsend.send_once("dm-2901",state,function() {
console.log("Send dm-2901 "+ state +" command!");

});

res.sendFile('/html/remote.html', {root : __dirname }) ;
});



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


중간 시험


이제 음성인식을 고안해봐야 겠다.


node.js의 강력하면서도 간편한 구조는 정말 감탄스럽다.

node.js 만 심도있게 공부해보고 싶은 생각도 든다. 내가 공부하고싶다는 생각을 하다니... 

이게 얼마만인지.. 

728x90