SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
Computação Física, Plataformas, Comunicação, APIs
OpenDevice - Plataforma para IoT (Internet das Coisas)
Ricardo JL Rufino
rjlr@cin.ufpe.br
ricardo@criativasoft.com.br
AgendaAgenda
● Introdução a Internet das Coisas (fast !!)
● OpenDevice (Hands-On)
● Arduino / Raspberry e Similares
● Protocolos de Comunicação
● Brincando via JavaScript
● Comunicação em real-time utilizando WebSockets
● Utilizando o Android
AgendaApresentação
Ricardo JL Rufino
➔ Esp. em Engenharia de Software
➔ Mestrando em Gestão de TI (UFPE)
➔ Sócio fundador da CriativaSoft.
➔ Atuo no desenvolvimento de Software desde 2007, focado em
soluções empresariais sobre plataforma JavaEE.
Desenvolvedor de softwares open-source como Framework
Web MVC Mentawai, ProjectNCode e instrutor de cursos de
Java.
Internet
das
Coisas
Internet das Coisas
●
Que coisas são essas ?
– Computadores
– Smart Phones
– Tablets
– Sensores
– Roupas
– Pessoas
– Pode ser o que você quiser ! Até cidades !
Conceito
●
O Conceito de “Internet das Coisas” começou a
ser desenvolvido em 1999 nos laboratórios do
MIT. A proposta é ligar todas as coisas à
Internet, de sofisticados equipamentos até
lâmpadas, para que esses objetos passam se
comunicar entre si e com os usuários, a fim de
gerar informações com diversos potenciais e
finalidades
Momento Atual
Envolvidos ?
●
Grandes empresas estão aderindo...
– Google
●
Compra da Nest ($3.2 ~ R$ 7.5 bilhões )
●
Compra da Boston Dynamics (robôs)
●
Sistema Operacional para carros. (Android Auto)
– Apple (HomeKit, healthkit, )
– Microsof
●
Lançando plataformas de IoT
– Dell, Intel e Samsung
– Muitas outras e em breve ….. a ;)
“A Internet das Coisas vai mudar
o mundo completamente.”F
U
T
U
R
O Hu – Yoshida ( CTO Hitachi )
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Problema !!
Como fazer a comunicação com esses equipamentos / dispositivos ?
Os padrões ainda estão sendo criados.... (verdadeira gerra !)
É preciso ser fácil
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
● A Sun nos abandonou ! (JavaComm/JSR80 ?!?)
● RXTX tem muitos problemas e tem ajustes manuais
- Consegue fazer via JNI (Java Native Interface)
- Pra quem quer começar é um problema !
● Usb4java – Nova, mas parece promissora !
...A IDE do Arduino usa RXTX por baixo dos panos
USB ??
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
●
Aqui só no J2ME (JSR-82) e Android.
●
Desktop nem pensar !! e Raspberry ?? rsrsr
●
Saída : Bluecove (usando JNI)
●
Problema : Ultimo release é de 2008
Snapshot em 2010
Bluetooth ??
* JNI faz chamadas a bibliotecas em C, produzidas para esse fim
1
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Alternativas com JAVA ?
Esse não podemos reclamar !
Rede / TCP / IP ?
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Tudo junto ?
Dá um trabalhinho !
E você precisa criar sua própria forma de comunicação
Lidar com detalhes de baixo nível
Correção de Erros
Precisa ter uma boa experiência
Etc.. etc...
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3
Solução ?
Quem pode nos ajudar ?
OpenDevice
Open IoT (Internet Of Things) Platform and Framework.
“Conjunto de ferramentas e APIs para construção de
soluções de Internet das Coisas”
OpenDevice
Open IoT (Internet Of Things) Platform and Framework.
“Conjunto de ferramentas e APIs para construção de
soluções de Internet das Coisas”
OpenDevice
● Apis e Ferramentas que permitem construir
sistemas de:
– Automação Residencial
– Monitoramento de Sensores
– Monitoramento de Energia
– Controle de Robôs
– Smart City
OpenDevice
● Objetivo:
O principal objetivo é monitorar e controlar
hardwares baratos como Arduino, RaspberryPI e
plataformas semelhantes, local (offline) ou sobre
a nuvem usando linguagens de programação de
alto nível e com a abstração de protocolos e
detalhes de baixo nível.
Foco no que é importante !
Isso permite que você se concentre em seu
projeto e na inovação, deixar os detalhes
obscuros de protocolos de comunicação e
especificações com OpenDevice, você vai dar um
passo importante para o sucesso de seu
projeto.
Tecnologias Envolvidas
Funcionalidades
● Open API (for: REST, JavaScript, Java, Android, Arduino,
EnergiaIDE)
● Real-time (WebSockets)
● Event-Based
● Async & non-blocking
● Multi-protocolo (Usb, Bluetooth, TCP)
● Independente de Linguagem
● Independente de Plataforma (Windows, Linux, Mac, MIPs on
OpenWRT)
● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
Visão Geral
Event-driven and Real-Time
Você não precisa consultar a informação,
ela vem até você quando os dados
estiverem disponíveis
Hands-On/Of
Uma pitada de java...
Blink - Arduino
* C / Arduino
Blink - Arduino
* C / Arduino
Outras opções.....
Blink – Java (Arduino Style)
Blink - Java (mais livre)
Blink Java (Comandos)
Incrementando no JAVA
Definição de Dispositivos
Definição das Conexões
* JAVA
*Opcional: Somente é necessário se for trabalhar com O.O do lado java
Adicionando Rest !
Adicione essa linha e seja feliz !!!
Você pode acessar pelo navegador
… ou com JavaScript !
Agora ficou sério ! WebSockets !
Adicione essas linhas e fique Real-Time e de quebra servidor http !
Biblioteca de Rest e WebSocket ! (adicione no pom.xml)
Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor de REST
Api JavaScript para WebSocket
Instalação
● Usamos o Maven (arquivo pom.xml)
Substitua: ${opendevice-version} pela ultima versão, atualmente: 0.1.2-SNAPSHOT.
Qualquer dúvida consulte:
https://opendevice.atlassian.net/wiki/display/DOC/Documentation
Instalação
● Adicionar o repositório da Sonatype
Instalação (lib arduino/similar)
● Baixar ou Clonar o repositório do GIT
– opendevice-hardware-libraries
● Copiar a pasta: arduino/OpenDevice
– Para pasta /libraries da IDE do Arduino
● Reinicie a IDE do Arduino
Github / Sources: https://github.com/OpenDevice
Exemplos
● Os exemplos estão no Github
– opendevice-hardware-libraries
● Copiar a pasta: arduino/OpenDevice
– Para pasta /libraries da IDE do Arduino
● Reinicie a IDE do Arduino
Github / Sources: https://github.com/OpenDevice
HORÁRIO RESERVADO
À PROGRAMAÇÃO E MÃO NA MASSA
Postura !
Nós somos desenvolvedores, não somos “normais”
ACEITE ISSO.. !!!
Devemos ser agentes de Transformação e Criação.
Atitude !
Não espere a ideia brilhante !
Execute a ideia que você gosta.
Descubra o que você gosta
Não escute os outros
●
Muita gente vai dizer que você não consegue
●
Muita gente vai dizer que já existe
Dúvidas ?
Contatos
●
E-mail:
– ricardo@criativasof.com.br
– rjlr@cin.ufpe.br
●
Facebook
– /ricardojlrufino
Link's
●
OpenDevice:
– http://opendevice.io
– https://github.com/OpenDevice
– https://opendevice.atlassian.net/wiki
– http://opendevice.criativasof.com.br
●
Facebook
– /opendevice
●
IDE do Arduino + Melhorias
– http://criativasof.com.br/downloads/programas/arduino
Link's
●
Onde Comprar ? (Gringos):
– www.adafruit.com
– www.sparkfun.com
– www.seeedstudio.com
– imall.iteadstudio.com
– www.dx.com (mercado livre – demora....)
●
Brasil
– Lab de Garagem (http://www.labdegaragem.org
– Multilógica Shop (http://multilogica-shop.com/);
– Rlrobotics (http://www.rlrobotics.ind.br/arduino);
– Webtronico (http://www.webtronico.com/)
Obrigado pela sua atenção.

Más contenido relacionado

La actualidad más candente

Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresCarlos Eduardo Pantoja
 
Flisol projetos criativos com o arduino
Flisol   projetos criativos com o arduino Flisol   projetos criativos com o arduino
Flisol projetos criativos com o arduino Fernando Moreira
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar ArduinoIsvaldo Souza
 
Embarcados - Ao arduino e além
Embarcados - Ao arduino e alémEmbarcados - Ao arduino e além
Embarcados - Ao arduino e alémFabio Souza
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & TruquesÁlvaro Justen
 
Minicurso arduino eeep aurora
Minicurso arduino eeep auroraMinicurso arduino eeep aurora
Minicurso arduino eeep auroraJuliete Souza
 
Comunicação entre Java e Arduino Utilizando o Middleware Javino
Comunicação entre Java e Arduino Utilizando o Middleware JavinoComunicação entre Java e Arduino Utilizando o Middleware Javino
Comunicação entre Java e Arduino Utilizando o Middleware JavinoCarlos Eduardo Pantoja
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreÁlvaro Justen
 
Introdução ao Arduino e robótica
Introdução ao Arduino e robóticaIntrodução ao Arduino e robótica
Introdução ao Arduino e robóticaMarcelo Quinta
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetFabio Souza
 
PLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platformPLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platformRenato Mintz
 
Interfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisInterfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisTiago Barros
 
Domótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com ArduinoDomótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com ArduinoDesiree Santos
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladoresFabio Souza
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedFabio Souza
 

La actualidad más candente (20)

Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
 
Flisol projetos criativos com o arduino
Flisol   projetos criativos com o arduino Flisol   projetos criativos com o arduino
Flisol projetos criativos com o arduino
 
CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?CPBR7 - Existe vida depois do Arduino?
CPBR7 - Existe vida depois do Arduino?
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Apresentando o Arduino - UESPI
Apresentando o Arduino - UESPIApresentando o Arduino - UESPI
Apresentando o Arduino - UESPI
 
Embarcados - Ao arduino e além
Embarcados - Ao arduino e alémEmbarcados - Ao arduino e além
Embarcados - Ao arduino e além
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & Truques
 
Minicurso arduino eeep aurora
Minicurso arduino eeep auroraMinicurso arduino eeep aurora
Minicurso arduino eeep aurora
 
Arduino: Passado, presente e futuro.
Arduino: Passado, presente e futuro.Arduino: Passado, presente e futuro.
Arduino: Passado, presente e futuro.
 
Comunicação entre Java e Arduino Utilizando o Middleware Javino
Comunicação entre Java e Arduino Utilizando o Middleware JavinoComunicação entre Java e Arduino Utilizando o Middleware Javino
Comunicação entre Java e Arduino Utilizando o Middleware Javino
 
Arduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware LivreArduino: Brincando de eletrônica com Python e Hardware Livre
Arduino: Brincando de eletrônica com Python e Hardware Livre
 
Semana 1
Semana 1Semana 1
Semana 1
 
Introdução ao Arduino e robótica
Introdução ao Arduino e robóticaIntrodução ao Arduino e robótica
Introdução ao Arduino e robótica
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
 
PLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platformPLCduino - A PLC using Arduino platform
PLCduino - A PLC using Arduino platform
 
Interfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisInterfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveis
 
Domótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com ArduinoDomótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com Arduino
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
 
Aula sobre arduino
Aula sobre arduinoAula sobre arduino
Aula sobre arduino
 

Destacado

16050514 apostila-programacao-php-e-my sql-exatasweb
16050514 apostila-programacao-php-e-my sql-exatasweb16050514 apostila-programacao-php-e-my sql-exatasweb
16050514 apostila-programacao-php-e-my sql-exataswebWesley Ferreira
 
[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2Victor Hugo Batista
 
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...Jacques Chicourel
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasMarco Antonio Maciel
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!Globalcode
 
[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisasVictor Hugo Batista
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das CoisasKiev Gama
 
Internet das Coisas e o Futuro da Internet
Internet das Coisas e o Futuro da InternetInternet das Coisas e o Futuro da Internet
Internet das Coisas e o Futuro da InternetAndre Peres
 
Internet of Things, IoT inovação e Segurança
Internet of Things, IoT inovação e SegurançaInternet of Things, IoT inovação e Segurança
Internet of Things, IoT inovação e SegurançaLeandro Bennaton
 

Destacado (10)

16050514 apostila-programacao-php-e-my sql-exatasweb
16050514 apostila-programacao-php-e-my sql-exatasweb16050514 apostila-programacao-php-e-my sql-exatasweb
16050514 apostila-programacao-php-e-my sql-exatasweb
 
[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2[iv festival games for change américa latina] oficina pt. 2
[iv festival games for change américa latina] oficina pt. 2
 
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...
Internet of Things, M2M e aplicativos mobile: Tendências, oportunidades, desa...
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das Coisas
 
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!Internet das Coisas com Coisas Reais:  Java , Things API, Raspberry PI e Toys!
Internet das Coisas com Coisas Reais: Java , Things API, Raspberry PI e Toys!
 
[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas[Wica 2015] o que é internet das coisas
[Wica 2015] o que é internet das coisas
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Internet das coisas
Internet das coisasInternet das coisas
Internet das coisas
 
Internet das Coisas e o Futuro da Internet
Internet das Coisas e o Futuro da InternetInternet das Coisas e o Futuro da Internet
Internet das Coisas e o Futuro da Internet
 
Internet of Things, IoT inovação e Segurança
Internet of Things, IoT inovação e SegurançaInternet of Things, IoT inovação e Segurança
Internet of Things, IoT inovação e Segurança
 

Similar a ArduinoDay 2015 - OpenDevice

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceRicardo Rufino
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesRodrigo Peleias
 
Palestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3DPalestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3DRenato Puccini
 
Prototipação rápida - Rails e Arduino
Prototipação rápida - Rails e ArduinoPrototipação rápida - Rails e Arduino
Prototipação rápida - Rails e ArduinoDaner dos Reis
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro FrameworkIgor Kondrasovas
 
Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Eronides Da Silva Neto
 
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012Projeto Uca Na Cuca
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 
Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazerHeider Lopes
 
Projetos Mono e Moonlight
Projetos Mono e MoonlightProjetos Mono e Moonlight
Projetos Mono e MoonlightPedro Alves Jr.
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 
Sindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaSindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaDesiree Santos
 

Similar a ArduinoDay 2015 - OpenDevice (20)

Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDeviceHackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
Hackeando um SmartBOX (com android) e instalando Linux & JAVA & OpenDevice
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Netbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 PortuguesNetbeans Slides Fy2009 Portugues
Netbeans Slides Fy2009 Portugues
 
Manual lab ino
Manual lab inoManual lab ino
Manual lab ino
 
Palestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3DPalestra SFD etec Netbeans e Java 3D
Palestra SFD etec Netbeans e Java 3D
 
Prototipação rápida - Rails e Arduino
Prototipação rápida - Rails e ArduinoPrototipação rápida - Rails e Arduino
Prototipação rápida - Rails e Arduino
 
arduino presentation
arduino presentationarduino presentation
arduino presentation
 
Netduino e .NET Micro Framework
Netduino e .NET Micro FrameworkNetduino e .NET Micro Framework
Netduino e .NET Micro Framework
 
Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)
 
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012
Uso do Hardware Livre Arduino em Ambientes de Ensino-aprendizagem - JAIE2012
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
Netbeans Slides
Netbeans SlidesNetbeans Slides
Netbeans Slides
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazer
 
Projetos Mono e Moonlight
Projetos Mono e MoonlightProjetos Mono e Moonlight
Projetos Mono e Moonlight
 
Mono Codebits
Mono CodebitsMono Codebits
Mono Codebits
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 
Java e Software Livre
Java e Software LivreJava e Software Livre
Java e Software Livre
 
Sindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaSindpd introducao arduinodomotica
Sindpd introducao arduinodomotica
 
.NET e C# - Introdução Geral
.NET e C# - Introdução Geral.NET e C# - Introdução Geral
.NET e C# - Introdução Geral
 

ArduinoDay 2015 - OpenDevice

  • 1. Computação Física, Plataformas, Comunicação, APIs OpenDevice - Plataforma para IoT (Internet das Coisas) Ricardo JL Rufino rjlr@cin.ufpe.br ricardo@criativasoft.com.br
  • 2. AgendaAgenda ● Introdução a Internet das Coisas (fast !!) ● OpenDevice (Hands-On) ● Arduino / Raspberry e Similares ● Protocolos de Comunicação ● Brincando via JavaScript ● Comunicação em real-time utilizando WebSockets ● Utilizando o Android
  • 3. AgendaApresentação Ricardo JL Rufino ➔ Esp. em Engenharia de Software ➔ Mestrando em Gestão de TI (UFPE) ➔ Sócio fundador da CriativaSoft. ➔ Atuo no desenvolvimento de Software desde 2007, focado em soluções empresariais sobre plataforma JavaEE. Desenvolvedor de softwares open-source como Framework Web MVC Mentawai, ProjectNCode e instrutor de cursos de Java.
  • 5. Internet das Coisas ● Que coisas são essas ? – Computadores – Smart Phones – Tablets – Sensores – Roupas – Pessoas – Pode ser o que você quiser ! Até cidades !
  • 6. Conceito ● O Conceito de “Internet das Coisas” começou a ser desenvolvido em 1999 nos laboratórios do MIT. A proposta é ligar todas as coisas à Internet, de sofisticados equipamentos até lâmpadas, para que esses objetos passam se comunicar entre si e com os usuários, a fim de gerar informações com diversos potenciais e finalidades
  • 8. Envolvidos ? ● Grandes empresas estão aderindo... – Google ● Compra da Nest ($3.2 ~ R$ 7.5 bilhões ) ● Compra da Boston Dynamics (robôs) ● Sistema Operacional para carros. (Android Auto) – Apple (HomeKit, healthkit, ) – Microsof ● Lançando plataformas de IoT – Dell, Intel e Samsung – Muitas outras e em breve ….. a ;)
  • 9. “A Internet das Coisas vai mudar o mundo completamente.”F U T U R O Hu – Yoshida ( CTO Hitachi )
  • 10. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Problema !! Como fazer a comunicação com esses equipamentos / dispositivos ? Os padrões ainda estão sendo criados.... (verdadeira gerra !) É preciso ser fácil
  • 11. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? ● A Sun nos abandonou ! (JavaComm/JSR80 ?!?) ● RXTX tem muitos problemas e tem ajustes manuais - Consegue fazer via JNI (Java Native Interface) - Pra quem quer começar é um problema ! ● Usb4java – Nova, mas parece promissora ! ...A IDE do Arduino usa RXTX por baixo dos panos USB ??
  • 12. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? ● Aqui só no J2ME (JSR-82) e Android. ● Desktop nem pensar !! e Raspberry ?? rsrsr ● Saída : Bluecove (usando JNI) ● Problema : Ultimo release é de 2008 Snapshot em 2010 Bluetooth ?? * JNI faz chamadas a bibliotecas em C, produzidas para esse fim
  • 13. 1 Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Alternativas com JAVA ? Esse não podemos reclamar ! Rede / TCP / IP ?
  • 14. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Tudo junto ? Dá um trabalhinho ! E você precisa criar sua própria forma de comunicação Lidar com detalhes de baixo nível Correção de Erros Precisa ter uma boa experiência Etc.. etc...
  • 15. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3 Solução ? Quem pode nos ajudar ?
  • 16. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 17. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 18. OpenDevice ● Apis e Ferramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 19. OpenDevice ● Objetivo: O principal objetivo é monitorar e controlar hardwares baratos como Arduino, RaspberryPI e plataformas semelhantes, local (offline) ou sobre a nuvem usando linguagens de programação de alto nível e com a abstração de protocolos e detalhes de baixo nível.
  • 20. Foco no que é importante ! Isso permite que você se concentre em seu projeto e na inovação, deixar os detalhes obscuros de protocolos de comunicação e especificações com OpenDevice, você vai dar um passo importante para o sucesso de seu projeto.
  • 22. Funcionalidades ● Open API (for: REST, JavaScript, Java, Android, Arduino, EnergiaIDE) ● Real-time (WebSockets) ● Event-Based ● Async & non-blocking ● Multi-protocolo (Usb, Bluetooth, TCP) ● Independente de Linguagem ● Independente de Plataforma (Windows, Linux, Mac, MIPs on OpenWRT) ● Lightweight/Built-in Servers (não precisa do tomcat ou glassfish)
  • 24. Event-driven and Real-Time Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 26. Blink - Arduino * C / Arduino
  • 27. Blink - Arduino * C / Arduino Outras opções.....
  • 28. Blink – Java (Arduino Style)
  • 29. Blink - Java (mais livre)
  • 31. Incrementando no JAVA Definição de Dispositivos Definição das Conexões * JAVA *Opcional: Somente é necessário se for trabalhar com O.O do lado java
  • 32. Adicionando Rest ! Adicione essa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  • 33. Agora ficou sério ! WebSockets ! Adicione essas linhas e fique Real-Time e de quebra servidor http ! Biblioteca de Rest e WebSocket ! (adicione no pom.xml) Ao adicionar o servidor de W.S automaticamente já é adicionado o servidor de REST
  • 34. Api JavaScript para WebSocket
  • 35. Instalação ● Usamos o Maven (arquivo pom.xml) Substitua: ${opendevice-version} pela ultima versão, atualmente: 0.1.2-SNAPSHOT. Qualquer dúvida consulte: https://opendevice.atlassian.net/wiki/display/DOC/Documentation
  • 36. Instalação ● Adicionar o repositório da Sonatype
  • 37. Instalação (lib arduino/similar) ● Baixar ou Clonar o repositório do GIT – opendevice-hardware-libraries ● Copiar a pasta: arduino/OpenDevice – Para pasta /libraries da IDE do Arduino ● Reinicie a IDE do Arduino Github / Sources: https://github.com/OpenDevice
  • 38. Exemplos ● Os exemplos estão no Github – opendevice-hardware-libraries ● Copiar a pasta: arduino/OpenDevice – Para pasta /libraries da IDE do Arduino ● Reinicie a IDE do Arduino Github / Sources: https://github.com/OpenDevice
  • 40. Postura ! Nós somos desenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 41. Atitude ! Não espere a ideia brilhante ! Execute a ideia que você gosta. Descubra o que você gosta Não escute os outros ● Muita gente vai dizer que você não consegue ● Muita gente vai dizer que já existe
  • 44. Link's ● OpenDevice: – http://opendevice.io – https://github.com/OpenDevice – https://opendevice.atlassian.net/wiki – http://opendevice.criativasof.com.br ● Facebook – /opendevice ● IDE do Arduino + Melhorias – http://criativasof.com.br/downloads/programas/arduino
  • 45. Link's ● Onde Comprar ? (Gringos): – www.adafruit.com – www.sparkfun.com – www.seeedstudio.com – imall.iteadstudio.com – www.dx.com (mercado livre – demora....) ● Brasil – Lab de Garagem (http://www.labdegaragem.org – Multilógica Shop (http://multilogica-shop.com/); – Rlrobotics (http://www.rlrobotics.ind.br/arduino); – Webtronico (http://www.webtronico.com/)
  • 46. Obrigado pela sua atenção.