Sunteți pe pagina 1din 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

;)

F
U
T
U
R
O

A Internet das Coisas vai mudar


o mundo completamente.

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 opensource, 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

Brasuno

Severino

Similares
LaunchPad (32bits - ARM Cortex M4)

chipKIT Uno32 - 32 bits,


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 *

3 Clique em upload para


compilar e enviar para o Arduino

* Se no aparecer, pode ser problema


no Driver (Ruindows !!!)
No Arduino Leonardo a porta fica
mudando e algumas vesses voc precisa
selecionar vrias vesses !

12

10

Prtica ?!

Coluna 1
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

Coluna 1
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

Coluna 1
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

Coluna 1
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

Coluna 1
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

Problema !!

10

Como fazer a comunicao com esses equipamentos / dispositivos


Coluna 1
?
6

Coluna 2
Coluna 3

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

0
Linha 1

Linha 2

Linha 3

Linha 4

1 Alternativas

com JAVA ?

USB ??

12

A Sun nos abandonou ! (JavaComm/JSR80 ?!?)


RXTX tem muitos problemas e tem ajustes manuais
- Consegue fazer via JNI (Java Native Interface)
- Pra quem quer comear um problema !
Usb4java Nova, mas parece promissora !
10
8

Coluna 1
Coluna 2
Coluna 3

0
Linha 1

Linha 2

Linha 3

Linha 4

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

1 Alternativas

com JAVA ?

Bluetooth ??

12

Aqui s no J2ME (JSR-82) e Android.

Desktop nem pensar !! e Raspberry ?? rsrsr

Sada : Bluecove (usando JNI)


10

Problema : Ultimo release de 2008


Snapshot em 2010

Coluna 1
Coluna 2
Coluna 3

0
Linha 1

Linha 2

Linha 3

Linha 4

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

1 Alternativas

com JAVA ?

Rede / TCP / IP ?

12

10

Esse no podemos reclamar !

0
Linha 1

Linha 2

Linha 3

Linha 4

Coluna 1
Coluna 2
Coluna 3

Tudo junto ?
12

10

D um trabalhinho !

E voc precisa criar sua prpria forma de comunicao


Lidar com detalhes de baixo nvel
Correo de Erros
Precisa ter uma boa experincia
Etc.. etc...
Linha 1

Linha 2

Linha 3

Linha 4

Coluna 1
Coluna 2
Coluna 3

12

Soluo ?

10

Quem pode nos ajudar ?

0
Linha 1

Linha 2

Linha 3

Linha 4

Coluna 1
Coluna 2
Coluna 3

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

Copiar a pasta: arduino/OpenDevice

opendevice-hardware-libraries
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.

S-ar putea să vă placă și