Laboratório de IoT
Slides:
Aula 1 - Programação Raspberry Pi
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.
- Para entender com um interruptor funciona leia estas páginas: switch basics e slide switch
- Aula 2:
- 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
- Siga os passos descritos aqui (Static IP via DHCPD) para definir um IP estático para o seu Pi
- 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.
- Nesse caso sugere-se usar algum método de acesso remoto ao Pi.
- Programar de forma remota no ambiente eclipse usando um desktop
- Usando MAVEN e ANT
- Usando o Remote Access do Eclipse
- 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
- Observar que o projeto usa a interface I2C. Para usar essa interface é necessário habilitá-la no Raspberry Pi
- 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
- Projeto Green House: ver a parte de setup de hardware e leitura dos dados de temperatura
- 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.
- Para configurar o seu Raspberry Pi para permitir acesso remoto via ssh siga esses passos
- Aula 4:
- Eclipse Kura & OGSI
- Fazer o tutorial de criação de blundles com Eclipse Kura
- Instruções de instalação no Raspberry Pi e no ambiente de desenvolvimento Eclipse.
- Seguir os passos do tutorial descrito na documentação do Eclipse Kura.
- 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:
- Permitir que os thresholds de temperatura e umidade sejam configurados a partir do framework kura. Para tanto seguir os passos para criação de um componente configurável descritos no manual do Kura.
- Publicar os dados de temperatura e umidade em um servidor na nuvem usando o Eclipse Kapua.
- Instalar o Kapua em um servidor ou desktop com acesso a internet
- Preparar o Kapua para conexão com o Kura
- Refatorar o componente de forma a publicar os valores de temperatura e umidade uitlizando MQTT. Ver exemplo de criação de uma aplicação que publica dados na nuvem no tutorial do Kura.