SlideShare ist ein Scribd-Unternehmen logo
1 von 135
Downloaden Sie, um offline zu lesen
Trilha: Internet das Coisas
Computação Física, Plataformas, Comunicação, APIs
Comunicação entre Arduino, Raspberry, Android com OpenDevice.
Ricardo JL Rufino
rjlr@cin.ufpe.br
ricardo@criativasoft.com.br
AgendaAgenda
● Introdução a Internet das Coisas (fast !!)
● Arduino
● Exemplos
● Shields
● Sensores
● Projetos
● Automação Residencial..
● 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 )
Como vim para aqui ?
●
Tudo começa com um violão...
.. e a primeira gambiarra:
● Um captador feito a partir de um
relógio 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 é possível criar coisas !!!
O vamos fazer agora ?
●
Nós somos desenvolvedores, não somos
pessoas normais .. ACEITE !!!
●
Vamos HACKEAR as coisas
●
Vamos CRIAR novas coisas
– É preciso estudar bastante
– Não ter medo de errar.. !
O que temos em mãos ?
Arduino
O que é Arduino
● Arduino é uma plataforma de prototipagem eletrônica open-
source, baseada nos princípios de flexibilidade e facilidade de
uso para hardware e software.
● Consiste de uma placa com microcontrolador programável
preparada para receber sinais de sensores e acionar
atuadores.
● Sua linguagem de programação é 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 páginas...
Hardware (modelos)
Hardware (modelos)
Software (Arduino IDE)
Arduino é Open Source
● Todo o hardware é aberto e os projetos estão
disponíveis
● Quem quiser, pode comprar os componentes e
montar a sua placa
● O software de programação também é livre e
está disponível para download gratuitamente
Clones
• SeeDuino
• Freeduino
• Severino
• Brasuíno
Similares
LaunchPad (32bits - ARM Cortex M4)
chipKIT Uno32 - 32 bits,
80MHz, 128kB Flash, 16kB SRAM
Similares
Digispark ( 6 I/O Pins,USB, I2C, SPI )
DigisparkDigispark
Adafruit Trinket (ATtiny85)
Similares
●
O que não temos, podemos criar !
●
O que não temos, podemos criar !
Dúvidas ?
Características de Hardware
Arduino Uno
Arduino Uno
● Microcontrolador: ATmega328p (8-bit AVR RISC);
● Tensão de operação: 5V;
● Tensão de entrada (recomendada): 7-12V;
● Pinos digitais de E/S:14 (6 podem ter sinal PWM);
● Pinos com entrada analógica: 6;
● Corrente máxima por pino de E/S: 40 mA;
● Hardware para comunicação: 1 porta serial (UART TTL), I2C (TWI), SPI;
● Memória Flash (de programa): 32 kB (0,5 kB são usados pelo bootloader);
● Memória SRAM: 2 kB; EEPROM: 1 kB;
● Frequência de clock: 16 MHz.
http://arduino.cc/en/Main/arduinoBoardUno
Arduino UNO
Arduino Leonardo
Arduino Leonardo
● Microcontrolador: ATmega32u4 (Atmel 8-bit AVR RISC);
● Tensão de operação: 5V;
● Tensão de entrada (recomendada): 7-12V;
● Pinos digitais de E/S: 20 (7 podem ter sinal PWM);
● Pinos com entrada analógica: 12;
● Corrente máxima por pino de E/S: 40 mA;
● Hardware para comunicação: 1 porta serial (UART), I2C (TWI), SPI, USB 2.0
(emula teclado ou mouse);
● Memória Flash (de programa): 32 kB (4 kB usado pelo bootloader)
● Memória SRAM: 2,5 kB; EEPROM: 1 kB;
● Frequência de clock: 16 MHz.
● Suporte a comunicação USB no próprio ATmega32u4;
http://arduino.cc/en/Main/arduinoBoardLeonardo
Arduino Mega 2560
Arduino Mega 2560
● Microcontrolador: ATmega2560;
● Tensão de operação: 5V;
● Tensão de entrada (recomendada): 7-12V;
● Pinos digitais de E/S: 54 (15 podem ter sinal PWM);
● Pinos com entrada analógica: 16;
● Corrente máxima por pino de E/S: 40 mA;
● Hardware para comunicação: 4 portas seriais (UART), I2C (TWI), SPI, USB 2.0
(emula teclado ou mouse);
● Memória Flash (de programa): 256 kB (8 kB são usados pelo bootloader)
● Memória SRAM: 8 kB; EEPROM: 4 kB;
● Frequência de clock: 16 MHz.
O que é um Microcontrolador?
● CPU de pequeno porte, capaz de executar um
conjunto de instruções;
● Ou seja, possui um microprocessador!
● – Instruções simples e rápidas;
● – Possui memória(s);
● – Possui periféricos;
● – Pode se comunicar com outros periféricos;
Microcontrolador
Microcontrolador
Diagrama do PIC16F887
Microcontrolador
Comparativo Arduinos
Software e Programação
Programação (Blink)
Define o modo de operação do PINO 13 como Saída
Liga a Tensão (5V) no PINO 13
Desliga
Esquema / Ligações
Esquema / Ligações
È recomendável usar um Resistor (de 220ohm a 1k)
No LED a maior perna é o positivo
Esquema / Protoboard
Esquema / Sem nada !
Pra quem tem preguiça:
O Arduino já vem com um LED embutido (Pino 13)
Instalação
IDE é compatível: Windows, Mac OS X e Linux
– Link: http://arduino.cc/en/main/software
● Driver
– Windows: precisa do driver FTDI
– Linux: não precisa de NADA... ;)
● Software
– Basta descompactar e rodar (se quiser tem um instalador)
– Se tiver algum problema instale a versão antiga: Arduino 1.0.X
– Dúvidas, 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 não aparecer, pode ser problema
no Driver (Ruindows !!!)
No Arduino Leonardo a porta fica
mudando e algumas vesses você precisa
selecionar várias vesses !
3 – Clique em upload para
compilar e enviar para o Arduino
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3Prática ?!
Dúvidas ?
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 : Botão (Leitura Digital)
Exemplo 2 : Botão (Leitura Digital)
Exemplo 2 : Botão (Leitura Digital)
http://arduino.cc/en/Tutorial/DigitalReadSerial
Exemplo 2 : Botão (explicação)
O digitalRead() lê as tensões de entrada: (5v ou 0v)
e converte em valores: 0 (LOW) e 1 (HIGH)
O pino em modo de leitura (INPUT), sem nenhuma
conexão, irá flutuar gerando valores aleatórios, por
isso precisamos puxar ele pra 0v (pull-down) ou
para 5v (pull-up)
… Então quando a chave estiver aberta, precisamos
levar o pino para um estado confiável, no caso
ligamos ao negativo (GND) usando um resistor (ou
seja um pull-down )
Potenciômetro : Leitura Analógica
http://www.arduino.cc/en/tutorial/potentiometer
Potenciômetro : Leitura Analógica
Potenciômetro : Código
Potenciômetro : Leitura Analógica
● analogRead() - Lê valores dos pinos analógicos
● O conversor A/D do microcontrolador ATmega328 possui 10
bits de resolução, gerando valores na faixa 0 a 1023
conforme a tensão no pino, que varia de 0v a 5v.
● A quantidade de pinos analógicos varia em cada modelo.
● Demora 100 microsegundos (0.0001 s) para ler (10,000
leituras / seg)
Sensor de Luz : LDR
● LDR (do inglês Light Dependent Resistor) ou Photo-resistor
● Componente eletrônico passivo do tipo resistor variável
● A medida que a intensidade da luz aumenta, a sua resistência
diminui.
● Não é muito preciso !
Sensor de Luz : LDR
Modo Pull-Down
Pouca Luz → Valor Baixo
Modo Pull-Up
Pouca Luz → Valor Alto
Sensor de Luz : Código
Shields Arduino
● Sistema modular para expandir as
funcionalidades do arduino.
● A parte mais genial !!!
● Uma lista enorme pode
ser encontrada em:
http://shieldlist.org/
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3Exemplos
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
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3Sensores
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
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3Robôs
Robôs
Robôs
Robôs
Robôs
Automação Residencial
Automação Residencial
● Ligar/Desligar qualquer eletrodoméstico
● Controlar iluminação, temperatura
● Sensores de Presença (segurança)
● Controle de portas e portões automáticos
● Controle Centralizado
● Controle Remoto (pela internet)
● Economia de Energia e Monitoramento de Consumo
● Hardware barato ( Redução de Custos !!!! )
Automação Residencial
Linha 1 Linha 2 Linha 3 Linha 4
0
2
4
6
8
10
12
Coluna 1
Coluna 2
Coluna 3Projetos
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/
Dúvidas ?
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 - Java
Blink Java (mais livre)
Blink Java (Comandos)
Incrementando no Arduino
* C / Arduino
Incrementando no JAVA
Definição de Dispositivos
Definição das Conexões
* 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/A.+First+Steps+with+OpenDevice
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
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
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
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
 

