Você está na página 1de 135

Trilha: Internet das Coisas

Computao Fsica, Plataformas, Comunicao, APIs


Comunicao entre Arduino, Raspberry, Android com OpenDevice.
Ricardo JL Rufino
rjlr@cin.ufpe.br
ricardo@criativasoft.com.br
Agenda
Agenda
Introduo a Internet das Coisas (fast !!)
Arduino

Exemplos

Shields

Sensores

Projetos

Automao Residencial..

OpenDevice (Hands-On)
Arduino / Raspberry e Similares
Protocolos de Comunicao
Brincando via JavaScript
Comunicao em real-time utilizando WebSockets
Utilizando o Android
Agenda
Apresentao
Ricardo JL Rufino
Esp. em Engenharia de Software
Mestrando em Gesto de TI (UFPE)

Scio fundador da CriativaSoft.

Atuo no desenvolvimento de Software desde 2007, focado em


solues 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 so essas ?


Computadores
Smart Phones
Tablets
Sensores
Roupas
Pessoas
Pode ser o que voc quiser ! At cidades !
Conceito

O Conceito de Internet das Coisas comeou a


ser desenvolvido em 1999 nos laboratrios do
MIT. A proposta ligar todas as coisas
Internet, de sofisticados equipamentos at
lmpadas, para que esses objetos passam se
comunicar entre si e com os usurios, a fim
de gerar informaes com diversos potenciais e
finalidades
Momento Atual
Envolvidos ?

Grandes empresas esto aderindo...


Google

Compra da Nest ($3.2 ~ R$ 7.5 bilhes )

Compra da Boston Dynamics (robs)

Sistema Operacional para carros. (Android Auto)
Apple (HomeKit, healthkit, )
Microsof

Lanando plataformas de IoT
Dell, Intel e Samsung
Muitas outras e em breve .. a ;)
A Internet das Coisas vai mudar
F o mundo completamente.
U
T
U
R
O Hu Yoshida ( CTO Hitachi )
Como vim para aqui ?

Tudo comea com um violo...


.. e a primeira gambiarra:
Um captador feito a partir de um
relgio de pulso

GENIAL !!!! = )
Como vim para aqui ?

Depois a meta era uma Guitarra !

Resumindo:
2 anos juntando mesada !

E o amplificador ?
E o amplificador ?

Descobri que possvel criar coisas !!!


O vamos fazer agora ?

Ns somos desenvolvedores, no somos


pessoas normais .. ACEITE !!!

Vamos HACKEAR as coisas

Vamos CRIAR novas coisas


preciso estudar bastante
No ter medo de errar.. !
O que temos em mos ?
Arduino
O que Arduino
Arduino uma plataforma de prototipagem eletrnica open-
source, baseada nos princpios de flexibilidade e facilidade de
uso para hardware e software.
Consiste de uma placa com microcontrolador programvel
preparada para receber sinais de sensores e acionar
atuadores.
Sua linguagem de programao baseada em Wiring
(baseado em C/C++).
A placa pode funcionar em conjunto ou de forma independente
do computador
uma comunidade !

Se voc j conhece pode pular muitas pginas...


Hardware (modelos)
Hardware (modelos)
Software (Arduino IDE)
Arduino Open Source
Todo o hardware aberto e os projetos esto
disponveis
Quem quiser, pode comprar os componentes e
montar a sua placa
O software de programao tambm livre e
est disponvel para download gratuitamente
Clones
Freeduino
SeeDuino

Severino
Brasuno
Similares

chipKIT Uno32 - 32 bits,


LaunchPad (32bits - ARM Cortex M4) 80MHz, 128kB Flash, 16kB SRAM
Similares Adafruit Trinket (ATtiny85)

Digispark ( 6 I/O Pins,USB, I2C, SPI )

Digispark Digispark
Similares

O que no temos, podemos criar !

O que no temos, podemos criar !
Dvidas ?
Caractersticas de Hardware
Arduino Uno
Arduino Uno
Microcontrolador: ATmega328p (8-bit AVR RISC);
Tenso de operao: 5V;
Tenso de entrada (recomendada): 7-12V;
Pinos digitais de E/S:14 (6 podem ter sinal PWM);
Pinos com entrada analgica: 6;
Corrente mxima por pino de E/S: 40 mA;
Hardware para comunicao: 1 porta serial (UART TTL), I2C (TWI), SPI;
Memria Flash (de programa): 32 kB (0,5 kB so usados pelo bootloader);
Memria SRAM: 2 kB; EEPROM: 1 kB;
Frequncia de clock: 16 MHz.

