13
NodeJS & 3D Printer

Node Js & 3D Printer

Embed Size (px)

Citation preview

Page 1: Node Js & 3D Printer

NodeJS & 3D Printer

Page 2: Node Js & 3D Printer

Por que NodeJS ?

Node.js es un entorno JavaScript de lado de servidor que utiliza un modelo asíncrono y dirigido por eventos. :

-El lenguaje es el mismo para el servidor y cliente.

-Existe una cantidad enorme de módulos fáciles de instalar y usar

(npm).

-Esta pensado para trabajar en tiempo real.

-Permite realizar llamadas asincrónicas de forma sencilla.

Page 3: Node Js & 3D Printer

Que queremos que haga nuestra

aplicación ?

Page 4: Node Js & 3D Printer

Implementación en NodeJS

Tecnología a utilizar

Html5

Css

Js

NodeJS

ThreeJS

JQuery

Page 5: Node Js & 3D Printer

ExampleDescriptionParamsCmd

G0 X50Rapid MovementAxis [X/Y/Z] Position G0

G1 F150

X10

Controlled MovementAxis [X/Y/Z/E] Position

Feed [F]G1

G28 X YHome<Axis [X/Y/Z]>G28

G90Absolute PositioningnoneG90

G91Relative PositioningnoneG91

M104

S100

Set extruder

temperature

Temperature[S]M104

M17Enable all stepper

motors

noneM17

M18Disable all stepper

motors

noneM18

M140

S55

Set heated bed

temperature to S

Degrees[S]M140

M105Get extruder

Temperature

noneM105

Gcode

Page 6: Node Js & 3D Printer
Page 7: Node Js & 3D Printer

Gcode

Ejemplo del cálculo del cheksum con el número de línea correspondiente:

function checksum(cmd){

cs=0;for(var i = 0; i < cmd.length; i++){

cs=cs^cmd.charCodeAt(i);}return cs;

}

cs=checksum("N1 G1 X104.238 Y203.924 E3.9304");

N1 G1 X104.238 Y203.924 E3.9304*cs

N1 G1 X104.238 Y203.924 E3.9304*92

Page 8: Node Js & 3D Printer

Modulos NodeJS

npm

Para facilitar la compilación, la instalación, la actualización y la

gestión de las dependencias de los módulos de Node.js se usa el

gestor de paquetes Node Package Manager (npm).

Ejemplo: npm install socket.io

https://www.npmjs.org/

Módulos

SerialPort

Socket.io

ExpressJS (Framework web)

FileSystem

Page 9: Node Js & 3D Printer

SerialPort

Métodos:

SerialPort (path, options, openImmediately, callback)

.open (callback)

.write (buffer, callback)

.close (callback)

Eventos:

.on('open', callback)

.on('data', callback)

.on('close', callback)

.on('error', callback)

Page 10: Node Js & 3D Printer

var SerialPort = require("serialport").SerialPort

var serialPort = new SerialPort("/dev/tty-usbserial1", {

baudrate: 57600

}, true); // this is the openImmediately flag [default is true]

serialPort.open(function () {

console.log('open');

serialPort.on('data', function(data) {

console.log('data received: ' + data);

});

serialPort.write("ls\n", function(err, results) { console.log('err ' + err);

console.log('results ' + results);

});

});

https://github.com/voodootikigod/node-serialport

Page 11: Node Js & 3D Printer

Socket.io

Socket designa un concepto abstracto por el cual dos programas

(posiblemente situados en computadoras distintas) pueden

intercambiar cualquier flujo de datos, generalmente de manera

fiable y ordenada. (Wikipedia)

http://socket.io

Server (app.js)

var app = require('express').createServer();

var io = require('socket.io')(app);

app.listen(80);

app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html');

});

io.on('connection', function (socket)

{

socket.emit('news', { hello: 'world' });

socket.on('my other event', function (data) { console.log(data); });

});

Client (index.html)

<script>

var chat = io.connect('http://localhost/chat') ,

news = io.connect('http://localhost/news');

chat.on('connect', function () { chat.emit('hi!');

});

news.on('news', function () { news.emit('woot');

});

</script>

Page 12: Node Js & 3D Printer

Socket.io & SerialportServer (app.js)

this.io.sockets.on("connection", function (socket) {

socket.on("connected", function (msg) {

serialport.open();

});

socket.on("disconnect", function (msg) {

serialport.close();

});

socket.on("home", function(data) {

data=cmd.customCmd("G28");

serialport.write(data,function(err, results){

console.log(err);

});

});

});

Client (index.html)

var socket = io.connect('http://localhost');

socket.on('connected', function (data) {

console.log(data);

});

$("# connected ").click(function(){

socket.emit(" connected ")

});

$("#home").click(function(){

socket.emit('home');

});

$("# disconnect ").click(function(){

socket.emit(disconnect ');

});

Page 13: Node Js & 3D Printer