Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

NodeJs로 디바이스 통신하기

4,785 views

Published on

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

Published in: Technology
  • Be the first to comment

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'}); }); });

×