http://arduino.cc/en/Main/arduinoBoardUno
Arduino UNO
Arduino Leonardo
Arduino Leonardo
Microcontrolador: ATmega32u4 (Atmel 8-bit AVR RISC);
Tenso de operao: 5V;
Tenso de entrada (recomendada): 7-12V;
Pinos digitais de E/S: 20 (7 podem ter sinal PWM);
Pinos com entrada analgica: 12;
Corrente mxima por pino de E/S: 40 mA;
Hardware para comunicao: 1 porta serial (UART), I2C (TWI), SPI, USB 2.0
(emula teclado ou mouse);
Memria Flash (de programa): 32 kB (4 kB usado pelo bootloader)
Memria SRAM: 2,5 kB; EEPROM: 1 kB;
Frequncia de clock: 16 MHz.
Suporte a comunicao USB no prprio ATmega32u4;

http://arduino.cc/en/Main/arduinoBoardLeonardo
Arduino Mega 2560
Arduino Mega 2560

Microcontrolador: ATmega2560;
Tenso de operao: 5V;
Tenso de entrada (recomendada): 7-12V;
Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
Pinos com entrada analgica: 16;
Corrente mxima por pino de E/S: 40 mA;
Hardware para comunicao: 4 portas seriais (UART), I2C (TWI), SPI, USB 2.0
(emula teclado ou mouse);
Memria Flash (de programa): 256 kB (8 kB so usados pelo bootloader)
Memria SRAM: 8 kB; EEPROM: 4 kB;
Frequncia de clock: 16 MHz.
O que um Microcontrolador?
CPU de pequeno porte, capaz de executar um
conjunto de instrues;
Ou seja, possui um microprocessador!
Instrues simples e rpidas;
Possui memria(s);
Possui perifricos;
Pode se comunicar com outros perifricos;
Microcontrolador
Microcontrolador

Diagrama do PIC16F887
Microcontrolador
Comparativo Arduinos
Software e Programao
Programao (Blink)

Define o modo de operao do PINO 13 como Sada

Liga a Tenso (5V) no PINO 13

Desliga
Esquema / Ligaes
Esquema / Ligaes
No LED a maior perna o positivo

recomendvel usar um Resistor (de 220ohm a 1k)


Esquema / Protoboard
Esquema / Sem nada !

Pra quem tem preguia:


O Arduino j vem com um LED embutido (Pino 13)
Instalao
IDE compatvel: Windows, Mac OS X e Linux
Link: http://arduino.cc/en/main/software
Driver
Windows: precisa do driver FTDI
Linux: no precisa de NADA... ;)
Software
Basta descompactar e rodar (se quiser tem um instalador)
Se tiver algum problema instale a verso antiga: Arduino 1.0.X
Dvidas, siga:
https://www.circuitar.com.br/tutoriais/configurando-o-arduino-no-windows/
Win 8: http://futebol-uff.blogspot.com.br/2012/12/instalando-drivers-do-arduino-no.html
Gravando o Programa

1 - Selecione o Modelo da Placa

2 - Selecione a Porta Serial *


* Se no aparecer, pode ser problema
no Driver (Ruindows !!!)
3 Clique em upload para No Arduino Leonardo a porta fica
mudando e algumas vesses voc precisa
compilar e enviar para o Arduino selecionar vrias vesses !
12

10

Prtica ?!
8

Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
Dvidas ?
Antes do Arduino

http://www.avr-tutorials.com/
Antes do Arduino
Digital I/O Assembly

http://www.avr-tutorials.com/
Antes do Arduino
Processo Lento
Mais caro
Mais Complexo
OK !!! Voltando....
Exemplo 2 : Boto (Leitura Digital)
Exemplo 2 : Boto (Leitura Digital)
Exemplo 2 : Boto (Leitura Digital)

http://arduino.cc/en/Tutorial/DigitalReadSerial
Exemplo 2 : Boto (explicao)

