Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
NodeJs로 디바이스 통신하기
1.
2.
3.
4.
5.
6. 아두이노(Arduino)는 오픈소스를 기반으로 한 단일 보드
마이크로 컨트롤러이다.
AVR을 기반으로 한 보드로 이루어져 있고 최근에는
Cortex-M3를 이용한 제품(Arduino Due)도 있다.
소프트웨어 개발을 위한 통합 환경(IDE)이 있다.
아두이노는 다수의 스위치나 센서로부터 값을 받아들
여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써
환경과 상호작용이 가능한 물건을 만들어낼 수 있다. 또
한 플래시, 프로세싱, Max/MSP와 같은 소프트웨어를 연
동할 수 있다.[3]
아두이노의 가장 큰 장점은 마이크로컨트롤러를 쉽게 동
작시킬 수 있다는 것이다. 일반적으로 AVR 프로그래밍이
WinAVR로 컴파일하여, ISP장치를 통해 업로드를 해야하
는 등 번거로운 과정을 거쳐야하는데 비해, 아두이노는 컴
파일된 펌웨어를 USB를 통해 업로드를 쉽게 할 수 있다.
또한 아두이노는 다른 모듈에 비해 비교적 저렴하고, 윈도
를 비롯해 맥 OS X, 리눅스와 같은 여러 OS를 모두 지원
한다. 아두이노 보드의 회로도가 CCL에 따라 공개되어 있
으므로, 누구나 직접 보드를 직접 만들고 수정할 수 있다.
7. • 통신 방식 : RS-232 Serial via USB
• 패킷 : [전체][빨강][노랑][초록]nr
• 0 : 그대로
• 1 : 끄기
• 2 : 켜기
https://github.com/theRichu/node_arduinio_example/blob/master/arduino/device.ino
8.
9. $ 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
10. $ 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 });
});
11. $ 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 });
});