Was ist angesagt? (20)

Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livre
 
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
 
Minicurso de Arduino Básico
Minicurso de Arduino BásicoMinicurso de Arduino Básico
Minicurso de Arduino Básico
 
Arduino - Dicas & Truques
Arduino - Dicas & TruquesArduino - Dicas & Truques
Arduino - Dicas & Truques
 
MiniCursoDeArduino
MiniCursoDeArduinoMiniCursoDeArduino
MiniCursoDeArduino
 
Curso de arduino
Curso de arduinoCurso de arduino
Curso de arduino
 
Introdução à plataforma Arduino
Introdução à plataforma ArduinoIntrodução à plataforma Arduino
Introdução à plataforma Arduino
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo moderno
 
Arduino day-2015-v1
Arduino day-2015-v1Arduino day-2015-v1
Arduino day-2015-v1
 
Embarcados - Ao arduino e além
Embarcados - Ao arduino e alémEmbarcados - Ao arduino e além
Embarcados - Ao arduino e além
 
Flisol projetos criativos com o arduino
Flisol   projetos criativos com o arduino Flisol   projetos criativos com o arduino
Flisol projetos criativos com o arduino
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)
 
Introdução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantesIntrodução a arduino, oficina para iniciantes
Introdução a arduino, oficina para iniciantes
 
