Control LED IO–Controlando o delay de um LED no Arduino com Node.js e Socket.io

Arduino & IoT & Node.js & Socket.io

capa control led io

Primeiro acenda um LED, depois domine o mundo! Seguindo esta premissa estou disponibilizando meu primeiro projeto/estudo em Node.js no Arduino. Trata-se de um simples blink utilizando Node.js, Socket.io, Firmata e Johnny-five no Visual Studio. Abaixo segue o vídeo de demonstração:

O projeto é bem simples e tem o passo-a-passo já está descrito no Github.

Para mais detalhes e baixar o projeto, acesse o Repository da solução aqui!

 

O código

Em app.js temos:


var express = require('express'),
    app = express(),
    server = require('http').Server(app),
    io = require('socket.io')(server),
    five = require("johnny-five");

app.disable('x-powered-by');

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', "http://" + req.headers.host + ':8000');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    next();
});

app.use("/", express.static(__dirname + "/view"));

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

server.listen(3000, "127.0.0.1");

five.Board().on("ready", function () {

    var led = new five.Led(13).strobe(1000);

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

    console.log('Iniciado!!!');

    socket.on('led', function (data) {
    console.log('Novo Delay LED: ' + data.delay);
    led.strobe(data.delay);
    });
    });
});

Já o script em nossa view index.html


var socket = io.connect("http://" + document.location.hostname + ":3000"), notif;
console.log('Iniciado!!!');

$('#ledSet').on('click', function () {
    var tmp = parseInt($('#ledDelay').val(), 10);
    socket.emit('led', { delay: tmp });
    console.log("LED Delay Configurado para: ", tmp);
});

Próximos passos

Minha ideia é aproveitar o trabalho que já realizei com backend e integrações de cloud e IoT, para montar um projeto com o mesmo código funcionando no Arduino, Intel Galileo2, Intel Edison e Raspeberry Pi. Tudo se comunicando com a nuvem via Microsoft Azure :D

 

Bons estudos e até a próxima pessoal  ;)


Author's profile picture

Vitor is a computer scientist who is passionate about creating software that will positively change the world we live in.

MVP Azure - Cloud Architect - Data science enthusiast


1 minutes to read