NodeJs로 디바이스 통신하기

3,170 views
2,670 views

Published on

Node.js 로 디바이스 통신하기

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,170
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
34
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

NodeJs로 디바이스 통신하기

  1. 1. 아두이노(Arduino)는 오픈소스를 기반으로 한 단일 보드 마이크로 컨트롤러이다. AVR을 기반으로 한 보드로 이루어져 있고 최근에는 Cortex-M3를 이용한 제품(Arduino Due)도 있다. 소프트웨어 개발을 위한 통합 환경(IDE)이 있다. 아두이노는 다수의 스위치나 센서로부터 값을 받아들 여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어낼 수 있다. 또 한 플래시, 프로세싱, Max/MSP와 같은 소프트웨어를 연 동할 수 있다.[3] 아두이노의 가장 큰 장점은 마이크로컨트롤러를 쉽게 동 작시킬 수 있다는 것이다. 일반적으로 AVR 프로그래밍이 WinAVR로 컴파일하여, ISP장치를 통해 업로드를 해야하 는 등 번거로운 과정을 거쳐야하는데 비해, 아두이노는 컴 파일된 펌웨어를 USB를 통해 업로드를 쉽게 할 수 있다. 또한 아두이노는 다른 모듈에 비해 비교적 저렴하고, 윈도 를 비롯해 맥 OS X, 리눅스와 같은 여러 OS를 모두 지원 한다. 아두이노 보드의 회로도가 CCL에 따라 공개되어 있 으므로, 누구나 직접 보드를 직접 만들고 수정할 수 있다.
  2. 2. • 통신 방식 : RS-232 Serial via USB • 패킷 : [전체][빨강][노랑][초록]nr • 0 : 그대로 • 1 : 끄기 • 2 : 켜기 https://github.com/theRichu/node_arduinio_example/blob/master/arduino/device.ino
  3. 3. $ npm update $ npm install –g express $ npm install -g express-generator $ express server $ cd server $ npm install $ npm start• http://localhost:3000 app.get('/', function (request, response) { fs.readFile('index.html', function (error, data) { response.send(data.toString()); }); }); https://github.com/theRichu/node_arduinio_example/blob/master/node_arduino_example/public/index.html
  4. 4. $ npm install serialport var serialport = require("serialport"); var SerialPort = serialport.SerialPort; var sp = new SerialPort("/dev/ttyACM1", { baudrate: 9600, parser: serialport.parsers.readline("n") }); var onoff = 0; var state_r = 0; var state_y = 0; var state_g = 0; sp.on("data", function (data) { onoff = data[0]; state_r = data[1]; state_y = data[2]; state_g = data[3]; io.sockets.emit('status', { "onoff": onoff, "red": state_r,"yellow": state_y,"green": state_g }); });
  5. 5. $ npm install socket.io var server = http.createServer(app); var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { socket.on('status', function (data) { sp.write("0000nr"); }); socket.on('on', function (data) { sp.write("2000nr"); }); socket.on('off', function (data) { sp.write("1000nr"); }); socket.on('red', function (data) { if(data['status']=="toggle"){ if(state_r=='1') sp.write("0100nr"); else sp.write("0200nr"); }else if(data['status']=="on"){ sp.write("0200nr"); }else if(data['status']=="off"){ sp.write("0100nr"); } }); socket.emit('status', { "red": state_r,"yellow": state_y,"green": state_g }); });
  6. 6. https://github.com/theRichu/node_arduinio_example/blob/master/node_arduino_example/public/index.html <div data-role="page"> <div data-role="header"> <h1> OctoberSky Week1 </h1> </div> <ul data-role="content"> <div class="containing-element"> <select name="flip-min" id="flip-min" data-role="slider"> <option value="off">Off</option> <option value="on">On</option> </select> </div> <div data-role="controlgroup" data-type="horizontal"> <a href="#" id="red_toggle" data-role="button"> red </a> <a href="#" id="yellow_toggle" data-role="button"> yellow </a> <a href="#" id="green_toggle" data-role="button"> green </a> </div> </ul> </div>
  7. 7. https://github.com/theRichu/node_arduinio_example/blob/master/node_arduino_example/public/index.html var socket = io.connect('http://localhost:52273'); socket.emit('status'); socket.on('status', function (data) { if(data['onoff']=="1"){$('#flip-min').val("on");} else{$('#flip-min').val("off");} $('#flip-min').slider('refresh'); if(data['red']=="1"){$('#red_toggle').attr("style", "background: red;");} else{$('#red_toggle').attr("style", "background: gray;");} $( "#flip-min" ).on( "change", function(event, ui) { if($("#flip-min").val()=="on"){socket.emit('on');} else{socket.emit('off');} }); $("#red_toggle").click(function(){ socket.emit('red', {status: 'toggle'}); }); });

×