Laboratório de IoT

Slides:

Aula 1 - Programação Raspberry Pi

Aula 2 - CoAP

Aula 4 - Modelo de Componentes para IoT

Trabalho Final da disciplina:

  • O trabalho deve ser realizado em individualmente ou em grupos de dois alunos
  • A proposta deve incluir
    • Introdução (descrição do problema, descrição da solução, o que será fornecido quando concluído, etc.)
    • Requisitos (funcional e não funcional)
    • Trabalho relacionado (soluções similares, aplicativos / serviços)
    • Arquitetura
    • Software / Hardware necessário
  • Cada projeto deve envolver:
    • Pelo menos um dispositivo (raspberry e arduínos estão disponíveis no laboratório)
    • Todas as tecnologias vistas em aula (Protocolos de comunicação IoT, sistemas de middleware (Kura e Kapua)
    • demo e apresentação de slides do projeto (a definir)
  • A avaliação será baseada na aderência aos itens solicitados, criatividade da solução e/ou inclusão de novas tecnologias tais como redes de sensores sem fio, processamento baseado em aprendizado de máquina, processamento de dados IoT em larga escala, processamento de stream de dados, etc
  • OBS: Os grupos que utilizarem o Apache Nifi de forma criativa no seu projeto terão um bônus de 10% na nota do trabalho final.


Hands on

  • Aula 1:
    • Instalação do SO: https://www.raspberrypi.org/documentation/installation/installing-images/
    • Fazer o tutorial disponível em: http://pi4j.com/example/control.html. Nesse tutorial você aprenderá como manipular um pino de saída do barramento do Raspberry utilizando o protocolo GPIO.
      • Importante !!!!
      • Você usará um resistor de 330Ω. Você pode identificar os resistores de 330Ω pela cor das bandas ao longo do corpo.
        • A codificação de cores dependerá de quantas bandas estão nos resistores fornecidos:
        • Se houver quatro bandas coloridas, elas serão laranja, laranja, marrom e ouro.
        • Se houver cinco bandas, as cores serão Laranja, Laranja, Preto, Preto, Marrom.
        • Não importa qual caminho você conecte os resistores. A corrente flui nos dois sentidos através deles.
    • Fazer o tutorial disponível em: http://pi4j.com/example/listener.html. Nesse tutorial você aprenderá como manipular um pino de entrada do barramento do Raspberry através do uso da interface Listener.

Exercício 1:

    • Implementar um circuito que controle um LED utilizando um interruptor do tipo "sliding switch" de 3 pinos. Lembre-se que para controlar o LED vc deve implementar usar a interface Listener para ler o estado do interruptor e controlar o led utilizando a interface GPIO.
  • Aula 2:
    • Fazer o tutorial de COAP disponível aqui
    • Arquivo com o projeto Eclipse para ser usado no tutorial está aqui.
  • Aula 3:
    • Trabalho 1: data de apresentação 10/04/2019. entregar relatório e código com comentários. O relatório de conter a explicação de todo o processo de configuração usado para desenvolver o aplicativo bem como um manual de instalação e teste do sistema. O código deve conter comentários descrevendo todos os métodos implementados.
    • Projetar um sistema cliente servidor IoT que seja capaz de controlar de forma remota o acendimento de um conjunto de Leds de acordo com a temperatura e umidade corrente do ambiente. Um dos leds deve ser aceso sempre que a temperatura lida estiver acima um valor definido pelo usuário. O outro led deve ser aceso de forma similar mas considerando o valor corrente da umidade. Caso tanto a temperatura quanto a umidade estiverem acima/abaixo dos valores limites os leds deve começar a piscar. O estado dos leds também deve ser informado na interface da aplicação cliente. A comunicação entre o programa cliente e o programa servidor deve ser feita usando o protocolo COAP. O programa servidor deve ser capaz de atender a diversos programas cliente simultaneamente.
      • Utilizar o sensor Grove de Temperatura e Umidade (https://www.filipeflop.com/blog/temperatura-umidade-dht11-com-raspberry-pi/)
      • Para facilitar a programação no Raspberry sugere-se utilizar algum método de programação remota.
        • Para configurar o seu Raspberry Pi para permitir acesso remoto via ssh siga esses passos
        • Agora você deve escolher o método que melhor se adeque a sua forma de programar. Você pode escolher entre as sugestões abaixo:
          • Programar em dois ambientes sem integração. Nesse caso vc irá programar o servidor no ambiente do Raspberry Pi e o cliente no desktop com eclipse.
          • Programar de forma remota no ambiente eclipse usando um desktop
          • Projetos com código que podem ser reusados e/ou adaptados:
            • Projeto Green House: ver a parte de setup de hardware e leitura dos dados de temperatura
            • Existem bibliotecas em Python que facilitam muito a interação com o sensor DHT11. Este projeto mostra como integrar um programa Python que lê a temperatura/umidade com uma aplicação Java. Este projeto mostra em mais detalhes a API Python para interação com o DHT11
  • Aula 4:
  • Aula 5
    • Portar a aplicação construída no Trabalho 1 para o framework Kura. Para tanto, vocês devem refatorar a aplicação do lado do servidor de forma a criar um bundle kura, conforme visto do tutorial da aula 4
    • Criar um deployable package a partir do bundle cosntruído no passo anterior.
    • Efetuar o deploy do pacote no Gateway Kura (no Raspberry)
    • Testar o bundle com a mesma aplicação cliente construída no trabalho 4.
  • Aula 6
    • Trabalho 2: data de apresentação 21/11/2018. entregar relatório e código com comentários. O relatório de conter a explicação de todo o processo de configuração usado para desenvolver o aplicativo bem como um manual de instalação e teste do sistema. O código deve conter comentários descrevendo todos os métodos implementados.
    • Refatorar o componente criado na Aula 5 para atender aos seguintes requisitos: