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
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.
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
3.3. Periféricos!Periféricos!
** Botões (teclado, controles..)Botões (teclado, controles..)
** Sensores, periféricosSensores, periféricos
** Tela, ledsTela, leds
** Motores, compassosMotores, compassos
** Wifi, bluetooth, rádioWifi, bluetooth, rádio
4.4. Aplicações – VeículosAplicações – Veículos
4.4. Aplicações – RobóticaAplicações – Robótica
4.4. Aplicações – Impressoras 3DAplicações – Impressoras 3D
4.4. Aplicações – DronesAplicações – Drones
4.4. Aplicações – IoTAplicações – IoT
4.4. Aplicações – MedicinaAplicações – Medicina
5.5. Para iniciar bastaPara iniciar basta
** Engenharia eletrônicaEngenharia eletrônica
** C/C++C/C++
** JavaJava
** PythonPython
** LuaLua
5.5. Consegui aprender tudoConsegui aprender tudo!!
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
6.6. Single Board ComputersSingle Board Computers
** U$ 35 Raspberry PiU$ 35 Raspberry Pi
** U$ 30 BeagleboneU$ 30 Beaglebone
** U$ 70 CubieboardU$ 70 Cubieboard
** U$ 35 TesselU$ 35 Tessel
** U$ 50 Intel GalileoU$ 50 Intel Galileo
** Odroid, Banana Pi, Radxa...Odroid, Banana Pi, Radxa...
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
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
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
9.9. ExemplosExemplos
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!
11.11. Auf wiedersehenAuf wiedersehen
** FontesFontes
-- http://goo.gl/TIRgCjhttp://goo.gl/TIRgCj
-- https://goo.gl/qycI25https://goo.gl/qycI25
-- https://goo.gl/i3KiVOhttps://goo.gl/i3KiVO
-- https://goo.gl/r4jBvchttps://goo.gl/r4jBvc
-- https://goo.gl/pMWFuhhttps://goo.gl/pMWFuh
-- http://goo.gl/ua9pechttp://goo.gl/ua9pec

Node.js para embarcados

  • 2.
    Node.jsNode.js para embarcadosparaembarcados 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?Sistemaembarcado? 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 deum 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
  • 5.
    3.3. Periféricos!Periféricos! ** Botões(teclado, controles..)Botões (teclado, controles..) ** Sensores, periféricosSensores, periféricos ** Tela, ledsTela, leds ** Motores, compassosMotores, compassos ** Wifi, bluetooth, rádioWifi, bluetooth, rádio
  • 6.
    4.4. Aplicações –VeículosAplicações – Veículos
  • 7.
    4.4. Aplicações –RobóticaAplicações – Robótica
  • 8.
    4.4. Aplicações –Impressoras 3DAplicações – Impressoras 3D
  • 9.
    4.4. Aplicações –DronesAplicações – Drones
  • 10.
    4.4. Aplicações –IoTAplicações – IoT
  • 11.
    4.4. Aplicações –MedicinaAplicações – Medicina
  • 12.
    5.5. Para iniciarbastaPara iniciar basta ** Engenharia eletrônicaEngenharia eletrônica ** C/C++C/C++ ** JavaJava ** PythonPython ** LuaLua
  • 13.
    5.5. Consegui aprendertudoConsegui aprender tudo!!
  • 14.
    6.6. Single BoardComputersSingle 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
  • 15.
    6.6. Single BoardComputersSingle Board Computers ** U$ 35 Raspberry PiU$ 35 Raspberry Pi ** U$ 30 BeagleboneU$ 30 Beaglebone ** U$ 70 CubieboardU$ 70 Cubieboard ** U$ 35 TesselU$ 35 Tessel ** U$ 50 Intel GalileoU$ 50 Intel Galileo ** Odroid, Banana Pi, Radxa...Odroid, Banana Pi, Radxa...
  • 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 emembarcadosNode.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 emembarcadosNode.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
  • 19.
  • 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!
  • 21.
    11.11. Auf wiedersehenAufwiedersehen ** FontesFontes -- http://goo.gl/TIRgCjhttp://goo.gl/TIRgCj -- https://goo.gl/qycI25https://goo.gl/qycI25 -- https://goo.gl/i3KiVOhttps://goo.gl/i3KiVO -- https://goo.gl/r4jBvchttps://goo.gl/r4jBvc -- https://goo.gl/pMWFuhhttps://goo.gl/pMWFuh -- http://goo.gl/ua9pechttp://goo.gl/ua9pec

Notas do Editor

  • #4 * Sistemas dedicados * Fazem parte de um conjunto maior * Muitos necessitam de operações real-time
  • #7 Carro do google Sensores de posicionamento, reconhecimento, proximidade, velocidade, posicionamento
  • #8 Frameworks especiais para trabalhar com robôs Grandes empresas apostando no JS para robôs, como a INTEL
  • #9 É possível controlar uma impressora através da porta serial usando JS e fazer o parse de arquivos de impressão 3D
  • #10 Prohjeto dedicado a drones NodeBots Dia internacional da nodebots 25
  • #11 Internet das coisas Hardware interconectado, controlado remotamente, web
  • #12 Monitoramento remoto Desde ultrasom até aparelhos de ressonância magnética
  • #13 É 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
  • #14 Nossa expectativa de vida é menor do que a expectativa de aprender tudo isso
  • #15 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
  • #16 Uma variedade de boards para escolher Cada uma tem a sua particularidade Precos acessíveis
  • #17 Utilizamos duas ferramentas que se complementam Linux = OS Node.js = Programa/Lógica
  • #18 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
  • #19 Mais coisas para tomar cuidade, é um sistema operacional! Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto
  • #20 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
  • #21 Mais coisas para tomar cuidade, é um sistema operacional! Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto
  • #22 Mais coisas para tomar cuidade, é um sistema operacional! Portas do firewall aberta, senhas padrões, SSH aberto, banco aberto