ArduinoDay 2015 - OpenDevice

46
Computação Física, Plataformas, Comunicação, APIs OpenDevice - Plataforma para IoT (Internet das Coisas) Ricardo JL Rufino [email protected] [email protected]

Transcript of ArduinoDay 2015 - OpenDevice

Computação Física, Plataformas, Comunicação, APIsOpenDevice - Plataforma para IoT (Internet das Coisas)

Ricardo JL [email protected]

[email protected]

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

UTURO Hu – Yoshida ( CTO Hitachi )

Linha 1 Linha 2 Linha 3 Linha 40

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 40

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 40

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 40

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 40

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çãoLidar com detalhes de baixo nível

Correção de ErrosPrecisa ter uma boa experiência

Etc.. etc...

Linha 1 Linha 2 Linha 3 Linha 40

2

4

6

8

10

12

Coluna 1

Coluna 2

Coluna 3

Solução ?Quem pode nos ajudar ?

OpenDeviceOpen IoT (Internet Of Things) Platform and Framework.

“Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”

OpenDeviceOpen 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: – [email protected][email protected]

● 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/)