Extensão da biblioteca PI4J para a utilização de sensores e conversores da série ADC0832 conectados ao Raspberry PI - Martins, Marcus Alexandre Soares (2015)
O Raspberry Pi (RPi) é um computador de pequenas dimensões que vem sendo muito utilizado em diversos projetos pois possui boa capacidade computacional e multimídia além de pinos digitais de entrada e saída de propósito geral (GPIO). Estes pinos permitem que sejam conectados ao RPi dispositivos como sensores, atuadores, telas de LCD, e placas de extensão como microcontroladores e conversores. A biblioteca PI4J é a mais adotada para desenvolver projetos em linguagem Java com o Raspberry Pi porque oferece suporte à programação dos pino GPIO. Este trabalho visa analisar a biblioteca PI4J e estender sua estrutura de sensores digitais e analógicos, bem como implementar o conversor analógico-digital da série ADC0832. Para isso utilizou-se um Raspberry Pi modelo B+, sensores analógicos e digitais e um conversor analógico-digital adquiridos em um Kit. Realizou-se o levantamento da estrutura existente da biblioteca e foi analisado o código fonte da mesma para entender o seu funcionamento interno quanto ao monitoramento de eventos e a utilização de sensores e conversores. Em seguida foram escolhidos quais sensores seriam adicionados e, após a etapa de codificação, foram realizados testes com aplicações de exemplo com sensores digitais e sensores analógicos utilizando o conversor a fim de validar o funcionamento da estrutura adicionada. A análise, as implementações e os testes revelaram que o método de monitoramento utilizado pela biblioteca, baseado em interrupções, funciona adequadamente. Porém deve ser ponderado de acordo com o tipo de aplicação e sensores que se desejam utilizar, pois, em alguns casos, o método de monitoramento em loop constante (polling) pode ser mais vantajoso do que gerenciar interrupções. Além disso, o programador que desejar utilizar a biblioteca para manipular dados de sensores deve estar atento para problemas que podem ocorrer quando se utiliza o padrão Observer com gerenciamento de eventos e listeners.