TDC2014 - Internet das Coisas - Arduino & OpenDevice

1.407 visualizações

Publicada em

Palestra apresentada no TDC2014 em Porto Alegre falando sobre internet das coisas e uma nova API OpenSource para intergração com arduino , rapberry para se criar sistemas de automação residencial, monitoramento de sensores, etc.

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.407
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
163
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

TDC2014 - Internet das Coisas - Arduino & OpenDevice

  1. 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. 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. 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. 4. Internet das Coisas
  5. 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. 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. 7. Momento Atual
  8. 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. 9. “A Internet das Coisas vai mudar o mundo completamente.”F U T U R O Hu – Yoshida ( CTO Hitachi )
  10. 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. 11. Como vim para aqui ? ● Depois a meta era uma Guitarra ! ● Resumindo: 2 anos juntando mesada ! E o amplificador ?
  12. 12. E o amplificador ? Descobri que é possível criar coisas !!!
  13. 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. 14. O que temos em mãos ?
  15. 15. Arduino
  16. 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. 17. Hardware (modelos)
  18. 18. Hardware (modelos)
  19. 19. Software (Arduino IDE)
  20. 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. 21. Clones • SeeDuino • Freeduino • Severino • Brasuíno
  22. 22. Similares LaunchPad (32bits - ARM Cortex M4) chipKIT Uno32 - 32 bits, 80MHz, 128kB Flash, 16kB SRAM
  23. 23. Similares Digispark ( 6 I/O Pins,USB, I2C, SPI ) DigisparkDigispark Adafruit Trinket (ATtiny85)
  24. 24. Similares
  25. 25. ● O que não temos, podemos criar !
  26. 26. ● O que não temos, podemos criar !
  27. 27. Dúvidas ?
  28. 28. Características de Hardware
  29. 29. Arduino Uno
  30. 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. 31. Arduino UNO
  32. 32. Arduino Leonardo
  33. 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. 34. Arduino Mega 2560
  35. 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. 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. 37. Microcontrolador
  38. 38. Microcontrolador Diagrama do PIC16F887
  39. 39. Microcontrolador
  40. 40. Comparativo Arduinos
  41. 41. Software e Programação
  42. 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
  43. 43. Esquema / Ligações
  44. 44. Esquema / Ligações È recomendável usar um Resistor (de 220ohm a 1k) No LED a maior perna é o positivo
  45. 45. Esquema / Protoboard
  46. 46. Esquema / Sem nada ! Pra quem tem preguiça: O Arduino já vem com um LED embutido (Pino 13)
  47. 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. 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. 49. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Prática ?!
  50. 50. Dúvidas ?
  51. 51. Antes do Arduino http://www.avr-tutorials.com/
  52. 52. Antes do Arduino Digital I/O Assembly http://www.avr-tutorials.com/
  53. 53. Antes do Arduino ● Processo Lento ● Mais caro ● Mais Complexo
  54. 54. OK !!! Voltando....
  55. 55. Exemplo 2 : Botão (Leitura Digital)
  56. 56. Exemplo 2 : Botão (Leitura Digital)
  57. 57. Exemplo 2 : Botão (Leitura Digital) http://arduino.cc/en/Tutorial/DigitalReadSerial
  58. 58. 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 )
  59. 59. Potenciômetro : Leitura Analógica http://www.arduino.cc/en/tutorial/potentiometer
  60. 60. Potenciômetro : Leitura Analógica
  61. 61. Potenciômetro : Código
  62. 62. 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)
  63. 63. 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 !
  64. 64. Sensor de Luz : LDR Modo Pull-Down Pouca Luz → Valor Baixo Modo Pull-Up Pouca Luz → Valor Alto
  65. 65. Sensor de Luz : Código
  66. 66. Shields Arduino ● Sistema modular para expandir as funcionalidades do arduino. ● A parte mais genial !!! ● Uma lista enorme pode ser encontrada em: http://shieldlist.org/
  67. 67. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Exemplos
  68. 68. Shield : Ethernet
  69. 69. Shield : WiFly Shield https://www.sparkfun.com/products/9954
  70. 70. Shield : Cellular with SM5100B https://www.sparkfun.com/products/9607
  71. 71. Shield : GPS https://www.sparkfun.com/products/10710
  72. 72. Shield : XBee
  73. 73. Shield : Color LCD Shield https://www.sparkfun.com/products/retired/9363
  74. 74. Shield : Relay Shield http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134
  75. 75. Shield : MP3 Player Shield
  76. 76. 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/
  77. 77. Sensores http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
  78. 78. Sensores http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
  79. 79. Sensores http://www.trossenrobotics.com/c/arduino-sensors.aspx?sort=SalesRank
  80. 80. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Robôs
  81. 81. Robôs
  82. 82. Robôs
  83. 83. Robôs
  84. 84. Robôs
  85. 85. Automação Residencial
  86. 86. 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 !!!! )
  87. 87. Automação Residencial
  88. 88. Linha 1 Linha 2 Linha 3 Linha 4 0 2 4 6 8 10 12 Coluna 1 Coluna 2 Coluna 3Projetos
  89. 89. Twitter Enabled Coffee Pot http://www.instructables.com/id/Tweet-a-Pot-Twitter-Enabled-Coffee-Pot/
  90. 90. Inebriator http://www.theinebriator.com/
  91. 91. Flamethrowing Jack-O'-Lantern http://www.instructables.com/id/Flamethrowing-Jack-O-Lantern/
  92. 92. Tree Climbing Robot http://www.instructables.com/id/Tree-Climbing-Robot/
  93. 93. Arduino R/C Lawnmower http://www.instructables.com/id/Arduino-RC-Lawnmower/
  94. 94. http://www.wired.com/2013/01/wearable-arduinos/#slideid-351561
  95. 95. Drones
  96. 96. ArduIMU Quascopter http://thecoolgadgets.com/arduimu-quascopter-diy-arduino-helicopter-4-infrared-and-1-ultra-sonic-sensors/
  97. 97. Dúvidas ?
  98. 98. 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
  99. 99. 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 ??
  100. 100. 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
  101. 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 ? Esse não podemos reclamar ! Rede / TCP / IP ?
  102. 102. 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...
  103. 103. 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 ?
  104. 104. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  105. 105. OpenDevice Open IoT (Internet Of Things) Platform and Framework. “Conjunto de ferramentas e APIs para construção de soluções de Internet das Coisas”
  106. 106. OpenDevice ● Apis e Ferramentas que permitem construir sistemas de: – Automação Residencial – Monitoramento de Sensores – Monitoramento de Energia – Controle de Robôs – Smart City
  107. 107. 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.
  108. 108. 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.
  109. 109. Tecnologias Envolvidas
  110. 110. 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)
  111. 111. Visão Geral
  112. 112. Event-driven and Real-Time Você não precisa consultar a informação, ela vem até você quando os dados estiverem disponíveis
  113. 113. Hands-On/Of Uma pitada de java...
  114. 114. Blink - Arduino * C / Arduino
  115. 115. Blink - Java
  116. 116. Blink Java (mais livre)
  117. 117. Blink Java (Comandos)
  118. 118. Incrementando no Arduino * C / Arduino
  119. 119. Incrementando no JAVA Definição de Dispositivos Definição das Conexões * JAVA
  120. 120. Adicionando Rest ! Adicione essa linha e seja feliz !!! Você pode acessar pelo navegador … ou com JavaScript !
  121. 121. 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
  122. 122. Api JavaScript para WebSocket
  123. 123. 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
  124. 124. Instalação ● Adicionar o repositório da Sonatype
  125. 125. 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
  126. 126. HORÁRIO RESERVADO À PROGRAMAÇÃO E MÃO NA MASSA
  127. 127. Postura ! Nós somos desenvolvedores, não somos “normais” ACEITE ISSO.. !!! Devemos ser agentes de Transformação e Criação.
  128. 128. 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
  129. 129. Dúvidas ?
  130. 130. Contatos ● E-mail: – ricardo@criativasof.com.br – rjlr@cin.ufpe.br ● Facebook – /ricardojlrufino
  131. 131. Link's ● OpenDevice: – http://opendevice.io – https://github.com/OpenDevice – https://opendevice.atlassian.net/wiki – http://opendevice.criativasof.com.br ● Facebook – /opendevice
  132. 132. 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/)
  133. 133. Obrigado pela sua atenção.

×