Controlando um Arduino UNO com a framework Node.js
- Arduino UNO
- LED/ Sensor de temperatura/ Sensor de fotoluminosidade/ etc
- Resistores necessários para seus módulos
- Arduino IDE: Para manusear o sketch na sua placa Arduino
- Node.js: Framework necessária para manusear o programa em javascript
- Firmata: É um protocolo para comunicação com diferentes microcontroladores a partir de software em um computador, smartphone, etc. O firmware Firmata pode ser carregado em qualquer placa microcontroladora (como Arduino) e é capaz de falar com qualquer laptop, PC ou smartphone. Já vem como padrão na Arduino IDE.
- OPCIONAL Johnny-five: Johnny-Five é a plataforma de robótica baseada em JavaScript e IoT usada para escrever códigos em JavaScript e usada para fazer uma ponte entre as placas do Arduino e o computador. (somente usado no blink_led.js)
Antes de iniciar a codificação e o desenvolvimento, o Node.js deve ser baixado e configurado. Para fazer o download do ambiente Node.js, basta seguir etapas simples:
-
Passo 1: Faça o download do arquivo .exe do Node.js em seu site oficial.
-
Passo 2: Execute o .exe e siga as instruções dadas no instalador.
-
Passo 3: Reinicie seu computador como é recomendado no documento Node.js e também para usar todos os recursos do Node.js
-
Passo 4: Para verificar se o Node.js foi instalado, abra o Prompt de Comando e digite Node –v
-
Passo 5: Instale também as bibliotecas necessárias usadas para controlar o brilho do LED. Existem três bibliotecas usadas aqui:
-
express: wrapper do servidor HTTP
-
socket.io: biblioteca de WebSockets
-
serialport: invólucro de porta serial
-
-
Passo 6: Execute os comandos abaixo no CMD, um por um, para instalar essas três bibliotecas:
npm install express
npm install socket.io
npm install serialport
Agora, para executar o programa, siga as etapas abaixo:
-
Abrir o prompt de comando
-
Localize a pasta "LED_Control" seguindo o comando "cd"
-
Execute o comando "Node led_blink.js". Se executado com sucesso, mostrará "LED começou a piscar!"
Link para o circuito usando LED: https://www.tinkercad.com/things/dnzbB5Gwoep
<script type="text/javascript">
var socket = io.connect();
socket.on('led', function (data) {
document.getElementById("inputSlider").value = data.value;
document.getElementById("outputText").innerHTML = data.value;
});
//aqui
function showValue(newValue)
{
document.getElementById("outputText").innerHTML=newValue;
socket.emit('led', { value: newValue });
}
</script>
Inicializando as bibliotecas necessárias
var express = require('express');
app = express();
server = require('http').createServer(app);
io = require('socket.io').listen(server);
var SerialPort = require("serialport")
var serialPort = new SerialPort("/COM3", { baudRate: 9600 });
Fazendo as conexões
server.listen(8080);// Coloque aqui o IP desejado para comunicação servidor/arduino/usuario
app.use(express.static('public'));// Não tenho certeza se usar public pode causar um risco de segurança, a biblioteca express não tinha documentação boa sobre isso
var send = 0;// O valor inicial que será "mandado" para o arduino
Ouvindo o html para enviar dados no socket
io.sockets.on('connection', function (socket) {
socket.on('led', function (data) {
send = data.value;
var buf = new Buffer.alloc(1);
buf.writeUInt8(send);
serialPort.write(buf);
io.sockets.emit('led', {value: send});
});
socket.emit('led', {value: send});
});
OPCIONAL: recebendo informações do socket para enviar para o html
var read = 0;// O valor inicial do que será "recebido" do arduino
io.sockets.on('connection', function (socket) {
socket.on('led', function (data) {
read = io.sockets.receive('led', {value: get});
var buf = new Buffer.alloc(1);
buf.writeUInt8(read);
console.log(buf);
});
});
https://nodejs.org/dist/latest-v10.x/docs/api/
https://www.youtube.com/watch?v=eVGEea7adDM
https://github.com/simoesusp/Eletronica-para-Computacao
- Diogo Castanho Emídio
- Leonardo Antonetti da Motta
- Jorge Augusto Salgado Salhani