Usando a GPIO do Raspberry Pi com BlueJ

Publicado em 14/01/2015

Na parte superior do Raspberry Pi, ao lado do soquete amarelo de saída de vídeo, encontram-se os conectores da GPIO, sigla em inglês para General Purpose Input/Output, isto é, "Entrada/Saída de Uso Geral". Isso constitui uma das principais características deste fantástico dispositivo, permitindo uma variedade imensa de aplicações no campo da mecatrônica.

Estes inocentes pininhos fazem a interface entre o Pi e o mundo exterior. De uma forma bem simples, pode-se considerá-los como se fossem interruptores que podem ser ligados/desligados (entrada ou input) ou que o Pi pode ligar/desligar (saída ou output). Dezessete dos 26 pinos são efetivamente GPIO; os outros são pinos de alimentação ou aterramento. Confira o esquema da pinagem na figura a seguir:

Layout do GPIO

Os pinos da GPIO podem ser programados para interagir numa enorme variedade de maneiras. As entradas, por exemplo, podem ser acionadas também por sensores ou sinais de outros dispositivos; as saídas podem ser conectadas a outros componentes eletrônicos como leds, motores, servos, etc.

É preciso tomar muito cuidado ao fazer conexões nos pinos GPIO, pois um erro de pinagem ou sobrecarga podem inutilizar completamente o Raspberry Pi. Preste muita atenção, portanto, na hora de plugar os cabos nos pinos, conferindo tudo cuidadosamente antes de ativar o circuito.

Um "HelloWorld" para a GPIO

Um dos circuitos mais elementares que existem é o de um LED em série com um resistor e um interruptor, o qual comanda seu acendimento. No esquema abaixo vemos o diagrama deste circuito:

Circuito simples

A próxima figura mostra o circuito acima devidamente montado na nossa protoboard. À esquerda, o LED está apagado e, ao ser fechado o interruptor, na imagem da direita, ele acende. Nada mais simples do que isso, não é mesmo?

LEDs ON/OFF

Observe que os LED possuem polaridade (negativo e positivo). Se essa polaridade for invertida na montagem, ADEUS LED!!! Para identificar os pinos, observe um pequeno chanfro no corpo do LED. O terminal do lado do chanfro é o Cátodo (negativo). Esse terminal também costuma ser mais curto, para facilitar sua identificação. O outro terminal, consequentemente, é o Ânodo (positivo).

A montagem de apenas um LED, num único pino da GPIO, é bastante segura, ainda mais que estamos usando um resistor de 330Ω para limitar a corrente. Isso garante que a corrente drenada da saída fique em torno dos 4mA. O LED não vai ofuscá-lo com o melhor do seu brilho, mas estaremos dentro do limite de segurança.

Esses limites variam conforme a quantidade de pinos utilizados, mas de uma maneira geral, podemos considerar seguro o limite de 16mA para apenas um pino e de 51mA para todos os pinos. Parece que não é muito, mas é mais do que suficiente para alimentar outros circuitos (drivers) os quais, por sua vez, podem acionar cargas bem mais potentes.

Bom, chega de conversa. Vamos botar as mãos na massa e elaborar um programa bem básico para demonstrar o uso da GPIO, a partir do IDE BlueJ. É o equivalente ao famoso "HelloWorld", e sua finalidade é apenas acender o LED, fazendo a função do interruptor. Para isso, além do BlueJ e JDK devidamente instalados no Pi (consulte nossos artigos anteriores para maiores informações - v. links abaixo), você vai precisar dos seguintes itens:

  • Uma "protoboard" (base para montagens experimentais sem solda);
  • Dois cabinhos com conectores "macho/fêmea" preto e vermelho;
  • Um LED (Diodo Emissor de Luz) de uso geral;
  • Um resistor de 330Ω (laranja, laranja, marron).

Veja na figura a seguir a aparência desses componentes:

Componentes eletrônicos

O cabo preto deve ser conectado no pino marcado 20 (Terra ou Ground) no Pi e o cabo vermelho deve ser conectado no pino marcado 22 (GPIO25). Consulte o diagrama seguinte:

Diagrama

Se você possui um Raspberry Pi modelo B+, ele terá mais do que 26 pinos. Todavia, as atribuições de numeração GPIO para ambos os modelos (B e B+), será a mesma descrita aqui e o projeto funciona nos dois sem que seja necessário fazer nenhuma alteração.

Veja no próxima imagem a minha montagem numa protoboard (também chamada breadboard), usando o modelo B:

Montagem

Programando a GPIO com o BlueJ

Abra o IDE BlueJ na interface gráfica do seu Raspian e carregue o projeto LED-Button. A figura a seguir mostra a janela do BlueJ com o projeto carregado:

Janela BlueJ

Cada uma das caixas amarelas na janela do BlueJ acima é uma classe Java. A classe LED representa o LED real do nosso circuito conectado ao Raspberry Pi, e é ela que vamos usar neste primeiro exercício. Todas as demais classes já estão implementadas e vamos usá-las em exercícios futuros.

Criando um novo objeto LED

Vamos aproveitar a funcionalidade do BlueJ para interagir diretamente com o objeto LED. Como já disse no meu artigo anterior, uma das grandes vantagens de usar o BlueJ é poder testar os objetos sem necessidade de um programa de teste com o método main().

A primeira coisa a fazer, é criar o objeto LED. Para isso, clique com o botão direito do mouse sobre a classe LED e selecione new LED(). Se esta opção não existir é porque a classe precisa ser compilada. Confira na figura seguinte:

Tela do BlueJ

O BlueJ solicitará um nome para a instância. O nome sugerido (lED1) está bom por ora. Clique o botão Ok e observe o aparecimento de um retângulo vermelho representando o objeto criado no painel inferior à esquerda, denominado lED1: LED:

BlueJ criando objeto

Acendendo e Apagando o LED

Para acender o LED, clique com o botão direito do mouse sobre o objeto lED1 e selecione o método void on():

BlueJ selecionando método

Isso vai acender o LED. (Vai demorar um pouquinho da primeira vez, tendo em vista que precisam ser feitas todas as conexões nos bastidores).

Para encerrar, use o método `void off() para apagar o LED... e até a próxima.

Referências:

Compartilhe esta postagem