O documento discute Node.js para sistemas embarcados, destacando suas características como eficiência energética, tamanho de código reduzido e interface dedicada. Ele também lista exemplos de aplicações como veículos, robótica, impressoras 3D e drones, e recomenda placas single-board como Raspberry Pi e BeagleBone para desenvolvimento.
2. Node.jsNode.js para embarcadospara embarcados
Alan HoffmeisterAlan Hoffmeister
https://github.com/alanhoffhttps://github.com/alanhoff
https://twitter.com/alan_hoffhttps://twitter.com/alan_hoff
https://alanhoff.comhttps://alanhoff.com
3. 1.1. Sistema embarcado?Sistema embarcado?
An embedded system is a computer systemAn embedded system is a computer system
with a dedicated function within a largerwith a dedicated function within a larger
mechanical or electrical system, often withmechanical or electrical system, often with
real-timereal-time computing constraints.computing constraints.
4. 2.2. Características de um ESCaracterísticas de um ES
** Eficiência energéticaEficiência energética
** Tamanho de código reduzidoTamanho de código reduzido
** Runtime simplificadoRuntime simplificado
** Peso reduzidoPeso reduzido
** Preço reduzidoPreço reduzido
** Interface de usuário dedicadaInterface de usuário dedicada
14. 6.6. Single Board ComputersSingle Board Computers
** Placas mais robustasPlacas mais robustas
** Matem as características de um sistemaMatem as características de um sistema
embarcadoembarcado
** Trás tudo junto: GPIO, proc., mem., net.,Trás tudo junto: GPIO, proc., mem., net.,
armazenamento...armazenamento...
** Um computador completoUm computador completo
** Um brinde à arquitetura ARMUm brinde à arquitetura ARM
16. 7.7. Linux + ARM + Node.js = ♥Linux + ARM + Node.js = ♥
** LinuxLinux
- Kernel- Kernel
- Drivers- Drivers
- Controle de Hardware- Controle de Hardware
- Daemons- Daemons
** Node.jsNode.js
- Scripting- Scripting
- Cola entre lógica e OS- Cola entre lógica e OS
17. 8.8. Node.js em embarcadosNode.js em embarcados
** The goodThe good
- Free as FREE BEER- Free as FREE BEER
- Baixo consumo de energia- Baixo consumo de energia
- Tempo de desenvolvimento- Tempo de desenvolvimento
- Esqueça compilação, é JS!- Esqueça compilação, é JS!
- Milhares de pacotes no NPM- Milhares de pacotes no NPM
- Eventos e streams nativos- Eventos e streams nativos
- I/O não bloqueante- I/O não bloqueante
- Cross-compiling- Cross-compiling
- Runtime leve e independente- Runtime leve e independente
- Embedável- Embedável
- Core rico em features- Core rico em features
18. 8.8. Node.js em embarcadosNode.js em embarcados
** The badThe bad
- Ruim para CPU-bound tasks- Ruim para CPU-bound tasks
- Debug assíncrono- Debug assíncrono
- Poucos desenvolvedores- Poucos desenvolvedores
** The uglyThe ugly
- Grandes poderes, grandes- Grandes poderes, grandes
responsabilidadesresponsabilidades
20. 10.10. npm install --savenpm install --save
** libmraalibmraa
- Sanitiza e padroniza componentes- Sanitiza e padroniza componentes
** serialportserialport
- Fale com seus sensores e periféricos!- Fale com seus sensores e periféricos!
** node-REDnode-RED
- Ferramenta visual para integrar harware,- Ferramenta visual para integrar harware,
APIs, serviços onlineAPIs, serviços online
** node-usbnode-usb
- Fácil manuseio de portas USB- Fácil manuseio de portas USB
** electronelectron
- Crie interfaces em HTML!- Crie interfaces em HTML!
* Sistemas dedicados
* Fazem parte de um conjunto maior
* Muitos necessitam de operações real-time
Carro do google
Sensores de posicionamento, reconhecimento, proximidade, velocidade, posicionamento
Frameworks especiais para trabalhar com robôs
Grandes empresas apostando no JS para robôs, como a INTEL
É possível controlar uma impressora através da porta serial usando JS e fazer o parse de arquivos de impressão 3D
Prohjeto dedicado a drones NodeBots
Dia internacional da nodebots 25
Internet das coisas
Hardware interconectado, controlado remotamente, web
Monitoramento remoto
Desde ultrasom até aparelhos de ressonância magnética
É fácil iniciar, sqn
Muito complicado
Uma pessoa não faz tudo sozinho
Uma pessoa não detêm o conhecimento de tudo isso
Ciclo de prototipagem extremamente demorado
Nossa expectativa de vida é menor do que a expectativa de aprender tudo isso
Em um único circuito impresso temos tudo o que precisamos para desenvolver um sistema completo.
Preço baixíssimo, tudo pronto, custo benefício muito bom
ARM é um conjunto de instruções para microprocessadores RISC, menos transistores = menos consumo de energia, menor e mais portátil
Uma variedade de boards para escolher
Cada uma tem a sua particularidade
Precos acessíveis
Utilizamos duas ferramentas que se complementam
Linux = OS
Node.js = Programa/Lógica
Baixa energia, loop fica dormindo quando não existem tarefas
Eventos: o sistema embarcado normalmente precisa responder à inputs externos, sensores, comandos
Stream: as coisas precisam ser mastigadas com calma, temos pouca potência
IO não bloqueante: várias tarefas ao mesmo tempo em um único core
Mais coisas para tomar cuidade, é um sistema operacional!
Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto
Programe normalmente como se estivesse no seu computador
Utilize o sistema a seu favor, e não reinvente a roda
Várias tarefas podem ser feitas ao mesmo tempo sem interferir no loop, mas é necessário cuidado, digerir uma grande tarefa em pequenas partes
Mais coisas para tomar cuidade, é um sistema operacional!
Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto
Mais coisas para tomar cuidade, é um sistema operacional!
Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto