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.

TDC2014 - Internet das Coisas - Arduino & OpenDevice

  • 1.
    Trilha: Internet dasCoisas 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 aInternet 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.
  • 4.
  • 5.
    Internet das Coisas ● Quecoisas 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
  • 7.
  • 8.
    Envolvidos ? ● Grandes empresasestã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 dasCoisas vai mudar o mundo completamente.”F U T U R O Hu – Yoshida ( CTO Hitachi )
  • 10.
    Como vim paraaqui ? ● 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 paraaqui ? ● 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 fazeragora ? ● 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 temosem mãos ?
  • 15.
  • 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...
  • 17.
  • 18.
  • 19.
  • 20.
    Arduino é OpenSource ● 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.
  • 22.
    Similares LaunchPad (32bits -ARM Cortex M4) chipKIT Uno32 - 32 bits, 80MHz, 128kB Flash, 16kB SRAM
  • 23.
    Similares Digispark ( 6I/O Pins,USB, I2C, SPI ) DigisparkDigispark Adafruit Trinket (ATtiny85)
  • 24.
  • 25.
    ● O que nãotemos, podemos criar !
  • 26.
    ● O que nãotemos, podemos criar !
  • 27.
  • 28.
  • 29.
  • 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
  • 31.
  • 32.
  • 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
  • 34.
  • 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;
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
    Programação (Blink) Define omodo de operação do PINO 13 como Saída Liga a Tensão (5V) no PINO 13 Desliga
  • 43.
  • 44.
    Esquema / Ligações Èrecomendável usar um Resistor (de 220ohm a 1k) No LED a maior perna é o positivo
  • 45.
  • 46.
    Esquema / Semnada ! 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 Linha2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Prática ?!
  • 50.
  • 51.
  • 53.
    Antes do Arduino DigitalI/O Assembly http://www.avr-tutorials.com/
  • 55.
    Antes do Arduino ●Processo Lento ● Mais caro ● Mais Complexo
  • 56.
  • 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 : LeituraAnalógica http://www.arduino.cc/en/tutorial/potentiometer
  • 62.
  • 63.
  • 64.
    Potenciômetro : LeituraAnaló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 ● Sistemamodular para expandir as funcionalidades do arduino. ● A parte mais genial !!! ● Uma lista enorme pode ser encontrada em: http://shieldlist.org/
  • 69.
    Linha 1 Linha2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Exemplos
  • 70.
  • 71.
    Shield : WiFlyShield https://www.sparkfun.com/products/9954
  • 72.
    Shield : Cellularwith SM5100B https://www.sparkfun.com/products/9607
  • 73.
  • 74.
  • 75.
    Shield : ColorLCD Shield https://www.sparkfun.com/products/retired/9363
  • 76.
    Shield : RelayShield http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134
  • 77.
    Shield : MP3Player Shield
  • 78.
    Linha 1 Linha2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Sensores http://www.trossenrobotics.com/
  • 79.
  • 80.
  • 81.
  • 82.
    Linha 1 Linha2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Robôs
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
    Automação Residencial ● Ligar/Desligarqualquer 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 !!!! )
  • 89.
  • 90.
    Linha 1 Linha2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Projetos
  • 91.
    Twitter Enabled CoffeePot http://www.instructables.com/id/Tweet-a-Pot-Twitter-Enabled-Coffee-Pot/
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
    Linha 1 Linha2 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 Linha2 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 Linha2 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 Linha2 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 Linha2 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 Linha2 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 (InternetOf Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 107.
    OpenDevice Open IoT (InternetOf Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  • 108.
    OpenDevice ● Apis eFerramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  • 109.
    OpenDevice ● Objetivo: O principalobjetivo é 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.
  • 111.
  • 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)
  • 113.
  • 114.
    Event-driven and Real-Time Vocênão precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  • 115.
  • 116.
    Blink - Arduino *C / Arduino
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
    Incrementando no JAVA Definiçãode Dispositivos Definição das Conexões * JAVA
  • 122.
    Adicionando Rest ! Adicioneessa 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.
  • 125.
    Instalação ● Usamos oMaven (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 orepositó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
  • 128.
  • 129.
    Postura ! Nós somosdesenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  • 130.
    Atitude ! Não esperea 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
  • 131.
  • 132.
  • 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.