Arduino - Hardware Livre e Robótica
Arduino -  Hardware Livre e RobóticaArduino -  Hardware Livre e Robótica
Arduino - Hardware Livre e Robótica
 
Introdução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduinoIntrodução à eletronica e robótica com arduino
Introdução à eletronica e robótica com arduino
 
Mini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com ArduinoMini-curso de Introdução a Eletrônica com Arduino
Mini-curso de Introdução a Eletrônica com Arduino
 
Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC Slides minicurso Arduino - Controle de Motores DC
Slides minicurso Arduino - Controle de Motores DC
 

Andere mochten auch

Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
Isvaldo Souza
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Android
edilsonmendes
 

Andere mochten auch (20)

Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Internet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redorInternet das Coisas - Conectando você e tudo ao seu redor
Internet das Coisas - Conectando você e tudo ao seu redor
 
Palestra: Robótica com Arduino
Palestra: Robótica com ArduinoPalestra: Robótica com Arduino
Palestra: Robótica com Arduino
 
[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
 
CTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das CoisasCTIA 2015 - Internet das Coisas
CTIA 2015 - Internet das Coisas
 
Fradar 7
Fradar 7Fradar 7
Fradar 7
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Android
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividade
 
Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de Dados
 
Internet das Coisas - Tudo e todos conectados!
Internet das Coisas - Tudo e todos conectados!Internet das Coisas - Tudo e todos conectados!
Internet das Coisas - Tudo e todos conectados!
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Internet das Coisas - O que vai mudar na sua vida?
Internet das Coisas - O que vai mudar na sua vida?Internet das Coisas - O que vai mudar na sua vida?
Internet das Coisas - O que vai mudar na sua vida?
 
Diferentes tipos de arduino
Diferentes tipos de arduinoDiferentes tipos de arduino
Diferentes tipos de arduino
 
Descubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidDescubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone Android
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Indústria 4.0 Tecnologia e inovação
Indústria 4.0 Tecnologia e inovaçãoIndústria 4.0 Tecnologia e inovação
Indústria 4.0 Tecnologia e inovação
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJatai
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 

Ähnlich wie TDC2014 - Internet das Coisas - Arduino & OpenDevice

Curso-Programação-Básica-em-Arduino-Aula-1.pdf
Curso-Programação-Básica-em-Arduino-Aula-1.pdfCurso-Programação-Básica-em-Arduino-Aula-1.pdf
Curso-Programação-Básica-em-Arduino-Aula-1.pdf
TheoneAbove
 
Arduino - aula Teste - Ilha
Arduino - aula Teste - IlhaArduino - aula Teste - Ilha
Arduino - aula Teste - Ilha
Luckas Judocka
 

Ähnlich wie TDC2014 - Internet das Coisas - Arduino & OpenDevice (20)

Introdução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdfIntrodução-à-Programação-Embarcada-com-Arduino.pdf
Introdução-à-Programação-Embarcada-com-Arduino.pdf
 
Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando Arduino
 
Curso-Programação-Básica-em-Arduino-Aula-1.pdf
Curso-Programação-Básica-em-Arduino-Aula-1.pdfCurso-Programação-Básica-em-Arduino-Aula-1.pdf
Curso-Programação-Básica-em-Arduino-Aula-1.pdf
 
Apresentando o Arduino - UESPI
Apresentando o Arduino - UESPIApresentando o Arduino - UESPI
Apresentando o Arduino - UESPI
 
Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011Arduino no Dia-Debian/RJ 2011
Arduino no Dia-Debian/RJ 2011
 
Processing e Arduino
Processing e ArduinoProcessing e Arduino
Processing e Arduino
 
Palestra arduino
Palestra arduinoPalestra arduino
Palestra arduino
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestra
 
Semana 1
Semana 1Semana 1
Semana 1
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduino
 
Aula básica Arduino
Aula básica Arduino Aula básica Arduino
Aula básica Arduino
 
Slide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfSlide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdf
 
CURSO_ARDUÍNO.pptx
CURSO_ARDUÍNO.pptxCURSO_ARDUÍNO.pptx
CURSO_ARDUÍNO.pptx
 
TDC2014 - Arduino Legacy
TDC2014 - Arduino LegacyTDC2014 - Arduino Legacy
TDC2014 - Arduino Legacy
 
Arduino - aula Teste - Ilha
Arduino - aula Teste - IlhaArduino - aula Teste - Ilha
Arduino - aula Teste - Ilha
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Erus minicurso arduino
Erus minicurso arduinoErus minicurso arduino
Erus minicurso arduino
 
Introdução ao arduino
Introdução ao arduinoIntrodução ao arduino
Introdução ao arduino
 
Domótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com ArduinoDomótica - Automatizando ambientes com Arduino
Domótica - Automatizando ambientes com Arduino
 
Workshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todosWorkshop Franzininho: um Arduino para todos
Workshop Franzininho: um Arduino para todos
 

TDC2014 - Internet das Coisas - Arduino & OpenDevice

  • 1. Trilha: Internet das Coisas Computação Física, Plataformas, Comunicação, APIs Comunicação entre Arduino, Raspberry, Android com OpenDevice. Ricardo JL Rufino rjlr@cin.ufpe.br ricardo@criativasoft.com.br
  • 2. AgendaAgenda ● Introdução a Internet das Coisas (fast !!) ● Arduino ● Exemplos ● Shields ● Sensores ● Projetos ● Automação Residencial.. ● 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. Como vim para aqui ? ● Tudo começa com um violão... .. e a primeira gambiarra: ● Um captador feito a partir de um relógio de pulso GENIAL !!!! = )
  • 11. Como vim para aqui ? ● Depois a meta era uma Guitarra ! ● Resumindo: 2 anos juntando mesada ! E o amplificador ?
  • 12. E o amplificador ? Descobri que é possível criar coisas !!!
  • 13. O vamos fazer agora ? ● Nós somos desenvolvedores, não somos pessoas normais .. ACEITE !!! ● Vamos HACKEAR as coisas ● Vamos CRIAR novas coisas – É preciso estudar bastante – Não ter medo de errar.. !
  • 14. O que temos em mãos ?
  • 16. O que é Arduino ● Arduino é uma plataforma de prototipagem eletrônica open- source, baseada nos princípios de flexibilidade e facilidade de uso para hardware e software. ● Consiste de uma placa com microcontrolador programável preparada para receber sinais de sensores e acionar atuadores. ● Sua linguagem de programação é 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 páginas...
  • 20. Arduino é Open Source ● Todo o hardware é aberto e os projetos estão disponíveis ● Quem quiser, pode comprar os componentes e montar a sua placa ● O software de programação também é livre e está disponível para download gratuitamente
  • 21. Clones • SeeDuino • Freeduino • Severino • Brasuíno
  • 22. Similares LaunchPad (32bits - ARM Cortex M4) chipKIT Uno32 - 32 bits, 80MHz, 128kB Flash, 16kB SRAM
  • 23. Similares Digispark ( 6 I/O Pins,USB, I2C, SPI ) DigisparkDigispark Adafruit Trinket (ATtiny85)
  • 25. ● O que não temos, podemos criar !
  • 26. ● O que não temos, podemos criar !
  • 30. Arduino Uno ● Microcontrolador: ATmega328p (8-bit AVR RISC); ● Tensão de operação: 5V; ● Tensão de entrada (recomendada): 7-12V; ● Pinos digitais de E/S:14 (6 podem ter sinal PWM); ● Pinos com entrada analógica: 6; ● Corrente máxima por pino de E/S: 40 mA; ● Hardware para comunicação: 1 porta serial (UART TTL), I2C (TWI), SPI; ● Memória Flash (de programa): 32 kB (0,5 kB são usados pelo bootloader); ● Memória SRAM: 2 kB; EEPROM: 1 kB; ● Frequência de clock: 16 MHz. http://arduino.cc/en/Main/arduinoBoardUno
  • 33. Arduino Leonardo ● Microcontrolador: ATmega32u4 (Atmel 8-bit AVR RISC); ● Tensão de operação: 5V; ● Tensão de entrada (recomendada): 7-12V; ● Pinos digitais de E/S: 20 (7 podem ter sinal PWM); ● Pinos com entrada analógica: 12; ● Corrente máxima por pino de E/S: 40 mA; ● Hardware para comunicação: 1 porta serial (UART), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse); ● Memória Flash (de programa): 32 kB (4 kB usado pelo bootloader) ● Memória SRAM: 2,5 kB; EEPROM: 1 kB; ● Frequência de clock: 16 MHz. ● Suporte a comunicação USB no próprio ATmega32u4; http://arduino.cc/en/Main/arduinoBoardLeonardo
  • 35. Arduino Mega 2560 ● Microcontrolador: ATmega2560; ● Tensão de operação: 5V; ● Tensão de entrada (recomendada): 7-12V; ● Pinos digitais de E/S: 54 (15 podem ter sinal PWM); ● Pinos com entrada analógica: 16; ● Corrente máxima por pino de E/S: 40 mA; ● Hardware para comunicação: 4 portas seriais (UART), I2C (TWI), SPI, USB 2.0 (emula teclado ou mouse); ● Memória Flash (de programa): 256 kB (8 kB são usados pelo bootloader) ● Memória SRAM: 8 kB; EEPROM: 4 kB; ● Frequência de clock: 16 MHz.
  • 36. O que é um Microcontrolador? ● CPU de pequeno porte, capaz de executar um conjunto de instruções; ● Ou seja, possui um microprocessador! ● – Instruções simples e rápidas; ● – Possui memória(s); ● – Possui periféricos; ● – Pode se comunicar com outros periféricos;
  • 42. Programação (Blink) Define o modo de operação do PINO 13 como Saída Liga a Tensão (5V) no PINO 13 Desliga
  • 44. Esquema / Ligações È recomendável usar um Resistor (de 220ohm a 1k) No LED a maior perna é o positivo
  • 46. Esquema / Sem nada ! Pra quem tem preguiça: O Arduino já vem com um LED embutido (Pino 13)
  • 47. Instalação IDE é compatível: Windows, Mac OS X e Linux – Link: http://arduino.cc/en/main/software ● Driver – Windows: precisa do driver FTDI – Linux: não precisa de NADA... ;) ● Software – Basta descompactar e rodar (se quiser tem um instalador) – Se tiver algum problema instale a versão antiga: Arduino 1.0.X – Dúvidas, 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
  • 48. Gravando o Programa 1 - Selecione o Modelo da Placa 2 - Selecione a Porta Serial * * Se não aparecer, pode ser problema no Driver (Ruindows !!!) No Arduino Leonardo a porta fica mudando e algumas vesses você precisa selecionar várias vesses ! 3 – Clique em upload para compilar e enviar para o Arduino
  • 49. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Prática ?!
  • 52.
  • 53. Antes do Arduino Digital I/O Assembly http://www.avr-tutorials.com/
  • 54.
  • 55. Antes do Arduino ● Processo Lento ● Mais caro ● Mais Complexo
  • 57. Exemplo 2 : Botão (Leitura Digital)
  • 58. Exemplo 2 : Botão (Leitura Digital)
  • 59. Exemplo 2 : Botão (Leitura Digital) http://arduino.cc/en/Tutorial/DigitalReadSerial
  • 60. Exemplo 2 : Botão (explicação) O digitalRead() lê as tensões de entrada: (5v ou 0v) e converte em valores: 0 (LOW) e 1 (HIGH) O pino em modo de leitura (INPUT), sem nenhuma conexão, irá flutuar gerando valores aleatórios, por isso precisamos puxar ele pra 0v (pull-down) ou para 5v (pull-up) … Então quando a chave estiver aberta, precisamos levar o pino para um estado confiável, no caso ligamos ao negativo (GND) usando um resistor (ou seja um pull-down )
  • 61. Potenciômetro : Leitura Analógica http://www.arduino.cc/en/tutorial/potentiometer
  • 64. Potenciômetro : Leitura Analógica ● analogRead() - Lê valores dos pinos analógicos ● O conversor A/D do microcontrolador ATmega328 possui 10 bits de resolução, gerando valores na faixa 0 a 1023 conforme a tensão no pino, que varia de 0v a 5v. ● A quantidade de pinos analógicos varia em cada modelo. ● Demora 100 microsegundos (0.0001 s) para ler (10,000 leituras / seg)
  • 65. Sensor de Luz : LDR ● LDR (do inglês Light Dependent Resistor) ou Photo-resistor ● Componente eletrônico passivo do tipo resistor variável ● A medida que a intensidade da luz aumenta, a sua resistência diminui. ● Não é muito preciso !
  • 66. Sensor de Luz : LDR Modo Pull-Down Pouca Luz → Valor Baixo Modo Pull-Up Pouca Luz → Valor Alto
  • 67. Sensor de Luz : Código
  • 68. Shields Arduino ● Sistema modular para expandir as funcionalidades do arduino. ● A parte mais genial !!! ● Uma lista enorme pode ser encontrada em: http://shieldlist.org/
  • 69. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Exemplos
  • 71. Shield : WiFly Shield https://www.sparkfun.com/products/9954
  • 72. Shield : Cellular with SM5100B https://www.sparkfun.com/products/9607
  • 75. Shield : Color LCD Shield https://www.sparkfun.com/products/retired/9363
  • 76. Shield : Relay Shield http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134
  • 77. Shield : MP3 Player Shield
  • 78. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Sensores http://www.trossenrobotics.com/
  • 82. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Robôs
  • 88. Automação Residencial ● Ligar/Desligar qualquer eletrodoméstico ● Controlar iluminação, temperatura ● Sensores de Presença (segurança) ● Controle de portas e portões automáticos ● Controle Centralizado ● Controle Remoto (pela internet) ● Economia de Energia e Monitoramento de Consumo ● Hardware barato ( Redução de Custos !!!! )
  • 90. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Projetos
  • 91. Twitter Enabled Coffee Pot http://www.instructables.com/id/Tweet-a-Pot-Twitter-Enabled-Coffee-Pot/
  • 100. 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
  • 101. 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 ??
  • 102. 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
  • 103. 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 ?
  • 104. 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...
  • 105. 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 ?
  • 106. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 107. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 108. OpenDevice ● Apis e Ferramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 109. 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.
  • 110. 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.
  • 112. 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)
  • 114. Event-driven and Real-Time Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 116. Blink - Arduino * C / Arduino
  • 118. Blink Java (mais livre)
  • 121. Incrementando no JAVA Definição de Dispositivos Definição das Conexões * JAVA
  • 122. Adicionando Rest ! Adicione essa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  • 123. 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
  • 124. Api JavaScript para WebSocket
  • 125. 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/A.+First+Steps+with+OpenDevice
  • 126. Instalação ● Adicionar o repositório da Sonatype
  • 127. 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
  • 129. Postura ! Nós somos desenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 130. 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
  • 133. Link's ● OpenDevice: – http://opendevice.io – https://github.com/OpenDevice – https://opendevice.atlassian.net/wiki – http://opendevice.criativasof.com.br ● Facebook – /opendevice
  • 134. 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/)
  • 135. Obrigado pela sua atenção.