O digitalRead() l as tenses de entrada: (5v ou 0v)


e converte em valores: 0 (LOW) e 1 (HIGH)

O pino em modo de leitura (INPUT), sem nenhuma


conexo, ir flutuar gerando valores aleatrios, por
isso precisamos puxar ele pra 0v (pull-down) ou
para 5v (pull-up)

Ento quando a chave estiver aberta, precisamos


levar o pino para um estado confivel, no caso
ligamos ao negativo (GND) usando um resistor (ou
seja um pull-down )
Potencimetro : Leitura Analgica

http://www.arduino.cc/en/tutorial/potentiometer
Potencimetro : Leitura Analgica
Potencimetro : Cdigo
Potencimetro : Leitura Analgica
analogRead() - L valores dos pinos analgicos
O conversor A/D do microcontrolador ATmega328 possui 10
bits de resoluo, gerando valores na faixa 0 a 1023
conforme a tenso no pino, que varia de 0v a 5v.
A quantidade de pinos analgicos varia em cada modelo.
Demora 100 microsegundos (0.0001 s) para ler (10,000
leituras / seg)
Sensor de Luz : LDR
LDR (do ingls Light Dependent Resistor) ou Photo-resistor
Componente eletrnico passivo do tipo resistor varivel
A medida que a intensidade da luz aumenta, a sua resistncia
diminui.
No muito preciso !
Sensor de Luz : LDR
Modo Pull-Down
Pouca Luz Valor Baixo

Modo Pull-Up
Pouca Luz Valor Alto
Sensor de Luz : Cdigo
Shields Arduino
Sistema modular para expandir as
funcionalidades do arduino.
A parte mais genial !!!
Uma lista enorme pode
ser encontrada em:
http://shieldlist.org/
12

10

Exemplos
8

Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
Shield : Ethernet
Shield : WiFly Shield

https://www.sparkfun.com/products/9954
Shield : Cellular with SM5100B

https://www.sparkfun.com/products/9607
Shield : GPS

https://www.sparkfun.com/products/10710
Shield : XBee
Shield : Color LCD Shield

https://www.sparkfun.com/products/retired/9363
Shield : Relay Shield

http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134
Shield : MP3 Player Shield
12

10

Sensores
8

Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4

http://www.trossenrobotics.com/
Sensores

http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
Sensores

http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
Sensores

http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
12

10

Robs
8

Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
Robs
Robs
Robs
Robs
Automao Residencial
Automao Residencial
Ligar/Desligar qualquer eletrodomstico
Controlar iluminao, temperatura
Sensores de Presena (segurana)
Controle de portas e portes automticos
Controle Centralizado
Controle Remoto (pela internet)
Economia de Energia e Monitoramento de Consumo
Hardware barato ( Reduo de Custos !!!! )
Automao Residencial
12

10

Projetos
8

Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
Twitter Enabled Coffee Pot

http://www.instructables.com/id/Tweet-a-Pot-Twitter-Enabled-Coffee-Pot/
Inebriator

http://www.theinebriator.com/
Flamethrowing Jack-O'-Lantern

http://www.instructables.com/id/Flamethrowing-Jack-O-Lantern/
Tree Climbing Robot

http://www.instructables.com/id/Tree-Climbing-Robot/
Arduino R/C Lawnmower

http://www.instructables.com/id/Arduino-RC-Lawnmower/
http://www.wired.com/2013/01/wearable-arduinos/#slideid-351561
Drones
ArduIMU Quascopter

http://thecoolgadgets.com/arduimu-quascopter-diy-arduino-helicopter-4-infrared-and-1-ultra-sonic-sensors/
Dvidas ?
12

10

8
Problema !!
Como fazer a comunicao com esses equipamentos / dispositivos
Coluna 1 ?
6 Coluna 2
Coluna 3

Os
4 padres ainda esto sendo criados.... (verdadeira gerra !)

2
preciso ser fcil
0
Linha 1 Linha 2 Linha 3 Linha 4
1 Alternativas com JAVA ?
12 USB ??
A Sun nos abandonou ! (JavaComm/JSR80 ?!?)
10

RXTX tem muitos problemas e tem ajustes manuais


8

- Consegue fazer via JNI (Java Native Interface) Coluna 1


6
- Pra quem quer comear um problema ! Coluna 2
Coluna 3

Usb4java Nova, mas parece promissora !


4

0
Linha 1 Linha 2 Linha 3 Linha 4

...A IDE do Arduino usa RXTX por baixo dos panos


1 Alternativas com JAVA ?
12 Bluetooth ??
Aqui s no J2ME (JSR-82) e Android.
10

Desktop nem pensar !! e Raspberry ?? rsrsr


8

Sada : Bluecove (usando JNI)


Coluna 1
6 Coluna 2
Coluna 3


4 Problema : Ultimo release de 2008
Snapshot em 2010
2

0
Linha 1 Linha 2 Linha 3 Linha 4

* JNI faz chamadas a bibliotecas em C, produzidas para esse fim


1 Alternativas com JAVA ?
12 Rede / TCP / IP ?
10

Esse no podemos reclamar !


Coluna 1
6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
Tudo junto ?
12

10

8
D um trabalhinho !
Coluna 1
6 Coluna 2

E voc precisa criar sua prpria forma de comunicao


Coluna 3

Lidar com detalhes de baixo nvel


4

2 Correo de Erros
0
Precisa ter uma boa experincia
Linha 1
Etc.. etc...
Linha 2 Linha 3 Linha 4
12

Soluo ?
10

Coluna 1

Quem pode nos ajudar ?


6 Coluna 2
Coluna 3

0
Linha 1 Linha 2 Linha 3 Linha 4
OpenDevice
Open IoT (Internet Of Things) Platform and Framework.

Conjunto de ferramentas e APIs para construo de


solues de Internet das Coisas
OpenDevice
Open IoT (Internet Of Things) Platform and Framework.

Conjunto de ferramentas e APIs para construo de


solues de Internet das Coisas
OpenDevice
Apis e Ferramentas que permitem construir
sistemas de:
Automao Residencial
Monitoramento de Sensores
Monitoramento de Energia
Controle de Robs
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 programao de
alto nvel e com a abstrao de protocolos e
detalhes de baixo nvel.
Foco no que importante !

Isso permite que voc se concentre em seu


projeto e na inovao, deixar os detalhes
obscuros de protocolos de comunicao e
especificaes 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 (no precisa do tomcat ou glassfish)
Viso Geral
Event-driven and Real-Time

Voc no precisa consultar a informao,


ela vem at voc quando os dados
estiverem disponveis
Hands-On/Of

Uma pitada de java...


Blink - Arduino

* C / Arduino
Blink - Java
Blink Java (mais livre)
Blink Java (Comandos)
Incrementando no Arduino

* C / Arduino
Incrementando no JAVA
Definio de Dispositivos

Definio das Conexes

* JAVA
Adicionando Rest !
Adicione essa linha e seja feliz !!!

Voc pode acessar pelo navegador

ou com JavaScript !
Agora ficou srio ! WebSockets !
Adicione essas linhas e fique Real-Time e de quebra servidor http !

Ao adicionar o servidor de W.S automaticamente j adicionado o servidor de REST

Biblioteca de Rest e WebSocket ! (adicione no pom.xml)


Api JavaScript para WebSocket
Instalao
Usamos o Maven (arquivo pom.xml)

Substitua: ${opendevice-version} pela ultima verso, atualmente: 0.1.2-SNAPSHOT.

Qualquer dvida consulte:


https://opendevice.atlassian.net/wiki/display/DOC/A.+First+Steps+with+OpenDevice
Instalao
Adicionar o repositrio da Sonatype
Instalao (lib arduino/similar)
Baixar ou Clonar o repositrio 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


HORRIO RESERVADO
PROGRAMAO E MO NA MASSA
Postura !
Ns somos desenvolvedores, no somos normais
ACEITE ISSO.. !!!
Devemos ser agentes de Transformao e Criao.
Atitude !
No espere a ideia brilhante !
Execute a ideia que voc gosta.
Descubra o que voc gosta
No escute os outros

Muita gente vai dizer que voc no consegue

Muita gente vai dizer que j existe


Dvidas ?
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
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
Multilgica Shop (http://multilogica-shop.com/);
Rlrobotics (http://www.rlrobotics.ind.br/arduino);
Webtronico (http://www.webtronico.com/)
Obrigado pela sua ateno.

Você também pode gostar